Strategies
ETH COIN-M Inverse-Perp Volatility-Squeeze Breakout, Long-Short (Single Instrument ETHUSD_PERP.BINANCE_CM, 4h Bars, Trade Directional Range-Expansion ONLY After a Multi-Month Volatility Contraction, ATR Trailing Exit, Low-Fee Venue, 3-Parameter)
Outcome: Abandoned
EthCmInverseFourHourVolSqueezeBreakoutLS
Correct reward/risk asymmetry (avg_win $4071 > avg_loss $1421, RR ~2.9, positive expectancy +$213/trade) — not the RR-inverted mean-reversion failure
Hypothesis
Implementation
Long-short volatility-squeeze breakout on the ETH COIN-M inverse perpetual (ETHUSD_PERP.BINANCE_CM, 4H bars). Entries require an ATR percentile rank in the bottom squeeze_pct of its trailing 90-day distribution (the squeeze gate) AND a close beyond the prior breakout_lookback-bar Donchian channel (the expansion trigger): break up = long, break down = short. Exits are a hard init_stop_mult x ATR stop measured from the entry close, an atr_trail_mult x ATR chandelier trail from the best close since entry, and a max_hold_bars time cap. Sizing risks risk_pct of equity against the initial stop distance, capped at max_gross_frac of equity, floored to whole $10 inverse contracts via contracts_for_notional.
Verification Results
CLEAN RESTART 2026-09-04 — this run's verdict history and learning records were removed and it was restarted from verification. Its previous abandonment came from the pipeline, not from the market: the Layer-2 harness mis-bound @staticmethod helpers (fixed), QA issued terminal performance verdicts on an unoptimized smoke test (removed — QA now judges correctness only), and sandbox timeouts came from backtest-slot starvation (fixed). The hypothesis and the strategy code are unchanged. Verify the code on its merits; performance is decided later by the full backtest and the optimizer.
If tighter tail control matters, use a venue-managed STOP_MARKET bracket leg at the 1.5-ATR level so a failed break is cut intra-bar; analyst to weigh against the abandon recommendation first.
The stage-1 initial stop (init_stop_mult x ATR from entry) is evaluated on the BAR CLOSE on 4H bars, so a bar that runs beyond 1.5 ATR before closing exits past the intended level — largest_loss -$3,709 vs avg_loss $1,428 (~2.6x), i.e. the loss tail is not fully capped at 1.5 ATR. Materially improved over the prior chandelier-only version but not eliminated. Not a code defect (the hypothesis specifies an ATR trailing exit, not a venue bracket), but it weakens the intended per-trade risk control.
Backtest Review
- Sharpe
- 0.24
- Total return
- 19.55%
- Max drawdown
- 33.65%
- Trades
- 121
- Win rate
- 29.8%
- Profit factor
- 1.21
Correct reward/risk asymmetry (avg_win $4071 > avg_loss $1421, RR ~2.9, positive expectancy +$213/trade) — not the RR-inverted mean-reversion failure
avg_trade_return_pct 0.496% clears the ~0.10% COIN-M floor comfortably; low fee drag (3.6% of gross); clean 3-parameter OHLCV construction, correct inverse sizing
Squeeze gate keeps turnover low; no liquidation
Not significant: Sharpe 0.239 with CI [-0.608, 1.033] straddling zero, PSR 0.71, PF 1.21; base Sharpe is the ceiling deflation only lowers
Anemic vs risk: total_return +19.5% over 5.8 years (CAGR 4.5%) against max_drawdown 33.6% (CI to 62%); calmar 0.30
2024 carries it; 2022/2023/2026 flat-to-negative; rolling Sharpe negative through 2026; last-20% holdout weak; stress windows mostly negative
L30/L63 single-perp channel-breakout graveyard; 121 trades over 5.8 years is a thin breakout sample
Iteration History
Verification failed (Layer 4 — QA review) [class=no_edge]: - _entry_bar / _entry_price / _entry_atr are stamped inside _sync_position_state, which runs during calculate_signal BEFORE the entry order actually fills. The first bar on which cache.positions_open() returns the new position is one bar after the entry decision, so entry anchors are recorded ~1 bar late, shifting the max_hold cap and fixed init-stop level by ~1 bar. Immaterial to the result but structurally imprecise. - Faithful, working implementation but the sandbox characterises a single-instrument pure-OHLCV directional Donchian squeeze-breakout with no risk-adjusted edge: Sharpe 0.199 with CI [-0.48, 0.87] straddling zero, alpha -0.0153, IR -0.5755, benchmark_correlation 0.554. avg_trade_return_pct 0.55% clears the ~0.10% COIN-M fee floor and PF 1.238 > 1, so it is not a fee failure or payoff-inversion bug — the +19.5% return is long-ETH beta, not market-independent alpha.
Backtest and paper results are hypothetical. Trading involves risk of loss.