P(break) Niveau-Reparatur gemessen: beide Varianten fallen durch
Folgeauftrag zur B4-Pruefung. Hypothese war: das Modell rankt brauchbar, nur
sein Niveau haengt an einer wandernden Basisrate. Geprueft wurden ein
Regime-Merkmal (ATR/gleitender Median) und ein laufend nachgefuehrter
Achsenabschnitt, Regel vorab fixiert.
collect() in backtest_pbreak_retrain.py hat dafuer einen ADDITIVEN
REG-Parameter bekommen (Default None), Ausgabe ohne ihn bitgenau geprueft
(4371 Zeilen, 0 Abweichungen).
Auf Backtest-Daten besteht die Roll-Achse (Kalib 2,61->1,95 und 10,51->3,25 Pp,
AUC leicht besser), das Regime-Merkmal faellt durch (H2->H1 schlechter).
Auf LIVE-Daten (n=921 ab 01.08.) faellt auch die Roll-Achse durch: Kalib
14,16 -> 10,64 Pp (also nicht repariert), AUC 0,531 -> 0,516 (ueber der
Toleranz), und der Nachbar n=800 kippt auf 15,14 Pp = schlechter als der
Ausgangswert.
Grund: die oberste Klasse bleibt INVERTIERT (69 % vorhergesagt, 17,2 % real).
Eine Niveau-Verschiebung kann eine invertierte Klasse nicht reparieren. Die
Ausgangshypothese ist damit widerlegt.
Drei Erklaerungen fuer die Basisraten-Luecke geprueft, alle widerlegt:
Sammelart (live 1x je Beruehrung vs Backtest jeder Bar): -1,7 Pp, falsche
Richtung
Vola-Regime: Bruchrate ueber 5 Quintile flach (37,0 bis 39,2 %)
aktuelles Regime ungewoehnlich: letzte 7 Tage Median 0,96 = normal
Der flache Vola-Befund erklaert zugleich, warum das Regime-Merkmal nichts
bringt.
Kontrolle: das Modell VOR dem 31.07. hat auf diesen Daten AUC 0,364/0,406 -
unter 0,5, also invertiert. Reproduziert exakt den Grund fuer das
Nachtrainieren.
Nichts gebaut. Naechster Schritt ist kein drittes Fitten, sondern die einzige
ungeprueft gebliebene Divergenz: die Level-Auswahl selbst (Backtest baut sie
mit pick_level/_cluster nach, live entscheidet _draw_levels).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
908e20a9d0
commit
2e89724368
@@ -4848,6 +4848,69 @@ Weg gehen. Naheliegender wäre, das Niveau **laufend** an die jüngste Basisrate
|
||||
koppeln oder ein Vola-/Regime-Merkmal aufzunehmen. **Nicht gebaut, nicht
|
||||
gemessen.**
|
||||
|
||||
## ⚠⚠ P(break): NIVEAU-REPARATUR GEMESSEN — BEIDE VARIANTEN FALLEN DURCH (2026-08-07)
|
||||
|
||||
Folgeauftrag zur B4-Prüfung: die Vermutung war „das Modell RANKT brauchbar, nur
|
||||
sein NIVEAU hängt an einer Basisrate, die wandert" — also entweder ein
|
||||
Regime-Merkmal oder ein laufend nachgeführter Achsenabschnitt.
|
||||
`backtest_pbreak_regime.py`, Regel **vorab** fixiert (beide Fit-Richtungen besser
|
||||
kalibriert · AUC nicht schlechter, Toleranz 0,005 · Nachbarn kippen nicht).
|
||||
⚠ `collect()` in `backtest_pbreak_retrain.py` hat dafür einen **additiven**
|
||||
`REG`-Parameter bekommen (Default `None`) — Ausgabe ohne ihn **bitgenau** wie
|
||||
vorher geprüft (4.371 Zeilen, 0 Abweichungen).
|
||||
|
||||
**(1) Auf BACKTEST-Daten besteht die Roll-Achse, das Regime-Merkmal nicht:**
|
||||
| Variante | H1→H2 Kalib. / AUC | H2→H1 Kalib. / AUC |
|
||||
|---|---|---|
|
||||
| A) Basis (fester Achsenabschnitt) | 2,61 Pp / 0,659 | 10,51 Pp / 0,599 |
|
||||
| B) + Regime (ATR/Median) | 2,51 / 0,658 | **11,20 ❌** / 0,599 |
|
||||
| **C) Roll-Achse (n=400)** | **1,95 / 0,661** | **3,25 / 0,612** |
|
||||
| *Kontrolle 1: Modell VOR dem 31.07.* | 25,81 / **0,364** | 20,25 / **0,406** |
|
||||
| *Kontrolle 2: Modell wie HEUTE live* | 1,63 / 0,659 | 2,30 / 0,612 |
|
||||
⚠ **Kontrolle 2 ist IN-SAMPLE** (die Live-Gewichte wurden final auf allen 80k
|
||||
Bars gefittet) — sie muss gut aussehen und ist kein Verdienst.
|
||||
✅ Kontrolle 1 reproduziert exakt, warum am 31.07. nachtrainiert wurde
|
||||
(AUC **unter 0,5** = invertiert).
|
||||
|
||||
**(2) AUF LIVE-DATEN FÄLLT DIE ROLL-ACHSE DURCH — und das ist die Messung, die
|
||||
zählt** (n=921 ab 01.08., echte Bruchrate 52,7 %):
|
||||
| | AUC | Ø-Vorhersage | Kalib.-Fehler |
|
||||
|---|---|---|---|
|
||||
| IST | 0,531 | 41,8 % | **14,16 Pp** |
|
||||
| Roll n=400 | 0,516 | 48,7 % | 10,64 Pp |
|
||||
| **Roll n=800** | 0,510 | 42,8 % | **15,14 Pp ❌ schlechter als IST** |
|
||||
Sie senkt den Fehler auf ~10,6 Pp — **repariert ihn also nicht** —, verliert AUC
|
||||
über der Toleranz und **kippt beim Nachbarn n=800**. Regel verfehlt, **kein
|
||||
Einbau**.
|
||||
⚠ **Der Grund steht in der Klassentabelle: die oberste Klasse bleibt
|
||||
INVERTIERT** (69 % vorhergesagt, **17,2 %** real, n=29). Eine Niveau-Verschiebung
|
||||
kann eine invertierte Klasse prinzipiell nicht reparieren. Die Ausgangshypothese
|
||||
(„nur das Niveau") ist damit **widerlegt**.
|
||||
|
||||
**(3) DREI ERKLÄRUNGEN FÜR DIE BASISRATEN-LÜCKE GEPRÜFT — ALLE WIDERLEGT.**
|
||||
Live 52,7 % liegt **ausserhalb der gesamten 9-Monats-Spanne** des Backtests
|
||||
(Zehntel-Blöcke: 33,6 … 41,1 %).
|
||||
| Hypothese | Ergebnis |
|
||||
|---|---|
|
||||
| **Sammelart** — live loggt 1× je frischer Berührung, der Backtest JEDEN Bar in der Zone | 37,5 % gegen 39,1 % = **−1,7 Pp, falsche Richtung** ❌ |
|
||||
| **Vola-Regime** — Bruchrate steigt mit ATR | über 5 Quintile **flach**: 37,0 · 37,0 · 39,2 · 38,9 · 37,4 % ❌ |
|
||||
| **aktuelles Regime ungewöhnlich** | letzte 7 Tage Median **0,96** = normal (Gesamt 0,99) ❌ |
|
||||
✅ Der flache Vola-Befund erklärt zugleich, **warum B nichts bringt**: in dieser
|
||||
Achse steckt keine Information.
|
||||
|
||||
**FAZIT: nichts gebaut.** Der nächste Schritt ist **kein drittes Fitten** — der
|
||||
Fehler sitzt nicht im Niveau. Die einzige nicht geprüfte Divergenz ist die
|
||||
**Level-Auswahl selbst**: der Backtest bildet sie mit `pick_level`/`_cluster`
|
||||
nach, live entscheidet `_draw_levels`. Ein Nachbau ist kein Nutzer desselben
|
||||
Codes — genau die Fehlerklasse, die am 31.07. schon einmal zugeschlagen hat
|
||||
(„Training = Level bei Entry fixiert, Live = Level wandert mit"). **Dort wäre als
|
||||
Nächstes zu messen.**
|
||||
⚠ Operativ weiterhin **kein Notfall**: `auto_sr_close = false` seit 06.08., das
|
||||
Modell schliesst keine Trades.
|
||||
⚠ Und die Live-AUC bleibt unentschieden (entkoppelt n=87, KI [0,434 … 0,674]) —
|
||||
„die Rangfolge ist kaputt" ist **nicht** belegt; belegt ist nur die
|
||||
Basisraten-/Kalibrierungslücke.
|
||||
|
||||
## ⚠⚠ LIVE-CODE HING AN EINEM BACKTEST-SKRIPT — behoben 2026-08-07
|
||||
|
||||
**Befund:** `core/engine.py` (`squeeze_monitor`) und `weekly_review.py` importierten
|
||||
|
||||
Reference in New Issue
Block a user