Skip to content
GET /v1/spread

Two coins ratio z-score, correlation and mean-reversion signal

Try it live

10 free calls per day — no sign-up, no API key. Goes through the oanor gateway.

Custom headers (optional)
api.oanor.com/cryptopairs-api

It works. Grab an API key and use it in your project.

Get an API key

Code snippets

curl "https://api.oanor.com/cryptopairs-api/v1/spread" \
  -H "x-oanor-key: oanor_test_..."
await fetch("https://api.oanor.com/cryptopairs-api/v1/spread", {
  headers: { "x-oanor-key": "oanor_test_..." }
});
$ch = curl_init("https://api.oanor.com/cryptopairs-api/v1/spread");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);
import requests
requests.get(
    "https://api.oanor.com/cryptopairs-api/v1/spread",
    headers={"x-oanor-key": "oanor_test_..."}
)

Example response

A real response from this endpoint, captured by the latest health check.

{
    "data": {
        "base": "ETH",
        "mean": 0.02923691,
        "note": "z_score = (current ratio - rolling mean) / rolling std-dev of the ETH/BTC price ratio. |z|>=2 is a stretched spread (mean-reversion setup); correlation is the return correlation of the two coins (pairs trading works best on highly correlated pairs). Not financial advice.",
        "pair": "ETH/BTC",
        "quote": "BTC",
        "ratio": 0.02629968,
        "action": "mildly cheap: watch for a long-ETH / short-BTC setup",
        "signal": "lean_long",
        "source": "Binance",
        "std_dev": 0.00160348,
        "z_score": -1.83,
        "window_low": 0.02578139,
        "correlation": 0.906,
        "window_days": 90,
        "window_high": 0.03183988,
        "observations": 91
    },
    "meta": {
        "timestamp": "2026-06-12T10:35:19.991Z",
        "request_id": "b173f89e-1008-448a-97f6-d1a6e46a3dc5"
    },
    "status": "ok",
    "message": "Spread retrieved successfully",
    "success": true
}