Volatility & bandsGarman-Klass Volatility
An OHLC volatility estimator that combines the high-low range with the open-to-close move for greater efficiency.
Works in most conditionsEngine-computed on a fixed sample series
What it is
Garman-Klass volatility is a way of estimating how much an asset is moving that squeezes far more information out of each daily bar than the usual method. Most simple volatility measures look only at closing prices from day to day, throwing away everything that happened inside the session. Garman-Klass instead uses all four numbers a bar gives you — the open, the high, the low, and the close — to build a much more precise estimate of the same underlying volatility. The intuition is that the high-to-low range tells you how far price roamed during the day, and the open-to-close move tells you how much of that roaming translated into net direction; combining both captures the day's true activity better than the close alone. It answers the question of how volatile the market has been, expressed as a percentage that can be annualised, using the least data and giving the steadiest reading of the common OHLC estimators.
How it is calculated
For each bar the estimator computes two pieces from logarithms of the prices. The first is half of the squared log high-low range — that is, 0.5 × (ln(High / Low))² — which captures the intraday travel. The second subtracts a term based on the squared log close-to-open move, specifically (2 × ln 2 − 1) × (ln(Close / Open))², where the constant 2 × ln 2 − 1 ≈ 0.386 weights that piece so the whole expression is an unbiased estimate of variance. Each bar's contribution is the first piece minus the second, and you average these contributions across your lookback window to get a daily variance. Taking the square root gives daily volatility, and multiplying by the square root of the number of trading periods in a year — usually √252 for daily data — annualises it into the percentage figure traders quote. The design deliberately blends range and body information so that the estimate has much lower statistical noise than a close-to-close calculation of the same length.
Reading it, step by step
A higher Garman-Klass reading means the market has been more volatile over the window, and a lower one means calmer; the direction of the line matters as much as its level. Rising values signal that intraday ranges and net moves are expanding, often around breakouts, news, or stress, while falling values signal contraction and a coiling market. Compared with a plain close-to-close estimate, the Garman-Klass line is smoother and steadier because it uses four times the information per bar, so a jump in it is more likely to reflect a real change in volatility than a single noisy close. Traders read it in relative terms — is current volatility high or low versus its own recent history? — rather than judging an absolute number. A very low, quiet reading is often the most actionable, because compressed volatility tends to be followed by expansion.
Best timeframes and settings
Garman-Klass is built for daily bars, since it assumes each bar has a clean open, high, low, and close, and daily data is where those four points are most reliable. Common windows run from 10 to 30 bars, with 20 a frequent default that balances a responsive read against a stable one; shorter windows react faster to a volatility shift but bounce around more, while longer windows give a calmer regime read that lags real changes. It can be applied to intraday bars, but very short or thinly traded periods often have unreliable opens and sparse ticks, which erodes the efficiency edge that is the whole point of using it. Because it already extracts so much from each bar, you generally need a shorter window than a close-to-close estimate would require for the same smoothness. The core trade-off remains the lookback length: fewer bars for agility, more bars for stability.
When and where to use it
Use Garman-Klass when you want the most statistically efficient read on volatility available from ordinary OHLC bars, for example to feed volatility-scaled position sizing or to gauge whether a market is quiet enough to be coiling. It fits liquid instruments with dependable session opens and closes — index futures, large-cap equities, major FX — where all four price points are meaningful. It is a strong choice for comparing volatility regimes over time and for spotting compression that may precede a move. Avoid it, or downweight it, on markets prone to overnight gaps and jumps, because the estimator assumes price does not leap between the close and the next open; a gap-heavy stock will have its true risk understated. It is also a poor fit for very thin sessions where the open is unreliable, which is precisely when its efficiency advantage collapses.
Strategies that use it
Volatility-scaled sizing: compute annualised Garman-Klass volatility and set position size inversely to it, taking larger positions when the reading is low and trimming exposure when it climbs, so that each trade risks a roughly constant amount regardless of conditions. Compression-breakout strategy: watch for the estimate to fall to an unusually low level relative to its recent range, mark that as a coiled market, and prepare to trade the direction of the eventual breakout with a stop sized off the expanding range. Regime-filter strategy: only run a trend-following system when Garman-Klass volatility is rising or elevated and switch to a mean-reversion or stand-aside posture when it is low and falling, since trends and ranges tend to inhabit different volatility environments. In each case the estimator informs risk and regime rather than pointing a direction, so it is paired with a directional trigger.
Combining it with other indicators
Garman-Klass sits naturally beside Average True Range, which also captures range but folds in the prior close to account for gaps — comparing the two flags markets where overnight jumps are inflating real risk beyond what Garman-Klass shows. Bollinger Bands, whose width is a volatility read of its own, corroborate expansion and contraction signals. Because the estimator is silent on direction, pair it with a trend tool such as a moving average or ADX to know which way to lean once volatility says the environment is favourable. For options traders, overlaying implied volatility against the Garman-Klass realised figure shows whether options are pricing in more or less movement than the market has actually delivered, a classic rich-versus-cheap comparison. Parkinson volatility, its range-only predecessor, makes a useful cross-check since a large gap between the two hints at strong intraday directional moves.
Where it fails
The estimator's key assumption is no overnight jumps and no drift, so any market that regularly gaps between the close and the next open will have its volatility understated — a serious blind spot for individual stocks around earnings and for anything trading in sessions. Its efficiency edge also shrinks when the data has unreliable opens, such as thinly traded instruments or illiquid early prints, where the open-to-close term becomes noise rather than signal. Being purely backward-looking, it says nothing about a coming shock and can read reassuringly low right before an explosion in real volatility. Traders sometimes misread its steadiness as accuracy and forget it is still an estimate built on statistical assumptions. The defences are to prefer ATR when gaps matter, to apply it only to liquid instruments with trustworthy OHLC data, and to treat a very low reading as a warning of possible expansion rather than a guarantee of calm.
A worked example
Take a single daily bar with Open 100, High 103, Low 99, and Close 101. The log range is ln(103 / 99) ≈ 0.0396, and half its square is 0.5 × 0.0396² ≈ 0.000785. The log close-to-open move is ln(101 / 100) ≈ 0.00995, its square is about 0.0000990, and multiplying by the constant 0.386 gives roughly 0.0000382. This bar's variance contribution is 0.000785 − 0.0000382 ≈ 0.000747. Treating that as the daily variance, daily volatility is √0.000747 ≈ 0.0273, or about 2.73 percent. Annualising by multiplying by √252 ≈ 15.87 gives roughly 0.434, or about 43 percent — a fairly volatile day. Averaged over a 20-bar window the day-to-day noise smooths out, and a trader would compare that 43 percent to the instrument's recent norm to decide whether volatility is stretched, compressed, or ordinary, then size positions or set expectations accordingly.