Using the Ratio between VXV and VIX we can calculate whether UVXY is in backwardation or contango.

Ratio = VXV/VIX

If Ratio < 0.923, then UVXY/VXX is in Contango, we should short the position

If Ratio > 0.923, then UVXY/VXX is in Backwardation, we should go long

Coming from Python, my C# skills are not up to par. I've got tested Python code (with numerous enhancements) that trades this strategy. Below is my feeble attempt to convert it to C# so that everyone can take advantage of it. I did not know how to pull the data from Quandl, so I left that part out.

I'd use VXX, but you can use UVXY for much greater profits, but drawdowns will be HIGH!

using System;

namespace QuantConnect.Algorithm

{

public class Backwardation : QCAlgorithm

{

// UVXY performs better with much higher drawdowns.

static string symbol = "VXX";

decimal ratio = 0;

// Add VXV and VIX data from Quandl or Yahoo here

// YAHOO/INDEX_VIX

// CBOE/VXV

//RollingWindow vixdata = new RollingWindow(1);

//RollingWindow vxvdata = new RollingWindow(1);

public override void Initialize()

{

SetStartDate(2015, 2, 1);

SetEndDate(2015, 9, 9);

SetCash(100000);

AddSecurity(SecurityType.Equity, symbol, Resolution.Minute);

SetWarmup(TimeSpan.FromDays(5));

}

private DateTime last = DateTime.MinValue;

public void OnData(TradeBars data)

{

if (IsWarmingUp) return;

if (Time.Date != last.Date) {

last = Time;

// Calculate ratio of vix to vxv here

// ratio = vixdata/vxvdata;

// Once we have the ratio, we decide what to do

if (ratio < 0.923m) {

// A ratio under 0.923 indicates contango position

// sell short

if (Securities [symbol].Holdings.Quantity <= 0) {

SetHoldings(symbol, -1.5);

}

} else {

// A ratio over 0.923 indicates backwardation, go long

//buy

if (Securities [symbol].Holdings.Quantity >= 0) {

SetHoldings(symbol, 1.5);

}

}

}

}

// Quandl Datahandlers

/*

public void OnData(Quandl data) {

// Handle QUANDL DATA

}

*/

}

}

Author