Backtesting Arena

Backtesting Arena

Back to blog

Bollinger Bands Squeeze is live — when the bands get tight

A new strategy is live: John Bollinger's classic volatility-cycle play. Wait for the bands to squeeze tight, then ride the long breakout above the upper band. Default 20/2.0/0.1. Pro+.

Backtesting Arena·June 6, 2026·3 min read·0 views
Bollinger Bands Squeeze is live — when the bands get tight

We just finished Sprint 1 of our new strategy wave — the third and final one just went live: Bollinger Bands Squeeze. Pro+ available across all asset classes, and now part of the daily snapshot pipeline.

The core idea — from Bollinger himself

In the 1980s John Bollinger made a simple observation: when volatility collapses in a market, it's often the setup for a bigger move. Low volatility precedes high volatility — and vice versa.

This is visualized in his own bands (the Bollinger Bands, named after him): when the market is quiet, they squeeze tight around the middle line. When the market explodes, they fly apart.

The squeeze phase — when the bands sit close together — is therefore a setup. It says nothing about which direction the market will break. But it says: a move is coming.

The strategy

We trade the long side of that expansion:

  1. Compute Bollinger Bands (default: SMA-20 as the middle, upper and lower bands at ±2 standard deviations)
  2. Normalize band width: (upper − lower) / middle. This gives a relative measure — how tight the bands are right now, independent of absolute price level.
  3. Squeeze detected when this band width drops below a threshold (default 0.1 = 10%)
  4. BUY: When the previous candle was in squeeze AND the current close pushes above the upper band — the volatility breakout fired in the right direction
  5. SELL: When the close falls back below the middle band — classic mean-reversion exit

The threshold is the most important parameter

The squeeze_threshold decides how strict "in squeeze" is defined:

  • 0.05 = only the tightest 5% band widths count → fewer but stronger setups
  • 0.1 (default) = good middle ground on daily charts in crypto
  • 0.2 = more setups, but also more fake breakouts
  • 0.5 = almost every candle qualifies, the squeeze filter becomes meaningless — the strategy degenerates into a pure "close > upper band" breakout

On weekly charts probably tighter (0.05-0.08). On crypto-volatile assets like BTC often in the 0.08-0.12 range works well.

What's different from Keltner Channel Breakout?

Both use bands around a moving average, both trade breakouts. Three differences:

Band calculation. Keltner uses ATR (Average True Range) for band width — so full candle range incl. wicks. Bollinger uses standard deviation of closes. The math basis differs, but in practice both are similarly volatility-sensitive.

Setup condition. Keltner is a direct breakout — as soon as close > upper band, BUY fires. BB Squeeze adds a precondition — the market must have been in a compression phase first. That filters: a breakout from squeeze has historically more power than a breakout in an already-volatile market.

Trade frequency. BB Squeeze trades significantly less than Keltner (because the setup condition filters out many breakouts), but each trade can have higher conviction.

Over the next weeks the daily snapshot pipeline will gather enough data to compare directly: which strategy delivers better risk-adjusted returns on which asset class?

Three failure modes (honest)

This strategy isn't without weaknesses — we'll name them explicitly:

1. False breakouts. Bands squeeze, price briefly pops above the upper band but immediately reverses. You buy at the wick top, get stopped at the middle line a few candles later. Classic weakness of all breakout strategies — combine with the 200 WMA filter to stay in uptrends, or with ATR Volatility to avoid buying in completely quiet phases.

2. Downside squeezes. Bands squeeze, then the breakout fires downward. This long-only strategy misses the move entirely — sees it as "no signal". A future short-extension (breakoutDirection='both' is reserved as a parameter) would catch this, but the platform engine only supports long today.

3. Squeeze with no breakout. Bands stay tight for weeks. The strategy just doesn't trade — no losses, but no gains either. Patience is built in.

Where available

Pro+ feature, live now at /dashboard/crypto:

  • 3 input fields: period, standard deviation, squeeze threshold
  • Dropdown for breakout direction (only Long active currently, "Both" reserved)
  • All standard filters (200 WMA, ATR Volatility, Altcoin Season, Bullmarket Gauge, Min Profit Guard) combinable
  • Works as Live Alert and in the Gauge
  • Strategy Library with pseudo-code + FAQ at /strategies/bb-squeeze

Try it yourself

Run the backtest with your own parameters and time ranges.

Run backtest →
📬

Don't miss new blog posts

One short email per new post — strategies, backtests, market analysis. No spam, unsubscribe with one click anytime.

By subscribing you accept our privacy policy. We use Resend for delivery. Double opt-in confirmation required.

Comments (0)

Join free to post comments.

Sign up →

No comments yet. Be the first!