Measures the rate of change of the smoothed high-low range. Unlike ATR, which gives an absolute volatility reading, Chaikin Volatility gives a percentage change — telling you whether volatility is expanding or contracting, and how fast.
Chaikin Volatility on MES daily — expansion and contraction
What it measures
- Rate of volatility change. Percentage change in the smoothed high-low range over the lookback. Positive = volatility expanding; negative = contracting.
- Regime transitions. Sharp positive readings often coincide with breakouts; sharp negative readings with consolidation.
- Not absolute volatility. Chaikin Volatility says nothing about whether current volatility is high or low — only whether it's increasing or decreasing. Pair with ATR for the absolute level.
Formula
How AlgoLift computes it
HLDiff[t] = High[t] − Low[t]
Smoothed[t] = EMA(HLDiff, ema_period)
ChaikinVolatility[t] = (Smoothed[t] − Smoothed[t − roc_period]) / Smoothed[t − roc_period] × 100
A two-step process: first smooth the high-low range with an EMA, then compute the percentage change of the smoothed value over roc_period bars.
The result is a percentage. A reading of +30 means the smoothed range is 30% larger than it was 10 bars ago. A reading of −20 means it's 20% smaller.
Developed by Marc Chaikin.
Inputs in AlgoLift
| Setting | Default | Range | Notes |
|---|---|---|---|
| EMA Period | 10 | 1–200 | Smoothing for the high-low range. |
| ROC Period | 10 | 1–200 | Lookback for the percentage change computation. |
Recommended settings
- (10, 10) — default: Chaikin's original. Works on daily and intraday alike.
- (5, 5): Faster — more sensitive to short-term volatility changes.
- (20, 20): Slower — for medium-term regime classification.
The two periods are typically kept similar — diverging them changes the indicator's character.
Outputs in AlgoLift
| Handle | Type | Plotted | Notes |
|---|---|---|---|
| Volatility | Numeric | Always | The Chaikin Volatility percentage. Can be positive or negative. |
| Avg. Range | Numeric | On select | The EMA of high-low difference. A standalone absolute-volatility measure. |
| Slope | Numeric | On select | Rate of change of the volatility value. Useful for spotting acceleration. |
Chaikin Volatility node — default state
How to read it
- Reading > +30: Volatility expanding strongly — often coincides with breakouts, news events, or trend acceleration.
- Reading < −30: Volatility contracting strongly — consolidation, calming after a move.
- Reading near 0: Volatility is unchanged from the lookback period — stable regime.
- Slope rising: Volatility expansion accelerating.
- Slope falling from a high reading: The expansion phase is exhausting.
The interpretation is purely about change — high Chaikin readings during low absolute volatility (early in a breakout) mean very different things from high readings during already-high volatility (continuing acceleration).
Chaikin Volatility answers a specific question: "is volatility increasing or decreasing right now?" It doesn't answer "is volatility high or low" — that's ATR's job. The two indicators together give a complete volatility picture: ATR for the level, Chaikin Volatility for the direction.
Best in / worst in
Best in regime-transition detection — identifying when markets shift from quiet to active or vice versa. Useful as a strategy-arming flag rather than a primary trade trigger.
Worst in strategies that need direction signals (Chaikin Volatility is direction-agnostic — it spikes positively during both bullish and bearish volatility expansions). Also weak as a standalone primary signal — the rate-of-change reading needs context.
Three setups
1. Volatility expansion entry filter
Allow trades only when volatility is meaningfully expanding.
- Long: MACD crossover bullish AND Chaikin Volatility > +15 (expansion confirmed).
- Short: MACD crossover bearish AND Chaikin Volatility > +15 (any expansion direction works — volatility doesn't care).
The filter ensures the breakout signal happens during real activity, not during dead-tape moments that produce fakeouts.
MACD entry gated by Chaikin Volatility expansion
2. Compression-then-release pattern
Detect when volatility has been contracting and is now turning to expand.
- Setup: Chaikin Volatility was negative for at least 10 consecutive bars (compression).
- Trigger: Chaikin Volatility crosses above 0 AND slope > 0 (expansion beginning).
- Action: Arm a directional system for the next 10 bars — the compression-release often produces a clean breakout.
Use a Set User Variable flag to track the armed state.
3. Position-sizing modulator
Reduce position size when volatility is expanding sharply (uncertainty).
- Size formula:
base_size × max(0.5, 1 − Chaikin_Volatility / 100). - Result: Reading of +50 → 0.5× base size (cautious during volatile expansion). Reading of −20 → 1.2× base size (slightly larger during quiet conditions).
Combined with fixed-fractional risk math, this scales exposure inversely to volatility-of-volatility.
Advanced patterns in AlgoLift
Chaikin Volatility for regime classification. Three-zone regime:
- Expansion regime: Chaikin > +15 for several bars → run trend-following strategies.
- Contraction regime: Chaikin < −15 for several bars → run mean-reversion strategies.
- Transition: Between −15 and +15 → pause both, or run only most conservative setups.
Wire via Conditional Flow to switch strategy logic based on regime.
Chaikin slope as a scale-out timer. When the Chaikin Volatility slope starts falling (expansion is exhausting), take partial profits via Set Target Profit with fractional position size. The volatility-of-volatility turn often precedes the directional turn by 1-3 bars.
Combined with ATR for complete volatility picture. Chaikin Volatility says "is it changing" — ATR says "what's the absolute level." Build a regime classifier that uses both:
- Quiet & calming: Low ATR + negative Chaikin → range strategies, tight stops.
- Loud & expanding: High ATR + positive Chaikin → trend strategies, wide stops.
- Quiet & expanding: Low ATR + positive Chaikin → early breakout signal.
- Loud & contracting: High ATR + negative Chaikin → trend exhausting.
Common mistakes
- Reading it as absolute volatility. Chaikin Volatility = 50 means a 50% change — the absolute volatility level could still be anything. Always cross-reference with ATR.
- Trading direction off the reading. Positive Chaikin doesn't mean bullish — it means more volatile, which can be bullish OR bearish. Combine with a direction indicator.
- Tuning the two periods independently. The 10/10 default keeps the indicator coherent. Asymmetric periods (e.g., 5/20) make the interpretation muddier without obvious benefit.