Long time ago I stumbled across interesting volatility measurement at quantifiableedges.blogspot.com.
The idea is following: take 3-day historical volatility of S&P 500 index and divide that by 10-day historical volatility. Then mark all points which are less that 0.25 and measure the volatility of 3 following days. On average, the volatility of following 3 days will be 5 times higher.
require('xts') require('quantmod') Sys.setenv(TZ="GMT") getSymbols(c('SPY','^VIX'),from='1995-01-01') spy.delta<-Delt(Cl(SPY)) short.vol<-as.xts(rollapply(spy.delta,3,sd,align='right')) long.vol<-as.xts(rollapply(spy.delta,10,sd,align='right')) future.vol<-(head(lag(short.vol,-3),-3)) past.vol<-short.vol/long.vol signal<-index(past.vol[past.vol<0.25])#ifelse(past.vol<0.3,1,0) temp<-cbind(future.vol,short.vol) temp<-(tail(temp,-1)) temp<-(head(temp,-3)) print('all days:') summary(as.double(temp[,1])/as.double(temp[,2])) print('days, then past volatility < 0.25:') summary(as.double(temp[,1][signal])/as.double(temp[,2][signal]))
I was tweaking the result to squeeze some profit, but not so much luck. Basically, you need to trade either VIX index derivatives or S&P 500 index options to get direct impact. Before doing that, you need to test historical performance. Unfortunately, I don’t have data for these instruments. What about ETF, like VXX? Nope, because only few data points in the testing sample.
Later, I will try to incorporate GARCH model to see if this going to help. Any fresh ideas on this?