23 January, 2015

Engineering a Synthetic Volatility Index – Part 2

In last week's post I discussed two basic requirements for our proposed synthetic index: 1) it must accept price as its sole input for its calculation and 2) it must exhibit a high correlation with the VIX when applied to the S&P 500. An indicator that satisfies both of these requirements could be effectively used to measure broad market volatility in any global index, regardless of whether or not the index in question has a corresponding volatility index. Because changes in volatility often precede changes in market regime, it can be of tremendous value to monitor the volatility of your favourite market.

A good place to start any search related to volatility is with the Average True Range (ATR). The ATR is based on price alone, and thus fulfils our first criteria. Developed by Welles Wilder, it measures volatility in price by taking an n-period exponential moving average of the true range. The true range accounts for gaps in its calculation by comparing moves form the prior days close. Its formula follows:

Max[ (high – low), abs(high –prevClose), abs(low – prevClose) ]

An index experiencing a high level of volatility will have a higher ATR relative to its past and vice versa. One of the downfalls of the ATR is that it can't be used for cross-sectional analysis: we cannot use the ATR to rank indexes from high to low volatility because an index with a high ATR may just be trading at a higher price. A simple solution to this problem is to divide the ATR by its closing price. This in effect normalises the ATR, giving us a value that can be used to compare the volatilities of a basket of indexes/stocks.

My preferred method of measuring volatility is slightly different to Wilders to allow for the shortcomings mentioned above. It involves taking an n-period simple moving average of the true range divided by the close, or:

Simple Moving Average (trueRange / close)

This normalises the daily volatility and then averages it over our desired timeframe. The normalised value is returned in the form of a percentage: it is the average daily percentage movement in the index over our chosen timeframe. Because it is a normalised value - unlike Wilder's ATR - we can use it for cross-sectional analyses such as ranking from high to low volatility.

Next I had to decide on a lookback period to employ. This couldn't just be any value, but one that when applied to the S&P 500 achieved the highest correlation with the VIX. After running some optimisation code I finally came up with a suitable candidate that has a correlation of +0.92. Below I share my results: We find that as we approach a parameter value of 20 for our lookback the correlation improves, while the correlation deteriorates for values above 20. Our optimal value then is 20, or:

Simple 20 day moving average of (true range / close)

Taking into account the sample size (I ran this test from 1990 to the present) and parameter robustness, I believe these findings to be statistically significant. In other words, we can apply our synthetic indicator to any market index and be confident that we capture the inherent volatility in much the same way that the VIX captures volatility in the S&P 500. The image below nicely illustrates the high correlation of our Synthetic Volatility Index with the VIX. For those of you that use Metastock, here's the formula to calculate our synthetic index: Mov(ATR(1)/C,20,S)