We're building the most comprehensive crypto data API we can, and it's still growing — there's always a coin, a field or an endpoint we haven't got to yet.
Please tell us about any data you think Crypto Data API should nail but doesn't. We're data nerds who love to geek out about market data, trading bots, AI agents, or how to make your trading stack work in general. Prefer a form? Send feedback.
— Sam and the CDA team
Join us on DiscordCurrent regime duration 8 hours, with a 46% chance it lasts another day. Next 24h leans towards Range / Low Vol 24% chance, Strong Trend (Bull) 13% chance.
Probability across five outcomes, from 1,000 simulations of the whole market. Left = falls, right = rises.
Simulations lean higher: half of the 1,000 runs finish between −1.8% and +2.1%. Wide band = 90% of outcomes, bright band = middle 50%, green marker = median.
Every market hour gets sorted into one of six states. Each implies a different way to trade — or not trade.
The live model run over its full training history — weekly regime, no hindsight relabeling.
Each coin gets its own read, conditioned on the whole market — SOL can be coiled in a squeeze while the market drifts sideways. Direction odds are free on the top 3; Pro unlocks all ~179 perps.
The full probability object behind one coin: direction, volatility, liquidations, funding, open interest, and which regime comes next.
Including the explain block: feature z-scores, raw state posteriors, the hysteresis rule, raw-vs-calibrated confidence. If you can't audit a probability, you shouldn't trade on it.
{
"scope": "BTC",
"symbol": "BTC",
"timestamp": "2026-10-31T19:26:42.326000Z",
"horizon": "24h",
"regime": {
"label": "range_low_vol",
"name": "Range / Low Volatility",
"id": 2,
"confidence": 0.9723,
"confidence_raw": 0.9993,
"label_raw": "range_low_vol",
"candles_in_regime": 10,
"in_regime_since": "2026-10-31T09:00:00Z",
"pending": null,
"hysteresis": {
"margin": 0.1,
"bars": 2,
"override": 0.7,
"incumbent_floor": 0.1,
"min_dwell_bars": 0
}
},
"probabilities": {
"directional": {
"strong_down": 0.0736,
"mild_down": 0.222,
"flat": 0.3757,
"mild_up": 0.2351,
"strong_up": 0.0937,
"confidence": 0.0953
},
"volatility": {
"low": 0.3721,
"medium": 0.3509,
"high": 0.277,
"confidence": 0.007
},
"funding": {
"falls": 0.321,
"stable": 0.3802,
"rises": 0.2988,
"confidence": 0.0048
},
"liquidation_risk": {
"low": 0.3721,
"medium": 0.3509,
"high": 0.277,
"confidence": 0.007
},
"open_interest": {
"contracting": 0.2955,
"neutral": 0.3757,
"expanding": 0.3287,
"confidence": 0.0044
},
"regime_transitions": {
"stays_same": 0.5372,
"to_strong_trend_bull": 0.1535,
"to_strong_trend_bear": 0.1264,
"to_vol_spike": 0.1001,
"confidence": 0.2636
}
},
"meta": {
"model_version": "2.1.0",
"model_family": "hmm",
"last_retrain": "2026-10-28T00:46:08.955755Z",
"data_staleness_ms": 1602326,
"feature_coverage": 1.0,
"insufficient_history": false,
"status": "ok",
"backfilled": false
},
"explain": {
"features": {
"ret_1h_z": -0.24867258451917656,
"ret_24h_z": 0.5203453701254853,
"vol_ewma_z": -0.35569234188061166,
"vol_ratio_log": -1.8196420767332682,
"bb_width_pctile": 1.5083333333333333,
"rel_btc_24h_z": 0.0,
"funding_z": 0.5072528334264665,
"trend_7d": -0.435184203546463
},
"label_posteriors": {
"strong_trend_bull": 0.00005,
"strong_trend_bear": 0.00003,
"range_low_vol": 0.99934,
"choppy_high_vol": 0.0,
"vol_spike": 0.00058,
"squeeze": 0.0
},
"hysteresis": {
"rule": "challenger > incumbent + 0.1 for 2 bars, or challenger > 0.7 instant, or incumbent < 0.1 (collapsed)",
"pending_challenger": null
},
"calibration": {
"confidence_raw": 0.9993443029720049,
"confidence_calibrated": 0.9723,
"scale_applied": 1.0
},
"thresholds_resolved": {
"sigma_1h": 0.005379,
"mild": "±0.66%",
"strong": "±2.64%"
}
}
}
We retrospectively scored every hourly regime call this model would have made (56,000+ hours, 2020 → now) against what BTC, 16 major alts and all ~175 Hyperliquid perps actually did next. Here's the honest read — because a probability you can't audit is a probability you shouldn't trade.
The HMM is a nowcast: it tells you which regime the market is in right now, within hours of a state change. During vol_spike, 73–79% of coin-hours across the entire Hyperliquid universe saw elevated volatility over the next 24h. Use it to size positions, widen stops and set liquidation buffers across your whole book.
A 24h-momentum strategy that is flat over all hours splits sharply by regime: mean-reversion worked during bear and vol_spike on every dataset we tested (BTC, majors, full HL universe), momentum leaned positive in squeeze. Long-BTC-only-during-bull historically halved max drawdown vs a 200-day trend filter at similar return. Use the regime to pick which strategy runs, not which way to bet.
P(BTC up next 24h | bull) was 52.8% vs a 52.1% base rate — no edge. And don't short bear: by the time the model flips bearish, ~−2.5% has already happened and the next 7 days averaged positive. The historical timeline above matches price so well because the regime is computed from the move already underway — those bands are recognitions, not calls. No regime model (ours or anyone's) predicts short-horizon direction; vendors who claim otherwise aren't showing you their base rates.
Every number above is reproducible: pull the full point-in-time regime history via GET /api/v1/quant/regimes/history and score it yourself. Calibrated forecast heads (volatility, liquidation-cascade risk, squeeze resolution) with published scorecards are the next release on this engine.
curl -H "X-API-Key: cdk_live_yourkey" \ "https://cryptodataapi.com/api/v1/quant/market?horizon=24h"
Market-wide regime with probabilities; /quant/coins/{symbol} is the per-coin read and /quant/regimes/history the 2020-to-now Parquet history.
The HMM regime is a nowcast, not a forecast — its measured value is as a strategy SELECTOR: run trend systems in trend regimes, mean-reversion in ranges, and cut size in volatility spikes. That selection is exactly what the 2020-to-now history lets you test.
Build me a regime-switching strategy on the CryptoDataAPI quant regimes.
Read the live market regime from /api/v1/quant/market and per-coin regimes from /api/v1/quant/coins/{symbol}. Assign one sub-strategy per regime — trend-following in the two trend states, mean-reversion in range/low-vol, reduced size or flat in choppy and volatility-spike states — and define what happens to an open position on a regime change.
Then backtest on the point-in-time history at /api/v1/quant/regimes/history (Parquet, 2020 to now, no hindsight relabeling) joined to /api/v1/backtesting/klines.
Compare against running the single best sub-strategy all the time. Report per-regime hit rates. If the switching does not beat the best single strategy after fees, the regimes are not adding selection value — say so.