Skip to content

Parkinson volatility estimator

Estimate session volatility from squared log high–low ranges, work through the Parkinson formula, and identify the effects of overnight gaps, drift and noisy extrema.

The Parkinson volatility estimator estimates return variance from an asset's high and low prices over repeated observation intervals, then takes the square root to report volatility. It uses intraday excursions that closing returns can miss: a stock may open and close at 100 while trading between 98 and 102. The range records movement even though the open-to-close return is zero.
It is a historical, range-based estimate of volatility, not an option-implied number or a forecast by itself. Its interpretation depends on the price process and the interval covered by each high and low.

Square the log range, then average

For nn equal-length sessions, let HiH_i and LiL_i be the actual high and low within session ii, with Hi≥Li>0H_i\ge L_i>0. Define the log range Ri=ln⁡(Hi/Li)R_i=\ln(H_i/L_i). The variance and volatility estimates are
v^P=14nln⁡2∑i=1nRi2,σ^P=v^P.\widehat v_P=\frac{1}{4n\ln 2}\sum_{i=1}^n R_i^2, \qquad \widehat\sigma_P=\sqrt{\widehat v_P}.
Use natural logarithms and decimal returns. The divisor is nn, not n−1n-1: this is a calibrated squared-range moment, rather than a sample variance formed by estimating and subtracting a return mean. Yang and Zhang's equation (2) gives this construction and states its no-drift, no-opening-jump restrictions.
Consider two fictional full trading sessions. For illustration, each opens and closes at 100; only the extrema enter the estimator.

| Session | High | Low | Log range RiR_i | Ri2/(4ln⁡2)R_i^2/(4\ln 2) | |---|---:|---:|---:|---:|---:| | 1 | 102 | 98 | 0.0400053 | 0.000577232 | | 2 | 101 | 99 | 0.0200007 | 0.000144279 |

Pooling the unrounded contributions gives

v^P=0.000360755537,σ^P=0.018993566≈1.8994%.\widehat v_P=0.000360755537, \qquad \widehat\sigma_P=0.018993566\approx1.8994\%.
Variance is in squared decimal log-return units per session; the square root is session volatility. Average the squared ranges before taking the root. Averaging the two separately rooted contributions would instead give 1.8019%, a different statistic.
Two fictional sessions have highs and lows of 102 and 98, then 101 and 99, with both opens and closes at 100. Averaging their variance contributions gives 0.000360756 and session volatility 1.8994%.
Two fictional sessions have highs and lows of 102 and 98, then 101 and 99, with both opens and closes at 100. Averaging their variance contributions gives 0.000360756 and session volatility 1.8994%.
Original fictional extrema, with no assumed ordering of the high and low. Pool squared log ranges first; 252 sessions per year gives an illustrative annualised volatility of 30.15%.
With the stipulated convention of 252 sessions per year, the annualised quotation is
σ^P,ann=252v^P≈0.3015135=30.15%.\widehat\sigma_{P,\mathrm{ann}} =\sqrt{252\widehat v_P} \approx0.3015135=30.15\%.
That multiplier annualises the measured session variance. It does not supply missing overnight variation. Nor do two observations establish a precise estimate or justify a stable-variance forecast for the coming year.

Why 4ln⁡24\ln 2 appears

The calibration comes from an ideal continuous log-price model over an interval of length Δ\Delta:

Xt=ln⁡St=X0+σWt,0≤t≤Δ,X_t=\ln S_t=X_0+\sigma W_t, \qquad 0\le t\le\Delta,
where WtW_t is standard Brownian motion and σ\sigma is constant. Its continuously observed log range satisfies
E ⁣[(max⁡0≤t≤ΔXt−min⁡0≤t≤ΔXt)2]=4ln⁡2 σ2Δ.\mathbb{E}\!\left[ \left(\max_{0\le t\le\Delta}X_t-\min_{0\le t\le\Delta}X_t\right)^2 \right] =4\ln 2\,\sigma^2\Delta.
Dividing by 4ln⁡24\ln 2 therefore estimates the interval variance σ2Δ\sigma^2\Delta. With independent equal-length intervals and the same parameter, their average is an unbiased variance estimator under this model. Taking the square root does not preserve exact unbiasedness. These are model statements, not guarantees for arbitrary market data. The range identity and its log-price application are derived in Parkinson's original paper, §§II–V.
Zero drift here means zero drift of log price. In a geometric Brownian model dSt/St=μ dt+σ dWtdS_t/S_t=\mu\,dt+\sigma\,dW_t, the log drift is μ−σ2/2\mu-\sigma^2/2; setting μ=0\mu=0 does not set it to zero. The Stochastic Processes, Brownian Motion and Itô's Lemma lesson develops this distinction and the log-price transformation. Its public preview is available without membership; the full lesson requires membership.

The observation window is part of the estimator

A session range cannot recover the move into the session. In a separate fictional example, a stock closes yesterday at 100, opens today at 110 and remains at 110. Today's H=L=110H=L=110 gives a zero Parkinson contribution despite a nonzero close-to-close return. Including yesterday's close as an artificial low would change the input's meaning; it would not make it today's observed trading low.
Yang and Zhang, pp. 478–481, explicitly distinguish the trading interval from the unobserved opening move. They also explain how drift can inflate Parkinson estimates and omitted opening moves can understate full-period variance. These effects can coexist; their net error is not known from the range alone. A price jump within the session also breaks the continuous-path calibration.

Data checks follow directly from using extrema:

  • Comparable coverage: pair highs and lows from the same instrument, venue definition, session boundaries and price-adjustment basis. Two arbitrary closing prices are not a high–low range. Mixing a raw high with an adjusted low can create a range that never occurred.
  • Genuine extrema: on a fixed continuous path, a high and low taken from a sparse sampling grid cannot exceed its true range. Missed excursions reduce the squared-range input. A truncated session is not interchangeable with a full session.
  • Reliable prints: an erroneous extreme or bid–ask noise can enlarge the range. Squaring amplifies that input error; the formula provides no noise correction. A price limit or trading halt can also restrict what is observed.
Under its ideal model, a range contains information beyond a single endpoint return. That does not establish universal superiority over close-to-close realised volatility. Compare estimators over matching intervals and against a clearly specified variance target, especially when overnight risk matters.

Sources

Last updated
  • volatility
  • range estimation
  • historical volatility
  • log returns
  • brownian motion
← Back to the glossaryBack to top ↑