Volatility: ATR, Bollinger Bands, and the Squeeze
Volatility is the unit your strategy is denominated in. Every other measurement is downstream of it.
8.0Why this chapter exists
Volatility is the measurement underlying every other indicator. ATR is your sizing unit (Chapter 1, Chapter 17). Bollinger Bands are your normalised deviation envelope. Volatility regimes (calm, normal, expanded, crisis) condition every framework's expected behaviour. A trader who reads volatility correctly reads the rest of the chart correctly; a trader who treats volatility as a single number ignores the largest source of regime-dependent variance in their strategy.
ATR comes first, because it is the unit your sizing and stop placement are denominated in, and most retail charts compute it in a way that misweights overnight gaps. Bollinger Bands and BBW come next, treated not as a trade trigger but as a normalised deviation envelope and the cleanest single-number indicator of which volatility regime is in effect. The Yang-Zhang estimator gets a section of its own, because for futures specifically it is the right default for systematic work, and most platforms quietly default to a worse one. The squeeze pattern, which is the most robust precondition for an expansion move that retail TA recognises, gets framed as a regime gate rather than a setup. And the chapter closes by connecting volatility regimes back to the composite from Chapter 2 and the framework selection in the Frameworks document.
8.1True range and ATR
True range (TR) per bar
TR = max(high − low,
|high − prior_close|,
|low − prior_close|)
Three candidates, two of which involve the prior close. The reason: a bar's tradeable range is not just its own high-to-low; if there was a gap up at the open, the gap itself is part of the price travel since the prior close, and the TR captures it.
For futures, the gap question is non-trivial. ES and NQ trade nearly 24 hours, so most "gaps" are minimal (the close-to-open gap from RTH close to RTH open the next day is usually a few ticks). For RTH-only computation, the prior close is the prior RTH close, so a 30-tick overnight gap will appear in the next RTH bar's TR. For 24-hour computation, the gaps are smaller because the bar series is continuous.
The choice matters. For sizing and stop placement on RTH-traded strategies, RTH-only TR is the correct computation. For overnight or 24-hour strategies, full TR including the cash-close-to-cash-open gap is the correct computation.
ATR (Average True Range)
ATR_t = Wilder_smoothed(TR, N)
Standard period N = 14. Wilder smoothing is preferred over SMA because Wilder weights recent volatility more heavily without the abrupt drop-off when an old bar leaves the window.
ATR is a unit, not a signal
ATR does not generate trade triggers. Its role is dimensional:
- Stop placement: structural stops at 1× to 1.5× ATR beyond entry.
- Position sizing: contracts = floor(account × risk% / (stop_ticks × tick_value)).
- Target setting: initial scales at 1.5× to 2× ATR; secondary at 3× ATR.
- Range definition: is the IB "wide" or "narrow"? Compare to recent IB ATR.
- Sweep magnitude: the canonical sweep template (Chapter 3, §3.2) requires pierce ≥ 0.10 × ATR; the multiplier scales the rule across regimes.
A trader fluent in ATR uses it constantly without thinking about it. The unit is implicit in every decision.
ATR percentile
ATR alone is not informative without context. ATR = 50 points on ES might be normal, expanded, or compressed depending on recent history. The percentile of ATR over a rolling window (typically 78 bars on 5-min, 252 bars on daily) gives the regime-conditioned reading:
- ATR percentile < 30: compressed volatility (calm regime).
- ATR percentile 30 to 70: normal.
- ATR percentile > 70: expanded.
- ATR percentile > 95 with ATR > 2× trailing 30-day median: crisis regime.
The percentile is the version of ATR that goes into the regime composite (Chapter 2) and that conditions framework selection.
ATR and timeframe
ATR computed on different timeframes captures different information. ATR(14) on a daily chart is the typical daily range. ATR(14) on a 5-min chart is the typical bar range. They are not comparable; they are different measurements.
For intraday work, the right ATR is whichever timeframe matches the decision being made. Stop placement on a 5-min entry uses 5-min ATR; sizing on a daily-horizon swing uses daily ATR. Mixing them produces wrong sizing.
8.2Bollinger Bands and BBW
Construction
middle = SMA(N, close) (default N = 20)
σ = standard_deviation(N, close)
upper = middle + 2σ
lower = middle − 2σ
The bands are 2 standard deviations on either side of a 20-period mean of close. Approximately 95% of close prices fall within the bands under a stationary-normal assumption; the actual coverage in market data is lower due to fat tails (typically 88 to 92%).
Bollinger Band Width (BBW)
BBW = (upper − lower) / middle
BBW is the relative width of the band envelope, normalized by the middle band. It is dimensionless, which is a virtue: a BBW of 0.005 (0.5%) means the same thing on ES at 6,200 as on NQ at 22,500.
BBW percentile
As with ATR, BBW alone is not informative; the percentile over a rolling window (typically 20 to 60 days) is. BBW percentile is the cleanest single-number indicator of whether the market is currently coiled or expanded:
- BBW percentile < 20: squeeze (coiled).
- BBW percentile 20 to 80: normal.
- BBW percentile > 80: expanded.
A squeeze regime is often pre-expansion; the band envelope contracted because volatility decayed, and a directional break tends to follow. A reading above 80 means volatility has just expanded; further expansion is rare from this state, mean reversion of volatility is more likely.
BBW versus ATR
Both measure volatility, but they capture slightly different things:
- ATR is a measure of bar-to-bar range. Insensitive to direction; a 50-point bar with all the move in the upper half is the same TR as a 50-point bar with all the move in the lower half.
- BBW is a measure of the dispersion of close prices around their mean. A trending series with consistent steady moves can produce a high BBW even with low ATR; a chop series with wild bars but no net travel can produce a low BBW even with high ATR.
The two indicators co-move strongly but not perfectly. The composite from Chapter 2 uses both because their disagreement is informative: when ATR percentile is high but BBW percentile is low, you have wide bars with no net travel, which is the signature of a high-volatility range.
8.3The Yang-Zhang volatility estimator
Standard close-to-close volatility (the standard deviation of log returns of closing prices) is the textbook estimator. For futures, it is biased downward because it ignores intraday price travel and overnight gaps.
The Yang-Zhang (2000) estimator
A composite of three components:
σ²_YZ = σ²_overnight + k × σ²_open_to_close + (1 − k) × σ²_RS
Where:
- σ²_overnight is the variance of the close-to-open log return (captures overnight gap risk).
- σ²_open_to_close is the variance of the open-to-close log return (intraday session).
- σ²_RS is the Rogers-Satchell estimator using the open, high, low, and close, which is drift-independent.
- k is a weight, calibrated to minimize the variance of the estimator under the assumption of zero drift.
The full derivation is in the Yang-Zhang (2000) paper and reproduced in Appendix A. The intuition is that each component captures volatility at a different point in the price path, and the weighted combination is more efficient than any single component.
Why it matters for futures
Liquid futures have meaningful overnight sessions. A close-to-close estimator computed on RTH closes alone misses 25 to 35% of the typical session's volatility (the ETH portion). A 24-hour close-to-close estimator includes the overnight portion but mis-weights it. The Yang-Zhang estimator captures both with statistically efficient weighting.
For sizing, target setting, and any decision that requires a forward-looking volatility estimate, Yang-Zhang is the right default on futures.
When to use which
- For intraday tactical decisions: ATR (5-min or 15-min) is sufficient and convenient.
- For session-level sizing and target setting: daily ATR (RTH-only or 24-hour, depending on holding horizon) is sufficient.
- For multi-day or systematic strategies' parameter calibration: Yang-Zhang on the appropriate horizon.
- For risk-of-ruin estimation and option-equivalent pricing: Yang-Zhang or higher-order estimators (Garman-Klass, etc.).
The hierarchy is: simpler estimators are fine for tactical work; statistically efficient estimators are needed for strategy-design work.
8.4The squeeze: a regime precondition for expansion
The Bollinger squeeze is the most-cited "explosive setup" pattern in retail TA, and for once the practitioner consensus is approximately right. The pattern is:
BBW percentile drops below the 20th percentile of trailing 20 days. The bands have contracted to historically tight levels. A directional break from this state has elevated probability of producing a sustained move, if it is confirmed.
The empirical basis
Volatility is mean-reverting on multi-day horizons; a period of compressed volatility is followed by a period of expanded volatility with high probability. The directional component (which way the expansion goes) is a separate question that cannot be answered from the squeeze alone.
The framework
From the Frameworks doc (Framework 4):
- Composite regime classified as Squeeze for at least 5 bars.
- A directional bar closes outside the Bollinger Bands.
- Bar volume ≥ 1.5× trailing 20-bar average.
- Order-flow agrees with the breakout direction.
- Outside news blackout window.
All five conditions before sizing. A breakout without volume or order-flow is roughly coin-flip; the conditions are what convert "squeeze" from a preconditioning state to a tradeable signal.
The failure mode
The dominant failure: false breakouts. The directional bar closes outside the bands; the next bar reverses back inside; the original direction continues to fade. The conditioning rules (volume + order-flow) are designed to reduce false-positive rate, but they cannot eliminate it. A trader using the squeeze framework should expect 30 to 40% of qualifying breakouts to fail; the edge comes from the asymmetric R:R when the breakout works.
Sizing implications
Squeeze breakouts have wider initial volatility than other setups (the breakout bar is by definition large). Stops need to be wider, which means contract counts must be smaller for fixed-dollar risk. Per-trade risk fraction in Framework 4 is set to 0.5%, half the standard 1.0%, in part for this reason.
8.5Volatility regimes in detail
Connecting back to Chapter 2's regime taxonomy:
Calm volatility
- ATR percentile < 30, BBW percentile < 30.
- Quiet trading conditions, narrow daily ranges, frequent mean-reversion.
- Range-Calm and Squeeze regimes are subsets.
- Setups that work: range fades at structural levels, AVWAP mean-reversion.
- Setups that fail: continuation breakouts (often false because liquidity is too thin to sustain expansion).
Normal volatility
- ATR percentile 30 to 70, BBW percentile 30 to 80.
- Standard trading conditions. Most book frameworks calibrated here.
- Trend and Range subregimes both possible; differentiated by KER.
- Setups: full toolkit is applicable.
Expanded volatility
- ATR percentile > 70, BBW percentile > 80.
- Wide ranges, fast moves, large stops required.
- Trend-Vol regime overlaps strongly.
- Setups that work: trend continuation with patience for pullbacks.
- Setups that fail: tight-stop range fades (stops get hit on noise even at structural levels).
Crisis volatility
- ATR percentile > 95 and ATR > 2× trailing 30-day median.
- Liquidity inverted. Spreads widened 5×+. Correlations across markets converged.
- Examples: Feb 5 2018 Volmageddon; March 9-18 2020 COVID; Aug 5 2024 yen carry unwind.
- Setups that work: nothing reliable. Cut size 50 to 80%; consider flat.
The thresholds for each regime are tunable defaults. The key discipline is categorical recognition: knowing which regime you are in determines which playbook to load. A trader who treats volatility as a single dial misses the regime-conditional asymmetries.
8.6Volatility forecasting: a brief, honest treatment
Can next-period volatility be forecast better than "use the current ATR as the prediction"?
The persistence baseline
Volatility is highly autocorrelated. ATR(14) at time t is a strong predictor of ATR(14) at time t+1, with correlation typically 0.6 to 0.85 on liquid futures depending on horizon. The persistence baseline is hard to beat by a meaningful margin.
GARCH and realized-volatility models
GARCH(1,1) and its many variants are the textbook econometric models for volatility forecasting. They improve over the persistence baseline by 5 to 15% (in mean squared forecast error) on liquid futures, depending on horizon and product. The improvement is real but modest.
High-frequency realized volatility
Andersen-Bollerslev (1998) and subsequent literature established that volatility forecast accuracy improves substantially when high-frequency intraday data is used to compute "realized volatility," then used as the input to the forecasting model. For a screen trader with 5-min or tick data, this means: ATR computed on intraday bars, smoothed appropriately, is a better daily volatility forecast than daily-bar ATR alone.
Why this is a "brief" treatment
For the discretionary or hybrid trader, the marginal accuracy gain from GARCH or realized-volatility models is typically not worth the implementation cost. The persistence baseline (use current ATR percentile as the regime forecast) gets you 90% of the way for 10% of the work. For systematic researchers, the topic is treated in Appendix A and is a productive direction for strategy refinement.
8.7Failure modes specific to volatility tools
-
Lookback period mismatch. ATR(14) on 5-min, ATR(14) on daily, ATR(14) on weekly are three different measurements. Mixing them produces wrong sizing.
-
Treating ATR as stationary. ATR moves. A stop sized to "8 ticks" because that's what ATR was last week may be too tight or too wide today. Use the current ATR for current decisions.
-
Bollinger Bands without percentile context. Bands at 2σ on close: the width depends on recent volatility. Reading "price is at the band" without context misses whether the band itself is wide or narrow.
-
Yang-Zhang misapplication. Yang-Zhang assumes daily price observations with overnight gaps; applying it bar-by-bar to 5-min data is a category error.
-
Squeeze trades without confirmation. The framework requires five conditions. Trading the visual squeeze without volume and order-flow confirmation produces approximately coin-flip outcomes.
-
Crisis volatility "opportunity" framing. During crisis volatility, the temptation is to size up because "moves are bigger." The reality is that liquidity is thinner, slippage is larger, and edge is lower. Cut size; do not chase.
8.8The integrated stack treatment
Where do volatility tools fit?
- Layer 6 (Regime composite): ATR percentile and BBW percentile are two of the four inputs.
- Underlying every layer: ATR is the unit of measurement for stops, targets, sweep magnitude, sizing.
- As a precondition: Squeeze regime (BBW percentile < 20) is the trigger condition for Framework 4 (Squeeze Breakout).
- As a strategy-design input: Yang-Zhang is the right estimator for systematic strategies' position-sizing calibration.
Volatility is foundational rather than a discrete strategy in itself. Read it correctly, and every other tool becomes more legible.
8.9Diagram concepts referenced in this chapter
- D8.1: True range three-component diagram. A schematic of a single bar with the three TR candidates labeled (high-low, high-priorClose, low-priorClose) and the TR identified as the max.
- D8.2: ATR percentile vs absolute ATR. A two-pane chart over a year of ES daily: top pane absolute ATR, bottom pane ATR percentile. The percentile flattens regime context; the absolute number does not.
- D8.3: Bollinger Bands envelope on a chart. A multi-month chart with bands plotted, with BBW expanding and contracting visibly.
- D8.4: BBW percentile alongside regime tags. The same chart with regime ribbons (matching D2.3) showing how BBW corresponds to regime classification.
- D8.5: Yang-Zhang components illustration. A bar showing how a daily move is decomposed into overnight gap + intraday session + Rogers-Satchell, with the components weighted.
- D8.6: Squeeze breakout sequence. Three panels: (a) the squeeze with BBW < 20th percentile flagged; (b) the breakout bar with all conditions visible; (c) the resolution.
8.11Exercises
Exercise 8.1: ATR percentile across a year. On GC daily for the most recent 252 trading days, compute ATR(14) and its percentile rank. Plot ATR and ATR percentile on the same chart with two y-axes. Note how the percentile flattens out and provides regime context that the absolute number does not.
Exercise 8.2: BBW squeeze identification. On NQ 15-min, identify every instance where BBW dropped below the 20th percentile of the trailing 20 days for at least 5 bars. Tabulate the first directional break and the breakout's first 10-bar move. The hypothesis: breakouts with confirmation produce expected moves; without confirmation, approximately coin-flip.
Exercise 8.3: Close-to-close vs Yang-Zhang estimator. Implement both volatility estimators on ES daily for the most recent 252 days. Compute the rolling 21-day estimate from each. Compare to the next-day actual realized range. The Yang-Zhang estimator should produce a tighter forecast distribution.
Exercise 8.4: ATR-based position sizing. Given a $50K account, 1% per-trade risk, and a structural stop of 1.5 × ATR, compute the contract count for ES at three different ATR readings: 30 points, 60 points, 120 points. Note how contract count scales inversely with ATR. The dollar risk stays fixed; the contract count adjusts.
Exercise 8.5: Crisis volatility identification. Find three sessions in the last 12 months where ATR exceeded 2× the trailing 30-day median. For each, assess: (a) what regime composite tagged that day; (b) what setups would have been theoretically applicable; (c) actual outcome on those setups. Note the gap between expected and realized expectancy in crisis volatility.
End of Part II. Part III opens with Chapter 9: Volume Profile and Market Profile, the institutional framework that anchors much of the rest of the book.