BnbSpotDailyBollingerSqueezeBreakoutLong
Hypotheses
BNB BINANCE_SPOT Daily Bollinger Band Squeeze Breakout Long-Only (Volatility-Compression-Conditional Momentum)
Hypotheses
Long-only volatility-compression-conditional momentum breakout strategy on BNBUSDT.BINANCE_SPOT using daily bars. This is a mechanism class explicitly distinct from the Donchian high-breakout / TSM / EMA-cross / 4H volume-breakout strategies that dominate the current 1157-experiment portfolio. The 'squeeze breakout' mechanism is well-documented (Bollinger 2001, Carter 2005 TTM Squeeze) and operates on a regime principle: volatility tends to cluster, so periods of unusually tight Bollinger Band width (compression) systematically precede directional expansion moves. The strategy ONLY enters when BOTH conditions are simultaneously satisfied: (a) the band width has compressed to the bottom 25% of its trailing 90-day distribution (regime gate), AND (b) the daily close decisively breaks above the upper band (directional confirmation). The compression gate is the 'microstructure twist' that distinguishes this from generic single-symbol Bollinger trading (which the anti-pattern list correctly rejects) — without compression-conditioning, Bollinger band touches occur far too often and edge is fee-eaten. BNB on BINANCE_SPOT is chosen specifically because: (1) BNB has the highest spot liquidity on Binance after BTC/ETH (~$300-500M daily) — 30-100× above the ETC liquidity floor that has killed cross-instrument generalization, (2) BNB is the native exchange token with continuous Binance spot data from 2017 (8+ years for robust walk-forward), (3) BNB has experienced multiple distinct volatility regimes (2018 ICO bust, 2021 alt-season, 2022 bear, 2023-2024 quarterly burns + ecosystem launches) — providing a rich test of regime-conditional mechanisms across heterogeneous periods, (4) BNB does not have memecoin-style parabolic reversals (avoids the DOGE-2024-2025 microstructure trap), (5) BINANCE_SPOT venue is at 10.0% vs 15% quota target — still under-represented. Pure OHLCV — NO supplementary data required (avoids the 14+ session abandons from supp_data infrastructure gaps). 3 parameters total: bb_period=20, compression_percentile=25, atr_stop_mult=2.0. Long-only by venue constraint (SPOT CASH account cannot short).
Hypotheses
Iteration-3 fix for the Layer-3 'No trades / 0 evaluated bars' failure. Root cause: the base class caps self._bars at 500 while min_bars_required returned bb_period+compression_lookback+5=565, so len(self._bars) < min_bars_required was permanently true and _process_primary never ran (hence 0 evaluated bars, not 0 signals over many bars). Fix is minimal and surgical: min_bars_required now returns only max(bb_period, atr_period+1)+5 (~26, safely under the 500 cap). The 540-sample compression distribution does not need to live in self._bars -- it accumulates in the separate, uncapped _width_hist list, and the compression gate already self-guards (returns 'not compressed' until _width_hist has compression_lookback samples). Imports, signal computation, compression/release gates, sizing and exit logic are all unchanged, so the earlier passing layers stay green. With processing now active across all 17,399 bars, the squeeze-release breakout condition fires many times over BNB's multiple volatility regimes, producing the trades the backtest needs.
Hypotheses
Not worth optimizing: despite an ample 212-trade sample over 8 years, the risk-adjusted result is deeply negative and outlier-carried, and costs make it undeployable. Sharpe is -1.495 (Sortino -5.72, sharpe_ci_high 0.56, PSR 0.176, annualized_volatility 238%) even though total_return is +764% — the tell that the headline is a single volatility spike, not an edge. The entire result is Feb 2021: 2021 returned +652% with 2021-02 alone +462.8% (+212.6% on a single day), while every recent year loses (2022 -12%, 2023 -18%, 2026 -22.9%; skew 9.5, kurtosis 117). Strip the 2021 alt-season parabola and the compression-gated breakout is a persistent loser on BNB. Independently disqualifying: impact_cost_pct 47.7% (market impact consumes half the gross PnL), total_impact $697k + commission $468k, capacity_usd only $439k (edge exists only at toy scale), and max_drawdown 58.9% (CI high ~100%); a sizing anomaly (avg_position_pct 127.8% on a CASH spot account that cannot lever) amplifies the impact drag. This is iteration 3 — the available code levers (the min_bars 0-trade fix, daily→4H to raise trade count) are already spent, and the larger sample only revealed the absence of a positive risk-adjusted edge; no parameter sweep converts a negative-Sharpe, one-outlier-carried, impact-destroyed profile into a promotable one. FAILURE PATTERN: a compression-gated squeeze breakout on a single spot major produces a spectacular but 2021-concentrated headline whose negative Sharpe (-1.50) and 238% volatility expose it as outlier-carried, while 4H trading on a CASH venue with ~0.20% RT plus 48%-of-gross impact and a $439k capacity make it undeployable regardless of parameters — the same signature as the abandoned BTC ATR-compression-breakout.
Implementation
Long-only Bollinger Band squeeze-release breakout on BNBUSDT.BINANCE_SPOT, 4-HOUR bars, OHLCV-only. Every bar it computes the normalized Bollinger band width and z-scores the close's distance above the upper band in ATR units (the continuous signal). Entry requires BOTH a compression regime (band width in the bottom compression_percentile of its trailing compression_lookback-bar distribution occurring within the last release_window bars) AND a decisive close above the upper band. Exit is a chandelier trailing ATR stop from the highest close since entry. Long-only by SPOT CASH venue constraint.
Verification Results
Verification failed (Layer 3 — sandbox backtest): No trades produced
Bar type used: BNBUSDT.BINANCE_SPOT-4-HOUR-LAST-EXTERNAL, Bars processed: 17399
Diagnostics: should_enter() returned a side 0 times over 0 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds.
Ensure your strategy produces trades with the given data and parameters.
Backtest Review
Ample trade sample (212 trades over 8 years) and a genuinely differentiated, well-documented mechanism class (compression-gated squeeze release); 3 core params, pure OHLCV
Backtest Review
The min_bars 0-trade bug from earlier iterations is fixed — the strategy now processes bars and trades
Backtest Review
Negative risk-adjusted return despite +764% headline: Sharpe -1.495, Sortino -5.72, sharpe_ci_high 0.56 (CI mostly below 0), PSR 0.176, annualized_volatility 238% — the classic outlier-carried signature
Backtest Review
The entire result is Feb 2021: 2021 +652% (2021-02 alone +462.8%, +212.6% single day), while 2022 -12%, 2023 -18%, 2026 -22.9% — a persistent loser outside the 2021 alt-season parabola (skew 9.5, kurtosis 117)
Backtest Review
Undeployable economics: impact_cost_pct 47.7% (impact eats half of gross), total_impact $697k + commission $468k, capacity_usd only $439k, max_drawdown 58.9% (CI high ~100%)
Backtest Review
Sizing anomaly: avg_position_pct 127.8% on a BINANCE_SPOT CASH account that cannot use leverage, amplifying the impact drag
Backtest Review
Already iteration 3 — the available levers (min_bars fix, daily→4H for more trades) are spent, and the larger sample simply revealed the absence of a positive risk-adjusted edge
Analysis
Do NOT optimize yet — at 30 trades over ~8 years the sample is too thin for the 3-window walk-forward (each OOS window would see only a handful of trades), and the headline is driven by 2-3 bull-cycle single-day outliers (2021-02-20 +630%, 2019-05 +152%) with per-day-attribution-distorted volatility (annualized_vol 1780%). Two specific changes to make this testable:
1. INCREASE TRADE FREQUENCY materially while keeping the squeeze premise: the compression gate (bottom 25th percentile + 6-bar release window) is over-restrictive on daily bars. Consider loosening compression_percentile toward 35-50, widening release_window, and/or moving to 4H bars to lift the sample to a few hundred trades so optimization isn't fitting noise. Target a count where each walk-forward OOS window has 20+ trades.
2. CONFIRM THE EDGE IS NOT JUST BULL-OUTLIER BETA: after increasing frequency, check that the per-trade edge survives when the 2-3 largest bull-cycle days are excluded, and that returns aren't concentrated in 2019/2021 alone. If the larger sample still shows the edge living only in bull-cycle breakouts with PF collapsing in 2022/2025/2026, abandon — the squeeze gate isn't adding a generalizable edge.
If a re-run with adequate frequency still has a thin, outlier-dependent realized track record, abandon rather than optimize.
Outcome Summary
This strategy tested a compression-gated Bollinger squeeze-release breakout on BNB spot, a mechanism deliberately distinct from the Donchian/TSM/EMA strategies already dominating the portfolio. After earlier iterations fixed a min_bars bug that had produced zero trades and moved from daily to 4H bars to lift the sample, iteration 3 finally traded — 212 trades over 8 years for a +764% headline. But the analyst's pre-optimization review found the result was carried almost entirely by the Feb 2021 alt-season parabola, with a Sharpe of -1.495, 238% volatility, and losses in every recent year, compounded by undeployable costs (impact consuming ~48% of gross, $439k capacity, a 58.9% drawdown, and a sizing anomaly on a CASH account that cannot lever). With no parameter sweep able to convert a negative-Sharpe, outlier-carried, impact-destroyed profile into a promotable one, it was abandoned at the backtest-review gate and never reached optimization, risk review, or paper trading.
Outcome Summary
A large headline return with negative Sharpe and extreme volatility/skew is a tell for a single-regime outlier, not an edge; compression-gated breakouts on a single spot major also collapse under ~48%-of-gross market impact and tiny capacity.
Outcome Summary
The backtest-review gate returned an 'abandon' verdict before optimization, judging the negative, single-outlier-carried risk-adjusted return and undeployable economics (impact_cost 47.7% of gross, capacity only $439k, avg_position_pct 127.8% on a no-leverage CASH account) as unfixable — this being iteration 3, the available code levers were already spent.
Outcome Summary
A long-only volatility-compression-conditional momentum breakout on BNBUSDT.BINANCE_SPOT that only enters when Bollinger Band width compresses into the bottom of its trailing distribution and the close then breaks above the upper band (a TTM-style squeeze-release).
Outcome Summary
Over 8 years (2018-07 to 2026-06) it took 212 long trades with a +764.8% total return but a Sharpe of -1.495 (Sortino -5.72, sharpe_ci_high 0.56, PSR 0.176) and 238% annualized volatility, a 37.7% win rate, and a 58.9% max drawdown. Returns were outlier-carried: 2021 alone returned +652% (Feb 2021 +462.8%, one day +212.6%) while 2022 (-12%), 2023 (-18%), and 2026 (-22.9%) all lost.
Backtest and paper results are hypothetical. Trading involves risk of loss.