OPEN-SOURCE SCRIPT

BTC Volume Contango Index

Updated
Based on my previous script "BTC Contango Index" which was inspired by a Twitter post by Byzantine General:

This is a script that shows the contango between spot and futures volumes of Bitcoin to identify overbought and oversold conditions. When a market is in contango, the volume of a futures contract is higher than the spot volume. Conversely, when a market is in backwardation, the volume of the futures contract is lower than the spot volume.

The aggregate daily volumes on top exchanges are taken to obtain Total Spot Volume and Total Futures Volume. The script then plots (Total Futures Volume/Total Spot Volume) - 1 to illustrate the percent difference (contango) between spot and futures volumes of Bitcoin. This data by itself is useful, but because aggregate futures volumes are so much larger than spot volumes, no negative values are produced. To correct for this, the Z-score of contango is taken. The Z-score (z) of a data item x measures the distance (in standard deviations StdDev) and direction of the item from its mean (U):

Z-score = (x - U) / StDev

A value of zero indicates that the data item x is equal to the mean U, while positive or negative values show that the data item is above or below the mean (x Values of +2 and -2 show that the data item is two standard deviations above or below the chosen mean, respectively, and over 95.5% of all data items are contained within these two horizontal references). We substitute x with volume contango C, the mean U with simple moving average ( SMA ) of n periods (50), and StdDev with the standard deviation of closing contango for n periods (50), so the above formula becomes: Z-score = (C - SMA (50)) / StdDev(C,50).

When in contango, Bitcoin may be overbought.
When in backwardation, Bitcoin may be oversold.

The current bar calculation will always look incorrect due to TV plotting the Z-score before the bar closes.
Release Notes
Changed the contango calculation to instead include the On Balance Volume of aggregate spot and futures exchanges.

Contango = (Futures OBV / Spot OBV) - 1

Also changed the sma period (n) in the Z-score calculation to 20.
Release Notes
Updated to show real-time data - just select your current timeframe in the dropdown menu.
Release Notes
Added more markets to aggregate volume from. Also added an option to use regular volume in the calculation, just click the box in the menu.
Release Notes
Added options in the menu to select which exchanges are included in the calculation.
Release Notes
Simplified the code. Because of the logic, some exchanges are paired - may find a way to unpair them later.
Release Notes
Repaired the three paired exchanges so they make more sense:

Coinbase/Deribit --> Coinbase/Bitmex
Bitfinex/Bitmex --> Bitfinex/Bybit
Bitstamp/Bybit --> Bitstamp/Deribit
Release Notes
Removed the timeframe input to simplify the script.
backwardationcontangoOscillatorsSimple Moving Average (SMA)Volume

Open-source script

In true TradingView spirit, the author of this script has published it open-source, so traders can understand and verify it. Cheers to the author! You may use it for free, but reuse of this code in publication is governed by House rules. You can favorite it to use it on a chart.

Want to use this script on a chart?


Also on:

Disclaimer