From 1c976cc8fde2f1fb00a561a5fe1abd45cfcb3619 Mon Sep 17 00:00:00 2001 From: Axel Hocks Date: Tue, 4 Aug 2026 16:59:12 +0200 Subject: [PATCH] =?UTF-8?q?M30-Level-Umstellung=20live=20gegengeprueft=20?= =?UTF-8?q?=E2=80=94=20bestaetigt,=20Normierung=20war=20entscheidend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Faellige Messung aus dem Reminder (28/30 erreicht). S/R-Auto-Closes vor/nach der Umstellung der Level-Quelle M5 -> M30 am 30.07. Zeitraum n Med.Lots EUR/Lot O Move vorher (M5-Level) 89 0,81 +17,53 0,202 $ nachher (M30-Level) 28 0,53 +36,92 0,427 $ Ertrag je Lot mehr als verdoppelt, O-Kursbewegung je Trade ebenfalls - deckt sich mit der Backtest-Erwartung und mit dem Mechanismus (M30-Level liegen 1,95xATR auseinander statt 0,61xATR, der Trade laeuft laenger). DIE NORMIERUNG WAR ENTSCHEIDEND, sonst waere der Schluss falsch gewesen: unnormiert sah der 04.08. wie der Treiber aus (O +55,41 EUR je Trade gegen +19,30 im Rest). Je Lot ist heute aber praktisch identisch zum Rest (+38,81 vs +35,87) - der Unterschied war reine Positionsgroesse (Median 1,36 statt 0,46 Lots, weil das Konto an dem Tag von ~800 auf ~1.400 EUR wuchs). O-EUR-Vergleiche ueber Zeitraeume mit unterschiedlicher Positionsgroesse sind ungueltig. NICHT der Level-Quelle allein zuzuordnen: am 31.07. kamen P(break)-Nachtraining und Schwelle 0,55->0,35 dazu. Getrennt: 30.07. (nur M30-Level, altes Modell) n=8, +19,88 EUR/Lot; ab 31.07. (M30 + neues Modell) n=20, +43,73 EUR/Lot. Das Fenster mit nur der Umstellung ist zu klein. Der kombinierte Effekt ist bestaetigt, die Ursachenaufteilung nicht. Messung im measurement_reminder ausgetragen (mit Ergebnis als Kommentar). Co-Authored-By: Claude Opus 5 --- CLAUDE.md | 28 +++++++++++++++++++++++++++- measurement_reminder.py | 19 +++++++------------ 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index db577a6..5eb93b3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -3193,7 +3193,7 @@ hatte am 2026-07-30 bereits **2213 ausgewertete Zeilen**, ohne dass jemand hinsa | Verdict-Module auf Prädiktivität (`verdict_votes`) | ≥25 000 Verdicts | 8142 (33 %) | | **Manuelle Trades: Stufe 2** (was trennt Gewinner von Verlierern?) | ≥300 manuelle Trades **mit `ctx_*`** | 0 (Sammlung ab 04.08.) | | **Auto-Squeeze: B5-Abbruchprüfung** (Latte vorab fixiert) | ≥20 Squeeze-Trades ab 01.08. | 2 (10 %) | -| M30-Level-Umstellung live gegenprüfen | ≥30 S/R-Closes seit 30.07. | 17 (57 %) | +| ~~M30-Level-Umstellung live gegenprüfen~~ | **ERLEDIGT 04.08.** — s. u. | ✅ | | M1-Squeeze Variante B | ≥180 Tage `candles_m1` | 14 (8 %) | | News-Score-Prädiktivität | ≥90 Tage Sammlung | 9 (10 %) | @@ -3207,6 +3207,32 @@ bildet den Vorrang jetzt genauso ab wie der Engine-Start; mit einem Szenario ver (runtime `true` gegen validiert `false` → wird gemeldet). Neu überwacht: `auto_signal` (soll `false`) und `auto_squeeze` (soll `true`). +### ✅ M30-Level-Umstellung live gegengeprüft (04.08.) — bestätigt, mit einem Vorbehalt + +| Zeitraum | n | Med. Lots | **EUR/Lot** | Ø Move | +|---|---|---|---|---| +| **vorher** (M5-Level) | 89 | 0,81 | **+17,53** | 0,202 $ | +| **nachher** (M30-Level) | 28 | 0,53 | **+36,92** | 0,427 $ | + +Ertrag **je Lot mehr als verdoppelt**, Ø-Kursbewegung je Trade ebenfalls — deckt sich +mit der Backtest-Erwartung („R-Ertrag rund doppelt") und mit dem Mechanismus (M30-Level +liegen 1,95×ATR auseinander statt 0,61×ATR, der Trade läuft also länger). + +⚠⚠ **Die NORMIERUNG war entscheidend, sonst wäre der Schluss falsch gewesen.** +Unnormiert sah der 04.08. wie der Treiber aus (Ø **+55,41 €** je Trade gegen +19,30 € +im Rest). **Je Lot ist heute aber praktisch identisch zum Rest** (+38,81 gegen +35,87) +— der Unterschied war reine Positionsgröße (Median 1,36 statt 0,46 Lots, weil das +Konto an diesem Tag von ~800 auf ~1.400 € wuchs). Ø-EUR-Vergleiche über Zeiträume mit +unterschiedlicher Positionsgröße sind ungültig; das gehört bei jeder künftigen +Live-Auswertung mitgedacht. + +⚠ **Nicht der Level-Quelle ALLEIN zuzuordnen:** am 31.07. kamen das +P(break)-Nachtraining UND die Schwellensenkung 0,55 → 0,35 dazu. Getrennt: +30.07. (nur M30-Level, altes Modell) n=**8**, +19,88 €/Lot · ab 31.07. (M30 + neues +Modell) n=20, +43,73 €/Lot. Das Fenster mit nur der Umstellung ist zu klein für eine +Zuordnung. **Der kombinierte Effekt ist bestätigt, die Ursachenaufteilung nicht.** +Beide Änderungen waren im Backtest validiert und zeigen live in dieselbe Richtung. + *(erledigt und ausgetragen: P(break)-Genauigkeit → `analyze_pbreak_live.py` 31.07., Modell daraufhin nachtrainiert · Chartmuster-Kontrolltest → 30.07., Muster schlagen die Kontrolle in beiden Hälften, Gewicht 1,0)* diff --git a/measurement_reminder.py b/measurement_reminder.py index 95e6ae0..54e94e2 100644 --- a/measurement_reminder.py +++ b/measurement_reminder.py @@ -145,18 +145,13 @@ CHECKS = [ "→ `auto_squeeze=false` (B5-Rückbau, kein Ego). Sonst weiterlaufen " "lassen. Zahlen: /api/squeeze_monitor bzw. Statistik-Tab.", }, - { - "key": "m30_levels", - "title": "M30-Level-Umstellung live gegenprüfen", - "why": "Seit 2026-07-30 kommen S/R-Level + P(break) aus M30 statt M5 " - "(Backtest: R-Ertrag ~2×, AUC 0,721). Live gegenprüfen: bringt der " - "S/R-Auto-Close jetzt mehr pro Trade als vorher?", - "have": lambda: _q("SELECT COUNT(*) FROM trades WHERE closed_by='sr_close' " - "AND pnl IS NOT NULL AND exit_time >= " - "strftime('%s','2026-07-30')"), - "need": 30, "unit": "S/R-Closes seit der Umstellung", - "cmd": "sr_close-Trades vor/nach 2026-07-30 vergleichen (ØEUR, Trefferquote)", - }, + # (erledigt 2026-08-04: „M30-Level-Umstellung live gegenprüfen" — Ertrag JE LOT + # +17,53 → +36,92 €, Ø-Move je Trade 0,202 → 0,427 $, also verdoppelt wie im + # Backtest erwartet. ⚠ Normierung war entscheidend: unnormiert sah HEUTE wie der + # Treiber aus (Ø +55 € vs +19 €), je Lot ist heute aber praktisch identisch zum + # Rest (+38,81 vs +35,87) — der Unterschied war reine Positionsgröße. + # ⚠ NICHT der Level-Quelle allein zuzuordnen: am 31.07. kamen P(break)-Nachtraining + # und Schwelle 0,55→0,35 dazu; das Fenster mit NUR der Umstellung hat n=8.) # (erledigt 2026-07-30: Chartmuster-Kontrolltest gegen generischen Swing-Bruch — # Muster schlagen die Kontrolle in beiden Hälften (+0,022/+0,108) → Gewicht 1,0) {