Realized Volatility Estimation
How to turn a day's worth of high-frequency price ticks into a single, far more accurate volatility number than squaring one close-to-close return — and why simply using more and more ticks eventually makes the estimate worse, not better.
Prerequisites: Standard Deviation, Stationarity
The traditional way to estimate a day's volatility is to take one number — the close-to-close return — and square it. That's an estimate built from a sample size of one, and it's extremely noisy: the very next day's squared return could be five times bigger or a fifth as big, with no change whatsoever in the true underlying volatility. If you have access to prices throughout the day — every minute, every tick — you're sitting on far more information about how much the price actually moved. Realized volatility is the estimator built to use it: sum up many small squared intraday returns instead of one big squared daily return, and the result converges to the true variance far faster and far more precisely than the one-number close-to-close estimate ever could.
An analogy: measuring a hiker's total elevation gain
Suppose you want to know how much a hiker climbed over a day, but you only get to check their altitude twice — at the start and the end. If the trail was a smooth, steady climb, the difference between those two readings is a fine estimate. But if the trail zigzagged up and down constantly, the start-to-end difference badly understates the true effort — all the up-and-down cancels out, leaving only the net. Now imagine instead you have a altimeter reading every minute: sum up the absolute (or squared) change between each consecutive pair of readings, and you capture every zigzag, not just the net displacement. That per-minute sum is realized volatility; the single start-to-end reading is the traditional close-to-close return. More checkpoints capture more of the true path — up to a point, because an altimeter that's slightly miscalibrated will also add spurious jitter every single minute, and past some sampling frequency that jitter starts to dominate the real signal.
The estimator, one symbol at a time
Divide the trading day into small intervals and let be the return in the -th interval of day (a 5-minute return, say). The realized variance is
In words: square each small intraday return and add them all up — the realized variance is simply the total of many small squared moves instead of one big one. Realized volatility is its square root, , to bring it back to the same units as an ordinary standard deviation. As (sampling more and more finely, in a world with no measurement error), converges to the true, continuously-compounding variance of the price path over that day — this is a foundational result from continuous-time probability called quadratic variation, and it's why realized volatility is treated as close to a direct measurement of volatility rather than a model-based estimate of it.
The catch is measurement error. Real prices don't move continuously and cleanly — bid-ask bounce and discrete tick sizes inject microstructure noise: the observed price , where ("eta") is noise unrelated to true price movement. That noise gets squared and summed just like real returns do, and because noise doesn't average away the way real signal does when you sample more and more often — it stays roughly the same size no matter how many intervals you chop the day into — computed at very high frequency becomes dominated by noise, not signal. This produces the famous volatility signature plot: realized volatility, plotted against sampling frequency, is roughly flat at moderate frequencies and then spikes upward as you push toward tick-by-tick data.
Realized volatility replaces one noisy squared daily return with the sum of many small squared intraday returns, converging to the true variance as you sample more finely — but only up to the point where bid-ask bounce and tick noise start dominating the signal, past which sampling even more finely makes the estimate worse.
Worked example 1: computing realized variance from 6 intraday returns
A stock trades at these prices over one day, sampled every hour: 100.0, 100.5, 100.2, 100.8, 100.6, 101.1, 100.9. The six hourly log returns (approximated as simple percent changes for ease): , , , , , .
Squared returns (in percent-squared): .
Compare to the naive close-to-close return: from 100.0 to 100.9 is , squared gives just — noticeably lower than the realized figure of , because the close-to-close move missed the up-and-down zigzagging that happened in between (the price touched 100.8 then dipped to 100.6 before finishing at 100.9), exactly like the hiker whose net elevation change understated the true climbing.
Worked example 2: seeing the noise dominate at high frequency
Suppose the true underlying variance for a day is a constant per 5-minute bar's worth of variance summed over the day gives (a clean estimate). Now imagine microstructure noise adds a fixed with variance per observation, roughly independent of sampling frequency. At 5-minute sampling ( bars in a 6.5-hour day), the noise contributes about — negligible next to . At 1-second sampling (), the same noise term contributes — now comparable in size to the true signal itself, roughly doubling the naive estimate to around even though nothing about the true volatility changed. This is exactly why realized-vol practitioners sample every 1–5 minutes rather than every tick: past a certain frequency, adding more data actively hurts.
Set the sample size high in the explorer above and watch the estimate tighten around the truth — that's the story realized volatility tells at moderate frequency. What the explorer doesn't show is the microstructure floor: in real tick data, past a certain point, more samples stop tightening the estimate and start biasing it instead.
What this means in practice
- 5-minute sampling is the traditional sweet spot for liquid equities — fine enough to capture real intraday variation, coarse enough that bid-ask bounce hasn't swamped it. Less liquid instruments need coarser sampling.
- Realized volatility feeds directly into options and risk models as a far cleaner input than a GARCH-style estimate built from daily closes alone, because it uses dramatically more information per day.
- Robust estimators exist for the noise problem: two-scale realized variance and kernel-based estimators explicitly separate signal from microstructure noise, letting you use higher-frequency data without the bias in example 2.
- Jumps need separate treatment. A genuine large, discontinuous price move (an earnings surprise) inflates one squared return enormously; separating "continuous" realized variance from jump contribution (bipower variation) is a standard refinement.
The classic confusion: assuming "more intraday data is always better" for estimating volatility. It's true only up to the point where microstructure noise starts dominating, as worked example 2 shows concretely — past that point, sampling more finely inflates the estimate with noise that has nothing to do with true price variation. The correct instinct is not "use tick data because it's the most granular," but "use the coarsest sampling frequency at which the volatility signature plot has flattened out" — precision has a ceiling set by market microstructure, not by how much data you can pull.
Related concepts
Practice in interviews
Further reading
- Andersen, Bollerslev, Diebold & Labys (2001), Journal of the American Statistical Association
- Zhang, Mykland & Aït-Sahalia (2005), Journal of the American Statistical Association