Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

The VIX (volatility index) is a financial index which measures the expectation of the volatility of the stock market index S&P 500 (SPX). The higher is the value of the VIX the higher are the expectations of important variations in the S&P 500 during the next month. Since volatility is a measure of risk in a portfolio, managers tend to flee away the market when the VIX increases.

The question today is to know whether it is a good strategy to use the VIX as an indicator of risk in the market, as a fear-index.

I downloaded the historical prices of both the S&P 500 and the VIX. Even though the VIX is not in a currency unit but in percentage, we still call the data historical prices. I propose a very simple portfolio strategy which is in total contradiction with the idea that the VIX is a fear gauge. I have a certain amount of money at the beginning of the year 2007, and I can short or long on the S&P 500 in the range of the money I have. My decision for a day only depends of the profit made by the VIX the previous day. If the VIX has increased I long on the S&P 500, if the VIX decreases I short. To define the quantity to invest in, I use a re-scaled and translated logistic function so that my decision is smooth and stay in the range I defined just before ([-1;1]). If you are interested in the logistic function you can go on the page of a good mathematics  website: http://mathworld.wolfram.com/LogisticEquation.html . Or even on the Wiki page (don’t worry I’m not crazy, I don’t trust Wiki, but this page is Okay): http://en.wikipedia.org/wiki/Logistic_regression.

With such a strategy which is against the mainstream of the portfolio strategies we have some good results (see next figure). If you had begun your portfolio manager career the 01/01/2007 with a huge amount of…100\$ and had decided to invest according to the previous strategy you would have clearly over performed the S&P 500 index. You can see this on the following graph. Next time your parents tell you a story about the monster VIX don’t be scared!

The code (R):

# data contains the historical prices of the VIX and of the S&P500 as well as the date
data\$date<-as.Date(data\$date, format="%d/%m/%Y")

data\$money = 100
data\$profitSP = 0
data\$profitVix = 0
data\$decision = 0
length = length(data\$vix)

for(i in 2:length){
data\$profitSP[i] = (data\$sp500[i] – data\$sp500[i-1])/data\$sp500[i-1]*100
data\$profitVix[i] = (data\$vix[i] – data\$vix[i-1])/data\$vix[i-1]*100
#   if(data\$profitVix[i] > 7){data\$decision[i] = 1}
#   if(data\$profitVix[i] < -7){data\$decision[i] = -1}
data\$decision[i] = ((exp(data\$profitVix[i]/5)/(exp(data\$profitVix[i]/5)+1))-(1/2))*2
}

for(i in 2:length){
data\$money[i] = data\$money[i-1] + data\$decision[i-1] * data\$money[i-1] * data\$profitSP[i]/100
}

data\$money = data\$money/data\$money*100
data\$sp500 = data\$sp500/data\$sp500*100

plot(data\$money~data\$date, type = ‘l’, col = ‘blue’,axes=TRUE, ann=FALSE, ylim = c(50, 250))
lines(data\$sp500~data\$date, col = ‘red’)

title(xlab=”Years”, col.lab=rgb(0,0,0))
title(ylab=”Index (US\$)”, col.lab=rgb(0,0,0))
legend(“topleft”,  c(“Portfolio”,”S&P 500″), cex=1,
col=c(“blue”,”red”), lty = 1, inset = 0.1);