P(break) neu trainiert auf live-spiegelnder Stichprobe (Weg b) - eingebaut
Behebt die am selben Tag gefundene Merkmals-Diskrepanz: das alte Modell war
auf "Anlauf zu einem beim Entry FIXIERTEN Level" trainiert, live waehlt
_draw_levels das Level jede Sekunde neu -> mom3 live 0,15 statt 1,45 ->
Ausgabe immer ~23 % -> Gate seit Inbetriebnahme faktisch nie aktiv.
backtest_pbreak_retrain.py: Stichprobe spiegelt den Live-Pfad (Level
dynamisch mit Hysterese, gesampelt an JEDEM Bar im 0,15xATR-Band, keine
Anlauf-Bedingung). Kontrolle: Merkmalsmittel der Stichprobe (mom6 0,203 /
mom3 0,202) treffen die live rekonstruierten Werte (0,181 / 0,149).
AUC auf dieser Stichprobe (H2, out-of-sample):
ALT-Modell 0,368 (schlechter als Zufall, 19,2 % vs real 39,4 %)
NEU-Modell 0,654 kalibriert
backtest_pbreak_rvalue.py (R-Ertrag, Echtkosten, Baseline = nur Trailing):
NEU schlaegt ALT in BEIDEN Haelften bei JEDER Schwelle. Gegen die Baseline
gewinnt es bei 0,35/0,45/0,55 in beiden (bei 0,60 kippt H1).
Bestwert 0,35: H1 -149 vs -506 (+357), H2 +1308 vs -110 (+1418).
Nebenbefund: das ALTE Modell war in H1 schlechter als gar kein Auto-Close.
EINGEBAUT: neue _PB_MU/_SD/_W (final auf allen 80k gefittet, n=76.542,
Basisrate 37,8 %, nach H1->H2-Validierung; alte Werte als Kommentar) +
sr_close_pbreak 0,55 -> 0,35, Config-Waechter-Anker mitgezogen.
Verifiziert: Chart-Linien zeigen 43 %/36 % statt 8-15 %.
ACHTUNG - invertiert eine alte Projekt-Regel: mom3-Gewicht dreht das
Vorzeichen (+1,4330 -> -0,5420). Alt: "kriecht ans Level -> 26 % Bruch, mit
Schwung -> laufen lassen". Neu: Anlauf-Schub -> 26,5 % (Level absorbiert
ihn und haelt), Schwung weg vom Level -> 51 %. Beides gilt in seiner
Population (fixiertes vs. dynamisches Level); fuer den Live-Pfad gilt die
neue Lesart.
Offen: auch NEU schliesst bei 0,35 noch ~94-97 % der Positionen (waehlt vor
allem den besseren Moment). Touch-Zahl bringt im neuen Modell nichts mehr
(0,652 vs 0,654) - die dynamische Level-Wahl erfasst den Effekt bereits.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
b137967a68
commit
0944b1c13a
@@ -1511,10 +1511,41 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
|
||||
(allerdings ohne Fenster-Definition und ohne die 5+-Umkehr). **Nächster Schritt: als
|
||||
5. Merkmal in `backtest_srclose_prob.py` aufnehmen und über die 34.771 Touches / 2
|
||||
echten Halbjahre neu fitten** — dort ist messbar, ob die AUC steigt.
|
||||
**Empfehlung: `auto_sr_close=false`** (zurück auf reines
|
||||
Trailing = der gemessene Vergleichsmaßstab). Eine reine Schwellensenkung repariert es
|
||||
NICHT (sie ändert die Anzahl, nicht die Auswahl); 0,25–0,35 wäre nur ein Kompromiss,
|
||||
falls die Mechanik erhalten bleiben soll.
|
||||
**✅ BEHOBEN am selben Tag (Weg b, User-Entscheidung): MODELL NEU TRAINIERT.**
|
||||
`backtest_pbreak_retrain.py` erzeugt eine **live-spiegelnde Stichprobe** — Level
|
||||
dynamisch mit Hysterese wie `_draw_levels`, gesampelt an JEDEM Bar im 0,15×ATR-Band
|
||||
(KEINE Anlauf-Bedingung), Ausgang/Fenster wie live. Kontrolle: die Merkmalsmittel
|
||||
dieser Stichprobe (mom6 0,203 · mom3 0,202) treffen die live rekonstruierten Werte
|
||||
(0,181 · 0,149) — sie bildet den Live-Pfad also wirklich ab.
|
||||
| | ALT-Modell | NEU-Modell |
|
||||
|---|---|---|
|
||||
| AUC auf live-spiegelnder Stichprobe (H2, oos) | **0,368** | **0,654** |
|
||||
| Ø-Vorhersage vs. real | 19,2 % vs 39,4 % | kalibriert |
|
||||
**R-Ertrag (`backtest_pbreak_rvalue.py`, Echtkosten, Baseline = nur Trailing):** NEU
|
||||
schlägt ALT in **BEIDEN Hälften bei JEDER Schwelle**; gegen die Baseline gewinnt es
|
||||
bei 0,35/0,45/0,55 in beiden (bei 0,60 kippt H1). **Bestwert 0,35** — H1 −149 vs
|
||||
Baseline −506 (**+357**), H2 +1308 vs −110 (**+1418**). ⚠ Nebenbefund: das ALTE
|
||||
Modell war in H1 **schlechter als gar kein Auto-Close** (−653 vs −506), in H2 besser
|
||||
(+576 vs −110) — genau die Regime-Abhängigkeit, die live als −8 €/Trade sichtbar war.
|
||||
**Eingebaut:** neue `_PB_MU/_SD/_W` in `engine.py` (final auf allen 80k Bars gefittet,
|
||||
n=76.542, Basisrate 37,8 %, nachdem H1→H2 validiert war; alte Werte als Kommentar für
|
||||
den Rückweg) + **`sr_close_pbreak=0.35`** (Config-Wächter-Anker mitgezogen).
|
||||
Verifiziert: Chart-Linien zeigen jetzt 43 %/36 % statt 8–15 %.
|
||||
⚠⚠ **DAS NEUE MODELL INVERTIERT EINE ALTE PROJEKT-REGEL — bewusst so:** das Gewicht
|
||||
von mom3 dreht das Vorzeichen (**+1,4330 → −0,5420**). Der alte Befund
|
||||
(`backtest_srbreak.py`) lautete „Kurs KRIECHT ans Level → P(break) nur 26 %, mit
|
||||
Schwung → laufen lassen (41–43 %)". Das neue Modell sagt das Gegenteil: Anlauf-Schub
|
||||
→ 26,5 % (das Level ABSORBIERT den Schub und hält), Schwung weg vom Level → 51 %.
|
||||
**Beides gilt in seiner eigenen Population** — die alte Messung betraf den Anlauf zu
|
||||
einem FIXIERTEN Level, die neue das Verweilen an einem DYNAMISCH gewählten. Für den
|
||||
Live-Pfad gilt die neue Lesart; die alte Faustregel weiter oben im Text bezieht sich
|
||||
auf die Anlauf-Situation und ist dort nicht widerlegt.
|
||||
⚠ **Weiterhin offen:** auch das neue Modell schließt bei 0,35 noch ~94–97 % der
|
||||
Positionen (es wählt vor allem den BESSEREN Moment, ist also kein wirklich selektives
|
||||
Gate). Und die **Touch-Zahl bringt im neuen Modell nichts mehr** (AUC 0,652 vs 0,654)
|
||||
— die dynamische Level-Wahl erfasst denselben Effekt bereits; die User-Idee hat auf
|
||||
den Fehler GEZEIGT, die Ursache lag eine Ebene tiefer. **B4/B5-Pflicht:** Live-AUC in
|
||||
~2 Wochen gegen 0,65 halten (Reminder `pbreak_accuracy_v2`, 800 Vorhersagen ab 01.08.).
|
||||
- **P(Trendumkehr) = GEMESSEN, NICHT BERECHENBAR (`analyze_reversal.py`, 2026-07-31,
|
||||
User-Frage „können wir die Trendumkehr-Wahrscheinlichkeit berechnen?"):** Aufgebaut
|
||||
exakt wie das erfolgreiche P(break)-Modell — mechanisch scharfes **Barriere-Rennen**
|
||||
|
||||
Reference in New Issue
Block a user