# Bollinger Squeeze

A Volatility concept (Band & channel systems) in the LuxAlgo Library, with 1 indicator implementation.

## What is a Bollinger Squeeze?

A Bollinger Squeeze is a volatility contraction read directly off [Bollinger Bands](https://www.luxalgo.com/library/concept/bollinger-bands/). Because the bands sit a set number of standard deviations around a moving average, they tighten mechanically when price movement narrows. John Bollinger measured the effect with [BandWidth](https://www.luxalgo.com/library/concept/bandwidth/) (upper band minus lower band, divided by the middle band) and defined a squeeze as BandWidth falling to its lowest level over a lookback window, six months in his original framing. Tight bands are therefore a measurement of quiet price action, not a subjective read of the chart.

The squeeze matters because volatility tends to run in cycles: unusually quiet stretches are often followed by expansions, so a squeeze flags conditions where a directional move may be building. It says nothing about direction on its own, and not every squeeze resolves into a trend. Traders therefore trade the release, the moment the bands turn outward and price leaves the compressed range, usually with confirmation, since Bollinger himself warned that the first break out of a squeeze can be a head fake. Definitions also vary by source: some platforms use the lowest-BandWidth test, while others declare a squeeze only when the bands trade inside [Keltner Channels](https://www.luxalgo.com/library/concept/keltner-channels/), the test popularized by the [TTM Squeeze](https://www.luxalgo.com/library/concept/ttm-squeeze/).

## How to identify a Bollinger Squeeze

The squeeze is a measurable condition, so identifying one is a calculation plus a judgment about what counts as unusually tight.

1. Plot Bollinger Bands with the standard construction: a 20-period simple moving average with bands two standard deviations above and below it.
2. Add BandWidth, computed as the upper band minus the lower band, divided by the middle band. Normalizing by the middle band lets you compare tightness across time and across instruments.
3. Flag a squeeze when BandWidth reaches its lowest level over your lookback window. Bollinger's guideline was the lowest reading in six months (roughly 125 daily bars); percentile variants flag readings near the bottom of their historical range, and an alternative test declares the squeeze on while both bands sit inside Keltner Channels.
4. Mark the price range that formed during the squeeze and watch for the release: bands turning outward while price closes beyond that range. Treat volume and follow-through as confirmation, because the first break can reverse.

## How it's calculated

Flags bars where Bollinger Band width contracts to the lowest level of a lookback, marking an unusually compressed volatility phase.

```
Middle_t = Σ C_i / n, sum over the last n bars ending at t
SD_t = sqrt( Σ (C_i - Middle_t)^2 / n ), sum over the same n bars
Upper_t = Middle_t + k × SD_t
Lower_t = Middle_t - k × SD_t
BandWidth_t = (Upper_t - Lower_t) / Middle_t
Squeeze: BandWidth_t = min(BandWidth_i) over the last m bars ending at t

  C_i: closing price at bar i (source, default close)
  i: bar index inside the stated lookback window
  t: current bar index
  n: basis length for the SMA and standard deviation (default 20)
  Middle_t: middle band, the n-bar simple moving average of close
  SD_t: population standard deviation of close over the last n bars
  k: standard deviation multiplier (default 2)
  Upper_t: upper Bollinger Band
  Lower_t: lower Bollinger Band
  BandWidth_t: band width at bar t, normalized by the middle band
  BandWidth_i: BandWidth at bar i inside the m-bar lookback
  m: lookback defining the BandWidth low (commonly 125)
```

John Bollinger defines the Squeeze as BandWidth at its lowest level in about six months, roughly 125 daily bars.

The TTM Squeeze variant instead flags bars where both Bollinger Bands sit inside the Keltner Channels.

Some platforms plot BandWidth as a percentage by multiplying by 100.

## How traders use it

- As the waiting condition for breakout setups: the squeeze says volatility is compressed, and the trade comes from the release, a close beyond the squeeze range as the bands widen. Direction is read from the [breakout](https://www.luxalgo.com/library/concept/breakout/) itself, never from the squeeze.
- With confirmation filters against head fakes: Bollinger warned that the first move out of a squeeze can be a [false breakout](https://www.luxalgo.com/library/concept/false-breakout/) that reverses through the opposite side, so many traders require a confirming close, a successful retest, or expanding volume before entering.
- As a scanning criterion: ranking BandWidth across a watchlist surfaces the quietest charts, concentrating attention where expansion potential is building rather than on moves already underway.
- As a volatility-regime marker: an active squeeze labels the market range-bound, which argues for smaller expectations and patience until expansion actually arrives, and warns that tactics tuned to quiet conditions may soon stop working.

## Bollinger Squeeze vs related concepts

- **TTM Squeeze** (https://www.luxalgo.com/library/concept/ttm-squeeze/): The TTM version defines compression as Bollinger Bands trading entirely inside Keltner Channels and adds a momentum histogram to suggest release direction. The classic Bollinger Squeeze needs only BandWidth at a lookback low; the TTM test is a binary on/off condition, cleaner to code but dependent on two indicators' settings.
- **BandWidth** (https://www.luxalgo.com/library/concept/bandwidth/): BandWidth is the raw measurement: band spread divided by the middle band. The squeeze is a condition read from that series, a relative low over some window. Every squeeze definition consumes BandWidth or an equivalent, but a BandWidth plot by itself makes no claim about what counts as unusually tight.
- **Volatility Contraction Pattern** (https://www.luxalgo.com/library/concept/volatility-contraction-pattern/): VCP reads the same compression through price structure: successively shallower pullbacks tightening into a pivot while volume dries up. The squeeze reduces all of that to a single indicator condition, which makes it easier to scan for but blind to the structural detail a VCP analyst requires.

## FAQ

### Does a Bollinger Squeeze tell you which direction price will break?

No. The squeeze is direction-neutral: it flags compressed volatility that often precedes expansion, nothing more. Direction is read from the release, the side price closes on as the bands widen, ideally with supporting volume and structure behind it. First moves can be head fakes that reverse, so many traders wait for a confirming close or pair the squeeze with a momentum tool before leaning either way.

### How long does a Bollinger Squeeze last?

There is no fixed duration. A squeeze persists until volatility expands, which can take a few bars or many weeks, and some squeezes resolve into more range rather than a trend. Treat it as an alert state, not a countdown. The lookback you measure against also matters: a six-month window flags rarer, deeper compressions than a short intraday window does.

### What settings are used to detect a Bollinger Squeeze?

The common construction uses standard Bollinger Bands (a 20-period average with bands two standard deviations away) and flags a squeeze when BandWidth hits its lowest level over a lookback; Bollinger suggested six months on daily charts. There is no universal threshold, though: other implementations use a fixed BandWidth floor, a percentile rank, or the bands-inside-Keltner-Channels test from the TTM Squeeze.

## Implementations in the Library

- Bollinger Squeeze (LuxAlgo): https://www.luxalgo.com/library/indicator/bollinger-squeeze/

## Related concepts

- Donchian Channels: https://www.luxalgo.com/library/concept/donchian-channels/
- Envelope: https://www.luxalgo.com/library/concept/envelope/
- Bollinger Bands: https://www.luxalgo.com/library/concept/bollinger-bands/
- %B: https://www.luxalgo.com/library/concept/percent-b/
- BandWidth: https://www.luxalgo.com/library/concept/bandwidth/
- Band Walk: https://www.luxalgo.com/library/concept/band-walk/
- Bollinger Band Tag Reversion: https://www.luxalgo.com/library/concept/bollinger-band-tag-reversion/
- Double Bollinger Zones: https://www.luxalgo.com/library/concept/double-bollinger-zones/
- Fibonacci Bollinger Bands: https://www.luxalgo.com/library/concept/fibonacci-bollinger-bands/
- Keltner Channels: https://www.luxalgo.com/library/concept/keltner-channels/

---

Source: https://www.luxalgo.com/library/concept/bollinger-squeeze/ (LuxAlgo Library, the encyclopedia of trading & technical analysis). Free to use with attribution: https://www.luxalgo.com/library/license/