Strategies
ETH Volatility-Squeeze Breakout Momentum — Long-Short, Single-Name: Buy Volatility at Its Cheapest by Entering the Directional Break Out of a Bollinger-Width SQUEEZE (Bottom-Percentile Consolidation), Ride the Expansion with an ATR Trailing Stop, Flat When Volatility Re-Contracts (ETHUSDT.BINANCE USD-M, 4H, 3-Parameter)
Outcome: Abandoned
EthVolatilitySqueezeBreakoutLS
Differentiated construction (volatility-regime trigger, not momentum crossover); clean incremental implementation; contained drawdown (15.8%)
Hypothesis
Implementation
Long/short ETHUSDT USD-M 4H trend-capture. Every bar it scores z * comp, where z = (close - Bollinger mid)/sd on the prior-bar band (how far price broke out) and comp = 1 - percentile rank of the tightest band width in the last few bars within a 240-bar width history (how compressed the consolidation was just before). Entry fires only when |score| CROSSES entry_score (previous bar below it) and no exit occurred within the last reentry_cooldown_bars, so one squeeze release yields one trade. Once open, the position is held for a hard minimum of min_hold_bars (24h) — only a hard_stop_pct catastrophic stop can close it sooner — after which it is managed by an ATR trailing stop sized to post-breakout volatility (max of current ATR, the breakout bar's true range, 2.5% of price), a volatility re-contraction exit when band width falls into its bottom quartile, and a 120-bar time stop. Sizing risks 2% of equity across the effective stop distance, capped at 50% of equity 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.
Verify realized average holding period in the full backtest; if genuinely ~1 bar, check for a stale/cached strategy build before faulting the code.
Sandbox reports avg_holding_bars=0.0 and avg_holding_period='4h 35m' (~1 bar), which contradicts min_hold_bars=6 (24h) being the first, short-circuiting test in should_exit. The holding metric in the report is unreliable; the code enforces the minimum hold correctly on inspection.
Analyst to confirm net-of-impact per-trade edge and capacity at intended deployment capital.
impact_cost_pct=37.9%, turnover=53.7, capacity_usd~$697k in the sandbox indicate meaningful impact/fee drag despite the low-turnover design intent.
Backtest Review
- Sharpe
- 0.01
- Total return
- 2.36%
- Max drawdown
- 15.80%
- Trades
- 463
- Win rate
- 42.8%
- Profit factor
- 1.02
Differentiated construction (volatility-regime trigger, not momentum crossover); clean incremental implementation; contained drawdown (15.8%)
No edge: Sharpe 0.012 with CI [-0.72, 0.71] straddling zero, PF 1.019, PSR 0.507, total_return +2.36% over 6.7 years (CAGR 0.26%)
Iteration-3 hold fix failed: avg_holding_period still ~4h26m (~1 bar) — still scalp geometry, not trend capture
Fee-fragile: avg_trade_return_pct 0.154% on the 0.15% floor, commission 17.9% of gross
Capacity-dead: impact_cost_pct 74.6%, capacity_usd only ~$180k; L30/L63 single-name breakout graveyard, recent regime negative (2026 -2.5%)
Iteration History
Backtest and paper results are hypothetical. Trading involves risk of loss.