Muster-Verdict-Gewicht 1,0 -> 0,25 (5%) + Korrektur der adverse15-Anekdote
Muster-Stimme (User-Vorgabe "geben wir dem Muster doch 5%"): _PAT_W = 0.25 statt fest 1,0; "forming" weiter die Haelfte. Empirisch gesetzt: ueber die letzten 4.000 verdict_votes liegt die Gewichtssumme der uebrigen Module im Median bei 4,50 -> Anteil 5,3 % (vorher 18,2 %). Muster hat in 24,7 % der Verdicts ueberhaupt eine Richtung, max. Nadel-Verschiebung 0,053. Reine Anzeige - der Bias steuert keine Order. Korrektur in CLAUDE.md: Die Anekdote zum Abschalten der 15-Minuten-Regel war falsch. "+19,28/+17,60 moeglich" und "32 EUR weiter dagegen" waren MAXIMALE AUSLENKUNG, nicht das, was der Exit gefangen haette. Mit core/exit_model.py nachgerechnet waere der 11:44-Trade OHNE Regel besser gewesen (-21,43 statt -26,31) und der 20:00-Squeeze schlechter (-23,27 statt -13,77). Ueber alle 7 Bot-Trades des 31.07. haette das Abschalten -16,42 EUR gekostet. Die Entscheidung bleibt richtig - sie ruht auf backtest_adverse15_squeeze.py (16/16 Kombinationen in beiden Haelften negativ), nicht auf einem Tag mit n=3. Der Tagesgewinn kam aus Trail 1,5 -> 1,0 (+24,86 EUR auf denselben Trades). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
7d68dfc4db
commit
d0f3b78796
@@ -1040,10 +1040,26 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
|
||||
ein Schnitt nach 15 min trifft genau den Tail. Ohne Regel H1 −54 / H2 **+220**, mit
|
||||
0,5 H1 −72 / H2 +186.
|
||||
**Anlass (real, 2026-07-31):** drei Bot-Trades wurden per `adverse15` geschlossen —
|
||||
der **Auto-Signal**-Trade um 11:44 (−26,31 €) wurde damit **gerettet** (danach lief
|
||||
der Kurs 32 € weiter dagegen), die beiden **Squeeze**-Trades um 20:15/20:36
|
||||
(−13,77 / −28,09 €) wurden **zu früh gekappt** (danach +19,28 bzw. +17,60 € möglich,
|
||||
aus `candles_m1` nachgerechnet). Genau das Muster, das die Messung erklärt.
|
||||
der **Auto-Signal**-Trade um 11:44 (−26,31 €) und die beiden **Squeeze**-Trades um
|
||||
20:15/20:36 (−13,77 / −28,09 €).
|
||||
⚠⚠ **DIE URSPRÜNGLICHE ANEKDOTE DAZU WAR FALSCH — korrigiert 2026-08-01.** Hier stand,
|
||||
der 11:44-Trade sei „gerettet" worden (Kurs lief 32 € weiter dagegen) und die beiden
|
||||
Squeeze-Trades seien „zu früh gekappt" worden (+19,28 / +17,60 € möglich). Beide Zahlen
|
||||
waren **maximale Auslenkung** (bester bzw. schlechtester danach berührter Kurs) — also
|
||||
das, was der Markt hergab, NICHT das, was der Exit gefangen hätte. Mit dem kanonischen
|
||||
Exit nachgerechnet (`core/exit_model.py`, M5 aus `candles_m1`):
|
||||
| Trade | IST (mit Regel) | ohne Regel, Trail 1,5 |
|
||||
|---|---|---|
|
||||
| 11:29 AUTOSIG | −26,31 | **−21,43** (also NICHT gerettet) |
|
||||
| 20:00 SQUEEZE | −13,77 | **−23,27** (also NICHT zu früh) |
|
||||
| 20:21 SQUEEZE | −28,09 | −25,02 |
|
||||
Über alle 7 Bot-Trades des Tages hätte das Abschalten der Regel **−16,42 € gekostet**;
|
||||
die Regel hat an DIESEM Tag also geholfen. ⚠ **Die Entscheidung, sie abzuschalten,
|
||||
bleibt trotzdem richtig** — sie ruht auf `backtest_adverse15_squeeze.py` (alle 16
|
||||
Kombinationen in BEIDEN Hälften negativ), nicht auf einem Tag mit n=3. Lehre: eine
|
||||
Einzeltag-Anekdote taugt nicht als Beleg, auch nicht als *bestätigende* — und
|
||||
„maximale Auslenkung" ist keine erzielbare Zahl. Der Gewinn des Tages kam woanders her:
|
||||
die Umstellung **Trail 1,5 → 1,0** brachte auf denselben 7 Trades **+24,86 €**.
|
||||
**Umsetzung:** `_bot_open_source` merkt sich beim Öffnen, WOMIT der Bot eröffnet hat
|
||||
(`auto_squeeze` | `auto_signal`); `_check_adverse15` steigt bei `auto_squeeze` aus.
|
||||
Mit 7 Szenarien getestet (Signal/Squeeze/manuell/altes Ticket · zu früh · unter
|
||||
|
||||
+22
-5
@@ -72,6 +72,11 @@ _MIN_CONF_DISPLAY = 70 # Konfidenz-Schwelle für die "Order ohne Sign
|
||||
# Trader beheimatet, hier als eigener Wert erhalten)
|
||||
_BERLIN = ZoneInfo("Europe/Berlin")
|
||||
_OB_IMB_MIN = 0.30 # Orderbuch-Imbalance darunter = zu schwach fuer eine Stimme
|
||||
_PAT_W = 0.25 # Verdict-Gewicht der Chartmuster-Stimme (bestaetigt; `forming`
|
||||
# zaehlt halb). User-Vorgabe 2026-08-01 „5 %" — empirisch aus den
|
||||
# letzten 4.000 `verdict_votes`: Median der uebrigen Gewichte 4,50
|
||||
# → 0,25/(4,50+0,25) = 5,3 % Anteil an der Bias-Nadel (vorher 1,0
|
||||
# = 18,2 %). Begruendung + Beleglage bei der Stimme in `_verdict`.
|
||||
_SQUEEZE_NIGHT = (0, 1, 2, 3, 4, 5, 6, 7) # Auto-Squeeze-Nacht-Sperre (Kostenfalle)
|
||||
_SQUEEZE_SR_COOLDOWN_S = 180.0 # nach S/R-Close kein Auto-Squeeze in GLEICHER Richtung
|
||||
# (sonst Close-„Level hält" vs. Entry-„Level bricht"-
|
||||
@@ -2538,10 +2543,22 @@ class TradingEngine:
|
||||
# BEIDEN Hälften positiven, aber kleinen Zusatz über einen GENERISCHEN
|
||||
# Breakout hinaus liefern — Muster ØR +0,206/+0,328 vs. beliebiger Swing-Bruch
|
||||
# +0,184/+0,220 (Delta nur +0,022 in H1, +0,108 in H2). Der Löwenanteil des
|
||||
# Ertrags kommt also vom Breakout+Trailing, nicht vom Muster. Deshalb 1,0
|
||||
# (wie Elliott/KI) statt 2,0 (Squeeze) — und `forming` zählt nur halb, weil
|
||||
# das Muster dort noch nicht bestätigt ist. Ziel-Trefferquote bleibt niedrig
|
||||
# (23–26 %), die Stimme sagt also „Richtungstendenz", nicht „Kursziel".
|
||||
# Ertrags kommt also vom Breakout+Trailing, nicht vom Muster. `forming` zählt
|
||||
# nur halb, weil das Muster dort noch nicht bestätigt ist. Ziel-Trefferquote
|
||||
# bleibt niedrig (23–26 %), die Stimme sagt also „Richtungstendenz", nicht
|
||||
# „Kursziel".
|
||||
# ⚠ ABGESENKT 1,0 → `_PAT_W`=0,25 (User-Vorgabe 2026-08-01 „geben wir dem
|
||||
# Muster doch 5 %"). Anlass war die Nachmessung der 2026-07-31 ergänzten
|
||||
# Handbuch-Muster: von den 8 gemessenen Alt-Typen schlägt nur `cup` die
|
||||
# Kontrolle, und unter 6 neu getesteten Typen war `wedge_rise` der einzige
|
||||
# Treffer — bei 6 Vergleichen ist das gut mit Zufall vereinbar. Empfehlung war
|
||||
# Gewicht 0 (reine Anzeige); der User wollte die Stimme behalten, aber klein.
|
||||
# 0,25 ist EMPIRISCH gesetzt, nicht geraten: über die letzten 4.000
|
||||
# `verdict_votes` liegt die Gewichtssumme der übrigen Module im Median bei
|
||||
# 4,50 → Anteil 0,25/(4,50+0,25) = **5,3 %** (die alten 1,0 waren 18,2 %).
|
||||
# Ändert sich das Modul-Gefüge, mit derselben Rechnung nachziehen.
|
||||
# REINE ANZEIGE — der Bias steuert keine Order (die hängt an der Wellen-
|
||||
# Headline); die Stimme wird in `verdict_votes` weiter mitgeloggt.
|
||||
pv, pdet, pw = 0, "—", 0.0
|
||||
try:
|
||||
_pats = (snap_parts_patterns or {}).get("patterns") or []
|
||||
@@ -2560,7 +2577,7 @@ class TradingEngine:
|
||||
if _p0:
|
||||
pv = 1 if _p0["dir"] == "bull" else -1
|
||||
_conf = _p0.get("status") == "confirmed"
|
||||
pw = 1.0 if _conf else 0.5
|
||||
pw = _PAT_W if _conf else _PAT_W / 2
|
||||
pdet = f"{_p0.get('name', '—')} · {'bestätigt' if _conf else 'bildet sich'}"
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user