Parkinson Historical Volatility Calculation – Volatility Analysis in Python

In the previous post, we discussed the close-to-close historical volatility. Recall that the close-to-close historical volatility (CCHV) is calculated as follows,

historical volatility in python

where xi are the logarithmic returns calculated based on closing prices, and N is the sample size.

A disadvantage of using the CCHV is that it does not take into account the information about intraday prices. The Parkinson volatility extends the CCHV by incorporating the stock’s daily high and low prices. It is calculated as follow,

Parkinson volatility analysis in Python

where hi denotes the daily high price, and li is the daily low price.

We implemented the above equation in Python. We downloaded SPY data from Yahoo finance and calculated the Parkinson volatility using the Python program. The picture below shows the Parkinson historical volatility of SPY from March 2015 to March 2020.

Parkinson volatility trading in Python

The Parkinson volatility has the following characteristics [1]


  • Using daily ranges seems sensible and provides completely separate information from using time-based  sampling such as closing prices


  • It is really only appropriate for measuring the volatility of a GBM process. It cannot handle trends and jumps
  • It systematically underestimates volatility.

Also check out Historical Volatility Online Calculator.


[1] E. Sinclair, Volatility Trading, John Wiley & Sons, 2008

Further questions

What's your question? Ask it in the discussion forum

Have an answer to the questions below? Post it here or in the forum


Leave a Reply