Lab · ML Experiments

ML — Pattern Discovery

Inverted workflow: find conditional edges in BTC data first, build strategies second.
55 experiments

Synthesis

cross-experiment
What happens here
Cross-section over all experiments so far: what survived walk-forward, what didn't — and what that means for the next steps.

ML Synthesis — Mai-2026-Welle

2026-05-19 · 9 + 5 Validierungs/Audit-Experimente · 3 Promotes + 2 strategien-spezifische Filter-Deploys, 2 Pursue, 4 Dropped

⚠️ B4-Audit-Update: Exp #18 ETF-Flow Event Study hatte einen Lookahead-Bias (same-day flow ↔ same-day return). Der echte forward-IC ist nahe 0. Audit-Doc · Residualcheck

B5-Validierung: Master-LGBM ohne ETF-Feature liefert sogar marginal höheren Lift (+10.74 pp vs +10.60 pp). Alle anderen Features sind kausal sauber. Master-LGBM bleibt promoted. No-ETF-Check

🎯 C7-D Definitive Shuffle Test (2026-05-19): BOCPD-Filter auf BB-Extreme: BB_EXTREME_1 + _2 zeigen echtes BOCPD-Signal (z = +7.30, +6.50, real-lift +12.6%/+17.0% vs shuffled ≈ 0%). BB_EXTREME_3 marginal (z = +1.06). Deploy auf 2 von 3 Wallets. Shuffle-Test · Walk-Forward+Threshold

Diese Zusammenfassung deckt die zweite ML-Welle ab (Exp #13 — #22, skipping #21 CVD). Sie ergänzt die Roadmap und gibt einen "was haben wir gelernt"- Blick darüber, was promoted wurde, was tot ist und welche Schritte als nächstes sinnvoll sind.


Endstand-Tabelle

Exp Titel Status Key-Ergebnis
#13 HAR-RV-J (jump-augmented vol) ❌ dropped +0.22 pp R² lift — Sprünge kaum prädiktiv über RV-Kaskade hinaus
#14 VPIN (Order-Flow-Toxicity, 1m) ❌ dropped pooled IC −0.006, hit-rate 9.1% (= baseline)
#15 BOCPD (change-point) promoted IC +0.160, 21/21 windows, +27% Vol in Fresh-CP-Regimes
#16 HMM-Regime (causal forward) 🟡 pursue IC +0.39, separation 1.42× (knapp unter 1.5×-Gate)
#17 Stablecoin Δ7d → BTC 1d 🟡 pursue/weak IC +0.038, Q5−Q1 +25 bps (unter Gates)
#18 ETF-Flow Event-Study dropped (B4-Audit) Original IC +0.37 war Lookahead. Korrigiert IC +0.04
#18b ETF-Flow Residualcheck ❌ dropped residual IC +0.075, CI inkludiert 0
#19 DVOL/VRP (Variance Risk Premium) promoted IC −0.28, 16/16 windows, Lehrbuch-Mean-Reversion bestätigt
#20 DXY-Shock 🟡 pursue/weak Richtung korrekt, aber Magnituden zu klein (±6-8 bps, hit-rate 52%)
#22 Master-LightGBM Vol-Forecast promoted R²-Lift +10.6 pp vs HAR-RV (0.55 → 0.66)
#22b Master-LGBM ohne ETF ✓ done R²-Lift +10.74 pp — ETF irrelevant für Lift, Master-LGBM validiert
#21 CVD aus aggTrades ⏸ deferred Backfill ~50 GB; Wartelistenplatz aktiv

Drei Promotes nach Audit-Korrektur. ETF-Flow (#18) hat einen klassischen Same-Day-Confound-Lookahead-Bias gehabt, der erst im Residualcheck sichtbar wurde. Die übrigen drei kommen aus: - Neuen Methoden (BOCPD, VRP) - Synthese (Master-LGBM, audited)

Vergleich: erste Welle hatte 1/12 promote (vol_clustering). 3/9 ist immer noch eine sehr starke Quote — und die Audits sind genau das, was man tun MUSS bevor irgendwas in Production geht.


Die 4 echten Edges, im Detail

1. BOCPD-Change-Point (Exp #15) — Vol-Pre-Trigger

  • Was wir wissen: Wenn die Bayesian Online Change-Point Detection ein "fresh change-point" diagnostiziert (P(run < 4) > 0.5), ist die fwd-4h-Vol +27% über baseline.
  • Komplementär zu Vol-Clustering: Persistence sagt "ruhig bleibt ruhig", BOCPD sagt "Bruch → mehr Vol". Beide zusammen sind orthogonal.
  • Einsatz: Feature für Master-LGBM (bereits drin); zusätzlich denkbar als Entry-Filter (kein Trend-Trade in fresh-CP-Phasen).
  • Caveat: Z-Score-Normierung verwendet rolling-std → indirekte Vol-Information. Aber: der CP-Indikator misst Brüche im standardisierten Return, nicht das Vol-Niveau selbst.

2. ❌ ETF-Flow → Next-Day BTC (Exp #18) — Lookahead-Bias gefunden (B4-Audit)

  • Was war das vermeintliche Edge: IC +0.37, +463 bps Spread zwischen Big-Inflow- und Big-Outflow-Tagen.
  • Was tatsächlich gefunden wurde: Bei korrektem 22:00-UTC-Marker (Release-Zeit der ETF-Daten) sinkt IC auf +0.044, und der Same-Day-Confound IC = +0.405. Exp #18 hat versehentlich die selben-Tags-Returns als "forward" labeled (durch Pandas right-closed daily resampling).
  • Residualcheck (Exp #18b): nach Orthogonalisierung gegen ret_pre bleibt IC +0.075, CI [−0.005, +0.152] inkludiert Null.
  • Verdict: ❌ DROPPED. ETF-Flow ist kein direktionales Signal jenseits von BTC-Momentum.
  • Anti-Lessons: Pandas-Resampling-Semantik (label="right", closed="right") ist tückisch. Same-day-Confound IMMER prüfen bei Event-Daten, die retrospektiv gestempelt werden.
  • ETF als Master-LGBM Feature: hat eine 1d-Shift bei Construction, also kausal. Audit ergibt: trägt sogar marginal negativ zum Lift bei (-0.14 pp). Stört das Modell minimal; kann raus.

3. DVOL/VRP (Exp #19) — Vol-Mean-Reversion

  • Was wir wissen: VRP = DVOL (annualisierte IV) minus trailing 4h RV. Hohes VRP (Markt preist hoch ein) → realisiertes Vol kommt runter. IC = −0.28, 16/16 windows negativ.
  • Theoretisches Fundament: Klassischer Variance Risk Premium (Bollerslev/Tauchen/Zhou 2009). Auf BTC bisher kaum systematisch getestet bei uns; jetzt validiert.
  • Einsatz:
  • Direkt als Input für ml/forecast/ neben Persistence/HAR-RV.
  • VRP-bedingtes Position-Sizing: bei hohem VRP größere Positionen (Vol-Targeting wird besser kalibriert).
  • Datenquelle: Deribit DVOL daily, kostenlos, kein Auth, seit 2021-03.

4. Master-LightGBM (Exp #22 + #22b validiert) — Die Synthese

  • Was wir wissen: LGBM auf vollem Feature-Panel hebt R²(log) für fwd 4h vol um +10.6 pp über HAR-RV (0.554 → 0.660). Pooled IC steigt von 0.726 auf 0.811.
  • B5-Audit ergab: Alle Features sind kausal sauber. Nach Entfernung des "verdächtigen" ETF-Features steigt der Lift sogar leicht auf +10.74 pp (Exp #22b). Master-LGBM ist robust validiert.
  • Top-3 Features (ohne ETF): log_rv_7d_ann (7d trailing RV — Vol-Persistence dominant), iv_ann (DVOL — die VRP-Information), stablecoin_d7 (interessant: Stablecoin-Δ war Standalone schwach, aber LGBM kann es nonlinear nutzen).
  • Einsatz: Ersetzt mittelfristig HAR-RV in ml/forecast/api.py. Erstmal als Schatten-Modell parallel laufen lassen, dann nach 4-6 Wochen mit Calibration-Drift-Check umschalten. ETF-Feature beim Production-Deploy weglassen (no-op).
  • Caveats:
  • Nur 13 walk-forward Fenster (Start 2022-01 wegen mehrerer Feature-Verfügbarkeiten).
  • DXY ist in den meisten Fenstern NaN — LGBM nutzt es nur ab 2024.
  • Top-Feature ist NICHT eines der neuen Features sondern die längste Vol-Lag. Bestätigt: Vol-Persistence ist und bleibt das Fundament; die neuen Features (vor allem VRP) liefern Edge-Refinement, nicht Edge-Ersatz.

Was wir GEGEN frühere Hoffnungen NICHT gefunden haben

  • HAR-RV-J (Jumps): praktisch null Mehrwert. 1m-BTC-Returns sind von Microstructure-Noise dominiert; die "Jump"-Komponente trägt keine eigene Information. Auf Tick-Daten könnte sich das ändern (deferred → Exp #21).
  • VPIN auf 1m Bars: Bulk-Volume-Classification ist zu coarse. Echtes VPIN braucht Tick-Daten.
  • HMM standalone: Hohe IC (+0.39) ist real, aber Separations-Ratio nur 1.42× — die HMM-Zustände sind nicht klar genug voneinander getrennt für Standalone-Routing.
  • Stablecoin Δ7d: Daily-Granularität zu langsam für 4h-Edge; 1d-Quintile-Spread nur +25 bps unter unserem 40-bps-Gate.
  • DXY-Shock: Richtung passt (USD up → BTC down), aber Magnituden in 1h-Fwd-Return zu klein (±6-8 bps).

Lessons Learned aus dieser Welle

  1. Causal Feature Construction ist nicht trivial. ETF-Flow musste 1 Tag verschoben werden, DVOL 1 Stunde. Ohne das wären die ICs noch viel höher und reines Lookahead.

  2. Smoothing vs Filtering bei HMM ist der Punkt, an dem fast alle Papers untergehen. Wir verwenden strikt forward-Filter; das erklärt die niedrigere Separation, gibt aber realistische OOS-Erwartungen.

  3. Native NaN-Handling bei LGBM ist ein Game-Changer für gemischte Datenhistorien. Wir müssen nicht alle Features auf den kürzesten gemeinsamen Zeitraum reduzieren.

  4. Die "neuen Datenquellen"-Recherche hat sich gerechnet: Allein VRP (DVOL) und ETF-Flow rechtfertigen den Aufwand. DXY/Stablecoins haben sich nicht ausgezahlt (zu daily, zu trend-folgend), Glassnode/Twitter wären rausgeschmissenes Geld gewesen.

  5. Methoden vs Daten: Die Methoden-Recherche brachte BOCPD (klarer Promote). Die Daten-Recherche brachte VRP und ETF. Beides war notwendig.


Next Steps

Sofort (diese/nächste Woche)

  1. VRP in ml/forecast/api.py integrieren — als zusätzliches Feature für die bestehende GBM/HAR-RV-Pipeline. Erste Erweiterung von live.py, dann eine Calibration-Pass.
  2. Master-LGBM als Schattenmodell laufen lassen. Tägliches predict_vol_4h_lgbm() parallel zur bestehenden API; Drift-Tracking.
  3. ETF-Flow täglicher Snapshot als Cron-Job (analog zu download_derivatives.py) — Farside-Scrape um 23:00 UTC.

Kurzfristig (2-4 Wochen)

  1. ETF-Momentum-Residualcheck: Wieviel der +0.37 IC bleibt, wenn ich BTC-Return auf Tag t aus dem Feature-Signal "rausresidualisiere"?
  2. BOCPD als Entry-Filter für strategies/: kein Trend-Entry bei p_short > 0.5; Mean-Reversion-Entry bevorzugt in dieser Phase.
  3. CVD aus Binance aggTrades (Exp #21) ausführen. Backfill ~50GB raw, ~3GB aggregiert. Wird das einzige BTC-Microstructure-Signal sein, das wir lokal halten können.

Mittelfristig (Quartal)

  1. Direktionales Pendant zum Master-LGBM: Bisher haben wir nur fwd-4h-VOL prognostiziert. Mit den gleichen Features ein direktionales Modell (fwd-Return-Sign) testen. Erwartung: viel schwieriger; aber wenn IC > 0.03 walk-forward stabil, lohnt's sich.
  2. Coinglass Liquidation-Heatmap integrieren (sobald deren 500-Issue gelöst — siehe [[coinglass-switch]] memory). Das ist der einzige große freie Microstructure-Edge, den wir noch nicht haben.
  3. Reservebank-Sweep: Fractional Differencing als Preprocessor, Matrix Profile auf 15m close, Risk Reversal aus Deribit Options. Jeweils ~4h Implementation; lohnt sich nur wenn Master-LGBM in Production stagniert.

Mahnung

Die promote-Quote von 4/9 ist ungewöhnlich hoch. Vor Production-Deploy einer LGBM-Variante eine zweite walk-forward-Validierung mit explizit purged/embargoed CV — wenn auch nur eine Feature-Construction nicht causal ist, sind alle 10 pp Müll. Speziell prüfen: - DVOL-Shift um 1h: ist das genug? - ETF-Flow Shift um 1d: korrekt? - BOCPD posterior bei t: nutzt nur x_1..x_t?

[[har-rv-j]] [[vpin]] [[bocpd]] [[hmm-regime]] [[stablecoin-drift]] [[etf-flow-event]] [[dvol-vrp]] [[dxy-shock]] [[master-lgbm]]