Wiedervorlage fuer den S/R-Wiedereinstieg als pruefbare Bedingung

User fragte "Wiedervorlage fuer wann?" - "irgendwann" ist keine.
Jetzt als CHECKS-Eintrag im Reminder mit automatisch pruefbarer
Bedingung: 500 entkoppelte Faelle "Gate schliesst, Level bricht doch"
aus pbreak_predictions (predicted=bounce, outcome=break) ab dem
Nachtrainieren. Stand 55/500, ~4,9/Tag -> faellig um den 10.11.2026.

Schwelle bewusst bei 500: loest einen wahren OeR ab ~0,118 auf und
deckt damit die UNTERE Backtest-Schaetzung (+0,12) ab. Bei n=175
(~25 Tage) waere nur OeR >= 0,20 aufloesbar - die Bedingung liefe ab,
ohne entscheiden zu koennen. Genau dieser Fehler steckte in
pbreak_accuracy_v2 (Faktor 10 zu frueh faellig).

⚠ Eigener Fehler beim Aufsetzen, dokumentiert: ich hatte "roh 193 =
entkoppelt 193" gemessen und daraus ~17 Faelle/Tag geschlossen.
schluessel_level_stunde ist eine FABRIK und muss aufgerufen werden -
uebergibt man sie selbst, ist jeder Schluessel ein neues
Funktionsobjekt und es wird nichts dedupliziert. Richtig sind 55
= ~4,9/Tag, also 3 Monate statt 3 Wochen.
Projektweit geprueft: die zwei echten Verwendungen in
analyze_divergence.py rufen sie korrekt auf (mit Spaltennummern) -
nur die Ad-hoc-Auswertung war betroffen, die D0-Zahlen stehen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-12 09:53:18 +02:00
co-authored by Claude Opus 5
parent 2b668b8fa2
commit b85dd010ab
+49
View File
@@ -49,6 +49,55 @@ def _days_since(iso: str) -> float:
# have = aktueller Stand · need = Schwelle · unit = Anzeigeeinheit
# cmd = was zu tun ist, wenn fällig
CHECKS = [
{
# ⚠⚠ WIEDERVORLAGE aus dem Backtest vom 2026-08-12
# (`backtest_srclose_reentry.py`). Die Frage des Users: wenn das
# P(break)-Gate schliesst („Level haelt") und die Linie bricht doch —
# lohnt der Wiedereinstieg? Ergebnis ueber 2 Halbjahre:
# 0,3×ATR H1 +0,119 [0,138 … +0,387] · H2 +0,196 [+0,065 … +0,332]
# 0,5×ATR H1 0,043 · H2 +0,043
# 0,7×ATR H1 +0,079 · H2 +0,014
# Die vorab fixierte Regel ist verfehlt (H1s KI enthaelt die Null, und
# der Nachbar 0,5 dreht H1 negativ). ABER: der OeR ist bei 0,3 in BEIDEN
# Haelften positiv, und zwei gleichgerichtete Haelften sind mehr als eine
# — „KI enthaelt 0" heisst nicht widerlegt, sondern nicht belegt.
# ⚠ Der Backtest kann NICHT besser werden: H1 ist feste Historie, und die
# M5-Tiefe des Brokers ist bei 80k Bars gedeckelt. Was waechst, sind
# LIVE-Faelle — und die stehen bereits in `pbreak_predictions`
# (predicted='bounce' + outcome='break' = genau dieser Fall).
# ⚠⚠ ENTKOPPELT ZAEHLEN — und das ist nicht kosmetisch. Beim Aufsetzen
# dieser Bedingung habe ich zuerst „roh 193 = entkoppelt 193" gemessen
# und daraus ~17 Faelle/Tag geschlossen. Falsch: `schluessel_level_stunde`
# ist eine FABRIK und muss AUFGERUFEN werden; uebergibt man sie selbst,
# ist jeder Schluessel ein neues Funktionsobjekt und es wird nichts
# dedupliziert. Richtig sind **55** Faelle = **~4,9/Tag**.
# (Die zwei echten Verwendungen in `analyze_divergence.py` rufen sie
# korrekt auf — nur die Ad-hoc-Auswertung war betroffen.)
# SCHWELLE 500: loest einen wahren OeR ab ~0,118 auf (n > (1,96·1,35/OeR)²
# bei der gemessenen SD ~1,35) und deckt damit auch die UNTERE
# Backtest-Schaetzung (+0,12) ab. Bei ~4,9/Tag sind das **~3 Monate**.
# ⚠ Bewusst NICHT kleiner: bei n=175 (~25 Tage) waere nur ein OeR ≥0,20
# aufloesbar — die Bedingung liefe ab, ohne entscheiden zu koennen.
# Genau dieser Fehler steckte in `pbreak_accuracy_v2` (Faktor 10 zu
# frueh faellig). Lieber spaet und entscheidbar als frueh und wertlos.
"key": "srclose_reentry",
"title": "Wiedereinstieg nach S/R-Close erneut prüfen (Live-Daten)",
"why": "Backtest 2026-08-12 nicht entscheidbar: bei 0,3×ATR "
"Bestätigung ØR +0,119/+0,196 — beidhälftig positiv, aber H1s "
"95-%-KI enthält die Null und der Nachbar 0,5 kippt H1. Der "
"Backtest kann nicht besser werden (H1 ist feste Historie); "
"was wächst, sind Live-Fälle. Auswerten: die Fälle mit "
"predicted='bounce' und outcome='break' gegen den kanonischen "
"Exit rechnen (Vorlage: analyze_srclose_reentry.py) und gegen "
"die Backtest-Erwartung +0,12…+0,20 halten.",
"have": lambda: _q(
"SELECT COUNT(*) FROM (SELECT DISTINCT ROUND(level,2), ts/3600 "
"FROM pbreak_predictions WHERE predicted='bounce' "
"AND outcome='break' AND ts >= 1785492000)"), # 31.07.2026 12:00
"need": 500,
"unit": "entkoppelte Fälle 'Gate schliesst, Level bricht doch' ab 31.07.",
"cmd": "python analyze_srclose_reentry.py (bzw. auf pbreak_predictions erweitern)",
},
{
# ERLEDIGT 2026-07-31 (analyze_pbreak_live.py, 2275 Vorhersagen): das Modell
# hält live NICHT — AUC 0,539 statt 0,71, Kalibrierung sagt 8 % wo 39 %