Options · Exposure, levels, volatility and OI
Options volatility skew
/v1/options/volatility/skewoptionsVolatilitySkewFor each expiration, the implied volatility of calls, puts and the out-of-the-money option at every strike, with the delta, the at-the-money volatility and the forward, plus the 25-delta and 10-delta risk reversal (call minus put volatility) and butterfly, the normalized skew and the slope. Volatilities are decimals (0.18 is 18%) solved from the option chain by the platform, not quoted by an exchange. The default is the nearest four expirations with at least an hour to run.
Example request
curl -sS --get "https://api.ordermap.si/v1/options/volatility/skew" \
-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/skew?${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 ... |
datequeryoptional | stringdate | Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. |
sessionqueryoptional | stringrthgthdefault rth | Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which. |
date_queryoptional | stringdate | The expiration to show. Default: the nearest four. |
expirationsqueryoptional | array<string>comma-separated in one parameter1 to 8 itemseach at most 128 characterspattern ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ | Expirations to show, comma separated (YYYY-MM-DD), at most 8. |
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
dataobjectrequiredVolatility skew.31 fields insideexpirationsarray<object>requiredThe expirations shown, soonest first.18 fields insideatm_implied_volatilitynumber | nullrequiredAt-the-money implied volatility.butterfly_10dnumber | nullrequired10-delta butterfly.butterfly_25dnumber | nullrequiredAverage of the 25-delta call and put volatility minus the at-the-money volatility.date_of_expirystringdaterequiredExpiration.days_to_expiryintegerrequiredDays from the trading date.forwardnumber | nullrequiredForward price implied by the chain.normalized_skewnumber | nullrequiredRisk reversal over the at-the-money volatility.pointsarray<object>requiredStrikes, ascending.7 fields insidecall_deltanumber | nullrequiredCall delta.call_implied_volatilitynumber | nullrequiredCall implied volatility.moneynessnumber | nullrequiredLog-moneyness: ln(strike / forward); null when the forward is unknown.otm_implied_volatilitynumber | nullrequiredImplied volatility of the out-of-the-money option at the strike.put_deltanumber | nullrequiredPut delta.put_implied_volatilitynumber | nullrequiredPut implied volatility.strikenumberrequiredStrike.
risk_reversal_10dnumber | nullrequired10-delta risk reversal.risk_reversal_25dnumber | nullrequired25-delta call volatility minus put volatility.slopenumber | nullrequiredSlope of volatility against moneyness.
rootsarray<string>requiredOption roots included.sessionstringrequiredSession valued.rthgthcurballtrading_datestringdaterequiredTrading date valued.underlying_symbolstringrequiredThe requested underlying.valuationobjectrequiredWhat the snapshot was valued on.7 fields insidechain_timestampinteger | nullunix-msrequiredTime of the option chain the valuation used. Unix epoch milliseconds (UTC).open_interest_datestring | nulldaterequiredDate of the open interest the positioning is based on.risk_free_ratenumber | nullrequiredContinuously compounded risk-free rate used.timestampinteger | nullunix-msrequiredValuation time. Unix epoch milliseconds (UTC).underlying_pricenumber | nullrequiredUnderlying price used.underlying_stalebooleanrequiredThe underlying price is older than the freshness limit.underlying_timestampinteger | nullunix-msrequiredTime of the underlying price. Unix epoch milliseconds (UTC).
metaobjectrequiredMeta object
Example response
{
"data": {
"expirations": [
{
"atm_implied_volatility": 0.152,
"butterfly_10d": 0.021,
"butterfly_25d": 0.009,
"date_of_expiry": "2026-10-23",
"days_to_expiry": 7,
"forward": 6026.3,
"normalized_skew": -0.204,
"points": [
{
"call_delta": 0.55,
"call_implied_volatility": 0.154,
"moneyness": -0.0044,
"otm_implied_volatility": 0.155,
"put_delta": -0.45,
"put_implied_volatility": 0.155,
"strike": 6000
}
],
"risk_reversal_10d": -0.058,
"risk_reversal_25d": -0.031,
"slope": -1.6
}
],
"roots": [
"SPX",
"SPXW"
],
"session": "rth",
"trading_date": "2026-10-16",
"underlying_symbol": "SPX",
"valuation": {
"chain_timestamp": 1792160995000,
"open_interest_date": "2026-10-15",
"risk_free_rate": 0.0412,
"timestamp": 1792161000000,
"underlying_price": 6021.4,
"underlying_stale": false,
"underlying_timestamp": 1792160999000
}
},
"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.