Roast-Punkte 1-3: Erfolgskontrolle erweitert, flip_close sichtbar, WARTEN-Massstab
korrigiert - und ein eigener Messfehler gefunden
(3) backtest_dist_gated.py: der 43-%-Massstab war UNGUELTIG. backtest_dist.py
misst _build ALLEIN, ohne Breakout-Bestaetigung und ohne Entry-Raum-Gate - genau
die beiden sind live die groessten Blocker. Ueber 80k Bars: nur _build 77,9 %
gerichtet, voller Live-Stack 19,5 %, live 7,2 %. Der reale Abstand ist 12,3 Pp,
nicht 50. Damit ist der "93 statt 43 %"-Alarm entschaerft, der den TF-Churn-Fix
ausgeloest hat; die dortige Erfolgskontrolle ist hinfaellig. Ein Rest bleibt
(min_conf live 16,3 % gegen 0,9 % in der Sim) und ist als naechster Ansatzpunkt
notiert.
⚠ Dabei EIGENEN Fehler gefunden: set_entry_room(0.6) fehlte in DREI heute neu
gebauten Skripten - _entry_room_atr ist im Konstruktor 0.0, _room_gate ist dann
ein No-op. Aufgefallen, weil entry_room in der Verteilung mit 0 % auftauchte
statt mit 35 %. Alle drei korrigiert und die SIG-Messung WIEDERHOLT: Population
aendert sich stark (n 967->295 / 1327->524), die Schlussfolgerung nicht - Market
in 7 von 8 Feldern negativ, am Level bestehen alle vier Schwellen
(OeR +0,392/+0,356, PF 2,37/2,39), Slippage-Test haelt bis 0,20 xATR. Die
heutige Bau-Entscheidung ist gedeckt.
(2) auto_flip_close ist jetzt sichtbar (#flip-note, v=139) - mit Schwelle,
Zaehler UND der Messung im Text ("gemessen in beiden Halbjahren negativ"). Ein
blanker Zaehler haette wie ein Erfolg ausgesehen. Der Exit bleibt an.
(1) analyze_squeeze_entry_gap.py erfasst jetzt BEIDE Bot-Pfade (Squeeze +
Signal), Reminder entsprechend erweitert - sonst wartet er auf eine Population,
die vielleicht nie kommt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
90d77a2305
commit
516f1eaa7f
@@ -331,6 +331,29 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
|
||||
(`backtest_conf.py`): Band **40–54 % = negativer Edge** (−0,025), ≥55 % = +0,058;
|
||||
Gate hebt Ø-Edge ~+50 % und den Gesamtertrag (entfernt die schwachen Setups, bei
|
||||
denen zu viele Strafen gestapelt sind — typisch der Lagging-Short am Boden).
|
||||
- **⚠⚠ DER 43-%-MASSSTAB WAR UNGÜLTIG — der richtige liegt bei ~80 % WARTEN
|
||||
(gemessen `backtest_dist_gated.py`, 2026-08-05).** `backtest_dist.py` misst
|
||||
**`_build` ALLEIN**, ohne **Breakout-Bestätigung** und ohne **Entry-Raum-Gate**.
|
||||
Genau die beiden sind live die größten Blocker. Über 80k M5-Bars:
|
||||
| | gerichtet | WARTEN |
|
||||
|---|---|---|
|
||||
| nur `_build` (die alte Referenz) | **77,9 %** | 22,1 % |
|
||||
| **voller Live-Stack** | **19,5 %** | **80,5 %** |
|
||||
| LIVE (seit 01.08., ohne `stale`) | 7,2 % | 92,8 % |
|
||||
Aufschlüsselung im vollen Stack: entry_room **41,4 %** · breakout_pending 17,0 % ·
|
||||
stretch 13,8 % · deadband 7,4 % · min_conf 0,9 %.
|
||||
✅ **Damit ist der „93 % statt 43 %"-Alarm entschärft**, der den TF-Churn-Fix
|
||||
(2026-07-31) ausgelöst hat: verglichen wurden zwei verschiedene Systeme. Der reale
|
||||
Abstand zum gültigen Maßstab ist **12,3 Pp**, nicht 50.
|
||||
⚠ **Ein Rest bleibt** (19,5 → 7,2 %) und ist NICHT wegerklärt. Kandidaten, die eine
|
||||
Bar-Simulation prinzipiell nicht abbildet: der **TF-Wechsel** (live wandert die
|
||||
Basis-TF M5…M30, die Sim ist fix M5), Cooldowns, EIA-/News-Fenster, und die
|
||||
**Abtastung** — live wird pro Sekunde gemessen, ein `breakout_pending`-Zustand
|
||||
hält über eine ganze Bar an und ist deshalb live überrepräsentiert (26,5 % gegen
|
||||
17,0 %). Der auffälligste Einzelposten ist **min_conf: live 16,3 %, Sim 0,9 %** —
|
||||
das ist der nächste konkrete Ansatzpunkt, wenn jemand dem Rest nachgehen will.
|
||||
⚠ **Die im TF-Churn-Fix dokumentierte Erfolgskontrolle („WARTEN-Anteil Richtung
|
||||
43 % bewegen") ist damit hinfällig** und sollte nicht weiterverfolgt werden.
|
||||
- **Signalhäufigkeit** (`backtest_dist.py`): ~57 % der Zeit LONG/SHORT, ~43 % WARTEN.
|
||||
WARTEN-Treiber: M30-Gegen-Trend (~27 % der Bars, gewollt, Edge×2) + Überdehnung
|
||||
+ Totband. `_STRETCH_MAX` 2,5→**3,5** angehoben (`backtest_stretch.py`: +26 %
|
||||
@@ -1436,6 +1459,21 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
|
||||
⚠ **B4-Pflicht:** dieselbe Erfolgskontrolle wie beim Squeeze — der Abstand
|
||||
Einstieg↔Level muss gegen 0 gehen. AUTOSIG-Trades sind über `setup=AUTOSIG_*`
|
||||
separierbar.
|
||||
⚠⚠ **ZWEITER Methodik-Fehler, am selben Tag gefunden und die Messung WIEDERHOLT:
|
||||
`set_entry_room(0.6)` fehlte.** `WaveRecommender.__init__` setzt
|
||||
`_entry_room_atr = 0.0`, und `_room_gate` gibt dann `rec` **unverändert** zurück —
|
||||
der Aufruf sieht im Code aus wie ein Gate, ist aber ein No-op. Betroffen waren
|
||||
DREI am 05.08. neu gebaute Skripte (`backtest_auto_signal_v3`, `_metalabel`,
|
||||
`_dist_gated`); die Referenz `backtest_breakout_gated.py` (04.08.) macht es richtig.
|
||||
Aufgefallen ist es erst, weil `entry_room` in der Verteilung mit **0 %** auftauchte,
|
||||
live aber 35 % blockt. **Neu gerechnet ändert sich die Population stark (n 967→295
|
||||
bzw. 1327→524), die Schlussfolgerung aber NICHT:** Market bleibt in 7 von 8 Feldern
|
||||
negativ, am Level bestehen weiterhin **alle vier** Konfidenz-Schwellen
|
||||
(ØR +0,392/+0,356 · PF 2,37/2,39), und der Slippage-Härtetest hält bis 0,20×ATR
|
||||
(+0,177/+0,118). **Die heutige Bau-Entscheidung ist damit gedeckt.**
|
||||
⚠ Lehre: ein aufgerufenes Gate ist nicht dasselbe wie ein aktives Gate. Beim
|
||||
Kopieren einer Backtest-Struktur gehört die **Konfiguration** mitkopiert — sonst
|
||||
misst man einen Stack, den es nicht gibt.
|
||||
⚠ **Methodik-Fehler beim Bau, gefunden und behoben:** der erste Entwurf liess
|
||||
`pend["level"]` nach der Bestätigung über weitere Bars stehen — bei verzögertem
|
||||
Einstieg (Slot belegt, Konfidenz zu niedrig) wäre er zu einem Preis eingestiegen,
|
||||
@@ -2933,7 +2971,7 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
|
||||
Signal → **Hinweis-Dialog „trotzdem eröffnen?"** (überschreibbar). CLOSE bei
|
||||
**negativem** P&L → Sicherheitsabfrage; im Plus/Breakeven direkt. Sonst keine
|
||||
Token-Dialoge (`require_token=false`). Audio braucht 1× Nutzer-Tap.
|
||||
- Asset-Version aktuell **v=138** (in `web/index.html` hochzählen, siehe Workflows).
|
||||
- Asset-Version aktuell **v=139** (in `web/index.html` hochzählen, siehe Workflows).
|
||||
Schriftgrößen 2026-07-24 global **+4px** (2× je +2px auf User-Wunsch; Body-Basis
|
||||
14→18px). ⚠ Betrifft in `style.css` sowohl `font-size:Npx` (71×) ALS AUCH die
|
||||
`font:<weight> Npx/…`-**Shorthand** (3×: `.ms-chip`/`.ms-bos-lbl`/`.sqm-badge` —
|
||||
@@ -3649,10 +3687,13 @@ Funktionsreferenzen in CLAUDE.md stimmen · Asset- und Indikator-Version konsist
|
||||
ein reines Migrations-Artefakt (Spalte kam am 31.07.); seit 01.08. **100 % Abdeckung**.
|
||||
|
||||
**Offen (nicht behoben, bewusst):**
|
||||
- **`auto_flip_close=true` läuft ohne jede UI-Anzeige.** Ein Exit, der gemessen in
|
||||
BEIDEN Hälften Geld kostet (−92/−160 R), schließt echte Trades; `flip_close`,
|
||||
`flip_close_min_r` und `flip_close_count` haben keinen Frontend-Konsumenten. Nur
|
||||
Log + Telegram. Entweder anzeigen oder abschalten — Entscheidung des Users.
|
||||
- ✅ **ERLEDIGT 2026-08-05: `auto_flip_close` ist jetzt SICHTBAR** (`#flip-note` in
|
||||
der Meldungen-Karte, v=139). Zeigt Schwelle und Auslöse-Zähler und **nennt
|
||||
ausdrücklich die Messung** („⚠ gemessen in beiden Halbjahren negativ", −92/−160 R)
|
||||
— ein blanker Zähler hätte wie ein Erfolg ausgesehen. Der Exit bleibt AN
|
||||
(User-Wunsch), aber die Entscheidung ist jetzt informiert. Live-Stand: 4
|
||||
Auslösungen, +284,22 € (n=4 = ohne Aussagekraft). Abschalten:
|
||||
`[trading] auto_flip_close=false`.
|
||||
- **`breakout_k=0,3` ruht weiter auf dem `LEGACY_BE10`-Exit** (Breakeven 1,0 statt
|
||||
live 1,3). Der Legacy-Recheck hat EIA und Dead-Hours nachgerechnet, `breakout_k`
|
||||
nicht. Kandidat für den nächsten Recheck.
|
||||
|
||||
Reference in New Issue
Block a user