diff --git a/CLAUDE.md b/CLAUDE.md index 4d5a922..4317ccb 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -465,13 +465,41 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche: ⚠⚠ **KONSEQUENZ: die heute mehrfach zitierten +0,456/+0,611 sind als Live-Erwartung ~0,32 R zu hoch.** Sie bleiben als Vergleich zwischen Market und Level gültig (dafür waren sie gerechnet), taugen aber nicht als Ertragsprognose. - ⚠⚠ **OFFEN und wichtig: derselbe Test fehlt für den SIG-Pending-Pfad** - (`backtest_auto_signal_v3.py`, +0,35/+0,32 — ebenfalls Variante (a), und seit - 05.08. live). Es gibt Grund, dort ein **schlechteres** Ergebnis zu erwarten als - beim Squeeze: die Squeeze-Box **steht still**, das `_pend`-Level dagegen - **wandert** bei jeder k×ATR-Gegenbewegung — genau die Eigenschaft, an der das - Momentum-Level gescheitert ist (s. u.), und die Ursache des Pending-Churns - (Drift-Fall 9). **Vor weiteren Schlüssen aus den SIG-Zahlen: nachmessen.** + ✅✅ **ERLEDIGT — der SIG-Pending-Pfad FÄLLT DURCH (`backtest_signal_touchfill.py`, + 2026-08-06, 80k M5, voller Live-Gate-Stack, kanonischer Exit, Echtkosten).** + | Konf | A) Markt am Bar-Close | B) Level, Fill bei Close-Bruch | **C) Level, Fill bei BERÜHRUNG** | + |---|---|---|---| + | ≥55 | −0,015 / −0,172 | +0,381 / +0,315 | **−0,392 / −0,338** ❌ | + | ≥65 | −0,024 / −0,085 | +0,367 / +0,385 | **−0,478 / −0,471** ❌ | + | ≥75 | −0,148 / −0,310 | +0,288 / +0,136 | **−0,184 / −0,202** ❌ | + **C ist in ALLEN SECHS Feldern negativ** (PF 0,38–0,71). Der Look-ahead-Aufschlag + beträgt **0,77–0,85 R** — grösser als beim Momentum (0,45) und beim Squeeze (0,32). + ⚠⚠ **C ist sogar schlechter als der MARKT-Einstieg** (−0,392 gegen −0,015). Der + Mechanismus ist im Trade-Zähler sichtbar: C hat **mehr** Fills als B (441 gegen + 328 · 659 gegen 455) — die zusätzlichen sind genau die Berührungen, die + zurückfallen, und die sind die Verlierer. Eine Order an einem **wandernden** + Level fängt systematisch die Fehlausbrüche ein. + ✅ **Damit ist die Vorhersage bestätigt:** entscheidend ist nicht „Level statt + Markt", sondern ob das Level **STILLSTEHT**. Squeeze-Box → hält (+0,124/+0,292); + `_pend` und Momentum → wandern → fallen durch. + ⚠ **Die im Bau-Eintrag vom 05.08. zitierten +0,39/+0,36 sind damit als + Live-Erwartung ungültig** — sie stehen in Variante B. Der Eintrag bleibt als + Historie stehen, gilt aber nur noch für den Vergleich Markt↔Level. + ✅ **Empfehlung: `signal_pending_entry = false`.** Nicht dringend — `auto_signal` + ist ohnehin aus, der Pfad platziert derzeit keine Orders (`_auto_guard` blockt am + Toggle). Aber der Schalter ist ein geladenes Gewehr: wer SIG wieder einschaltet, + bekommt den gemessen negativen Einstiegsweg. **Nicht eigenmächtig umgestellt** — + Live-Schalter sind User-Entscheidungen. + ⚠ **`squeeze_pending_entry` bleibt begründet** — dort steht die Box still, und + der Touchfill-Test ist bestanden. + ⚠ Zur Migrations-Prüfung: `lauf()` hat einen `fill`-Parameter bekommen + (Default `"close"`). Der Vorher/Nachher-Vergleich war **nicht bitgenau** — + Abweichung: EIN Trade in H2 (454→455). Ursache ist nicht der Patch (mit + `fill="close"` sind die ausgeführten Anweisungen identisch), sondern + **zwischenzeitlich eingetroffene Live-Bars**: `copy_rates_from_pos(0, 80000)` + ankert am neuesten Bar, das Fenster verschiebt sich zwischen zwei Läufen. + H1 war in beiden Läufen identisch. + - **⚠⚠ MOMENTUM-CONTINUATION MIT LEVEL-ORDER NEU GEMESSEN = BLEIBT VERWORFEN (`backtest_momentum_v2.py`, 2026-08-06, User-Wunsch).** Kein bloßes Wiederholen: der Lauf von 2026-07-17 stieg am **Bar-Close** ein, und genau diese Annahme hat