Lab · ML Experiments

ML — Pattern Discovery

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

HMM-Regime — Causal 2-State Volatility Regime

Inconclusive
2026-05-19 regimehmmvolatilitycausal
Hypothesis
A 2-state Gaussian HMM on (1h return, 4h trailing RV) provides a *causal* regime feature (forward filter, not smoothing). P(state=Turbulent) predicts forward 4h RV at IC ≥ 0.05 walk-forward, and state-conditional vol means differ by ≥ 50% (regime separation).
Verdict
**PURSUE** — Pooled IC +0.3905, separation 1.42×, stability 100%. Includes signal but partially redundant with trailing rv_4h. Worth keeping for Master-LGBM (Exp #22) as a categorical regime feature, not as a standalone replacement for vol.
pooled_n
11,496
n_windows
21
pooled_CI
[+0.3729, +0.4065]
pooled_IC
+0.3905
stability
+1.0000
windows_pos
21
median_oos_separation
+1.4175
windows_separation_ok
7

HMM-Regime — Causal 2-State Volatility Regime

2026-05-19 · status: inconclusive · 9.1s

Hypothesis: A 2-state Gaussian HMM on (1h return, 4h trailing RV) provides a causal regime feature (forward filter, not smoothing). P(state=Turbulent) predicts forward 4h RV at IC ≥ 0.05 walk-forward, and state-conditional vol means differ by ≥ 50% (regime separation).

Verdict: PURSUE — Pooled IC +0.3905, separation 1.42×, stability 100%. Includes signal but partially redundant with trailing rv_4h. Worth keeping for Master-LGBM (Exp #22) as a categorical regime feature, not as a standalone replacement for vol.

Key metrics

metric value
pooled_IC +0.3905
pooled_CI [+0.3729, +0.4065]
pooled_n 11,496
windows_pos 21
n_windows 21
stability +1.0000
median_oos_separation +1.4175
windows_separation_ok 7

Approach

1h resampling of 1m close, observation = (log return, log of trailing 4h RV). For each walk-forward split (12mo train / 3mo test, embargo = 1440 min), fit GaussianHMM(n_components=2, covariance_type='full') on the training segment, then run a manual causal forward filter over (train+test) so the state at any test-time t depends only on observations up to t.

State 1 is post-hoc renamed to be the higher-mean-RV one ('Turbulent'). Label is forward 4h realized vol starting at t+1.

Crucial methodological point: hmmlearn's predict_proba is smoothed (uses future observations) — that's the standard source of inflated HMM results in published crypto papers. We use only forward filter (alpha-only).

Pooled OOS IC (P(state=Turbulent) → forward 4h RV)

  • Pooled Spearman IC: +0.3905 (n=11,496)

  • Bootstrap 95% CI: [+0.3729, +0.4065]

  • p-value: 0

Regime separation (state 1 / state 0 mean fwd 4h vol)

  • OOS median separation ratio: 1.42×

  • Windows with separation ≥ 1.5×: 7/21

Per-window OOS metrics (21 windows)

window n_samp IC ci_low ci_high oos_fwd_vol_s0 oos_fwd_vol_s1 oos_separation trans_00 trans_11
2021-01-02 → 2021-04-02 540 0.2661 0.1713 0.3435 0.0076 0.0103 1.367 0.9464 0.8748
2021-04-02 → 2021-07-02 546 0.2552 0.1738 0.3476 0.0066 0.0095 1.4419 0.937 0.9163
2021-07-02 → 2021-10-02 552 0.0283 -0.0585 0.1088 0.0057 0.0061 1.0634 0.9336 0.9237
2021-10-02 → 2022-01-02 552 0.11 0.0284 0.2029 0.0055 0.0061 1.1001 0.9193 0.8998
2022-01-02 → 2022-04-02 540 0.3 0.2049 0.3891 0.0054 0.0072 1.3258 0.9244 0.8847
2022-04-02 → 2022-07-02 546 0.4298 0.3633 0.5045 0.005 0.0088 1.7593 0.9272 0.8611
2022-07-02 → 2022-10-02 552 0.1559 0.0655 0.2366 0.0049 0.006 1.2216 0.9101 0.8606
2022-10-02 → 2023-01-02 552 0.4515 0.3829 0.52 0.0029 0.0065 2.2357 0.9172 0.8664
2023-01-02 → 2023-04-02 540 0.3682 0.2884 0.4407 0.0036 0.0057 1.6039 0.9237 0.8994
2023-04-02 → 2023-07-02 546 0.2788 0.2048 0.3676 0.0032 0.0043 1.3291 0.9329 0.8968
2023-07-02 → 2023-10-02 552 0.4412 0.358 0.5058 0.0022 0.0037 1.6551 0.9322 0.8811
2023-10-02 → 2024-01-02 552 0.2883 0.2165 0.368 0.0031 0.0042 1.3525 0.9469 0.8741
2024-01-02 → 2024-04-02 546 0.364 0.3026 0.4262 0.0037 0.0055 1.4983 0.9408 0.8731
2024-04-02 → 2024-07-02 546 0.3763 0.3072 0.4379 0.0033 0.0049 1.5076 0.9345 0.8895
2024-07-02 → 2024-10-02 552 0.2712 0.1894 0.3474 0.004 0.0053 1.3184 0.9381 0.8906
2024-10-02 → 2025-01-02 552 0.316 0.2478 0.3848 0.0038 0.0054 1.4175 0.9325 0.8712
2025-01-02 → 2025-04-02 540 0.4332 0.3501 0.5158 0.0036 0.0061 1.6843 0.9296 0.8725
2025-04-02 → 2025-07-02 546 0.355 0.2804 0.4209 0.003 0.005 1.6568 0.9254 0.8821
2025-07-02 → 2025-10-02 552 0.2809 0.2055 0.3631 0.0026 0.0034 1.3112 0.9398 0.8754
2025-10-02 → 2026-01-02 552 0.3375 0.2664 0.4073 0.0033 0.0047 1.4009 0.9395 0.8957
2026-01-02 → 2026-04-02 540 0.3668 0.273 0.4295 0.0036 0.0051 1.4306 0.9383 0.8955

per-window IC & separation

p_state1 timeseries