Free tier open. Paid plans coming soon.

Volatility regime detection
for crypto markets.

A REST + WebSocket API that reports the current volatility state — low, normal, or high — for twenty USDT-quoted pairs on Binance, plus the return distribution that typically follows each transition and the cross-symbol lead-lag between them. Calibrated on real data. The math is documented. No predictions.

7-day timeline · BTCUSDT · 15m
loading…
low normal high
Quickstart (10 min) → API reference or jump to pricing

How it works

Three ingredients, all visible.

01 — data

1-minute klines

We pull 1-minute OHLCV from Binance spot. No re-aggregation tricks, no synthetic bars. What the exchange publishes is what we use.

02 — feature

Realized vol, z-scored

30-minute rolling realized volatility, annualized. z-score against a 4-hour baseline. The short window measures now; the baseline measures recent normal.

03 — fsm

Three-state FSM

low / normal / high, with hysteresis. To transition we require several consecutive observations past the boundary; single spikes don't move the state.


Numbers we publish

We show you the score.

Each symbol is calibrated independently against 180 days of its own 1-minute klines — 2,304 threshold combinations, Pareto-front selection on the (F1, alerts/day) plane. Numbers below are for the balanced preset; full per-symbol F1 breakdown is in the docs.

conservative
2.6 alerts/day
F1 0.37
quiet, high precision
balanced default
5.6 alerts/day
F1 0.39
the knee of the curve
aggressive
14 alerts/day
F1 0.41
max F1, higher noise

Median detection lag: ~20 minutes. That is the honest number; we publish it rather than hide it. Regime detection against a smoothed percentile ground truth is genuinely noisy — anyone claiming F1 > 0.9 is labeling with future information.


What happens after

Don't stop at the label.

The regime itself is the raw signal. What you probably want next is how price tends to move after a transition. That endpoint is live:

$ curl "https://api.amaneki.com/v1/regime/btcusdt/impact?to=high&lookback_days=365&timeframe=1m"

{
  "symbol":      "btcusdt",
  "to_regime":   "high",
  "sample_size": N,
  "horizons": {
    "1h":  { "median": ..., "p25": ..., "p75": ... },
    "4h":  { "median": ..., "p25": ..., "p75": ... },
    "24h": { "median": ..., "p25": ..., "p75": ... }
  }
}

Returns are natural-log. Sample size equals the count of past HIGH transitions inside your lookback window — we backfill from Binance on deploy so this endpoint is populated from day one, and each new transition adds to it. p25/p75 appear once N ≥ 20; p05/p95 once N ≥ 100 (anything lower is statistically noise). Numbers are the live response from our Postgres archive; try your own lookback_days and timeframe.

Also live: /v1/regime/lead-lag?leader=btcusdt&follower=ethusdt&to=high — how often BTC's transitions precede ETH's, and by how long.
10-min quickstart → impact + lead-lag docs how the calibration works

The API

One curl. That's the onboarding.

$ curl https://api.amaneki.com/v1/regime/btcusdt

{
  "symbol":        "btcusdt",
  "regime":        "normal",
  "z_vol":         -1.39,
  "realized_vol":  0.1788,
  "baseline_vol":  0.2374,
  "close":         73923.87,
  "last_update_ms": 1776236100000,
  "last_transition": null
}
GET /v1/regime/{symbol}
GET /v1/regime/{symbol}/history
WS  /v1/stream

Pricing

Pay what a developer pays.

Free
$0
  • — 60 requests / minute per IP
  • — Current regime + last 24h history
  • — All 20 tracked pairs
  • — No signup
Pro
 
$49/mo
  • — 600 requests / minute per key
  • — REST + WebSocket stream
  • — Full historical archive
  • — API key issued at checkout

No spam. One email when checkout goes live.

Pro Plus
$149/mo
  • — 6,000 requests / minute per key
  • — Webhook delivery (batched or immediate)
  • — Multi-timeframe consensus endpoint
  • — Per-key symbol allowlist
  • — Priority polling slot

Annual billing: 2 months free on Pro and Pro Plus. All plans include a 14-day trial.