Skew Term Structure API
Skew term structure with vol-desk naming conventions: for each expiry, ATM IV, 25Δ and 10Δ wing IVs, plus skew_25d, risk_reversal_25d, butterfly_25d, and tail_convexity.
Endpoint
X-Api-Key)
Rate Limited: Yes
Growth plan+
Parameters
| Name | In | Required | Default | Description |
|---|---|---|---|---|
symbol |
path | yes | - | Underlying symbol |
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://lab.flashalpha.com/v1/volatility/skew-term/SPY"
import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/volatility/skew-term/SPY",
headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(f"Front skew_25d: {data['expiries'][0]['skew_25d']}")
const resp = await fetch(
"https://lab.flashalpha.com/v1/volatility/skew-term/SPY",
{ headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log("Front skew_25d: " + data.expiries[0].skew_25d);
Response
{
"symbol": "SPY",
"underlying_price": 597.50,
"as_of": "2026-05-29T15:30:00Z",
"expiries": [
{
"expiry": "2026-05-30", "dte": 1,
"atm_iv": 12.30,
"put_25d_iv": 15.80, "call_25d_iv": 11.10,
"put_10d_iv": 18.40, "call_10d_iv": 10.20,
"skew_25d": 4.70,
"risk_reversal_25d": -4.70,
"butterfly_25d": 1.15,
"tail_convexity": -0.90
}
]
}
Key Response Fields
| Field | Definition |
|---|---|
atm_iv | At-the-money IV (%) from the BSM-IV contract closest to ATM (same path as /v1/volatility/{symbol}'s skew_profiles[]; no SVI fit involved). |
put_25d_iv / call_25d_iv | IV (%) at delta ≈ ±0.25 - actual contract lookup, not surface-interpolated. |
put_10d_iv / call_10d_iv | IV (%) at delta ≈ ±0.10. |
skew_25d | put_25d_iv − call_25d_iv. Positive ⇒ put skew dominant. |
risk_reversal_25d | call_25d_iv − put_25d_iv (= −skew_25d). FX / vol-desk convention. |
butterfly_25d | (call_25d_iv + put_25d_iv) / 2 − atm_iv. Wing premium over ATM. |
tail_convexity | (put_10d − put_25d) − (put_25d − atm) - second difference of the put wing. Positive ⇒ steep tail. |
Errors
| Status | Description |
|---|---|
403 | Requires Growth plan or higher |
404 | Symbol not found, no options data, or no SVI fits available |
About
Returns the skew term structure using standard vol-desk naming conventions. For each expiry it reports ATM IV, the 25Δ and 10Δ wing IVs, and the three named conventions - skew_25d, risk_reversal_25d, butterfly_25d - plus tail_convexity.
The math is identical to the skew_profiles[] block returned by /v1/volatility/{symbol}; this endpoint projects it to a flatter term-structure shape and adds the risk_reversal_25d / butterfly_25d aliases. Expirations without contracts close enough to the ±25Δ / ±10Δ targets are dropped silently.
Methodology
For each listed expiry the endpoint locates the option contracts whose Black-Scholes delta sits closest to the ±0.25 and ±0.10 targets and reads their implied volatility directly - these are actual quoted contracts, not points interpolated off a fitted surface. ATM IV is the IV of the contract nearest the forward-at-the-money strike, on the same path used by skew_profiles[]. Working from observed contracts rather than an SVI fit keeps the wing measurements faithful to where quotes and liquidity actually sit, at the cost of dropping any expiry that has no contract close enough to a delta target.
The four published metrics are deterministic functions of those IVs:
skew_25d=put_25d_iv − call_25d_iv. The raw 25Δ put-over-call premium; positive means downside protection is bid richer than upside.risk_reversal_25d=call_25d_iv − put_25d_iv(exactly−skew_25d). The FX / vol-desk sign convention, where a negative number signals put skew.butterfly_25d=(call_25d_iv + put_25d_iv) / 2 − atm_iv. The average wing IV over ATM - a read on how convex (smile-shaped) the strip is, independent of its directional tilt.tail_convexity=(put_10d_iv − put_25d_iv) − (put_25d_iv − atm_iv). The second difference of the put wing; positive values mean the curve steepens further out of the money - the signature of crash-protection demand rather than a uniformly elevated smile.
Because the front expiry carries most 0DTE and weekly flow, comparing skew_25d across the term structure separates a genuine directional skew (consistent across expiries) from an event-driven front-month distortion (steep in the front, flat in the back).
Common Use Cases
- Read directional bias from
skew_25d/risk_reversal_25dper expiry - positive skew flags downside protection bid richer than upside - Compare
skew_25dacross expiries to separate a genuine directional skew (consistent down the curve) from an event-driven front-month distortion (steep front, flat back) - Spot expiries where wing premium (
butterfly_25d) is unusually rich or cheap to time butterfly or wing-selling structures - Monitor
tail_convexityfor early signs of crash-protection demand - a steepening 10Δ put wing rather than a uniformly elevated smile - Price risk-reversal and collar structures off the published
put_25d_iv/call_25d_ivinstead of re-deriving wing IVs - Feed the standardized
skew_25d/butterfly_25d/tail_convexityfields into a vol-desk dashboard or cross-symbol skew screener
Related
Related reading
- Volatility skew trading strategies with live data - how to trade the 25Δ skew and risk reversals this endpoint reports
- Vol term structure: contango, backwardation & events - reading the term axis to separate event distortion from structural skew
Complementary endpoints
- Volatility - the full
skew_profiles[]and surface this endpoint projects to a term-structure shape - Advanced Volatility (SVI) - the fitted SVI surface for interpolated wing IVs between delta targets
- VIX State - whether the index complex is overvixing while skew is rich
- Expected Move - pair wing IVs with the implied move to size protection by expiry
Ready to build?
Get your free API key and start pulling live options data in 30 seconds.