Skip to content

GET /correlation

$0.05 USDC

How closely 14 large perpetuals move with BTC: the Pearson correlation of hourly returns over one window, by default the last 30 hours (30 returns), not 30 days. Returns are joined on candle time; a coin whose newest candle lags BTC’s is left out rather than mismatched. Each correlation comes with its sample size and standard error, so a noisy 30-hour figure can be told apart from a 30-day one.

Coins: BTC, ETH, SOL, DOGE, XRP, AVAX, LINK, ARB, OP, SUI, NEAR, INJ, APT, ADA, PEPE.

GET https://api.cerebruspulse.xyz/correlation
ParameterTypeDefaultDescription
windowstring30h30h (30 hourly returns), 7d (168) or 30d (719). Any other value is refused with 400 before any price is quoted.
FieldTypeDescription
endpointstringcorrelation
timestamp_isostringWhen the response was computed (UTC)
btc_correlation.<coin>number | nullPearson r of the coin’s 1h returns against BTC’s, −1 to 1. BTC is 1.0. Null when the coin lags BTC, lacks candles, or has fewer than max(20, window / 2) joined returns
correlation_stats.<coin>objectFor each coin with a correlation: n (joined returns used) and stderr ((1 − r²) / √(n − 1))
average_correlationnumber | nullMean of the non-null correlations, BTC excluded
regimestringCORRELATED (average > 0.7), DECORRELATED (< 0.3), MIXED, or UNKNOWN
sector_averages.<sector>numberMean correlation per sector with data: L1 (ETH, SOL, AVAX, NEAR, APT, SUI, ADA), L2 (ARB, OP), DeFi (LINK, INJ), Meme (DOGE, PEPE)
metaobjectCommon metadata (Response Schemas)
meta.offeringstringpulse_correlation
meta.coins_analyzednumberCoins with a correlation, BTC included
meta.windowstringThe window used
meta.lookback_barsnumberHourly returns in the window
meta.timeframestring1h
meta.methodstringThe method, as text
meta.lagging_coinsarrayCoins left out because their newest candle is older than BTC’s (also flagged in meta.warnings as lagging_coins)

meta.as_of.candles_1h is the close of BTC’s newest candle, which every correlated coin reaches.

GET /correlation: real engine output on market data captured at 2026-09-24 17:05 UTC. Lists are cut to 3 items. Live responses may also carry meta.disclaimer, which the gateway adds.

{
"endpoint": "correlation",
"timestamp_iso": "2026-09-24T17:05:00Z",
"btc_correlation": {
"BTC": 1,
"ETH": 0.9319,
"SOL": null,
"DOGE": 0.8839,
"XRP": null,
"AVAX": null,
"LINK": null,
"ARB": null,
"OP": null,
"SUI": null,
"NEAR": null,
"INJ": null,
"APT": null,
"ADA": null,
"PEPE": null
},
"correlation_stats": {
"ETH": {
"n": 30,
"stderr": 0.0244
},
"DOGE": {
"n": 30,
"stderr": 0.0406
}
},
"average_correlation": 0.9079,
"regime": "CORRELATED",
"sector_averages": {
"L1": 0.9319,
"Meme": 0.8839
},
"meta": {
"provider": "Cerebrus Pulse",
"offering": "pulse_correlation",
"execution_ms": 0,
"coins_analyzed": 3,
"window": "30h",
"lookback_bars": 30,
"timeframe": "1h",
"method": "Pearson r of 1h returns joined on candle time; stderr = (1 - r^2) / sqrt(n - 1)",
"lagging_coins": [],
"as_of": {
"candles_1h": "2026-09-24T17:00:00Z"
},
"sources": [
{
"name": "Hyperliquid",
"url": "https://hyperliquid.xyz"
}
]
}
}

This capture held 1h candles for BTC, ETH and DOGE only, so the other coins read null and coins_analyzed is 3. A live response fills every coin that has enough data.

StatusReason
400window not one of 30h, 7d, 30d (before any price is quoted), or not enough BTC candles (not charged)
402Payment required (the standard x402 flow)
429Rate limit exceeded
503Service disabled, payments down, or the candle feed is missing or stale; no price is quoted
504Engine timeout (not charged)