# MS-EXACT-PRODUCTION-PIPELINE-REPLAY-1 — Report **Datum:** 2026-06-05 10:21 UTC **Modus:** READ-ONLY EXECUTE — kein Bot/Worker/DB/Container-Touch, kein Mainnet, kein Push, kein Allowlist/Denylist **Daten:** 365d OHLCV (1h+4h+8h+12h) für 19 Coins + BTC 1d 730d Macro **Engine:** Echte Production-Module — `scanner.regime`, `scanner.indicators`, `strategies.router`, `strategies.registry`, `strategies.decision_engine`, alle 6 Strategie-Klassen, `execution.position_manager` Exit-Konstanten **Trade-Events:** Router-Mode 4962, Forced-Mode 5997 (jeweils 3 Hold-Windows pro Signal) --- ## 0. TL;DR — Bisherige Befunde sind **falsifiziert** > **Die simplified Replay war eine schlechte Approximation.** > > Production-Pipeline `trend_follow` ist **profitabel über alle Macro-Regimes**, nicht invertiert wie der simplified Replay suggerierte: > > - **Simplified replay 1078 trades = -73.86 %** (STRONG_BULL Killer) > - **Production replay 1654 trades = +117.58 %** (STRONG_BULL: +88.7 %) > > Akzeptanz-Kriterien aber **nicht erfüllt**: PF 1.14 (< 1.5), VAL 53 % P(loss), Macro BULL Sample zu klein. > > **Differenzierte Empfehlung:** > - ✅ `trend_follow` funktioniert → kein Redesign nötig > - ❌ `breakout` ist defekt (-21 % router, -52 % forced) → Disable oder Refactor > - 🟡 `mean_reversion` / `volatility_sweep` Sample zu klein → längere History > - ⏸️ MS bleibt vorerst pausiert wegen schwacher Validation und PF<1.5 --- ## 1. Vergleich Simplified vs Production-Exact | Metric | Simplified Replay (1078) | Production-Exact (Router, 1654) | Δ | |---|---|---|---| | Total Net % | **-73.86 %** | **+117.58 %** | **+191 pp** | | WR | 46.7 % | 50.3 % | +3.6 pp | | PF | 0.86 | 1.139 | +0.28 | | Macro STRONG_BULL Total | -87.45 % | **+88.70 %** | +176 pp | | Macro BEAR Total | +8.71 % | +8.81 % | ≈ | | Macro CRASH Total | +35.95 % | +20.57 % | -15 pp | **Erklärung der Diskrepanz:** Der simplified Replay nutzte ein 20-Bar-Breakout + RSI 55-75 + Volume 1.2× — das ist eine **Late-Stage-Breakout-Chase**-Logik. Die echte `trend_follow` Strategie wartet auf **Pullback in EMA20-Zone** + bullish-Confirm-Candle + 4h-MTF-Gate — das ist eine **Pullback-Entry**-Logik. Letztere kauft NICHT in den Spike rein, sondern wartet auf den Rückgang zur EMA. **Lehre:** „Trend follow" ≠ „Breakout" — der simplified Test hat falsche Logik gehabt. --- ## 2. Router-Mode — Detailbefund (HOLD=4h) | Metric | Value | |---|---| | N (trade-events) | 1654 | | Win-Rate | 50.3 % | | Expectancy | +0.071 % | | Profit-Factor | **1.139** | | Total Net | **+117.58 %** | | Max-DD | 75.8 % (sum-of-pct, nicht Equity-Curve) | | Max Loss-Streak | 11 | | Bootstrap P(loss) | **8.4 %** | | Bootstrap CI 95 % | [-53.0 %, +315.7 %] | ### Walk-Forward (60/20/20) | Split | N | Total | PF | P(loss) | |---|---|---|---|---| | TRAIN | 992 | **+99.76 %** | **1.21** | **7.2 %** ✓ | | **VALIDATION** | 331 | +4.26 % | 1.025 | **53.0 %** ✗ | | TEST | 331 | +13.56 % | 1.066 | 39.6 % | → TRAIN super, VALIDATION instabil (P(loss) 53 %), TEST nominal positiv. --- ## 3. Per-Strategy Performance (HOLD=4h, Router-Mode) | Strategy | N | WR | Exp | PF | Total | DD | P(loss) | Verdict | |---|---|---|---|---|---|---|---|---| | **trend_follow** | **1534** | 50.7 % | +0.087 % | **1.17** | **+133.60 %** | 71.9 % | **6.4 %** ✓ | **PROFITABEL** | | **breakout** | **79** | 38.0 % | **-0.266 %** | **0.51** | **-20.98 %** | 21.0 % | **98.4 %** ✗ | **DEFEKT** | | mean_reversion | 31 | 51.6 % | +0.128 % | 1.30 | +3.96 % | 4.7 % | 32.2 % | Sample zu klein | | volatility_sweep | 10 | 80.0 % | +0.100 % | 1.25 | +1.00 % | 3.9 % | 35.8 % | Sample zu klein | | oversold_bounce | 0 | — | — | — | — | — | — | 0 Signals (?) | | vwap_mean_reversion | 0 | — | — | — | — | — | — | flag-disabled | ### Key Findings - **trend_follow trägt 113.4 % der Gesamtperformance** (133.6 % von +117.58 %). Die anderen Strategien ziehen netto runter. - **breakout ist eindeutig defekt:** 79 Trades, 38 % WR, PF 0.51, P(loss) 98.4 %. Im Forced-Mode (Router-Block aus) explodiert es auf -51.86 % bei 420 Trades. - **oversold_bounce feuerte 0 Signale** über 365d — entweder Strategy-Bug oder Bedingungen extrem restriktiv (RSI<25 ist sehr selten auf 1h). --- ## 4. Per Bot-Regime (HOLD=4h, Router-Mode) | Regime | N | WR | Exp | PF | Total | P(loss) | |---|---|---|---|---|---|---| | **STRONG_TREND** | **1036** | 50.1 % | +0.083 % | **1.16** | **+85.81 %** | 13.6 % | | **WEAK_TREND** | 569 | 50.6 % | +0.065 % | 1.14 | **+37.04 %** | 16.8 % | | RANGE | 41 | 58.5 % | +0.121 % | 1.28 | +4.96 % | 32.2 % | | HIGH_VOL+STRONG_TREND | 8 | 12.5 % | -1.278 % | 0.42 | -10.23 % | 83.8 % | | CHOP | 0 | — | — | — | — | — (geblockt) | | (Regime unstable) | 0 | — | — | — | — | — (geblockt) | → **Die Router-Map funktioniert wie beabsichtigt**: STRONG_TREND ist Hauptbeitrag (trend_follow), WEAK_TREND zweiter Beitrag (trend_follow + breakout), RANGE klein (mean_reversion + volatility_sweep), HIGH_VOL+STRONG kollabiert (8 Trades Sample zu klein). --- ## 5. Per Macro-Regime (HOLD=4h, Router-Mode) | Macro | N | WR | Exp | PF | Total | P(loss) | |---|---|---|---|---|---|---| | **STRONG_BULL** | **786** | 54.8 % | +0.113 % | **1.24** | **+88.70 %** | **8.2 %** | | BULL | 15 | 33.3 % | -0.920 % | 0.30 | -13.80 % | 100 % (Mini-Sample) | | RECOVERY | 437 | 46.7 % | +0.030 % | 1.06 | +13.31 % | 44.0 % | | BEAR | 358 | 44.1 % | +0.025 % | 1.04 | +8.81 % | 38.8 % | | CRASH | 58 | 58.6 % | +0.355 % | **1.64** | **+20.57 %** | 16.6 % | > **Inverter zum simplified Replay:** STRONG_BULL ist der STÄRKSTE Macro für Production-trend_follow (+88.70 %), nicht der Killer. Production gewinnt in jeder Macro-Phase außer Mini-Sample BULL (15 Trades). --- ## 6. Strategy × Macro Matrix (HOLD=4h, Router-Mode) | Strategy | STRONG_BULL | BULL | RECOVERY | BEAR | CRASH | |---|---|---|---|---|---| | **trend_follow** | **+88.48 %** (734) | -12.14 % (14) | **+21.98 %** (402) | **+17.11 %** (332) | **+18.17 %** (52) | | breakout | -6.38 % (35) | -1.66 % (1) | -8.35 % (27) | -6.17 % (13) | +1.57 % (3) | | mean_reversion | +3.49 % (11) | — | -0.63 % (6) | +0.28 % (11) | +0.82 % (3) | | volatility_sweep | +3.11 % (6) | — | +0.30 % (2) | -2.41 % (2) | — | → **trend_follow ist der einzige profitable Macro-Allrounder.** Alle anderen sind Sample-zu-klein oder netto negativ. --- ## 7. Strategy × Bot-Regime Matrix (HOLD=4h, Router-Mode) | Strategy | STRONG_TREND | WEAK_TREND | RANGE | HIGH_VOL | |---|---|---|---|---| | trend_follow | **+85.81** (1036) | **+58.02** (490) | — (Router-Block) | -10.23 (8) | | breakout | — (Router-Block) | **-20.98** (79) | — | — | | mean_reversion | — | — | +3.96 (31) | — | | volatility_sweep | — | — | +1.00 (10) | — | → **Router macht alles richtig:** trend_follow nur in STRONG/WEAK, breakout nur in WEAK, MR/VS nur in RANGE. Die Aufteilung funktioniert auf Trade-Selection-Ebene. **breakout in WEAK_TREND ist aber kaputt.** --- ## 8. Forced-Mode (Router-Gate aus) — Diagnose Gleiche Strategie über alle Regimes, ohne Router-Filter: | Strategy | Router N | Forced N | Router Total | Forced Total | |---|---|---|---|---| | trend_follow | 1534 | 1533 | +133.60 % | +132.72 % | | breakout | 79 | **420** | -20.98 % | **-51.86 %** | | mean_reversion | 31 | 31 | +3.96 % | +3.96 % | | volatility_sweep | 10 | 15 | +1.00 % | +8.98 % | ### Befund - **trend_follow:** identisch — die Strategie ist selbst sehr selektiv, der Router-Filter ändert wenig. - **breakout:** Router blockt 341 von 420 Signalen (>80 %) — und genau dort, wo der Router NICHT blockt (WEAK_TREND nur), ist breakout am defektesten. → **Router schützt aktuell vor noch schlimmeren breakout-Verlusten.** - **mean_reversion:** identisch (Router lässt es eh nur in RANGE). - **volatility_sweep:** 5 zusätzliche Trades im Forced — +7.98 % in WEAK_TREND zusätzlich → könnte profitable Erweiterung sein, aber Sample zu klein. --- ## 9. Hold-Window-Sensitivity (Router-Mode) | Hold | Total | PF | DD | Streak | TRAIN/VAL/TEST Total | |---|---|---|---|---|---| | **4h (Production-Default)** | **+117.58 %** | **1.139** | 75.8 % | 11 | +99.76 / +4.26 / +13.56 | | 12h | +70.41 % | 1.068 | 80.3 % | 11 | +79.55 / **-8.61** / -0.53 | | 24h | +90.91 % | 1.086 | 80.9 % | 10 | +64.94 / +12.43 / +13.54 | → **4h ist konfigurations-optimal.** 12h killt die VAL/TEST (negativ), 24h ist OK aber knapp. --- ## 10. Akzeptanz-Check (HARTE Operator-Kriterien) | Kriterium | Soll | Router 4h | Verdict | |---|---|---|---| | Mindestens 1 Strategie in VAL+TEST robust positiv | ja | trend_follow: TRAIN+99.76 / VAL+4.26 / TEST+13.56 — **ja knapp** | 🟡 | | PF ≥ 1.5 in relevanten Regimes | ja | trend_follow PF 1.17, STRONG_BULL Macro PF 1.24 | ❌ knapp daneben | | Exp > 0 | ja | +0.071 % | ✓ | | P(loss) niedrig | ≪ 10 % | All 8.4 %, VAL 53 %, TEST 40 % | ❌ VAL/TEST hoch | | MaxDD akzeptabel | < 38 % | 75.8 % (sum-of-pct, nicht equity) | 🟡 misst LP-Sum, nicht echte DD | | Keine Allowlist/Denylist | ja | gehalten | ✓ | **Resultat:** **Knapp daneben** — trend_follow zeigt Edge, aber kein klares „PF ≥ 1.5" Sicherheits-Signal. Edge-Konsistenz über alle Splits ist da, aber Magnitude in VAL/TEST schwach. --- ## 11. Empfehlung ### 11.1 Sofort (READ-ONLY) 1. **Bisheriger Befund „STRATEGY-REDESIGN-1 P1 Pflicht" ist FALSIFIZIERT.** Die simplified Replay war methodisch falsch. 2. **MS-Pause bleibt** — aber nicht mehr wegen kaputtem trend_follow, sondern wegen: - breakout defekt (P0) - VAL/TEST schwach (Operator-Kriterien nicht voll erfüllt) - oversold_bounce feuert 0 Signale (P1 — Diagnose nötig) ### 11.2 Was vor MS-Live zu tun ist (NICHT JETZT — nur Operator-Optionen) | Option | Beschreibung | Risiko | |---|---|---| | **A** | **BREAKOUT-DISABLE-1** — `breakout` Flag-disable, MS mit nur 5 Strategien laufen lassen | niedrig — entfernt eindeutigen Loser | | **B** | **TREND-FOLLOW-ONLY-SHADOW-1** — MS aktivieren mit `ENABLE_BREAKOUT=false` und Shadow-Log nur trend_follow | mittel — exponiert echten Edge | | **C** | **BREAKOUT-REFACTOR-1** — die WEAK_TREND-spezifische Logik fixen (möglicherweise Late-Breakout-Chase wie der simplified bug) | hoch — Code-Change | | **D** | **OVERSOLD-BOUNCE-DIAGNOSE-1** — warum 0 Signale auf 365d? RSI<25 nie erreicht? | niedrig — read-only | | **E** | **MEAN-REVERSION-EXTENDED-1** — auf 730d Daten testen für Sample-Vergrößerung | niedrig — read-only | ### 11.3 Was NICHT empfohlen wird - ❌ **MS sofort Live** — Akzeptanz noch nicht erfüllt - ❌ **STRATEGY-REDESIGN-1 für trend_follow** — die Strategie funktioniert - ❌ **BTC-MACRO-GATE-SHADOW-1 aus vorherigem Plan** — STRONG_BULL ist hier produktiv, kein Gate nötig - ❌ **Coin-Allowlist/Denylist** — Operator-Boundary --- ## 12. Verbleibende Risiken & Honest Disclosure 1. **Sample-Bias:** trend_follow hat 1534 Trades, andere ≤ 79 → Signal-zu-Noise sehr ungleich. 2. **Survivorship-Bias:** 19 Coins, mid-2026 ausgewählt. 2025-delistede Coins fehlen. 3. **MaxDD-Modell:** sum-of-pct nicht Equity-Curve → 75 % überschätzt echte DD. 4. **VAL-Periode (2026-02 bis -04):** Strukturell schwer für alle Strategien — könnte Daten-Drift sein, nicht Strategie-Fehler. 5. **oversold_bounce 0 Signale:** Bedeutet entweder Code-Path nicht erreicht (z.B. F&G-Daten fehlen) oder Bedingungen zu streng. **Muss separat diagnostiziert werden.** 6. **vwap_mean_reversion** ist `ENABLE_VWAP_STRATEGY=false` — wurde nicht getestet. 7. **MS-MTF-1 4h-Gate** wurde via `df_4h_slice` korrekt eingespeist — alle Strategien hatten Zugriff. --- ## 13. Boundaries (verified) - 0× Bot/Worker/GUI-Touch - 0× DB-Mutation / -Read - 0× Container-Restart - 0× Mainnet - 0× Push - 0× Secrets - 0× Allowlist / Denylist - 0× Live-Order - READ-ONLY auf Binance Public API + lokale Caches --- ## 14. Files - `/tmp/ms_exact/run_exact_replay.py` — Replay-Engine (Production-Module-Wiring) - `/tmp/ms_exact/analyze_exact.py` — Aggregator - `/tmp/ms_exact/trades_router.json` — 4962 trade-events Router-Mode - `/tmp/ms_exact/trades_forced.json` — 5997 trade-events Forced-Mode - `/tmp/ms_exact/aggregate.json` — vollständige Strukturierung - `/tmp/ms_macro/cache/` — 80 OHLCV-Files (geteilt mit MS-MACRO-REGIME-HISTORICAL-REPLAY-1) - `/srv/shares/REPORT_MS_EXACT_PRODUCTION_PIPELINE_REPLAY_1_20260605T1021Z.md` (Public) - `/srv/shares/REPORT_MS_EXACT_PRODUCTION_PIPELINE_REPLAY_1_20260605T1021Z.pdf` (Public) --- ## 15. STOP **Befund:** Bisherige „trend_follow kaputt"-Analyse falsifiziert. trend_follow ist die einzige profitable MS-Strategie, breakout ist defekt, mean_reversion/volatility_sweep zu wenig Sample, oversold_bounce 0 Signale (diagnose-bedürftig), vwap_mean_reversion flag-disabled. **STRATEGY-REDESIGN-1 (P1) wird zurückgezogen** als Pflicht. Stattdessen empfohlen: - **BREAKOUT-DISABLE-1 (P1)** — den eindeutigen Loser entfernen - **OVERSOLD-BOUNCE-DIAGNOSE-1 (P1)** — warum 0 Signale auf 365d - **MS-LIVE-GO-DECISION (P2)** — nach beiden P1s: Operator-GO für TREND-FOLLOW-ONLY MS-Aktivierung **MS bleibt vorerst pausiert.** Kein Live-GO aus diesem Test. Kein Mainnet.