Bollinger Band Squeeze: BandWidth, Breakout Confirmation, and Head-Fake Testing
Define and test Bollinger Band squeeze, BandWidth, breakout, head-fake, failure, expiry, multi-timeframe, and replay rules without profit claims.
A Bollinger Band squeeze is a volatility-contraction condition, not a directional forecast. A usable squeeze process must state exactly how the bands are calculated, how “narrow” is measured, when the squeeze starts and ends, what independent price event confirms a breakout, and how a head fake, failure, expiry, and ambiguous bar are recorded. Without those definitions, a chart can be labeled a squeeze only after the outcome is known.
This page focuses on turning the visual squeeze idea into a reproducible review rule. For the broad indicator definition, formula, default settings, band walks, and general interpretation, use the Bollinger Bands guide.
Key Takeaways
- Narrow bands do not predict direction. The squeeze describes reduced historical dispersion; direction needs a separate price-structure rule.
- “Narrow” must be relative. BandWidth varies by instrument, timeframe, settings, price level, session, and data provider, so one fixed percentage is not universal.
- A squeeze and a breakout are different events. Record contraction, release, structure break, confirmation, failure, and expiry separately.
- The first move can be a head fake. Define the return-inside and reversal sequence before looking at the result.
- Keltner-envelope squeeze rules are variants. They are not interchangeable with a pure BandWidth or rolling-low definition.
- Replay testing must use information available at the time. Closed bars, higher-timeframe timestamps, event order, spreads, slippage, and costs matter.
Which Bollinger Bands Question Does This Page Own?
| Reader question | Owner |
|---|---|
| What are Bollinger Bands, how are they calculated, and what do band walks mean? | Bollinger Bands Explained |
| How should a squeeze, release, breakout, head fake, failure, and expiry be defined and tested? | This page |
| Is the chart structure a range, triangle, flag, pennant, or another breakout pattern? | Breakout Patterns Explained |
| What is the complete generic breakout decision process? | Breakout Trading Strategy |
| How should support and resistance boundaries be marked? | Support and Resistance Guide |
| How should a strategy be evaluated without hindsight? | How to Backtest a Trading Strategy |
The distinction matters because a Bollinger Band contraction can occur inside many different price structures. The bands describe volatility; they do not replace the definition of the price boundary being tested.
Freeze the Bollinger Bands Calculation Before Testing
A squeeze label is not reproducible until the indicator version is fixed. Record at least these fields:
| Field | Example version | Why it changes the result |
|---|---|---|
| Price input | Close | Using close, typical price, or another source changes the basis and dispersion |
| Basis type | SMA | EMA or another moving average produces a different center line |
| Length | 20 bars | Shorter and longer windows react differently |
| Standard-deviation multiplier | 2.0 | Changes the band distance |
| Standard-deviation convention | Platform implementation | Population and sample conventions or platform details can differ |
| Chart interval | 1 hour | A 20-bar window means something different on every interval |
| Session | Regular only or all available hours | Extended-hours bars can materially change the average and deviation |
| Timezone | Stated exchange or chart timezone | Changes bar boundaries |
| Provider and symbol | Exact feed | Prices and sessions can differ between providers |
| Adjustment policy | Split/dividend adjusted or unadjusted | Corporate actions can distort historical bands |
| Current-bar policy | Closed bars only | An unfinished bar can widen, narrow, or reverse before close |
The commonly displayed configuration is a 20-period moving average with bands two standard deviations away, but that is a starting specification, not proof that it is suitable for every market or timeframe. TradingView's Bollinger Bands documentation confirms that the length, source, moving-average type, standard-deviation multiplier, and offset are configurable.
Use closed bars for historical rule tests
An indicator value on a forming bar is provisional. If a rule says “the squeeze released when BandWidth rose,” define whether release is measured:
- intrabar;
- at the bar close;
- after one additional bar closes; or
- after a higher-timeframe bar becomes final.
A test that uses the final daily BandWidth value at the beginning of that day leaks information from the future.
What Does BandWidth Measure?
Bollinger BandWidth converts the distance between the outer bands into a value relative to the middle band:
BandWidth = (Upper Band - Lower Band) / Middle Band × 100
This is the formula documented in TradingView's BandWidth reference. The same reference notes that the meaning of “narrow” changes by instrument and timeframe and must be compared with the instrument's own history.
BandWidth answers a narrower question than price position:
- BandWidth: How wide is the envelope relative to its basis?
- %b: Where is price located relative to the lower and upper bands?
TradingView documents %b = (Current Price - Lower Band) / (Upper Band - Lower Band). A squeeze rule can use BandWidth for contraction and %b as a price-location feature, but they are separate measurements.
Why a fixed 5% threshold is not universal
A threshold such as “BandWidth below 5%” can produce very different candidate counts across:
- a high-priced stock and a low-priced stock;
- a quiet currency pair and a volatile cryptocurrency;
- a daily chart and a five-minute chart;
- regular-session data and all-session data;
- one historical regime and another.
A fixed number is acceptable only as a named, tested version for a defined universe. It should not be presented as the meaning of a squeeze everywhere.
Denominator and price-history edge cases
Because percentage BandWidth divides by the middle band, special handling may be required when the basis is near zero or negative. This can matter in unusual historical futures data or synthetic series. A research record should state whether such observations are:
- excluded;
- transformed with an absolute denominator;
- measured with raw band distance instead; or
- handled with another pre-defined normalization.
Changing the denominator after seeing results creates a new rule version.
Four Reproducible Ways to Define a Squeeze
There is no single mandatory definition. Choose one, name it, and do not silently mix methods.
Version A: Rolling-minimum BandWidth
A bar becomes a squeeze candidate when its BandWidth equals or falls below the lowest BandWidth observed over the previous N completed bars.
Required fields:
- Bollinger settings;
- lookback
N; - whether the current bar is included in the minimum;
- equality rule;
- minimum candidate duration;
- release rule.
Example research definition:
Candidate at close when current BandWidth is less than or equal to the minimum of the prior 120 closed bars. Release occurs after BandWidth rises for two closed bars and price closes outside the frozen consolidation boundary.
The values are an example of rule syntax, not a recommended parameter set.
Version B: Historical percentile
A bar is classified as compressed when BandWidth is below a stated percentile of its trailing distribution.
Required fields:
- trailing history length;
- percentile level;
- whether the percentile window rolls;
- treatment of missing bars;
- whether the threshold is recalculated on every bar.
This method adapts to the instrument's own history, but it can still change across regimes. It also requires enough prior data before the first valid signal.
Version C: Contraction from a recent expansion
A candidate requires BandWidth to decline by a specified rule from a prior local high or expansion state.
Possible definitions include:
- a sequence of lower BandWidth closes;
- a percentage decline from a rolling high;
- a slope below zero for a minimum number of bars;
- a ratio of current BandWidth to recent median BandWidth.
This version measures compression dynamics rather than an absolute low. It must still define when the contraction becomes sufficiently compressed.
Version D: Bollinger Bands inside a Keltner envelope
A common squeeze variant labels compression when the upper Bollinger Band is below the upper Keltner Channel and the lower Bollinger Band is above the lower Keltner Channel.
This is not the same calculation as BandWidth. Bollinger Bands use standard deviation; Keltner Channels generally use an ATR-based envelope. The classification changes with:
- Bollinger length and multiplier;
- Bollinger basis type;
- Keltner length and multiplier;
- ATR calculation and smoothing;
- Keltner basis type;
- source, session, interval, and provider.
Treat “BB inside KC” as a separate strategy family. A result from one parameter combination cannot be attributed to every squeeze implementation.
Define Squeeze Start, Active State, and Release
A visual label such as “the bands look tight” does not specify an event sequence. Use explicit states.
| State | Minimum definition |
|---|---|
| Not compressed | The selected squeeze condition is false |
| Candidate starts | The squeeze condition becomes true on a closed bar |
| Active squeeze | The condition remains true or stays within an allowed tolerance |
| Release candidate | BandWidth expands, BB exits KC, or another stated release condition occurs |
| Price confirmation | A separate price rule confirms direction |
| Failed release | The release condition occurs but confirmation fails or price returns inside |
| Expired squeeze | No valid confirmation occurs within the allowed horizon |
| Ambiguous | Available OHLC bars cannot establish the required event order |
Equality and tolerance rules
Specify whether equality counts:
BandWidth <= rolling minimumversus< rolling minimum;- upper BB
<=upper KC versus<; - price close exactly at the boundary counts as outside, inside, or unresolved.
These small choices can change signal counts and should be stored in the version ledger.
Minimum and maximum duration
A one-bar compression can behave differently from a multi-week contraction. Record:
- minimum active bars before a release is eligible;
- maximum active bars before the candidate expires or is reclassified;
- whether brief interruptions reset the count;
- whether adjacent candidates are merged.
Do not choose the duration after reviewing which examples worked.
Freeze an Independent Price Boundary
The outer Bollinger Bands move on every bar. If the breakout boundary is allowed to move with the result, confirmation can become circular.
Before the release, define the price structure independently:
- highest and lowest close during the candidate;
- highest high and lowest low during the candidate;
- a range marked before the candidate started;
- a confirmed pivot boundary;
- a triangle or flag line defined by a separate pattern rule;
- a support or resistance zone with a fixed width policy.
For the broader rules on marking a level, use the support and resistance guide. For pattern identity, use Breakout Patterns Explained.
Band break versus structure break
These are not interchangeable:
- Band break: Price closes above the upper band or below the lower band.
- Structure break: Price closes beyond the pre-marked price boundary.
- Combined rule: Both occur in the stated order or on the same eligible bar.
A close outside the band can occur while price remains inside a wider range. Conversely, price can break a structure boundary while the band has already expanded enough that price remains inside the envelope.
Confirmation Rules Must Be Versioned
A squeeze does not become a directional setup until a confirmation rule is stated. Possible versions include:
Close-outside rule
Confirm when a completed bar closes beyond the frozen structure boundary.
Fields:
- high/low versus close boundary;
- equality treatment;
- minimum price buffer, if any;
- whether the band must also be crossed;
- whether BandWidth must be rising.
Consecutive-close rule
Require two or more closes beyond the boundary.
This delays confirmation but can reduce some one-bar failures. It also changes entry timing and may increase distance from the original range. The effect must be measured rather than assumed.
Follow-through rule
Confirm only when a later bar extends beyond the breakout bar by a stated amount or closes in the same direction.
Define:
- number of allowed bars;
- required extension measure;
- what invalidates the candidate first.
Retest-and-acceptance rule
After the break, price revisits the boundary and then closes back in the breakout direction.
Define:
- retest zone width;
- whether a wick or close must enter the zone;
- maximum bars allowed;
- acceptance-close requirement;
- failure rule if price closes through the opposite side.
BandWidth expansion rule
Require BandWidth to rise after the compression state.
This confirms volatility expansion, not direction by itself. Pair it with a price rule and state whether the expansion is measured on the breakout bar or later.
A Squeeze Does Not Predict Direction
The squeeze identifies contraction. A directional bias can be recorded as a feature, but it should remain separate from confirmation.
Possible pre-registered features include:
- prior trend label;
- position within a larger range;
- distance to support or resistance;
- slope of the middle band;
- %b position;
- price pattern classification;
- momentum state;
- relative-volume state;
- event or earnings proximity.
Do not describe these features as proof that the breakout must occur in one direction. The first directional move can fail, reverse, or remain unresolved.
What Is a Head Fake?
John Bollinger's squeeze discussions are commonly associated with the risk of an initial move that fails before a later move develops. The exact “head fake” label still needs a testable sequence. John Bollinger's official site identifies the Squeeze as one of the indicator's major applications; the label still does not replace a pre-defined failure rule.
A reproducible head-fake rule might require:
- A valid squeeze candidate.
- A first closed-bar break beyond Boundary A.
- A close back inside the frozen range within
Mbars. - A later close beyond Boundary B, or a failure classification if no opposite break occurs.
- An expiry horizon.
Do not label every losing breakout a head fake. Some candidates simply fail without producing a confirmed opposite move.
Separate these outcomes
| Outcome | Example classification |
|---|---|
| Immediate failure | Breakout bar closes outside, next eligible bar closes back inside |
| Delayed failure | Price holds outside briefly but returns inside before the follow-through rule completes |
| Opposite confirmed breakout | First side fails and the opposite boundary later confirms within the horizon |
| Two-sided whipsaw | Both sides break under the chosen rule and neither holds |
| No resolution | Candidate expires without a valid directional confirmation |
| Continued compression | Apparent release does not satisfy the release rule and the squeeze remains active |
Define Failure, Invalidation, and Expiry
These terms should not be used interchangeably.
Candidate failure
The setup stops being eligible before price confirmation. Examples:
- BandWidth expands but price never breaks the frozen structure;
- the compression condition disappears before minimum duration;
- the range becomes too wide under the versioned rule;
- a scheduled data gap makes the measurement invalid.
Confirmed-breakout failure
A confirmed breakout later violates a stated acceptance condition. Examples:
- close back inside the range;
- close through the opposite side of the retest zone;
- failure to produce required follow-through within
Mbars.
Invalidation
A structural event makes the original thesis no longer applicable. The invalidation can be different from a simulated stop. It must be based on observable information available at the time.
Expiry
A candidate or confirmed event reaches a time limit without meeting the next state. Expiry prevents a squeeze identified months earlier from being retroactively connected to an unrelated later move.
Handle Same-Bar and OHLC Ambiguity
Historical OHLC candles do not reveal the exact intrabar path. A single bar might:
- break the upper boundary;
- trade back inside;
- touch the lower boundary;
- and close near the middle.
Without lower-timeframe data, the order is unknown. Predefine one policy:
- classify the bar as ambiguous and exclude it;
- use a conservative adverse-order assumption;
- use lower-timeframe data available at the time;
- postpone confirmation until a later closed bar.
Do not assume the favorable sequence merely because the final chart makes it look plausible.
Data Controls That Can Change a Squeeze
Stocks and ETFs
Splits, dividends, symbol changes, delistings, and extended-hours inclusion can alter historical averages and deviations. Use a consistent adjustment policy and record it.
Futures
Contract changes and continuous-series construction can create artificial jumps or compressions. State:
- individual contract or continuous symbol;
- roll rule;
- back-adjustment method;
- session template;
- treatment of rollover volume and gaps.
Forex and CFDs
Provider-specific prices, timezones, Sunday bars, and session boundaries change the 20-bar window. Spot charts also lack one consolidated global exchange feed.
Crypto
Exchange, pair, quote currency, 24-hour bar boundary, missing history, and venue-specific price events can produce different bands for the same asset name.
Missing bars and zero activity
Define whether missing periods are skipped, forward-filled, or represented as empty bars. Forward-filling prices can artificially reduce standard deviation and create false compression.
Optional Confirmation Features Are Not Universal Rules
Volume
Higher recorded activity can be stored as a feature, but the meaning depends on the market and feed. A fixed “1.5x volume confirms the breakout” rule should be treated as a specific version, not a universal truth. The broad volume guide explains data-source and baseline differences.
ATR
ATR can provide a second volatility measure, but it is calculated differently from standard deviation. “ATR at a low” needs its own lookback, percentile, session, and data rules. The ATR measurement guide covers formula and data controls.
Momentum indicators
RSI, MACD, or another indicator may be included as a feature, but each adds parameters and timing rules. Adding filters after reviewing losing examples is overfitting unless the revised version is tested on separate data.
News and scheduled events
A squeeze before earnings or economic data does not reveal the event outcome. Decide before testing whether candidates near scheduled events are:
- included;
- excluded;
- analyzed as a separate group; or
- subject to different execution assumptions.
Multi-Timeframe Squeeze Rules Without Leakage
A higher-timeframe condition is usable only after the higher-timeframe bar closes.
Example:
- A daily squeeze value for Monday is not final at Monday's market open.
- A weekly squeeze value is not final on Tuesday if the weekly bar closes Friday.
- A lower-timeframe breakout cannot use the eventual higher-timeframe close unless that value was already available.
Record:
| Field | Required decision |
|---|---|
| Context timeframe | The higher interval used for squeeze state |
| Trigger timeframe | The lower interval used for price confirmation |
| Availability timestamp | When the higher-timeframe state becomes final |
| Timezone and session | How both intervals align |
| Stale-context limit | How long the higher-timeframe state remains valid |
| Conflict policy | What happens if the higher-timeframe state ends before lower-timeframe confirmation |
For the general framework, see Multiple Timeframe Analysis.
Build a Squeeze Version Ledger
A version ledger prevents silent rule drift.
| Version field | Example record |
|---|---|
bb_source | close |
bb_basis | SMA |
bb_length | 20 |
bb_multiplier | 2.0 |
squeeze_method | trailing BandWidth percentile |
squeeze_lookback | stated number of closed bars |
squeeze_threshold | stated percentile |
minimum_duration | stated number of bars |
release_rule | closed-bar BandWidth expansion |
price_boundary | frozen candidate high/low |
confirmation_rule | close outside plus later follow-through |
failure_rule | close back inside before follow-through |
head_fake_rule | failed first side plus confirmed opposite side |
expiry | stated number of bars |
cost_model | spread, commission, slippage assumptions |
version_id | immutable identifier |
If any field changes, create a new version instead of editing old results.
What Should a Replay Record Contain?
Record the state at decision time, not only the final outcome.
Candidate record
- symbol, market, venue, and provider;
- date, timezone, session, and timeframe;
- Bollinger settings and platform;
- BandWidth value and historical comparison rule;
- squeeze start time and duration;
- frozen price boundaries;
- optional ATR, volume, momentum, or pattern features;
- scheduled-event flag;
- higher-timeframe state and availability time.
Event record
- release timestamp;
- first boundary touched;
- first closed-bar break;
- BandWidth expansion state;
- confirmation timestamp;
- retest and follow-through events;
- failure, head fake, opposite break, expiry, or ambiguity;
- maximum favorable and adverse movement over fixed horizons;
- spread, commission, slippage, and fill assumptions if simulating trades.
Outcome horizons
Use fixed horizons such as a number of bars after confirmation. Also record path-dependent outcomes:
- time to first failure;
- time to opposite boundary;
- maximum favorable excursion;
- maximum adverse excursion;
- range expansion relative to the pre-breakout range;
- close-to-close and high-low movement;
- unresolved cases.
A squeeze can produce a large high-low range while still being difficult to trade after costs and head fakes. Measuring only the final directional move hides that distinction.
Evaluate More Than Win Rate
A complete evaluation can include:
- candidate count;
- confirmation rate;
- immediate-failure rate;
- delayed-failure rate;
- head-fake rate;
- opposite-confirmation rate;
- expiry and ambiguity rates;
- median and distribution of post-confirmation range expansion;
- maximum favorable and adverse excursion;
- time to confirmation and time to failure;
- performance before and after estimated costs;
- results by instrument, timeframe, regime, and squeeze definition;
- sensitivity to nearby parameter values;
- development versus validation versus final evaluation data.
A profitable-looking result from one instrument and one optimized threshold is not evidence that the rule generalizes.
Common Research Errors
Calling every narrow chart a squeeze
A label needs a numerical or state-based rule. Visual selection after the move introduces hindsight.
Treating contraction as stored energy
“Compressed spring” language is a metaphor, not a measurable law. Some contractions expand gradually, fail repeatedly, or remain quiet.
Predicting direction from the squeeze itself
Band contraction is direction-neutral. Bias features and confirmation events must be separate.
Using a universal BandWidth number
TradingView's BandWidth reference explicitly warns that narrowness varies by instrument and timeframe. Compare like with like under a stated historical rule.
Mixing BandWidth and BB-inside-KC results
These are different definitions. Combining them without a version field makes the test impossible to reproduce.
Chasing the first outside-band bar in hindsight
A close outside the band can be the start of a trend, a temporary expansion, or a head fake. Record all outcomes, not only successful examples.
Ignoring unfinished higher-timeframe values
Using the final weekly condition before Friday's close leaks future information.
Claiming live performance from replay
Historical replay does not reproduce queue position, live liquidity, order routing, spreads, slippage, or emotional execution. The CFTC warns that hypothetical or simulated results have inherent limitations and should not be represented as actual performance.
A Candle-by-Candle Replay Workflow
- Choose one squeeze definition and freeze every calculation field.
- Choose the instrument universe and date range before scanning outcomes.
- Load enough prior history for the Bollinger and squeeze lookbacks.
- Advance using closed bars only.
- When the candidate condition becomes true, freeze the structure boundary and create a record.
- Continue bar by bar without selecting direction in advance unless a separate bias rule is part of the version.
- Record squeeze release, first break, confirmation, return inside, head fake, failure, opposite break, expiry, or ambiguity.
- Apply the same cost and execution assumptions to every eligible case.
- Keep development and validation samples separate.
- Review negative cases and parameter sensitivity before changing the rule.
ChartMini is suitable for lightweight historical candle replay and directional-decision practice. It is not a broker, does not route live orders, and does not reproduce Level 2 depth, fills, spreads, slippage, commissions, or full execution behavior.
Official Sources
- John Bollinger's official Bollinger Bands site — indicator history and official Bollinger tools, including the Squeeze.
- TradingView: Bollinger Bands — standard calculation, configurable inputs, expansion, contraction, and band-walk context.
- TradingView: Bollinger BandWidth — BandWidth formula and instrument/timeframe-relative narrowness.
- TradingView: Bollinger Bands %b — price-location formula and interpretation.
- Fidelity: Bollinger Bands — educational indicator reference and limitations.
- CFTC: Trading-system and hypothetical-results advisory — limitations of simulated performance claims.
Frequently Asked Questions
What is a Bollinger Band squeeze?
A Bollinger Band squeeze is a period when the distance between the upper and lower bands is narrow relative to a defined historical baseline. It describes volatility contraction, not a guaranteed breakout, direction, distance, or timing.
Does a Bollinger Band squeeze predict breakout direction?
No. A squeeze measures contraction. Direction requires a separate, pre-defined price rule, such as a closed-bar break of a marked range boundary followed by acceptance or follow-through. The first move can fail or reverse.
How should Bollinger BandWidth be used to define a squeeze?
Freeze the Bollinger settings and data source, calculate BandWidth consistently, and compare it with the same instrument and timeframe using a stated rolling-low, percentile, or other historical rule. One universal BandWidth threshold should not be applied across all markets.
Is Bollinger Bands inside Keltner Channels the standard squeeze definition?
It is a separate squeeze variant. It compares a standard-deviation envelope with an ATR-based envelope, so the result depends on both indicators' lengths, multipliers, moving-average types, and data settings. Record it as its own rule version rather than treating it as identical to a BandWidth squeeze.
What is a Bollinger Band head fake?
A head fake is an initial move outside the squeeze or structure boundary that does not hold and is followed by a move back through the range, sometimes in the opposite direction. A test must define how many bars are allowed, what counts as returning inside, and when the first breakout is classified as failed.
Can a Bollinger Band squeeze strategy guarantee profitable trades?
No. A squeeze is a historical volatility condition. It cannot guarantee direction, breakout quality, fills, costs, risk-reward, or profitability. Any rule set should be tested with closed-bar timing, failed signals, trading costs, and out-of-sample data.