From b85dd010abea1b9f7543692264dc992ceaf9ad68 Mon Sep 17 00:00:00 2001 From: Axel Hocks Date: Wed, 12 Aug 2026 09:53:18 +0200 Subject: [PATCH] Wiedervorlage fuer den S/R-Wiedereinstieg als pruefbare Bedingung MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- measurement_reminder.py | 49 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/measurement_reminder.py b/measurement_reminder.py index 0f6bc48..136b6ce 100644 --- a/measurement_reminder.py +++ b/measurement_reminder.py @@ -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 %