Friday, January 17, 2014

Using Variance Risk Premium for price prediction in case of S&P 500

Ernie Chan recently proposed using Variance Risk Premium as a factor for future price change prediction. VRP is defined as implied volatility minus historical volatility. I've decided to check if this factor works.

Actually, I calculate VRP a bit different way, I don't use the difference, I use the logarithm of the ratio, i.e. I divide VIX by the local historical volatility estimate in a rolling 21-day window and then take the logarithm. This way I have data more homogeneous. Future price changes are normalized on their local historical volatility.

There are various methods to calculate historical volatility, I tried some of them and found out that best is using average logarithm of daily range, including morning gaps. Standard deviation of daily changes works too, but, as usual, shows worst results.

Data used: SPY all available daily data from Yahoo.Finance

Correlation between VRP and future normalized daily price change: +0.051

Factor successfully pass the cross-validation of the model, which is not the usual case.

Cross-validated equity of a stategy, using only the VRP factor:

Yearly Sharpe 0.80 against 0.64 for factor-free strategy (which uses only volatility normalization).

No costs included.

Conclusion: VRP definitely works for S&P 500, correlation with future price change is positive, which means that when VIX is higher than local historical volatility, the price tends to grow. VIX tends to oscillate around local historical volatility and you can profit from it.


  1. Hi Alexander,

    would you be able to share an R code?

    Or send to

    Would save me a lot of time,

    Kind Regards, Jozef

    1. or whatever language you use.

    2. Will understand if you are against sharing. Would just make implementation quicker on my side.

      Because - strategy says nothing if only applied to S&P 500.

      However, if could be made universal - applying to e.g. gold (has its own vol index), and other assets as well (where you calculate VIX yourself) and use the same methodology as you used, this could be a good strategy.

    3. I use small custom research framework on Java which I'm not ready to make public.

      I'll try to make the same research with ^OVX and ^GVZ, but unfortunately there's not much data there, only couple of years.

    4. ok, so I will try to reproduce your results.

      Anyway - there are public rules, how OVX, GVZ, VIX are calculated. I think these can be done on your own, so you can calculate custom indices.

      The question is whether this is universal, or only works on equities - where it's long known that implied vol<realized vol most of the time.

      It would save time, if you tried to calculate the results on OVX and GVZ (there are more -, and showed if it works or not. If it works - fine - it is something worth having a look at, if not, it is asset specific, and I would be reluctant to have a closer look at.


    5. Last time I checked OVX, GVZ futures they where not liquid enough so I gave up trying to trade them - had an idea to trade contango/backwardation.

    6. I did not mean trade OVX, GVZ - I meant using the methodology you used here - implied vol (ovx) - realized vol to time gold, etc.

      I also trade VIX contango/backwardation and am aware that OVX, GVZ futures are not liquid enough.

    7. I've checked the same factor for OVX and GVZ. Nothing.

  2. This comment has been removed by the author.

  3. that's quite a big dissapointment. So the strategy is not "universal". Therefore, I would not trade it myself.

    1. I doubt there is some kind of universal strategy that works equally well for equities and commodities. They're just too different classes of assets.

    2. for instance trend following is "universal".

    3. Do you have good results with trend following on equities? My research shows equity indexes have counter-trend properties on daily timeframe last 20 years.

    4. I mean classical CTA style trend following. for instance, using monthly timeframe to trade "everything" - e.g. 60 futures, shows quite a good results since 1980.