Algorithmic Approach to VIX Trading using Futures

Volatility Trader
7 min readJun 27, 2024

--

This is the 4th in our “Journey to Vol Trading” series that chronicles the evolution of our trading. Keep reading for updates.

We have previously reviewed the 4 key strategies for trading volatility through VIX futures. In order to build an effective algorithmic trading system, we need to establish systematic principles that can be expressed mathematically and then programmed into an algorithm to provide trade signals (and eventually, place trades automatically).

The “VIX / VIX Futures Ratio”

When we talk about contango and backwardation, we discuss the overall shape of the curve. However, for building an algorithmic trading system, we need to identify a specific way to represent these concepts.

The VIX is a measure of the 30 day expected volatility in S&P 500 options. VIX Futures in turn represent the expected value of the VIX itself at various points. VIX Futures expire at pre-determined dates (the Wednesday which is 30 days before the 3rd Friday of the next month). Therefore at any given time, the future closest to expiration can be anywhere between 30 days and 0 days from expiry. It makes sense to compare the VIX spot with what is the predicted value of the VIX in 30 days from now. To do so, we will need to get the Weighted Average Price of the Front Month (closest to expiry) and Back Month (second closest to expiry) VIX futures. The formula for this is:

We now have a very easy way to determine backwardation or contango in the context of the 30 day VIX Futures window.

We simply divide the current VIX price by the WAP to get the “Weighted VIX/VIX Futures Ratio”, which we call the “Weighted Ratio” from here on.

When the Weighted Ratio is > 1.0, we will consider our 30 day VIX futures to be in backwardation, and when it is < 1.0, we will define it as contango. We can now begin to experiment with using this ratio in setting up the trades we discussed in the previous article.

Choosing a trading Signal for Short VIX Futures

The first trade we discussed was selling VIX futures when in contango. The logical starting point to examine the effectiveness of this is simply using the Weighted Ratio (“WR”) of 1 as the decision point. In other words, when the 30 days average VIX future price is below the VIX itself, which is contango, we sell VIX futures and hold that position until the WR crosses back above 1.

For the purpose of all of our testing, we have assumed transaction costs at approximately 0.1% per trade. Most brokers now offer commission-free trading, but but slippage would be $0.025 on a $25 stock, which seems reasonable.

Trade 1 (Short VIX Futures) Backtesting

The initial test with the simplistic WR of < 1.0 returns negative performance. A quick analysis reveals that:

1) The WR flip flops around 1.0 quite frequently, which causes the algo to repeatedly make entry and exit trades (over 3 trades per day!), which quickly eats up profits due to slippage

2) We can see that if we wait until the WR rises above 1.0 (i.e contango -> backwardation), the VIX (and the VIX futures themselves) have risen quite a bit already. This indicates that we need to exit positions a bit faster, before 1.0

With additional experimentation, we find that a WR below 1.0 works much better. Fine tuning based on historical data, we find that a WR around 0.95–0.96 works quite well. It does indeed eliminate problem #2 above by getting out of the position before large rises in the VIX/VIX Futures. However, the flip-flop problem #1 remains.

We can then implement a different re-entry WR to give a bit of “flat space” between when we exit a position (where WR is rising and we exit our short VIX futures) and when we re-enter it (when WR falls back down and we re-enter short VIX futures).

Trade 1 Optimization

We developed a simple program that runs the backtest with various combinations of exit and entry WRs, and we obtain the following result:

Exit Short VIX Futures at: 0.96

Enter Short VIX Futures at: 0.94

Results: Return of a very solid 38% per year from 2012 to April 2024. While there are drawdowns, they are limited to about 15–20% since we are exiting positions quickly (well before large VIX spikes occur). The biggest “threat” to this strategy is exiting too agressively, when the VIX actually doesn’t spike and return to calm quickly, but that is a reasonable trade-off to protect from larger losses.

Choosing a trading Signal for Long VIX Futures

The second trade we discussed is going long VIX futures when the futures curve enteres backwardation. This is potentially a very profitable trade, because the VIX tends to spike to very high levels, with futures following closely behind.

Trade 1 (Short VIX Futures) Backtesting

In this case we again start with a WR of 1.0 (between the 30 days VIX futures average and the spot VIX). We run into the same problem of flip flopping, and we have another issue with exiting the position because while the VIX goes up quickly, it also falls extremely fast. The initial backtest using the WR of 1.0 result, unsurprisingly, in a negative return.

Trade 1 Optimization

We ran our optimization program using a variety of enter WRs for long VIX futures, as well as different WRs for re-entering the position. Unlike the short VIX futures trade, this proved to be very difficult. We attempted to implement additional strategies to add other WRs that effectively “slow down” the algo.

In the end, the most optimized result did deliver exceptional performance during big spikes in volatilty (such as those seen in August 2015, Feb 2018, March 2020 etc). However, over the entire testing period of 2012 to 2024, those profits were eroded during bull markets where the Long VIX Futures trade got faked out by small spikes into backwardation that didn’t materialize into big downturns.

Enter Long VIX Futures at: 1.04

Exist Long VIX Futures at: 1.02

Do not re-enter Long VIX Futures until WR has first fallen to: below 0.98

Results: Overall annual return of 10%, but with large spikes returning 50–150% over small period of significant market volatility.

Combining Trade 1 and 2

While the Long VIX Futures trade doesn’t work by itself, it actually becomes relatively powerful in combination with the Short VIX Futures trade. This is because the big profits the Long VIX futures trade generates in a few key periods of big market downturns greatly increases the capital available to then trade the Short VIX futures during the other calm periods.

Exit Short VIX Futures at: 0.96

Enter Short VIX Futures at: 0.94

Enter Long VIX Futures at: 1.04

Exist Long VIX Futures at: 1.02

Do not re-enter Long VIX Futures until WR has first fallen to: below 0.98

Results: With this optimized strategy, we get to over +42% per year from 2012 to April 2024. The drawdowns in this case tend to be a bit larger, reaching about 33%, which is due to often having a period where volatility increases (thus losing on the Short VIX Futures side), and then also loses a bit more when the Long VIX Futures trade doesn’t quite work out. Nevertheless, this is a reasonable performance for a system that is optimized as much as it can be with the limited parameters it is able to use (WRs).

Choosing signals for Trade 3 and Trade 4

As you will recall, we had two other trade ideas:

Trade 3 — Selling the top when VIX rises and then begins to fall. Our original algo does not allow this because it would have to wait until the WR goes below the 0.94. However, this means we are losing out on potentially very big profits when VIX returns to its mean from its peaks. We did not find a suitable way to model this with WRs, despite trying different things. Nevertheless, it is clear that if some patterns can be learned from history, that this is a possibly very effective trade.

Trade 4 — Buying the bottom when VIX goes to a very low point and begins to spike. Once again, our original algo will not make this trade because it requires the WR to be above 1.04. We can observe, however, that many VIX spikes occur with WRs far below that. In fact, the VIX can rise often 20–50% from its low before the WR crosses our Long VIX Futures entry point. Once again there seems to be a clear opportunity for a trade here, yet we find modeling this with the algo using WRs is not possible.

Where do we go from here?

We have designed and optimized a fairly effective trading system using just WRs, taking advantage of the patterns we discussed previously to create ideas for Short / Long VIX Futures. There are of course unexplored opportunities, which we believed could be solved by more complex models. And in fact, using Machine Learning, we were able to build such models that became effective at the challenging Trades 3 and 4 above. In one of next articles, we will delve into ML and specifically how we approached this challenge.

Before we do that, we need to answer another question. So far we have been talking about VIX Futures only. In our live trading, we have found that this is actually quite challenging for many reasons, the primary one being having to constantly run a mix of Front Month and Back Month VIX futures. There is in fact a very simple solution to this, using volatility ETFs, and we will discuss those in detail in the next article.

*** As always, we make it very clear that this is not investment advice, none of us are allowed to provide investment advice, this is research work product only and any trading decisions should be made on your own based on your own research and trade ideas **********

--

--

Responses (1)