Strategies
BTC USD-M Volatility-Compression Breakout, Long-Short (Single-Instrument BINANCE Perp, 1H Bars, Trade Only Expansions Out of Statistically-Rare Low-Volatility Coils, Volume-Confirmed, Chandelier-Trailed, Low-Parameter)
Outcome: Abandoned
BtcVolCompressionBreakoutLS
Outcome Summary
This strategy bet on volatility clustering—arming only when BTC's realized volatility coiled to a rare low, then riding the volume-confirmed expansion long or short—and was deliberately built to sidestep prior factory failure modes (single venue, single instrument, BTC, 1H bars, few parameters). The code worked exactly as intended, producing 482 balanced trades at just ~19% exposure over 6.5 years, but the premise carried no directional edge: profit factor 0.963, Sharpe -0.195, -4.7% total return, and a 50% drawdown, with results scattered across regimes and commissions consuming 12.21% of gross. Because the base was net-losing rather than merely marginal, the backtest reviewer abandoned it before optimization, judging that a best-of-N sweep would only overfit an edgeless config. The takeaway logged for future work: the compression idea, if revisited, needs a materially different lower-frequency construction and an edge-positive base first—a premise reframe, not a parameter tune.
Hypothesis
Iteration-2 fix for the Layer-2 TypeError: `_atr_at() takes 5 positional arguments but 6 were given`. The method was a `@staticmethod`, but the Layer-2 strategy proxy invokes it as a bound method, prepending `self` and passing 6 args to a 5-arg signature. Fix: convert `_atr_at` to a normal instance method (`def _atr_at(self, highs, lows, closes, end, length)`) and drop the `@staticmethod` decorator. Call sites are unchanged (`self._atr_at(highs, lows, closes, end, self.atr_len)`), so this works whether or not the harness honors staticmethod. No other logic, imports, parameters, or signal behavior touched — Layer 1 stays green and the volatility-coil/breakout signal is intact.
Implementation
Long-short volatility-compression breakout on BTCUSDT.BINANCE USD-M perp, 1H bars. Arms only when current ATR sits in the lowest vol_pct quantile of the trailing coil_lookback window (a statistically-rare low-volatility coil). When armed AND the latest bar's volume exceeds volume_mult times its moving average, it takes the direction of a Donchian-channel break (close beyond the breakout_lookback high/low, scaled by breakout_k). Rides the expansion with a Chandelier trailing stop (chand_mult * ATR from the position's running high/low). Sizing is capital-relative via ATR risk (risk_pct of equity per ATR-stop distance), capped by a leverage-aware notional cap.
Verification Results
Backtest Review
- Sharpe
- -0.19
- Total return
- -4.70%
- Max drawdown
- 50.06%
- Trades
- 482
- Win rate
- 31.3%
- Profit factor
- 0.96
Strategy functions and matches the hypothesis: 482 balanced long/short trades, exposure only 18.9% (correctly dormant, arming selectively on rare low-vol coils), single-instrument BTC — no code bug, faithful implementation of the vol-compression gated breakout.
Deep sample (56,856 1H bars, 6.5 years) spanning multiple regimes, and a genuinely orthogonal premise (conditions on volatility magnitude, not return direction).
No edge in the base: profit_factor 0.963 (<1.0), Sharpe -0.195 (CI [-1.50, +0.90] straddles 0), negative expectancy (-$22.6/trade), total_return -4.7% over 6.5 years, max_drawdown 50%.
Regime-scattered and net-losing: strong 2020/2024/2026 but deeply negative 2022 (-19.5%) and 2023 (-24.7%) — no persistent edge across regimes.
Severe cost drag on the 1H cadence: commission 12.21% of gross; impact_cost_pct 448% and capacity ~$5k (symptoms of the near-zero gross edge) confirm there is no fee headroom to recover.
Low win rate (31%) breakout profile whose big wins do not cover the many small losses — a structurally thin payoff even before optimization.
Outcome Summary
A faithfully-implemented, orthogonal premise still needs an edge-positive base before optimization; the volatility-compression breakout has no directional edge on BTC 1H, and its low-win-rate payoff plus heavy commission drag at that cadence cannot be tuned into profitability—it would need a lower-frequency reframe, not a parameter sweep.
It was abandoned at the pre-optimization BACKTEST_REVIEW gate—the reviewer verdict was 'abandon' before any optimization ran—because the base was fundamentally edgeless (profit factor <1.0, negative expectancy, regime-scattered with deeply negative 2022 -19.5% and 2023 -24.7%) with severe 1H cost drag and no fee headroom to recover.
A single-instrument, long-short intraday strategy on BTCUSDT.BINANCE 1H perps that exploited volatility clustering—staying dormant until realized volatility (ATR) coiled to a statistically-rare low, then trading the volume-confirmed directional break out of that compression with a chandelier-trailed stop.
Over 6.5 years / 56,856 1H bars it took 482 balanced long/short trades (259 long, 223 short) at only ~18.9% exposure, but had no edge: Sharpe -0.195 (CI [-1.50, +0.90]), profit factor 0.963, negative expectancy of -$22.6/trade, total return -4.7%, 31% win rate, and 50% max drawdown, with commissions eating 12.21% of gross.
Backtest and paper results are hypothetical. Trading involves risk of loss.