According to Dynamic Hedging: Managing Vanilla and Exotic Options (Taleb, 1997), the Parkison volatility estimator has several meaningful properties. It is defined


where $S_{H}$ and $S_{L}$ are the «close-to-close registered high and the registered low respectively in any particular time frame». From Taleb:

An important use of the Parkinson number is the assessment of the distribution of prices during the day as well as a better understanding of market dynamics. Comparing the Parkinson number and the periodically sampled volatility helps traders understand the mean reversion in the market as well as the distribution of stop-losses. Some clear rules can be derived from that information. Comparing the Parkinson number $P$ with the definition of periodically sampled historical volatility gives this result:


Then Taleb adds:

Such measurement cannot be used to compare close-to-close volatility with intraday high/low. It can compare 24-hour high/low to data sampled every day at the same time. For markets, like most equities, which trade during the day only, it is better to use open-to-close volatility.

Whats $\sigma'$? It's defined as the noncentered volatility estimator:


So Taleb suggests to set $x_{t}=\log\left(C_{t}\right)-\log\left(O_{t}\right)$ from a typical OHLC time series and then plot the ratio $z_{t}=P_{t}/\sigma'_{t}$: when $z_{t}>1.67$ we're in a mean reverting market, trending elsewhere. A figure shows that the Parkinson number ratio to the volatility is «strikingly convincing» because there seems to be a clear bias in favor of a wider high/low range than assumed by random walk when applying the ratio to U.S. Treasury bond futures from Aug-1992 to May-1995:

The problem arises when trying to reproduce such results. I downloaded many time series from Bloomberg, but everytime it seems that $P_{t}<1.67\sigma'_{t}$. Moreover, I picked even the same time series over the same period and my calculatiosn are really different:

$1.67$ seems a cap rather than a floor. So I'm going to share my R snippet to see what's wrong with my code. ohlc is the OHLC time series and I've loaded quantmod and magrittr packages. Then:

parkinson.vol <- TTR::volatility(OHLC = ohlc,
                                 n = 20,
                                 calc = 'parkinson')
taleb.vol <- OpCl(ohlc) ^ 2 %>%
  runMean(n = 20) %>%
  sqrt() * sqrt(260)
parkinson.ratio <- parkinson.vol / taleb.vol

Furthermore, Taleb says that:

Additional testing by the author shows the bias to be permanent in close to the 20 markets surveyed.

Are you able to reproduce Taleb's results?

  • 1
    $\begingroup$ One thing is definetely wrong in your calculation because by definition one has $|H-L|>|C-O|$ so term by term the parkinson vol must be higher than non-centered vol. If the ration is calculated correctly then it must have 1 as lower bound at least but it seems you get lower than 1. Do i read your plots correctly ? $\endgroup$ – Ezy Jan 30 '19 at 17:36
  • $\begingroup$ Yes, you do. But I can't get what's wrong with my code. Parkinson volatility is calculated with a trusted R package. My volatility estimator seems quite straightforward. Do you get different results with any time series? We can make some trials... $\endgroup$ – Lisa Ann Jan 31 '19 at 8:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.