Loading...

Plus+ Python

Comparing Historical Parkinson Volatility to Option Implied Volatility

Comparing Historical Parkinson Volatility to Option Implied Volatility

Parkinson Volatility
Parkinson's volatility is a measure of market volatility that is commonly used in finance and investment analysis. It is named after Michael Parkinson, who first proposed the measure in a paper published in the Journal of Business in 1980. One of the things that makes this measure an improvement on the standard deviation measure of volatility is that it incorporates the difference between the high and low of the asset on a given day (vs using a close-to-close approach of % change common for standard deviation.) Parkinson's volatility is calculated as the square root of the average of the squared logarithmic returns of a financial asset over a given time period. The formula for calculating Parkinson's volatility is as follows below. We use a function in the Python to add this calculation to our data columns.

PV = (1 / 4 * ln(2)) * sqrt((1 / n) * Σ(ln(Hi / Li))^2)
Where:
PV = Parkinson's volatility
n = number of observations (usually trading days)
Hi = the highest price during the observation period
Li = the lowest price during the observation period
ln = natural logarithm

Option Implied Volatility
We will use DeriBit's DVOL index, which reflects implied volatility on option activity in the same manner as the popular VIX index. The DVOL index expresses volatility implied over the next 30 days, so we will need to scale the volatility down to a one-day representation. (We demonstrate how to do this here). In the Python code, we use a function on the Pandas DataFrame to perform this conversion.

Code and Analysis
We will combine DVOL data (found on DeriBits page) with standard OHLC price information for Bitcoin; and we will merge the data on the corresponding dates. Once complete, we will calculate the Parkinson volatility into a new column, and likewise the converted 1-day implied volatility from the index. Finally, we will calculate realized volatility and compare visually all three. The underlying data set will be written to a local CSV file for closer inspection. In order to standardize the metrics, we use a rolling 21 day window for the realized volatility and the Parkinson's volatility metric as best estimate for next day ahead volatility (1 day) and show implied volatility for one day. The rolling window is configurable in the script. As always, every line of code is commented for your understanding; feel free to modify to fit your purpose. (The code also includes the graphs!)

Comparison of Implied Volatility Index vs Realized Volatility


Comparison of Realized Volatility vs Parkinson's Volatility


Comparison of Implied Volatility Index vs Parkinson's Volatility


Conclusion
Implied volatility is generally higher than realized volatility, with a few exceptions denoted on the chart. While Parkinson's volatility tracks closely to realized in some areas, it for the most part underestimates realized volatility. Implied volatility is almost always higher than Parkinson's except for a brief time period at the end of May 2021 in June 2021; after BTC fell from its all-time high's of above $60,000+ (high minus low daily ranges were quite large.)

Plus+ membership required

Create a Plus+ account to view the live codebase.

This article has a fully working, notebook-ready code block. Sign up for Plus+ to access it and the rest of the 20+ premium articles.

Subscribe to Plus+ Browse Plus+ articles