Lab · ML Experiments

ML — Pattern Discovery

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

Vol-targeting top megasweep strategies

Promoted
2026-05-17 voltargetingstrategy-evalproduction
Hypothesis
Scaling position size by the inverse of the GBM vol forecast (target ann vol = 50%, capped 0.5×–2×) improves the risk-adjusted return (calmar, sharpe) of the three best megasweep strategies, without harming raw return.
Verdict
**SHIP** — vol-targeting improves Calmar in **3/3** strategies (avg uplift **+1.136**). Drawdown change **-0.0193**, return change **-2.36pp**. Wire `vol_target_multiplier` into `execution/risk.py` for live sizing — this is a clean overlay that doesn't touch strategy logic.
mult_cap
[+0.5000, +2.0000]
avg_dd_delta
-0.0193
n_strategies
3
target_ann_vol
+0.5000
avg_calmar_uplift
+1.1365
avg_return_delta_pp
-2.3600
calmar_improved_count
3

Vol-targeting top megasweep strategies

2026-05-17 · status: promoted · 7.5s

Hypothesis: Scaling position size by the inverse of the GBM vol forecast (target ann vol = 50%, capped 0.5×–2×) improves the risk-adjusted return (calmar, sharpe) of the three best megasweep strategies, without harming raw return.

Verdict: SHIP — vol-targeting improves Calmar in 3/3 strategies (avg uplift +1.136). Drawdown change -0.0193, return change -2.36pp. Wire vol_target_multiplier into execution/risk.py for live sizing — this is a clean overlay that doesn't touch strategy logic.

Key metrics

metric value
n_strategies 3
calmar_improved_count 3
avg_calmar_uplift +1.1365
avg_return_delta_pp -2.3600
avg_dd_delta -0.0193
target_ann_vol +0.5000
mult_cap [+0.5000, +2.0000]

Approach

We take the trades_list from the top-3 megasweep winners (sorted by score, distinct structures), then re-price each trade by applying a vol-target multiplier at entry time. Forecasts come from the same walk-forward GBM used in Vol forecastno leakage: the forecast for trade at time t uses a model trained only on data before window t.

Sizing rule (ml.forecast.sizing.vol_target_multiplier):

  • multiplier = target_ann_vol / forecast_ann_vol
  • target = 50% annualised vol (≈ BTC long-run median)
  • clipped to [0.5×, 2.0×] to avoid extreme positions
  • forecast horizon = 240 min (4h — strongest GBM uplift)

Trade PnL, fees, funding all scale linearly with size. We don't change entry/exit timing — only how big each trade is. Calmar is the headline metric: if vol-targeting works, it should compress drawdowns more than it reduces returns.

#1 fixed_stop+rsi_mean_reversion (1h)

  • Params: {'rsi_oversold': 20, 'rsi_overbought': 95, 'rsi_min_bars_in_extreme': 2, 'fixed_stop_pct': 1.5}
  • Trades: 16 (forecast available for 16, missing for 0)
  • Vol-target multiplier: mean 0.73×, range [0.50×, 1.15×]
metric baseline vol-target delta

| return % | 46.6417 | 54.8811 | +8.24 |

| annual return % | 10.0507 | 11.5661 | +1.52 |

| max drawdown | 0.0273 | 0.0188 | -0.0085 |

| calmar | 3.6812 | 6.1382 | +2.457 |

| sharpe | 0.4843 | 0.4968 | +0.012 |

| win rate | 0.0625 | 0.0625 | +0.000 |

| profit factor | 17.0022 | 27.7777 | +10.78 |

#2 rsi_mean_reversion+swing_stop (1h)

  • Params: {'rsi_oversold': 30, 'rsi_overbought': 95, 'rsi_min_bars_in_extreme': 3}
  • Trades: 21 (forecast available for 21, missing for 0)
  • Vol-target multiplier: mean 0.73×, range [0.50×, 1.07×]
metric baseline vol-target delta

| return % | 45.1976 | 37.6066 | -7.59 |

| annual return % | 9.7786 | 8.3137 | -1.46 |

| max drawdown | 0.0595 | 0.0342 | -0.0252 |

| calmar | 1.6442 | 2.4276 | +0.783 |

| sharpe | 0.4491 | 0.4667 | +0.018 |

| win rate | 0.0476 | 0.0476 | +0.000 |

| profit factor | 8.4512 | 11.7056 | +3.25 |

#3 cooldown+fixed_stop+rsi_mean_reversion (1h)

  • Params: {'rsi_oversold': 30, 'rsi_overbought': 95, 'rsi_min_bars_in_extreme': 1, 'cooldown_candles': 3, 'fixed_stop_pct': 1.0}
  • Trades: 65 (forecast available for 65, missing for 0)
  • Vol-target multiplier: mean 0.72×, range [0.50×, 1.14×]
metric baseline vol-target delta

| return % | 42.4511 | 34.7228 | -7.73 |

| annual return % | 9.2554 | 7.7414 | -1.51 |

| max drawdown | 0.0869 | 0.0627 | -0.0242 |

| calmar | 1.0649 | 1.2340 | +0.169 |

| sharpe | 0.4163 | 0.4246 | +0.008 |

| win rate | 0.0154 | 0.0154 | +0.000 |

| profit factor | 5.8173 | 6.4283 | +0.61 |

Summary table

rank structure interval trades avg_mult base_return_pct vt_return_pct base_max_dd vt_max_dd base_calmar vt_calmar base_sharpe vt_sharpe
1 fixed_stop+rsi_mean_reversion 1h 16 0.731 46.642 54.881 0.027 0.019 3.681 6.138 0.484 0.497
2 rsi_mean_reversion+swing_stop 1h 21 0.729 45.198 37.607 0.059 0.034 1.644 2.428 0.449 0.467
3 cooldown+fixed_stop+rsi_mean_reversion 1h 65 0.724 42.451 34.723 0.087 0.063 1.065 1.234 0.416 0.425

equity curves

calmar dd

multiplier distribution

Verdict