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?
R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series,ecdf, trading) and more...

Zero Inflated Models and Generalized Linear Mixed Models with R.
Zuur, Saveliev, Ieno (2012).