The heart of these indexes is the daily roll of VIX futures contracts. At market close a portion of the shorter term contracts are sold, and longer term contracts purchased—the goal is to give these indexes a constant expectation of volatility (e.g., 1 month or 5 months). The daily contract allocations are set by the number of business days remaining in the front month contract and the total number of business days in the current roll period (typically around 21).
The front month futures position goes to zero the night before the futures expire. At that point the allocation is 100% second month futures.
The chart below indicates nearly 80% of the open interest in the short term VIX futures market is driven by these daily rolls.
The blue line shows the combined front and second month futures open interest. The red line shows how the front month’s open interest drops until the volatility ETPs and other people doing daily rolls have sold out their positions—right before expiration. At that point the open interest jumps up because the second month futures have now become the front month.
As I was developing my index calculations one subtle math error took me several weeks to track down, but when my results started tracking the official SPVXSTR index within +/- 0.002% I moved on to modeling Barclays’ XVZ and VQT.
While updating my spreadsheet in November I encountered a problem—Hurricane Sandy. The markets closed on Friday October 26th not knowing they would be closed on Monday, so the indexes did their normal roll. On Sunday the exchanges announced the markets would be closed on Monday, and it was not known when they would reopen—so the number of business days remaining in the expiration cycle was unknown.
The index documentation has provisions for the introduction of new holidays and shutdowns which I tried to follow, but I ended up with a persistent 0.05% error term—a factor 25X worse than what I had before. Still a small error—a normal person would have just shrugged and moved on, but I knew this would bug me forever if I didn’t fix it.
I contacted the S&P indexes group regarding my problem and they quickly responded with a copy of an SPDJ Indices email alert that was sent out Monday, October 29th. Included in the email:
“Due to the unforeseen closures of the Chicago Futures Exchange for the foreseen future, the VIX Index family will be treated as such: The scheduled roll period for today will be held until the close of business of the next available trading day. The roll period will skip the days missed and catch up based on the number of business days from the last trading day. Please refer to the methodology for details on the roll period:”
The official number of business days left in the cycle (“Roll dwn” on my spreadsheet) ended up looking like this:
The markets were closed October 29th and 3oth, but the business days remaining didn’t get straightened out until market close Thursday, November 1st.
With this change my error dropped back into the +/- .002% range. Off to other things…