P(break) v2 live geprueft: Kalibrierung daneben, Trennschaerfe unentschieden
Faellige B4-Messung nach dem Nachtrainieren vom 31.07. (878 Vorhersagen ab 01.08.). Drei Befunde. 1) Das Skript mischte zwei Modelle. Es trennte bei der M30-Umstellung (30.07.), nicht beim Nachtrainieren (31.07.) - "GESAMT" las altes und neues Modell zusammen. Derselbe Fehler wie am 02.08. in analyze_divergence.py. Neu: MODELL_V2 mit demselben Stichtag wie die Faelligkeitsbedingung. 2) Kalibrierung messbar daneben. Die Basisrate ist gewandert: Training 37,8 %, live 53,2 %, stabil ueber vier volle Tage (51,4 / 54,1 / 56,4 / 53,8 % bei n=122-276). Ein Modell, dessen Niveau an 37,8 % verankert ist, muss in einem 53-%-Regime systematisch zu niedrig sagen - genau das passiert. Oberste Klasse invertiert (69 % vorhergesagt, 17 % real). 3) Trennschaerfe NICHT entscheidbar - und das ist der wichtigere Befund. Entkoppelt n=87, AUC 0,556, 95-%-Bootstrap-KI [0,434 ... 0,674]. Das Intervall enthaelt den Zufall (0,50) UND die Messlatte (0,654). Die Faelligkeitsbedingung zaehlte die falsche Groesse: 800 ROHE Vorhersagen, die aber nicht unabhaengig sind (dieselbe Position pendelt um dasselbe Level). Aus 878 rohen werden 87 entkoppelte - die Bedingung ueberschaetzte die Beweismenge um rund das Zehnfache und meldete "faellig", obwohl die Messung nichts entscheiden konnte. Jetzt 350 ENTKOPPELTE (halbiert die KI-Breite). Stand 87/350. Operativ kein Notfall: auto_sr_close ist seit 06.08. false, das Modell schliesst keine Trades. Es speist nur Anzeige, Chart-Linien und Copilot-Kontext. Nichts umgestellt - ein drittes Fitten derselben Bauart wuerde denselben Weg gehen; der Befund zeigt aufs Niveau, nicht zwingend auf die Rangfolge. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
3e8fa9fea8
commit
908e20a9d0
+17
-3
@@ -62,9 +62,23 @@ CHECKS = [
|
||||
"backtest_srclose_prob.py aufnehmen und neu fitten (live in beiden "
|
||||
"Hälften +6/+4 Pp für die 2.–4. Berührung, 5.+ fällt zurück). "
|
||||
"Danach mit frischen Live-Daten gegenprüfen.",
|
||||
"have": lambda: _q("SELECT COUNT(*) FROM pbreak_predictions "
|
||||
"WHERE outcome IS NOT NULL AND ts >= strftime('%s','2026-08-01')"),
|
||||
"need": 800, "unit": "Vorhersagen seit 01.08.",
|
||||
# ⚠⚠ EINHEIT KORRIGIERT 2026-08-07 — die alte Bedingung zählte die FALSCHE
|
||||
# Größe. Sie stand auf 800 ROHEN Vorhersagen; die sind aber NICHT
|
||||
# unabhängig (dieselbe Position pendelt vielfach um dasselbe Level). Am
|
||||
# 07.08. war sie mit 878 „fällig" — entkoppelt (max. 1 je Level und
|
||||
# Stunde) waren es **87**, und das 95-%-Bootstrap-Intervall der AUC ging
|
||||
# von 0,434 bis 0,674: es enthält sowohl den Zufall (0,50) als auch die
|
||||
# Messlatte (0,654). Die Messung konnte also gar nichts entscheiden.
|
||||
# Die Abhängigkeit war im Skript seit jeher dokumentiert („entkoppelte
|
||||
# Sicht"), nur die Fälligkeit zählte daran vorbei — sie überschätzte die
|
||||
# Beweismenge um rund das Zehnfache.
|
||||
# 350 entkoppelte Zeilen ≈ halbe KI-Breite (0,12 → 0,06), erst dann sind
|
||||
# 0,50 und 0,65 überhaupt trennbar. Bei ~17/Tag sind das ~3 Wochen.
|
||||
"have": lambda: _q(
|
||||
"SELECT COUNT(*) FROM (SELECT DISTINCT ROUND(level,2), ts/3600 "
|
||||
"FROM pbreak_predictions WHERE outcome IS NOT NULL "
|
||||
"AND ts >= strftime('%s','2026-08-01'))"),
|
||||
"need": 350, "unit": "ENTKOPPELTE Vorhersagen seit 01.08. (max. 1 je Level und Stunde)",
|
||||
"cmd": "python analyze_pbreak_live.py",
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user