From 1f5804904947d275b7ea5a7fde5f950b3824a4df Mon Sep 17 00:00:00 2001 From: Axel Hocks Date: Fri, 7 Aug 2026 11:44:01 +0200 Subject: [PATCH] Die "Basisraten-Luecke" war ein Messfehler - meiner. Aufgeloest. Nach elf einzeln gemessenen Hypothesen: es gab keinen Fehler im System. Die 14,1 Pp (Backtest 38,6 % gegen live 52,7 %) entstanden, weil ich eine GECLUSTERTE 6-Tage-Stichprobe gegen ein 208-Tage-Mittel gehalten habe. Zeitraum Backtest auf 03.-07.08. eingeschraenkt: 38,6 -> 43,4 % +4,8 Pp Clusterung live entkoppelt (max 1 je Level/Stunde): 52,7 -> 45,2 % -7,5 Pp Rest +1,8 Pp Entkoppelt: live 45,2 % [KI 35,5 ... 54,8] gegen Backtest 43,4 % - der Backtest-Wert liegt IM Intervall. Kein belegbarer Unterschied. Das ist exakt der Fehler, den ich am selben Tag in der Faelligkeitsbedingung korrigiert hatte (800 rohe statt entkoppelte Vorhersagen) - und ich habe ihn in der Auswertung selbst noch einmal gemacht. Regel: bei pbreak_predictions immer entkoppeln, bevor eine Rate berichtet wird. Was bleibt: Basisrate "gewandert 37,8 -> 53,2 %" ZURUECKGEZOGEN Kalibrierungsfehler BLEIBT: 14,3 Pp entkoppelt, KI [6,8 ... 25,5], Modell sagt 38,1 %, real 45,2 % -> ~7 Pp Unterschaetzung "oberste Klasse invertiert" NICHT belegt (beruhte auf n=29 rohen Zeilen = wenige unabhaengige Faelle) AUC unveraendert unentschieden Konsequenz: nichts umbauen. Die Stichprobe ist fuer eine Reparatur zu klein - genau deshalb steht die Faelligkeit jetzt auf 350 entkoppelten (Stand 93). Die elf Hypothesen, alle gemessen: Niveau-Drift, Regime-Merkmal, Vola-Regime, aktuelles Regime, Sammelart, ATR-Floor, Level-Auswahl, Beruehrungs-Erkennung, Timeout, Auswertungs-Aufloesung M1/M5, Richtungsquelle. Zwei Kontrollen bestaetigen die Werkzeuge: mein M1-Nachspiel reproduziert die Live-Auswertung zu 100 %, und pb_levels30 ist live befuellt - der M5-Fallback ist nicht aktiv. Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 61 insertions(+), 5 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index d3c2897..4d08c94 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4911,7 +4911,62 @@ 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) +## ✅⚠⚠ DIE „BASISRATEN-LÜCKE" WAR EIN MESSFEHLER — MEINER (2026-08-07, aufgelöst) + +Nach elf geprüften Hypothesen ist der Befund: **es gab keinen Fehler im System.** +Die 14,1 Pp („Backtest 38,6 % gegen live 52,7 %") entstanden dadurch, dass ich +**eine geclusterte 6-Tage-Stichprobe gegen ein 208-Tage-Mittel** gehalten habe. +| Ursache | Beitrag | +|---|---| +| **Zeitraum** — Backtest auf dieselben Tage (03.–07.08.) eingeschränkt: 38,6 → **43,4 %** | **+4,8 Pp = 34 %** | +| **Clusterung** — live entkoppelt (max. 1 je Level und Stunde): 52,7 → **45,2 %** | **−7,5 Pp = 53 %** | +| Rest | +1,8 Pp | +**Entkoppelt: live 45,2 % [95-%-KI 35,5 … 54,8] gegen Backtest 43,4 % — der +Backtest-Wert liegt IM Intervall. Kein belegbarer Unterschied.** + +⚠⚠ **Das ist exakt der Fehler, den ich am selben Tag in der Fälligkeitsbedingung +korrigiert hatte** (dort zählte sie 800 ROHE statt entkoppelte Vorhersagen) — +und ich habe ihn in der Auswertung selbst noch einmal gemacht. **Regel: bei +`pbreak_predictions` IMMER entkoppeln, bevor irgendeine Rate berichtet wird.** +Dieselbe Klasse wie die Bootstrap-Grenze bei `ci95` (überlappende Beobachtungen). + +**WAS DAVON ÜBRIG BLEIBT — und es ist deutlich weniger dramatisch:** +| Befund | Stand nach der Entkopplung | +|---|---| +| Basisrate „gewandert 37,8 → 53,2 %" | ❌ **zurückgezogen** — entkoppelt 45,2 %, Zeitraum-Effekt | +| Kalibrierungsfehler | ✅ **bleibt**: 14,3 Pp entkoppelt (roh 14,1) — KI **[6,8 … 25,5]**, also klar > 0. Das Modell sagt im Mittel **38,1 %**, real sind es **45,2 %** | +| „oberste Klasse invertiert" (69 % → 17,2 %) | ⚠ **NICHT belegt** — beruhte auf n=29 ROHEN Zeilen ≈ wenige unabhängige Fälle; entkoppelt bleibt die Klasse unter der Mindestbesetzung | +| AUC | unverändert **unentschieden** (entkoppelt n=93, KI [0,434 … 0,674]) | + +✅ **Konsequenz: nichts umbauen.** Es bleibt eine **modeste Unterschätzung von +~7 Pp** auf einer Stichprobe, die für eine Reparatur zu klein ist — genau +deshalb steht die Fälligkeitsbedingung jetzt auf **350 entkoppelten** +Vorhersagen (Stand 93). Vorher ist jede Korrektur Kurvenanpassung an Rauschen. + +**DIE ELF GEPRÜFTEN HYPOTHESEN** (alle einzeln gemessen, keine trägt): +| # | Hypothese | Ergebnis | +|---|---|---| +| 1 | Niveau/Achsenabschnitt driftet | Roll-Achse fällt live durch | +| 2 | Regime-Merkmal (ATR/Median) | H2→H1 schlechter | +| 3 | Vola-Regime treibt Bruchrate | über 5 Quintile **flach** (37,0–39,2 %) | +| 4 | aktuelles Regime ungewöhnlich | Median 0,96 = normal | +| 5 | Sammelart (je Berührung ↔ je Bar) | −1,7 Pp, falsche Richtung | +| 6 | ATR-Floor-Artefakt | +2,8 Pp (⚠ **53,9 %** der Backtest-Bars liegen auf dem Floor, live 5,4 %) | +| 7 | Level-Auswahl (gemischter Pool) | +0,4 Pp — **echter Bug, s. u., aber nicht die Ursache** | +| 8 | Berührung per Close statt Bar-Spanne | −3,9 Pp, falsche Richtung | +| 9 | Timeout zählt als Abprall | nur **2,3 %** im Backtest | +| 10 | Auswertungs-Auflösung M1 ↔ M5 | M5 **überschätzt** Brüche um +8,0 Pp (falsche Richtung) | +| 11 | Richtung (Signal ↔ diskretionär) | 38,0 / 37,6 / 37,5 % — **irrelevant** | +✅ **Zwei Kontrollen, die die Werkzeuge bestätigen:** mein M1-Nachspiel +reproduziert die Live-Auswertung zu **100 %** (die Auswertung ist korrekt), und +`pb_levels30` ist live befüllt (ph=6/pl=5) — der dokumentierte M5-Fallback ist +**nicht** aktiv. +⚠ Der ATR-Floor-Befund bleibt als Nebenwirkung 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 — genau die Verzerrung, die den +Zeitraum-Effekt (Punkt „Zeitraum" oben) erzeugt. + +## ⚠⚠ LEVEL-AUSWAHL: NACHBAU BEHOBEN (2026-08-07) Auftrag „behebe das" zum benannten nächsten Schritt: die Backtests bauten die Live-Level-Auswahl nach, statt sie zu benutzen. @@ -4959,10 +5014,11 @@ 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 +**Stand: der Fix ist richtig und gebaut, erklärt den Live-Fehler aber nicht** — +✅ **und das musste er auch nicht: die Lücke war ein Messfehler in meiner eigenen +Auswertung** (s. Abschnitt darüber). Der Bug im Nachbau ist davon unberührt echt +und bleibt behoben. +⚠ (erledigt) 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