Tuesday, June 30, 2020

Garman-Klass-Yang-Zhang Historical Volatility Calculation – Volatility Analysis in Python

In the previous post, we introduced the Garman-Klass volatility estimator that takes into account the high, low, open, and closing prices of a stock. In this installment, we present an extension of the Garman-Klass volatility estimator that also takes into consideration overnight jumps.

Garman-Klass-Yang-Zhang (GKYZ) volatility estimator consists of using the returns of open, high, low, and closing prices in its calculation. It also uses the previous day's closing price.  It is calculated as follows,

Volatility trading strategy Garman-Klass-Yang-Zhang estimator

where hi denotes the daily high price, li is the daily low price, ci is the daily closing price and oi is the daily opening price of the stock at day i.

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

Garman-Klass-Yang-Zhang Historical Volatility Trading Strategy

We note that the GKYZ volatility estimator takes into account overnight jumps but not the trend, i.e. it assumes that the underlying asset follows a GBM process with zero drift. Therefore the GKYZ volatility estimator tends to overestimate the volatility when the drift is different from zero. However, for a GBM process, this estimator is eight times more efficient than the close-to-close volatility estimator.

Follow the link below to download the Python program.

Post Source Here: Garman-Klass-Yang-Zhang Historical Volatility Calculation – Volatility Analysis in Python

Tuesday, June 23, 2020

Garman-Klass Volatility Calculation – Volatility Analysis in Python

In the previous post, we introduced the Parkinson volatility estimator that takes into account the high and low prices of a stock. In this follow-up post, we present the Garman-Klass volatility estimator that uses not only the high and low but also the opening and closing prices.

Garman-Klass (GK) volatility estimator consists of using the returns of the open, high, low, and closing prices in its calculation. It is calculated as follow,

Volatility Analysis in Python Garman-Klass

where hi denotes the daily high price, li is the daily low price, ci is the daily closing price and oi is the daily opening price.

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

Garman-Klass Volatility in Python

The GK volatility estimator has the following characteristics [1]

Advantages

  • It is up to eight times more efficient than the close-to-close estimator
  • It makes the best use of the commonly available price information

Disadvantages

  • It is even more biased than the Parkinson estimator

 

Follow the link below to download the Python program.

 

References

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

Originally Published Here: Garman-Klass Volatility Calculation – Volatility Analysis in Python