Quant Memo
Core

Range-Based Volatility Estimators

Using only a day's open and close throws away most of what happened in between — range-based estimators use the day's high and low instead, extracting far more information about volatility from the exact same daily data.

Prerequisites: Realized Volatility Estimators

Judge a river's daily flow by comparing the water level at 8am to the water level at 6pm and you might completely miss that it flooded at noon and receded by evening. Look instead at the high-water mark and the low-water mark left on the bank and you capture the true extent of the day's swing, using data that was sitting there the whole time. Range-based volatility estimators apply exactly this idea to prices: instead of using only the day's open and close, they use the day's high and low, extracting far more signal from data that's already routinely recorded.

The Parkinson estimator, defined

σ^Park2=14ln2(lnHL)2\hat{\sigma}^2_{\text{Park}} = \frac{1}{4\ln 2} \left(\ln \frac{H}{L}\right)^2

In words: HH and LL are the day's high and low prices. ln(H/L)\ln(H/L) is the log-range — how far the price traveled from its low to its high over the day, in log terms. Squaring that captures the day's spread, and dividing by the constant 4ln22.774\ln 2 \approx 2.77 rescales it to be an unbiased estimator of variance under the assumption that price moves like a continuous random walk with no drift. In plain terms: the day's high-low spread alone, appropriately scaled, is a legitimate stand-in for a whole day's worth of variance — and because it uses the full extreme range rather than just two snapshot points, it's dramatically more statistically efficient than close-to-close volatility, using the same one observation per day.

Worked example 1 — Parkinson vs close-to-close on the same day

A stock opens at $100, closes at $101, but during the day trades as high as $104 and as low as $98. Close-to-close return: ln(101/100)=0.00995\ln(101/100) = 0.00995, squared: 0.00009900.0000990 — that's the entire close-to-close variance estimate for the day, suggesting a very quiet session. Parkinson instead uses the range: ln(104/98)=ln(1.0612)=0.0594\ln(104/98) = \ln(1.0612) = 0.0594, squared: 0.0035290.003529, divided by 4ln2=2.77264\ln 2 = 2.7726: σ^Park2=0.001273\hat{\sigma}^2_{\text{Park}} = 0.001273. That's nearly 13 times larger than the close-to-close variance estimate for the identical day — because the close-to-close number completely missed the $6 round trip the stock actually took between its high and low, which the range-based estimator captures directly.

Worked example 2 — efficiency in a multi-day average

Averaging over 5 days of Parkinson estimates — daily variances 0.00080, 0.00120, 0.00095, 0.00140, 0.00105 — gives a mean of 0.001080.00108, annualized: 0.00108×252=0.2720.00108 \times 252 = 0.272, so σ^ann=0.272\hat{\sigma}_{\text{ann}} = \sqrt{0.272} \approx 52.1%. In simulation studies, Parkinson needs roughly 5 times fewer daily observations than close-to-close RV for the same statistical precision, extracting the equivalent of several intraday observations from a single high and low most data feeds already report for free.

same day: Parkinson vs close-to-close variance Parkinson: 0.001273 close-to-close: 0.000099
Roughly 13x apart from the identical trading day — the close-to-close estimate missed almost the entire intraday round trip that Parkinson captured.
one trading day high: \$104 low: \$98 open: \$100 close: \$101 close-to-close range (thin) vs full high-low range (tall)
The close-to-close move (short amber segment) captures almost none of the day's actual travel between the high and low (full vertical span) — the range-based estimator uses the whole span.

What this means in practice

Because high and low prices are standard fields in almost every historical OHLC data set, range-based estimators are cheap to compute for long histories where true tick-level intraday data either doesn't exist or is expensive, making them a common choice for backtesting volatility strategies over years of daily bars. Refinements like the Garman-Klass and Rogers-Satchell estimators extend Parkinson by also using the open and close, correcting for known biases the pure high-low version has.

The Parkinson estimator assumes continuous trading with no drift and no jumps between the observed high and low — it's derived for a diffusion, not a market with overnight gaps or discrete jumps. If a stock gaps sharply at the open (common around earnings, or standard for crypto and FX that trade around the clock but are sampled daily), the true intraday range can be understated by the recorded daily high-low, or the estimator can be thrown off by a gap that isn't really "intraday volatility" at all, and the estimator systematically underestimates true volatility in the presence of such jumps.

Range-based estimators use a day's high and low instead of just its open and close, extracting far more statistical information from data that's already routinely available — at the cost of assuming no gaps or discrete jumps within the day.

Practice

  1. A stock's daily high is $52 and low is $49. Compute the Parkinson variance estimate for that day.
  2. Why would a stock that gaps up $5 overnight (no trading in between) but otherwise moves only $0.50 intraday be a case where the Parkinson estimator, applied naively to that day's high-low, gives a misleading read on "intraday" volatility?

Related concepts

Practice in interviews

Further reading

  • Parkinson, The Extreme Value Method for Estimating the Variance of the Rate of Return (Journal of Business, 1980)
  • Garman and Klass, On the Estimation of Security Price Volatilities from Historical Data (Journal of Business, 1980)
ShareTwitterLinkedIn