Gegen-/Stop-Seiten-Anzeige P(Durchbruch) (stop_approach, v=109)

Zeigt die Durchbruchwahrscheinlichkeit fuer das Level, dem sich der Kurs auf der
Gegen-/Stop-Seite der offenen Position naehert (LONG->Support darunter,
SHORT->Resistance darueber) — reine Anzeige, kein Auto-Close. Vorher per
backtest_pbreak_calibration.py belegt: Modell haelt auf der Gegen-Seite
out-of-sample (AUC 0,68/0,72 in beiden Haelften), niedriger P-Bereich kalibriert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-07-24 16:19:39 +02:00
co-authored by Claude Opus 4.8
parent 6318817ac1
commit 027995d1e7
6 changed files with 274 additions and 6 deletions
+20 -1
View File
@@ -559,6 +559,25 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
mit synthetischen Szenarien (break/bounce/Gegenteil-falsch/Timeout) — alle 4 exakt
wie erwartet. **Reine Messung, kein Signal-/Exit-Eingriff** — noch keine UI-Karte
(Datensammlung; B4-artige Auswertung später möglich, wenn genug Zeilen vorliegen).
**Gegen-/Stop-Seiten-Anzeige `stop_approach` (2026-07-24, User-Frage „Kurs nähert
sich Support, aber keine Durchbruchwahrscheinlichkeit angezeigt"):** Der reguläre
`sr_close_hint` beobachtet nur das **Ziel-Level** (LONG→Resistance, SHORT→Support)
und wirkt nur im Plus — nähert sich der Kurs dem **Gegen-/Stop-Level** (LONG→Support
darunter, SHORT→Resistance darüber, typ. Verlust-Trade), war die App bewusst still.
Neu: `engine._stop_approach_hint` liefert für GENAU dieses Level eine **reine
Anzeige** von P(Durchbruch) — Break-Richtung `-d` (gegen den Trade), Feature-/
60-s-Glättung (`_stop_pb_state`) identisch zu `_sr_close_hint`. **KEIN Auto-Close.**
Snapshot `stop_approach {level, side, p_break, at_level, gap_atr, confirm, reject}`,
Frontend `#pos-stophint` (grün „Level hält wahrscheinlich" bei P<50, rot „bricht
wahrscheinlich durch" bei ≥50; nur wenn KEIN Ziel-`sr_close_hint` läuft; v=109).
**Vorher gemessen (`backtest_pbreak_calibration.py`, 2026-07-24, Gate „erst messen,
dann bauen"):** Das kalibrierte P(break)-Modell (auf Ziel-Seite trainiert) hält
auch auf der **Gegen-/Stop-Seite** — AUC **0,68/0,72** out-of-sample in BEIDEN
Hälften (≈ Ziel-Seite 0,67/0,71), im niedrigen P-Bereich sauber kalibriert (der
praktisch wichtige „hält der Support?"-Fall). ⚠ Einzige Schwäche: im HOHEN Bereich
(P≥0,5) GEGEN den Trend unterschätzt es die Bruch-Rate ~1013 Pp (predicted 58 % →
echt 71 %) — also **konservativ** (warnt eher zu wenig vor einem Bruch), kein
Kalibrierungs-Bruch. Deshalb reine Anzeige, kein Trade-Trigger.
**Anti-Flattern (2026-07-14, gemessen `analyze_pbreak_flicker.py`:** mom3 der
laufenden M5-Kerze ließ P 715 Pp/Bar springen, Max 77 Pp; 8 % der Annäherungen
hatten ≥2 Schwellen-Flips): (1) **P zeit-geglättet** (~60-s-EMA in `_pb_state`,
@@ -1084,7 +1103,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=108** (in `web/index.html` hochzählen, siehe Workflows).
- Asset-Version aktuell **v=109** (in `web/index.html` hochzählen, siehe Workflows).
## Web-API (server.py)
`GET /api/snapshot` (inkl. `verdict`-Aggregat) `/api/health` `/api/logs` `/api/stats` `/api/news` `/api/bars?tf=&n=` (Charts, read-only) `/api/squeeze_monitor` (B4-Monitor, read-only, Engine-Cache 60 s) · `WS /ws` ·