Correlation
Query
WITH
'2024-01-01' AS start_date,
'2024-12-31' AS end_date,
candles AS (
SELECT toDate(start) AS day, market, toFloat64(close) AS close
FROM api.ohlcv(candle_duration_in_minutes = 1440)
WHERE exchange = 'binance'
AND market IN ('BTC-USDT', 'ETH-USDT', 'SOL-USDT', 'ADA-USDT', 'DOGE-USDT')
AND start BETWEEN start_date AND end_date
),
market_returns AS (
SELECT day, market,
close / lagInFrame(toNullable(close), 1) OVER (PARTITION BY market ORDER BY day) - 1 AS ret
FROM candles
)
SELECT a.market AS market_a, b.market AS market_b,
corr(a.ret, b.ret) AS correlation
FROM market_returns a
JOIN market_returns b ON a.day = b.day
WHERE a.ret IS NOT NULL AND b.ret IS NOT NULL
GROUP BY market_a, market_b
ORDER BY market_a, market_bOutput (2024)
ADA-USDT
BTC-USDT
DOGE-USDT
ETH-USDT
SOL-USDT
Pivot to a matrix in SQL
Extending it
Last updated