Skew Term Structure API - 25Δ/10Δ Wing IV & Risk Reversals - FlashAlpha Lab API
Lab API Skew Term Structure

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

GET /v1/volatility/skew-term/{symbol}
Auth required (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_ivAt-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_ivIV (%) at delta ≈ ±0.25 - actual contract lookup, not surface-interpolated.
put_10d_iv / call_10d_ivIV (%) at delta ≈ ±0.10.
skew_25dput_25d_iv − call_25d_iv. Positive ⇒ put skew dominant.
risk_reversal_25dcall_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
403Requires Growth plan or higher
404Symbol 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_25d per expiry - positive skew flags downside protection bid richer than upside
  • Compare skew_25d across 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_convexity for 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_iv instead of re-deriving wing IVs
  • Feed the standardized skew_25d / butterfly_25d / tail_convexity fields into a vol-desk dashboard or cross-symbol skew screener

Related reading

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.