5.1 OHLC measures
There are several OHLC measures of volatility, each with different characteristics
Instead of relying solely on closing prices, Parkinson was first who proposed using the highest and lowest prices for volatility calculation
\[\begin{equation} \sigma^2_P = \dfrac{\ln \bigg(\dfrac{H}{L}\bigg)^2}{4 \ln(2)} \end{equation}\]
The advantages of Parkinson estimator lie in the availability of data, the simplicity of the calculation, and a more efficient volatility estimate compared to the historical volatility (it is \(2.5\) to \(5\) times more efficient)
However, estimator \(\sigma^2_{P}\) also has some drawbacks, i.e. it assumes continuous trading, meaning that there are no overnight returns, and consequently, the opening price is equal to the previous day’s closing price
Building on Parkinson’s work, Garman and Klass expanded the data range by using, in addition to the highest and lowest prices, the opening and closing prices, thus incorporating all four available infromation
\[\begin{equation} \sigma^2_{GK} = \dfrac{1}{2}\ln \bigg(\dfrac{H}{L}\bigg)^2 - \dfrac{2 \ln(2) - 1}{2} \ln \bigg(\dfrac{C}{O}\bigg)^2 \end{equation}\]
It has been shown that the Garman–Klass estimator is most suitable for stocks prices that follow Brownian motion with zero drift and no jumps
Rogers and Satchell have modified the Garman–Klass estimator, i.e. they also use the OHLC range, but their estimator is not sensitive to zero drift, which means that the estimator can accurately estimate volatility even in the presence of a trend in the stock prices
\[\begin{equation} \sigma^2_{RS} = \ln\bigg(\dfrac{H}{O}\bigg) \times \ln\bigg(\dfrac{H}{C}\bigg) + \ln\bigg(\dfrac{L}{O}\bigg) \times \ln\bigg(\dfrac{L}{C}\bigg) \end{equation}\]
- The duo after whom the estimator was named, Yang and Zhang, constructed a superior estimator that is insensitive both to zero drift and to overnight jumps
\[\begin{equation} \sigma^2_{YZ} = \sigma^2_O + k \sigma^2_C + (1 - k) \sigma^2_RS \end{equation}\]
where:
- \(\sigma^2_O = ( \ln(O/previous\ close) )^2\) — the open-to-close variance
- \(\sigma^2_C = ( \ln(C/O) )^2\) — the close-to-open variance
- \(k = 0.34 / (1.34 + (n+1)/(n-1))\) — a weighting factor
- \(n\) — number of observations
Estimator | Zero drift | Overnight jump | Efficiency |
---|---|---|---|
Close–to–close | 1.0 | ||
Parkinson | 5.2 | ||
Garman–Klass | 7.4 | ||
Roger–Satchell | ✓ | 8.0 | |
Yang–Zhang | ✓ | ✓ | 14.0 |
- All mentioned OHLC estimators can be easily computed in R using
volatility()
command from the packageTTR
(Technical Trading Rules)