The fear index, VIX and variance swaps

Four years ago, back in 2014, a friend from HKUST, that had started working in the finance industry, asked me about the VIX. He could not figure out why the CBOE volatility index, popularly called the fear index, was calculated the way it was (see this white paper) – specifically he was curious about the reason for the term 1/K2. Pursuing the quest of understanding the VIX, I remember it felt like very few people truly understood what was going on, and that the ones that did had no interest in sharing their knowledge.

After lots of reading, I was able to connect the dots, summarized here in two parts. The key insights of the first part was found from digging in the references to this wikipedia page; see the appendices in the articles here and here. For the second part I am sad to say I do not remember the references (but I will keep digging).

I believe this is part of the theory that makes financial mathematics beautiful. My reasons for posting this is due to this inherent beauty, and that I do not want to forget certain insights. Moreover, I hope this can serve some educational purpose for aspiring quants.

Variance Swap

Before we start the calculations it should be noted that, at maturity, the payoff of a variance swap is 10000N(Σ2Kvar), where

  • N = notational amount quoted in $ per volatility point squared (hence the factor of 1002=10000).
  • Σ2 = realized variance in the underlying asset during the life of the swap.
  • Kvar = strike on variance.

The underlying assumption is that the S&P500, St, follows a geometric brownian motion

dSt=μtStdt+σtStdBt.

This can be solved using everyones favourite lemma, Itô’s lemma: Use the substitution Yt=log(St) and apply It^o’s Lemma to the function f(t,x):=log(x). The partial derivatives are

ft(t,Xt)=0,fx(t,Xt)=1St,2f2x(t,Xt)=1St2. Thus, we obtain dYt=(μtStStσt2St22St2)dt+σtStStdBt by Itô's Lemma=(μtσt22)dt+σtdBt.

Dividing the equation for dSt with St and subtracting this last equation we have:

dStStd(log(St))=μtdt+σtdBt((μtσt22)dt+σtdBt)=σt22dt. Hence, Variance=1T0Tσt2dt=2T(0TdStStlog(STS0)).

Notice that log(STS0)=log(STS)+log(SS0).

We now make use of the dirac delta function (δ(x)= if x=0, 0 otherwise) to write on log(STS) and then integrate by parts twice (this is where the 1/K2 comes from):

log(STS)=log(S)log(ST)=log(S)olog(K)δ(STK)dK by propertis of the dirac delta function=log(S)oSlog(K)δ(STK)dKSlog(K)δ(STK)dK splitting the integral=log(S)[log(K)1(ST<K)]0S+0S1K1(ST<K)dK[log(K)1(STK)]S+S1K1(STK)dK by integration by parts=log(S)log(S)1(ST<K)+1K[KST]+|0S+0S1K2[KST]+dKlog(S)1(STK)+1K[STK]+|S+S1K2[STK]+dK=1S([SST]+[STS]+)+0S1K2[KST]+dK+S1K2[STK]+dK=1S(SST)+0S1K2[KST]+dK+S1K2[STK]+dK.

This was kinda tedious, but this calculation is the reason for 1/K2 part in the final equation.

We now have the final equation for the variance:

Variance=2T(0TdStStlog(SS0)+1S(SST)+0S1K2[KST]+dK+S1K2[STK]+dK).

Say Variance=Σ2 (realized variance in the underlying asset during the life of the swap). To avoid arbitrage in the payoff equation (equation located in the start) we have to set: E[Σ2]=Kvar, the expectation of the realized variance is equal to the strike on the variance.

For the expecattions, not that E[0TdStSt]=E[0Tμtdt+0TσtdBt]=μT assuming μ is constantE[log(SS0)]=log(SS0) they're just constantsE[ST]=S0eμT.

Also observe that the price of a put and a call option both with strike K is P(K)=eeTE[(KST)+]C(K)=eeTE[(STK)+].

Taking expectations of the equation for the realized variance we obtain

Kvar=E[Variance]=2T(μT(SOSeμT1)log(SS0)+eμT0SP(K)K2dK+eμTSC(K)K2dK). Another way of writing this is: Kvar=2T(log(FoS)(F0S1)+eμT0SP(K)K2dK+eμTSC(K)K2dK). Now, making the smart choice of setting S=F0=S0eμT a lot cancel out and we have the final equation

Kvar=2eμTT[0F0P(K)K2dK+F0C(K)K2dK].

Relationship between variance swap and the VIX

We seek a discretized version (the VIX) of our fair price variance swap formula. Assume that the price of options with strike prices Ki,(i=1:n) are known and that K1<K2<...<Kn. Furthermore, choose S equal to the first strike price below F0, define the function

Q(Ki)=P(Ki)1(KiS)+C(Ki)1(S<Ki),

and then approximate the integrals as following

eμT0SP(K)K2dK+eμTSC(K)K2dK=eμTi=1nΔKiKi2Q(Ki),

where ΔKi=Ki+1Ki2,i=2:n1ΔK1=K2K1ΔKn=KnKn1.

Set this aproximation inside the equation for fair variance swap with and we obtain Kvar2T(log(FoS)(F0S1)+eμTi=1nΔKiKi2Q(Ki)).

The maclaurin polynomial for log(F0/S) is log(F0S)=(F0S1)12(F0S1)2+O((F0S1)2).

Thus, log(FoS)(F0S1)=12(F0S1)2+O((F0S1)2), and we obtain our final approximation

Kvar2TeμTi=1nΔKiKi2Q(Ki)12(F0S1)2, which we recognize as the fomula for the VIX.

Remember that the underlying “stock” here is the S&P500 index! I am note sure if there are call and put options that has the S&P as underlying, if there isn’t, you should use underlying stocks that is highly correlated (beta) with the S&P and calculate the VIX for all of them and maybe take the average.

Avatar
Berent Å. S. Lunde
Principal Scientific Developer