backtest_patterns.py + Circuit Breaker aus (User)

- backtest_patterns.py: misst die Chartmuster (echte patterns.py-Logik), 2 Halbjahre.
  Befund: ØR sieht positiv aus, aber Ziel-Trefferquote nur 13-38% → positiver R ist
  Trailing-Exit-Artefakt (Breakout+Trailing), KEIN Muster-Edge. Deckt sich mit
  backtest_doubletop (Ziel-Exit=negativ). Muster bleiben reine Anzeige; Kontrolle
  (generischer Breakout) fehlt noch fuer sauberen Beleg.
- daily_loss_limit_pct=0 (Circuit Breaker auf User-Wunsch wieder deaktiviert).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-07-27 18:55:48 +02:00
co-authored by Claude Opus 4.8
parent e5589da08b
commit 9dc26ad48f
3 changed files with 219 additions and 4 deletions
+19 -3
View File
@@ -805,9 +805,11 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
Heuristik-TF nur im Speicher (kein `save_config` mehr) — sonst würde die
Secrets-`ini` bei jedem Switch neu geschrieben (Kommentar-Verlust/Churn). Beim
Neustart wählt die Heuristik den TF binnen 1 min neu.
- **Circuit Breaker (Tagesverlust-Stopp) = AKTIV `[trading] daily_loss_limit_pct=8`
(User-Vorgabe 2026-07-27, im Rahmen des „Überlebens-Basis"-Pakets — vorher jahrelang
abgelehnt, mit dem Autonomie-Ziel reaktiviert):** erreicht der **Tages-P&L
- **Circuit Breaker (Tagesverlust-Stopp) = gebaut, aktuell AUS `[trading]
daily_loss_limit_pct=0` (User schaltete ihn am 2026-07-27 wenige Stunden nach dem
Einbau wieder ab). Kurz auf 8 aktiv (Überlebens-Basis, mit dem Autonomie-Ziel
reaktiviert nach jahrelanger Ablehnung), dann `=0`. Reaktivieren = ini auf z. B. 8.**
Mechanik bei `>0`: erreicht der **Tages-P&L
(realisiert heute + offene Position)** pct % der Balance, schließt der Bot die
Position (`closed_by=circuit_breaker`) und sperrt **neue Auto-Trades bis zum
nächsten Tag** (`_check_auto_squeeze` prüft `_circuit_halted()`). `_check_circuit_
@@ -1138,6 +1140,20 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
IG, Axi): Umkehr (Doppel-, SKS, Rundung) vs. Fortsetzung (Dreieck, Flag, Tasse);
Kursziel stets = Muster-Höhe ab Ausbruch projiziert — überall mit dem Caveat
„keine Garantie, nur Indikation".
**Backtest gebaut & gemessen (`backtest_patterns.py`, 2026-07-27, 80k M30, 2
Halbjahre, Einstieg beim Trigger-Bruch, Live-Exit+Echtkosten):** Mehrere Typen sehen
ØR-positiv in BEIDEN Hälften aus (Doppeltop +0,43/+0,23 · Tasse +0,35/+0,26 · inv.
Tasse +0,36/+0,58 · aufst. Dreieck +0,16/+0,10). ⚠ **ABER das ist ein Exit-Artefakt,
KEIN Muster-Edge:** die **Ziel-Trefferquote (Measured-Move vor SL) ist nur 1338 %**
— die eigene Muster-Prognose trifft also in ~⅔ der Fälle NICHT. Der positive ØR
kommt vom **Trailing-Exit auf einem Momentum-Bruch** (Trigger-Bruch = Breakout, und
Breakout+Trailing hat generisch Edge — s. Squeeze), nicht von der Muster-Vorhersage.
Deckt sich mit `backtest_doubletop.py` (dort mit Ziel-/Fix-Exit → negativ) — der
Unterschied ist NUR der Exit. **Fazit: NICHT reif für Signal-Einfluss** — es fehlt
die Kontrolle „generischer Breakout + gleicher Exit" (isoliert den Muster-Beitrag,
wie Squeeze vs. beliebige Box); ohne die ist „Muster wirkt" nicht belegt. Muster
bleiben **reine Anzeige**. Ziel%-Spalte = der ehrliche Muster-Check (1338 % = Muster
sagen den Kursverlauf kaum voraus).
- **Kurslücken-Kachel** (`#card-gaps`): offene D1-Gaps des laufenden Jahres
(`gaps.GapAnalyzer`, Refresh ~10 min im Trend-Loop unter `mt5_lock`). Je Gap:
Richtung, Zone, Fill-Level, Abstand zum Kurs. Die **Fill-Level fließen als