Options · Exposure, levels, volatility and OI
Options volatility term structure
/v1/options/volatility/term-structureoptionsVolatilityTermStructureThe implied volatility of each listed expiration with its forward and expected move, the volatility interpolated to 7, 14, 30, 60, 90, 180 and 365 days, the forward volatility between consecutive expirations (null when the interval is under a day or the variance is inverted) and the slopes between 7, 30 and 60 days. When an SPX third-Friday expiration has both an AM (SPX) and a PM (SPXW) root, only the later one is on_curve. Volatilities are decimals solved by the platform.
Example request
curl -sS --get "https://api.ordermap.si/v1/options/volatility/term-structure" \
-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/term-structure?${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
8 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. |
measurequeryoptional | stringatmdelta_banddefault atm | atm: the at-the-money volatility; delta_band: the mean volatility of contracts with an absolute delta within min_abs_delta and max_abs_delta. |
min_queryoptional | numbermin 0max 1 | Delta band only: lower bound of the absolute delta. |
max_queryoptional | numbermin 0max 1 | Delta band only: upper bound of the absolute delta. |
contract_queryoptional | stringcallput | Calls or puts. Omit for both. |
max_queryoptional | integerdefault 400min 1max 1000 | Longest expiration, in days. |
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 term structure.28 fields insideconstant_maturityarray<object>requiredVolatility interpolated to fixed maturities.2 fields insidedaysintegerrequiredMaturity in days.implied_volatilitynumber | nullrequiredInterpolated volatility; null beyond the listed expirations.
expirationsarray<object>requiredListed expirations, soonest first.8 fields insidedate_of_expirystringdaterequiredExpiration.days_to_expiryintegerrequiredDays from the trading date.expected_movenumber | nullrequiredOne-standard-deviation expected move: price x volatility x square root of time.forwardnumber | nullrequiredForward price.forward_volatilitynumber | nullrequiredVolatility implied between the previous expiration and this one; null for the first, for intervals under a day and for inverted variance.implied_volatilitynumber | nullrequiredImplied volatility.on_curvebooleanrequiredThe expiration is on the term curve (false for the AM root when a PM root expires the same day).underlying_symbolstringrequiredOption root of the expiration.
measurestringrequiredatm or delta_band.atmdelta_bandrootsarray<string>requiredOption roots included.sessionstringrequiredSession valued.rthgthcurballslopeobjectrequiredTerm slopes.2 fields insideiv30_minus_iv7number | nullrequired30-day minus 7-day volatility.iv60_over_iv30number | nullrequired60-day over 30-day volatility.
trading_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": {
"constant_maturity": [
{
"days": 7,
"implied_volatility": 0.152
},
{
"days": 365,
"implied_volatility": null
}
],
"expirations": [
{
"date_of_expiry": "2026-10-23",
"days_to_expiry": 7,
"expected_move": 41.2,
"forward": 6026.3,
"forward_volatility": 0.158,
"implied_volatility": 0.152,
"on_curve": true,
"underlying_symbol": "SPXW"
}
],
"measure": "atm",
"roots": [
"SPX",
"SPXW"
],
"session": "rth",
"slope": {
"iv30_minus_iv7": 0.0054,
"iv60_over_iv30": 1.0246
},
"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.