Level-Auswahl: Nachbau behoben (core/sr_levels.py) - Luecke bleibt offen
Auftrag zum benannten naechsten Schritt: die Backtests bauten die
Live-Level-Auswahl nach, statt sie zu benutzen. Drei echte Abweichungen:
1. Der Nachbau clusterte den GEMISCHTEN Rohpool (sorted(ch+cl)); live werden
ph und pl GETRENNT geclustert. Das ist exakt der Fehler, den der Live-Code
als behoben dokumentiert ("nicht vorher zusammenlegen!" - Ketten-Mega-
Cluster in dichten Zonen). Gemessen: 4,5 % aller Zeitpunkte hatten einen
anderen Widerstand.
2. Live rundet jede Linie auf 3 Stellen, der Nachbau nicht.
3. Live fuehrt Widerstand und Unterstuetzung mit getrennter Hysterese.
Geloest ueber core/sr_levels.py (cluster/linien/naechste/halten).
engine._draw_levels ruft es auf, Verhalten bitgenau unveraendert
(tests/test_sr_levels.py, 6 Tests, je 300-400 Zufallsfaelle). Der Test enthaelt
die Gegenprobe, dass der Nachbau wirklich abwich - sonst waere nicht belegt,
dass es etwas zu beheben gab.
backtest_pbreak_retrain.build_levels bleibt unveraendert (Migrations-Regel: die
daraus gefitteten Live-Gewichte duerfen sich nicht rueckwirkend verschieben).
Daneben neu: build_levels_live fuer kuenftige Fits.
ABER die Korrektur schliesst die Basisraten-Luecke nicht: 38,0 -> 38,3 %,
live 52,7 %.
Damit fuenf Hypothesen geprueft und alle widerlegt:
Niveau/Achsenabschnitt Roll-Achse faellt live durch
Vola-Regime ueber 5 Quintile flach (37,0-39,2 %)
Sammelart -1,7 Pp, falsche Richtung
ATR-Floor-Artefakt +2,8 Pp; bei live-gleichem ATR erst 40,1 %
Level-Auswahl +0,4 Pp
Nebenbefund: 53,9 % aller Backtest-Bars sitzen auf dem ATR-Floor 0,12, live nur
5,4 % - der Backtest-Zeitraum ist deutlich ruhiger. Der ATR selbst stimmt aber
ueberein (Median live 0,2167 gegen letzte 7 Tage 0,2174).
Kein Notfall: auto_sr_close ist false, das Modell schliesst keine Trades.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
2e89724368
commit
aefac274d3
@@ -4911,6 +4911,66 @@ Modell schliesst keine Trades.
|
||||
„die Rangfolge ist kaputt" ist **nicht** belegt; belegt ist nur die
|
||||
Basisraten-/Kalibrierungslücke.
|
||||
|
||||
## ⚠⚠ LEVEL-AUSWAHL: NACHBAU BEHOBEN — die Basisraten-Lücke bleibt UNERKLÄRT (2026-08-07)
|
||||
|
||||
Auftrag „behebe das" zum benannten nächsten Schritt: die Backtests bauten die
|
||||
Live-Level-Auswahl nach, statt sie zu benutzen.
|
||||
|
||||
✅ **DREI ECHTE ABWEICHUNGEN GEFUNDEN — und die erste ist ein Lehrstück:**
|
||||
| # | Nachbau (`backtest_pbreak_retrain.py`) | LIVE (`_draw_levels`) |
|
||||
|---|---|---|
|
||||
| 1 | clustert den **GEMISCHTEN** Rohpool (`sorted(ch+cl)`) | ph und pl **GETRENNT**, dann zusammenführen |
|
||||
| 2 | keine Rundung | `round(…, 3)` je Linie |
|
||||
| 3 | EINE Hysterese je Trade-Richtung | Widerstand und Unterstützung **getrennt** |
|
||||
⚠⚠ **Punkt 1 ist genau der Fehler, den der Live-Code als BEHOBEN dokumentiert:**
|
||||
„ph/pl bleiben GETRENNT geclustert (**nicht vorher zusammenlegen!**) — ein erster
|
||||
Versuch clusterte den kombinierten Rohpool direkt, was in dichten Zonen zu
|
||||
**Ketten-Mega-Clustern** führte." Der Nachbau machte also weiter das, was live
|
||||
erkannt und repariert worden war. **Gemessen: 4,5 % aller Zeitpunkte hatten einen
|
||||
anderen Widerstand** (13.283 Vergleichspunkte, Ø-Linienzahl 8,1 statt 8,4).
|
||||
|
||||
✅ **GELÖST: `core/sr_levels.py`** (`cluster` · `linien` · `naechste` · `halten`).
|
||||
`engine._draw_levels` ruft es auf; **Verhalten bitgenau unverändert**
|
||||
(`tests/test_sr_levels.py`, 6 Tests über je 300–400 Zufallsfälle inkl. Hysterese
|
||||
in beide Richtungen). ⚠ Der Test enthält bewusst auch die **Gegenprobe**, dass der
|
||||
Nachbau wirklich abwich — ohne sie wäre nicht belegt, dass es etwas zu beheben gab.
|
||||
⚠ `backtest_pbreak_retrain.build_levels` bleibt **unverändert** (Migrations-Regel:
|
||||
seine Zahlen und die daraus gefitteten Live-Gewichte `_PB_*` dürfen sich nicht
|
||||
rückwirkend verschieben). Daneben steht jetzt **`build_levels_live`** — **neue Fits
|
||||
gehören dorthin**, zusammen mit `core.sr_levels.linien` statt `_cluster`.
|
||||
|
||||
⚠⚠ **ABER: DIE KORREKTUR SCHLIESST DIE LÜCKE NICHT — +0,4 Pp.**
|
||||
| | Basisrate |
|
||||
|---|---|
|
||||
| Nachbau (gemischter Pool) | 38,0 % |
|
||||
| korrigiert (live-treu) | **38,3 %** |
|
||||
| **LIVE ab 01.08.** | **52,7 %** |
|
||||
|
||||
⚠⚠⚠ **FÜNF HYPOTHESEN, FÜNF WIDERLEGUNGEN — die 15-Pp-Lücke ist OFFEN:**
|
||||
| Hypothese | Ergebnis |
|
||||
|---|---|
|
||||
| Niveau/Achsenabschnitt driftet | Roll-Achse fällt live durch, oberste Klasse bleibt invertiert |
|
||||
| Vola-Regime | Bruchrate über 5 Quintile **flach** (37,0–39,2 %) |
|
||||
| Sammelart (je Berührung ↔ je Bar) | **−1,7 Pp**, falsche Richtung |
|
||||
| **ATR-Floor-Artefakt** | **+2,8 Pp**; bei live-gleichem ATR (≥0,20) erst **40,1 %** |
|
||||
| **Level-Auswahl (dieser Fix)** | **+0,4 Pp** |
|
||||
⚠ Der ATR-Befund ist trotzdem bemerkenswert: **53,9 % aller Backtest-Bars sitzen
|
||||
auf dem Floor 0,12**, live nur **5,4 %** — der Backtest-Zeitraum ist also viel
|
||||
ruhiger als die Live-Woche. Der ATR selbst stimmt dagegen überein (Median live
|
||||
0,2167 gegen letzte 7 Tage 0,2174, Verhältnis **1,00**).
|
||||
|
||||
**Stand: der Fix ist richtig und gebaut, erklärt den Live-Fehler aber nicht.**
|
||||
Die Live-Bruchrate von 52,7 % liegt ausserhalb der gesamten 9-Monats-Spanne
|
||||
(33,6…41,1 %) und ist nach fünf geprüften Erklärungen weiterhin offen.
|
||||
⚠ Nächste ungeprüfte Kandidaten: die **M1-gegen-M5-Auflösung** bei der
|
||||
Ausgangsbestimmung (live wertet gegen `candles_m1` aus, der Backtest gegen
|
||||
M5-Bars — innerhalb eines M5-Bars prüft der Backtest `confirm` VOR `reject`,
|
||||
was ihn *zugunsten* von „break" verzerrt, also in die falsche Richtung), und die
|
||||
Frage, ob `wave.pb_levels30` live überhaupt dieselben Pivots liefert wie
|
||||
`build_levels`. **Beides nicht gemessen.**
|
||||
⚠ Weiterhin **kein Notfall**: `auto_sr_close = false`, das Modell schliesst keine
|
||||
Trades.
|
||||
|
||||
## ⚠⚠ 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