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 <- read.csv("U:/Blog/Post3/vixSP.csv",
header=T, stringsAsFactors=FALSE)
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[1]*100
data$sp500 = data$sp500/data$sp500[1]*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);
Add a comment