VIX Contango Oscillator (VCO) and VIX Term Roll Oscillator (VTRO) Introduction

A swing trader in the XIV, SPY and UPRO needs a way to determine when to get in on a swing trade and when to get out. To help determine those entry and exit points, in May of 2013, I conceived the VIX Contango Oscillator or VCO for short. I wrote an article about it at the time which you can still read on Seeking Alpha here. I and hundreds of other investors have since used the VCO and have found it to be very useful in timing the market. The VCO uses a formula that includes the VIX, VIX 1 (Front Month VIX Future) and VIX2 (Second Month VIX Future). These 3 market indicators represent market participants’ volatility expectations for the near future over various terms (lengths of time).


When combined together they can be used as a definitive aggregate measure of volatility expectations (or in simple terms – taking the temperature of the market). That measure then can be used to spot turning points in the stock market. If future expectations for volatility are coming down, the market will definitely stop going down, carve out a bottom and push higher. If future expectations for volatility are elevated, that doesn’t always translate into a market drop, but when these expectations reach a crescendo, a near term market top is almost always near.

After using the VCO for a couple of years, I felt that the formula wasn’t complete. I wanted to take into consideration the more immediate volatility expectations (VXST) as well as the more distant ones (VXV). I also felt that the VCO was a little too choppy of an indicator, it was too volatile and didn’t provide as smooth and as definitive of a signal as I would’ve liked. Part of that was the VIX future expiration date effect on contango and roll yield which accounted for some really choppy action that wasn’t relevant to the purpose of the oscillator. To compensate for all these deficiencies, I came up with the VIX Term Roll Oscillator or VRO for short.

The VIX futures market and S&P 500 futures market are the most liquid instruments on earth. They are used by millions of market participants and as a result are very difficult to manipulate by a small party of traders over the span of a week or month. As a result monitoring and using those instruments can produce some fairly reliable and trustworthy observations.

Volatility Terminology

VXST is the spot estimate for volatility of the S&P500 for the upcoming 9 day period.

VIX is the spot estimate for volatility of the S&P500 for the upcoming 30 day period.

VIX1 is the price of the front month VIX future which is always within 30 days of the current day so it represents volatility expectations over the 30-60 day term.

VIX2 is the price of the second month VIX future which is always within 60 days of the current day and represents volatility over the 60-90 day term.

VXV is the spot estimate for volatility of the S&P500 for the upcoming 93 day period.

VXST Roll  is percentage difference between VXST and VIX = (VIX/VXST) – 1

Roll Yield is the percentage difference between VIX and VIX1 = (VIX1/VIX) – 1

Contango is the percentage difference between VIX1 and VIX2 = (VIX2/VIX1) – 1

VXV Roll is percentage difference between VIX2 and VXV = (VXV/VIX2) – 1

Contango Roll is the percentage difference between VIX and VIX2 (essentially a sum of Roll Yield and Contango) = (VIX2/VIX) – 1

VIX1 Term is calendar days to VIX1 expiration = T1

VIX2 Term is calendar days between VIX1 expiration and VIX2 expiration = T2




The Importance of Contango

Contango is a very imporant indicator for traders of the XIV as the XIV shorts VIX2 futures and covers VIX1 futures on a daily basis and so long as the Contango is positive and high that results in automatic increase in the XIV even if the SPX and VIX are flat for the day. For example if the Contango is 10%, then the XIV will increase 0.5% automatically provided there are no changes to the VIX or the SPX. This has resulted in the outperformance of the XIV over the SPX over the past few years, but that is not the only purpose of the Contango.

The Contango also represents investors’ expectations for future volatility over the 30 to 90 day term. As a result, Contango can be useful in spotting turnaround points in the SPY. When the Contango is negative (a condition called Backwardation) that means all market participants agree that the VIX will go down in the near future (30-90 day period) and usually that marks a turning a point in the market. When market participants think calmer times are ahead, the SPY finds a solid footing, carves out a bottom and starts a rally.

However, Contango alone doesn’t tell the whole story with regards to the XIV. If the market drops and the futures curve gets reset higher, the Contango is of no importance now as the what was formerly shorted VIX2 at 15 (for example) inside the XIV, now has to be covered as VIX1 at 17 for a loss. This is what causes the XIV to post massive daily losses during one or two day sell-offs in the market and why if the entire futures curve moves higher, the XIV can start to lose you money quick.

VIX Contango Oscillator (VCO) Formula

The VCO is an oscillator that combines the 2 factors most relevant to the XIV – the Contango and the spot level of the VIX. It gives majority of its weighting to the Contango (the 30-90 day volatility expectations). The formula for the VCO is as follows:

VIX Contango Oscillator = VIX – 45 + 1000 * (VIX2/VIX1 – 1)

or in other words

VIX Contango Oscillator = VIX – 45 + 1000 * Contango

When the VCO hits 0 or goes from negative to positive, usually the bottom of a drawdown is near or has already been struck. When the VCO goes above 25, we have a rally under way. When the VCO hits 100, that represents a crescendo in volatility expectations (complacency now but high fear of the future) and can be used to spot near term tops. High VCO (above 25 but below 100) is best for XIV as the spot VIX is low but the VIX1 and VIX2 are elevated. To use the volatility terminology, both Roll Yield and Contango are high (or the combined measure – Contango Roll is high). When that is the case, the XIV will obviously gain from the daily shorting and covering because of Contango. However, as the VIX1 option expiration nears, the difference between VIX and VIX1 (Roll Yield) must decrease and go down to zero. However, futures expectations haven’t exactly changed. What happens then is that the VIX1 starts to go down to match the VIX and then Contango gets bigger and bigger. In other words, the Contango Roll turns into Contango as the Roll Yield decreases to zero.



In the graph above you see how the purple (Contango) tends to increase and fill out the blue (Roll Yield) as the option expiration nears. As the Contango gets bigger, the XIV gains more and more. That is why the XIV does great in the second and third weeks of the month and as the 3rd Wednesday of the month passes (VIX future expiration date), the Contango gets reset back to a smaller value, Roll Yield to a bigger value and the XIV struggles a bit if there are no underlying changes in the spot VIX or SPX. As a result it is useful to track the Contango Roll especially early in the month even if most of its composition comes from Roll Yield (as Roll Yield itself doesn’t contribute anything to XIV performance). If the situation stays the same, Roll Yield will turn into Contango and the XIV gains will rack up.



So the XIV does best when people are really complacent about the present but really scared about the future and what that means is that the market usually is on a cusp of 30 point drop any day of the week. This is what makes determining whether to stay in the XIV a bit of a challenge once it starts to rack up the gains because it can serve you a -10% loss at any time. Yes you can get 1% tomorrow, but you can lose 10% too. This is akin to picking up dollar bills in front of a steam roller. Ideally, you have made a good gain and you can place some tighter stops and not worry about losing your profits.

The VIX Contango Oscillator measures the level of near term complacency vs long term fear very well as it includes the spot price of the VIX in addition to the Contango. So as the VIX moves higher and Contango decreases, the VCO will move lower. As a result once the VCO crosses 25 on the way down, you want to have placed your stop loss orders or have gotten out altogether. There is always another rally, go to cash and think later. As the VCO starts to move up from negative to positive or in general starts to move higher, future expectations for volatility are starting to go down, Contango is increasing and at this point you want to be going long both XIV and SPY as the rally is just starting to gain strength.

To summarize, while you can track 10 different indicators to determine what will happen in the future, you can just use the combined wisdom of all market participants for the next 90 days via one number in the VIX Contango Oscillator.


VIX Term Roll Oscillator (VRO) Formula

As mentioned above, I wanted to improve on the VCO formula.

  1. I wanted to take into consideration the more immediate volatility expectations (VXST) as well as the more distant ones (VXV).
  2. I wanted to provide a more smooth and definitive signal and
  3. Work around the monthly distortions that arose around the VIX future expiration date.

The VRO formula is as follows:

VIX Term Roll Oscillator = MA(3) of (1000 * ((21/84)*(VIX/VXST – 1) + ((84 – T1 – T2) /84)*(VIX1/VIX – 1) + (T2/84)*(VIX2/VIX1 – 1) +(T1/84)*(VXV/VIX2 – 1)))

or in other words

VIX Term Roll Oscillator = MA(3) of (1000 * ((21/84)*VXST Roll + ((84 – T1 – T2) /84)*Roll Yield + (T2/84)*Contango +(T1/84)*VXV Roll))


MA(3) = 3-day Moving Average

The inclusion of the VSXT Roll and VXV Roll now adds VXST and VXV to the formula. VXST and VXV represent 9-day and 93-day volatility expectations respectively. The 3 day Moving Average serves to smooth out the monthly distortions around the VIX future expiration date where the Roll Yield drops dramatically to 0 for a day or two right before the expiration date and then recovers to a big value after wards. By taking a 3 day moving average, the formula smooths out that effect while still providing a timely and relevant for short-term trading VRO value. And finally, the weighting takes into account the term length for which volatility expectations are relevant. Let’s delve into the weights a little more.


As you can see VXST represents volatility expectations for 9 days out, VIX for 30 days out and VXV for 93 days out. VIX1 and VIX2 are a little more complicated. VIX1 usually is between 1 and 30 days out from VIX and VIX2 is usually between 30 to 60 days out in front of VIX. So VIX1 and VIX2 represent expectations from 30 to 90 days. However, since the VIX1 and VIX2 futures have fixed expiration dates, the amount of time into the future varies. In the beginning of the future term, VIX1 represents 60 day expectations and VIX2 – 90 day expectations, while at the end of the future term VIX1 represents 30 day and VIX2 – 60 day expectations. The formula takes into account that variability by using the “VIX1 Term” and “VIX2 Term” variables represented by T1 and T2 respectively. Now, if you are paying attention, I am not using T1 as a weight for Roll Yield and 84-T1-T2 for VXV Roll, but vice versa – 84-T1-T2 for Roll Yield and T1 for VXV Roll. The reason is that Roll Yield tends to be highest in the beginning of the term when T1 is at its highest of around 30. So that would assign a stronger weight to a value that is further out into the future, whereas a stronger weight has to be assigned the closer we are to the present. Reversing out those weights accomplishes that. The weights for VXST Roll are fixed at 21 and 30 as VXST and VIX are always 21 days apart. Contango weight is exactly T2 and T2 average about 30 days but in some months it is 28 and in others it can go up to 35 as the 3rd Wednesdays are farther apart. The denominator 84, represents the total amount of time from VXST to VXV which is exactly 84 days (93 – 9).



That formula yields a VRO that generally oscillates from -100 to 100 (although these values can be exceeded) just like the VCO and when it hits 0 that usually represents a turning point in volatility expectations. The VRO spends most of its time in positive territory however and the key levels to watch are 50 and 0. When VRO hits 50 on the way down, it is prudent to put stops on your long XIV & SPY trades or get out altogether. When VRO hits 0 on the way up, this is a good entry point for XIV and SPY. When it hits 50 if it hasn’t hit 0 on the way up already, this is also a good buy point for XIV and SPY.

To summarize, the VRO improves on the VCO by taking into account two more volatility terms and smooths out the volatility around the VIX futures expiration date by taking a 3 day average. As a result, the VRO is a better, more timely, more accurate, more deterministic and less prone to false positives indicator.

22 thoughts on “VIX Contango Oscillator (VCO) and VIX Term Roll Oscillator (VTRO) Introduction

    1. From this report you can see that for 4/28 the values are:
      SV Roll = 4.55%
      Roll Yield = 17.27%
      Contango = 9.7%
      LV Roll = -4.31%
      T1 = 22
      T2 = 28

      At the bottom of the report you can see the values for 4/27 and 4/24, I won’t list them here:

      So TVCO (total VCO) which is my 1 day VRO value is calculated as follows:
      TVCO[4/28] = 1000 * ((21/81) * (4.55%) + ((81-22-28)/81) * (17.27%) + (28/81) * (9.97%) + (22/81) * (-4.31%)) = 100.64 (round) = 101
      TVCO[4/27] = 1000 * ((21/81) * (3.14%) + ((81-23-28)/81) * (15.09%) + (28/81) * (8.61%) + (23/81) * (-2.87%)) = 85.64 (round) = 86
      TVCO[4/24] = 1000 * ((21/81) * (13.17%) + ((81-24-28)/81) * (19.04%) + (28/81) * (10.46%) + (24/81) * (-5.57%)) = 121.97 (round) = 122

      VRO[4/28] = (TVCO[4/28] + TVCO[4/27] + TVCO[4/24]) / 3 = (101 + 86 + 122) / 3 = 103

      It is currently showing 94 and the reason is the TVCO for 4/24 is off on the site – it shows 116 instead of 122. Actually even with 116, the VRO should be 101 at least.

      There must be a bug somewhere. I’ll check the code tonight.

      Good catch, if that was your intent LOL

      1. Found the bug. I was calculating 5 day ma instead of 3 day ma. That’s fixed.

        The formula above is slightly different for 4/24. The T1 term is not 24 days, it is 26 days because 4/24 was on Friday. The term between expiration dates is measured by actual calendar days, not trading days as VIX and VXV measure 30 day and 90 day calendar day terms. I use the same convention.

        To make it clear what the term value is, I have included those in the data section of the report on the bottom between VIX and VIX1 and VIX1 and VIX2 respectively.

  1. Perfect, thank you!
    Besides the Key levels 0 and 50 – do you have any observation of the VRO prediction ability of the short term (next day…) XIV behavior ? anything to do with the VRO slope or up/down trend?

    1. Eyal, I also changed the formula this morning to account for the VXV being 93 days out instead of 90. I went to the CBOE site to see the exact length of the terms and then I found that out. Most of the descriptions out there use 90-day (it’s easier to market that way). In any case, the latest published report has all that factored in.

      As far as daily XIV moves, high VRO means that if XIV starts in the morning low and the VIX doesn’t follow through with a spike throughout the day, the XIV algorithm will inevitably push the XIV higher as the close comes as it covering VIX1 shorts and shorting new VIX2 futures. You saw that come into the play the last couple of days. However, the XIV algorithm is quite different than the VRO and for that only contango and spot VIX futures are relevant. A lot of it depends on where the covered VIX1 future was shorted when it was VIX2 about 21 trading days ago. So spot levels 21 days out along with term length along with the ETF’s weighted allocation between VIX1, VIX2 can give you that insight. The VRO can’t do that as the VRO is designed to be a more general purpose market timing indicator. For day to day VXX/XIV movements there are people out there with very accurate models – Vance Harwood or Juan Ramon Velasco Barros (jrv). Just google their names and you’ll find the blogs.

      However, the general level of the VRO can tell you whether the XIV will rally thoughout the day or stay down. If the VRO drops down throughout the day, an XIV rally is less likely. If it stays stable or increases, an XIV rally is inevitable. So in general terms, if VROSlope is up, XIV will rally; if VROSlope is down, XIV will not rally. At this point, I can’t provide VRO in real time to determine correlations. But real-time VRO will be coming in the future.

    1. In other words, T2 is time between front month future (current future contract) and second month future (next future contract)

    1. Thanks, Eyal. There is a dropdown called “Excel”. Excel -> VCO is where the download is. I also added the VRO excel spreadsheet. Best.

  2. Yes i found it – thank you!
    It looks like the VRO values in the header strip are too high -was there anything changed with the calculation method? Throughout the day i never calculated values above 70-75.
    kindly check and advise

    1. The TVCO for 5/8 was 129 (jobs report super day!) and for yesterday 82. So already you are above 100 average to begin with. Today TVCO is about 80, so yeah 90 is about right. I know VIX is 14, but curve is still pretty steep. The curve needs to flatten for the VRO to start dropping.

    1. VIX1 and VIX2 is not available on Yahoo. I get them from Barchart but soon I’ll put in a load to get them nightly directly from CBOE. Here are the links:
      Again you have to jump through hoops to figure out VIX1 and VIX2 as they are usually referred to by specific contract name (June contract, July contract etc).

      Keep in mind that CBOE gives these out with a 20 min delay, as such the 4pm closing value is not the final settlement value. The quotes keep coming until 4:20 The 4pm value and settlement value are usually off by a little bit, but not enough to matter in practice.

    2. Eyal, one more thing. There is a real-time feed and end-of-day feed. All financial sites do it this way. The real-time feed gives you the latest ticker, whereas end-of-day feed gives you the final settle value. First the real-time feeds are delayed 20 min and second the final settlement is usually slightly different than the last trade posted in the real-time feed (as the real-time feed is based on time and some trades are settled after-hours). So you will see slight differences between the reported value at market close and the next day once the end-of-day feed has been run.

      This is my first implementation of a real-time feed and there are some kinks to work out in the first week or so – Yahoo sometimes can’t get the data in time, etc. After all I am working with free feeds so I can’t expect perfection at this point. At some point I’ll upgrade to professional real-time feeds, but they cost a lot of money so I will do it once it makes financial sense.

  3. Hi,

    Sorry, new at XIV and volatility. Making a nice chunk of change over the last few weeks witih some pocket change while I get more familiar.

    Just wondering what a reasonable following stop loss would be for XIV. I have one GTC at -12% for the 500 shares I am watching.

    I know…the standard answer whould be “it depends”. but I don’t want to get stopped out. Don’t want to set it too low (high?) to lose more than necessary with a drop.

    Any suggestions, perspecitves, or tales?

    1. The biggest XIV draw on a daily closing basis since Feb 1, 2015 has been 9.2%, with the last two draws at 5.5% and 5.8%. So I would say 10% should about cover it. Although if you want to be greedy, 6% could do as well as volatility has been more stable during the last 3 months. If you combine that with the standard VCO/VTRO signals, but keep the stop as your primary signal, you would’ve done really well the last 4-5 months without selling at points when the VCO/VTRO issued sell signals

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s