Options · Exposure, levels, volatility and OI
Options volatility rank
/v1/options/volatility/rankoptionsVolatilityRankWhere the current constant-maturity implied volatility stands in its range over the lookback: the rank ((current - minimum) / (maximum - minimum)) and the percentile (the share of days with a lower volatility), with the daily series they are computed from. The history is the platform's own daily record; coverage_ratio is the share of lookback days it holds, and history_status reports a series that is still loading. The default window is the longest your plan allows, up to 365 days.
Example request
curl -sS --get "https://api.ordermap.si/v1/options/volatility/rank" \
-H "Authorization: Bearer $ORDERMAP_API_KEY" \
--data-urlencode underlying_symbol=SPXWconst params = new URLSearchParams({
underlying_symbol: "SPXW",
});
const res = await fetch(`https://api.ordermap.si/v1/options/volatility/rank?${params}`, {
headers: { Authorization: `Bearer ${process.env.ORDERMAP_API_KEY}` },
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const { data, meta } = await res.json();
console.log(data, meta.coverage);Set ORDERMAP_API_KEY to your key. Replace the dates with a recent trading date.
Parameters
5 parameters, 1 required.
| Parameter | Type and limits | Description |
|---|---|---|
underlying_queryrequired | stringat most 8 characterspattern ^[A-Za-z][A-Za-z0-9.]{0,7}$ | Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ... |
maturityqueryoptional | string714306090180365default 30 | Constant maturity of the volatility, in days: 7, 14, 30, 60, 90, 180 or 365. |
lookbackqueryoptional | integerdefault 365min 20max 365 | Days the rank is measured over; never more than your plan's history window (a longer request is shortened, with a warning). |
start_queryoptional | integerunix-msmin 946684800000max 4102444800000 | Start of the returned series. Default: the start of your plan's history window (up to 365 days). |
end_queryoptional | integerunix-msmin 946684800000max 4102444800000 | Evaluation time. Default: now. |
Response
| Status | Meaning | Body |
|---|---|---|
200 | Successful response. | Schema below |
400 | Invalid, unknown or repeated parameters, or an invalid cursor. | Error object |
401 | Missing or invalid API key. | Error object |
403 | The plan, dataset release or account state does not allow this request. | Error object |
422 | The request is valid but no data exists for it. | Error object |
429 | Rate limit, burst limit or cooldown; wait Retry-After seconds.Retry-After | Error object |
500 | Internal error. | Error object |
503 | Data temporarily unavailable; retry after Retry-After seconds.Retry-After | Error object |
504 | The request timed out. | Error object |
Authenticated responses carry the X-RateLimit-* headers (see rate limits); 429 and 503 add Retry-After.
200 response body
dataobjectrequiredImplied volatility rank.22 fields insidecurrentobjectrequiredThe latest value.7 fields insidecoverage_rationumber | nullrequiredShare of the window's days with data, 0 to 1.datestringrequiredDate of the latest value.implied_volatilitynumber | nullrequiredImplied volatility as a decimal.percentilenumber | nullrequiredPercentile, 0 to 1.ranknumber | nullrequiredRank, 0 to 1.window_maximumnumber | nullrequiredHighest volatility in the window.window_minimumnumber | nullrequiredLowest volatility in the window.
historyarray<object>requiredDaily series, oldest first.5 fields insidedatestringdaterequiredDate.implied_volatilitynumber | nullrequiredImplied volatility.percentilenumber | nullrequiredPercentile on that date.ranknumber | nullrequiredRank on that date.underlying_pricenumber | nullrequiredUnderlying close.
history_statusobjectrequiredState of the stored history.4 fields insidefromstring | nullrequiredFirst date being loaded.progressnumber | nullrequiredProgress while loading, 0 to 1.statestringrequiredready; queued or running while missing days load; failed; or unavailable when missing days are not stored and not being loaded.readyqueuedrunningfailedunavailabletostring | nullrequiredLast date being loaded.
lookback_daysintegerrequiredRank window.maturity_daysintegerrequiredConstant maturity.underlying_symbolstringrequiredThe requested underlying.
metaobjectrequiredMeta object
Example response
{
"data": {
"current": {
"coverage_ratio": 1,
"date": "2026-10-16",
"implied_volatility": 0.171,
"percentile": 0.41,
"rank": 0.28,
"window_maximum": 0.452,
"window_minimum": 0.109
},
"history": [
{
"date": "2026-10-15",
"implied_volatility": 0.169,
"percentile": 0.4,
"rank": 0.27,
"underlying_price": 6004.8
}
],
"history_status": {
"from": null,
"progress": 1,
"state": "ready",
"to": null
},
"lookback_days": 365,
"maturity_days": 30,
"underlying_symbol": "SPX"
},
"meta": {
"as_of": 1760659200123,
"coverage": {
"complete": true
},
"delay_ms": 0,
"delayed": false,
"request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
"source": "opra"
}
}Values are illustrative. Missing values are null, never 0.