Strategies
BTCUSD COIN-M Perpetual 1H Volatility-Contraction-Expansion Long-Short (3-Parameter, Pure OHLCV, BTC-Margined Low-Fee Venue)
Outcome: Abandoned
BtcCmVolContractionExpansionLS
Outcome Summary
BtcCmVolContractionExpansionLS was the analyst-sanctioned salvage of the Bollinger-squeeze idea — a path-dependent design that armed on a volatility contraction and only entered on a confirmed ATR-multiple expansion, routed to the low-fee BTC COIN-M perp with just three parameters to resist overfitting. It never got the chance to prove itself: the coding stage stalled and, after three timeouts across two iterations, the run was abandoned as 'coding_stuck_3_timeouts'. With no code completed, it produced no backtest, verification, optimization, or analysis. The abandonment reflects a coding-process failure rather than any finding about the strategy's edge.
Hypothesis
coding_stuck_3_timeouts
Implementation
Long-short volatility contraction-to-expansion strategy on the BTC COIN-M inverse perpetual (BTCUSD_PERP.BINANCE_CM, 1-hour bars, pure OHLCV, single leg). Entry is PATH-DEPENDENT in two ordered stages: first ATR(24) must compress to 70% or less of its own 168-hour mean, which ARMS the setup for the next 24 bars; then, only while armed, the 6-bar close-to-close excursion must reach 2.0x ATR, and the position is taken in the direction of that confirmed move (LONG on an up-thrust, SHORT on a down-thrust). Compression alone never opens a position. Exits are a 2.5x ATR chandelier trail from the best close since entry, so a real expansion is ridden, plus a 72-bar (3-day) cap for a breakout that stalls. Sizing risks 1% of equity against the trail distance, capped at 0.4x equity x leverage of gross notional, floored to WHOLE $100-face inverse contracts via contracts_for_notional (BTC-margined/settled).
Iteration History
sandbox_timeout: Verification failed (Layer 3 — sandbox backtest): smoke test exceeded the 300s wall-clock limit on a ~20000-bar window (833 days of BTCUSD_PERP.BINANCE_CM-1-HOUR-LAST-EXTERNAL). This almost always means per-bar work that scales with history — e.g. rescanning the full funding/supplementary series, or rebuilding a list and calling min()/sorted() inside calculate_signal()/on_bar() on every bar. Precompute sorted timestamp arrays ONCE in __init__ and use bisect, or cache lookups keyed by timestamp, so per-bar cost is O(log n) not O(n).
Outcome Summary
A sound, well-motivated design delivers nothing if it cannot get through the coding stage — repeated coding timeouts end a candidate before its edge is ever tested, so keeping the implementation tractable enough to compile and pass within the stage's time budget is itself a prerequisite.
It was abandoned for 'coding_stuck_3_timeouts': the coding stage failed to complete after three timeouts across two iterations, so the strategy never reached verification or any downstream stage. This is an infrastructure/coding-process failure, not a verdict on the mechanism.
A long-short, single-instrument, pure-OHLCV volatility contraction-then-expansion trend-emergence strategy on the BTC COIN-M inverse perp (BTCUSD_PERP.BINANCE_CM, 1H) that armed on a realized-volatility compression (ATR ratio below a threshold), then entered only on a confirmed ATR-multiple directional thrust while armed, riding it with an ATR chandelier trail — a deliberately path-dependent salvage of the Bollinger-squeeze concept.
No performance data exists — the strategy never produced a backtest. It stalled in the coding stage, and no verification, backtest, optimization, or analysis metrics were generated.
Backtest and paper results are hypothetical. Trading involves risk of loss.