Spot / Futures / Perp Spreads
Query
WITH
'2024-12-01' AS start_date,
'2024-12-31' AS end_date,
candles AS (
SELECT toDate(start) AS day, exchange, market, toFloat64(close) AS close
FROM api.ohlcv(candle_duration_in_minutes = 1440)
WHERE (
(exchange = 'binance' AND market = 'BTC-USDT')
OR (exchange = 'binance-usdm-future' AND market IN ('BTC-USDT', 'BTC-USDT-2025-03-28'))
OR (exchange = 'binance-coinm-future' AND market = 'BTC-USD-PERP')
)
AND start BETWEEN start_date AND end_date
),
spot AS (
SELECT day, close AS spot_close
FROM candles
WHERE exchange = 'binance' AND market = 'BTC-USDT'
)
SELECT c.day, c.exchange, c.market,
c.close, s.spot_close,
c.close - s.spot_close AS spread,
(c.close - s.spot_close) / s.spot_close * 100 AS spread_pct
FROM candles c
JOIN spot s ON c.day = s.day
WHERE NOT (c.exchange = 'binance' AND c.market = 'BTC-USDT')
ORDER BY c.day, c.exchange, c.marketOutput (December 2024)
day
exchange
market
close
spot_close
spread
spread_pct
contract
mean spread
min spread
max spread
mean %
min %
max %
Extending it
Last updated