Lab API
Volatility Analysis
Volatility Analysis API
Comprehensive volatility analysis: realized vol across multiple windows, IV-RV spreads, delta-based skew profiles, GEX by DTE, theta decay, hedging scenarios, OI concentration, and liquidity metrics.
Endpoint
Auth required (
X-Api-Key)
Rate Limited: Yes
Growth plan+
Parameters
| Name | In | Required | Description |
|---|---|---|---|
symbol |
path | yes | Underlying symbol (e.g. SPY, TSLA, AAPL) |
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://lab.flashalpha.com/v1/volatility/TSLA"
import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/volatility/TSLA",
headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(f"ATM IV: {data['atm_iv']:.1f}%")
print(f"RV 20D: {data['realized_vol']['rv_20d']:.1f}%")
print(f"VRP Assessment: {data['iv_rv_spreads']['assessment']}")
const resp = await fetch(
"https://lab.flashalpha.com/v1/volatility/TSLA",
{ headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log(`ATM IV: ${data.atm_iv.toFixed(1)}%`);
console.log(`RV 20D: ${data.realized_vol.rv_20d.toFixed(1)}%`);
console.log(`Assessment: ${data.iv_rv_spreads.assessment}`);
Response
{
"symbol": "TSLA",
"underlying_price": 265.50,
"as_of": "2026-03-09T15:30:00Z",
"market_open": true,
"realized_vol": {
"rv_5d": 52.31, "rv_10d": 48.12, "rv_20d": 45.80,
"rv_30d": 44.20, "rv_60d": 42.15
},
"atm_iv": 48.50,
"iv_rv_spreads": {
"vrp_5d": -3.81, "vrp_10d": 0.38, "vrp_20d": 2.70,
"vrp_30d": 4.30, "vrp_60d": 6.35,
"assessment": "moderate_premium"
},
"skew_profiles": [
{
"expiry": "2026-03-14", "days_to_expiry": 5,
"put_10d_iv": 62.50, "put_25d_iv": 54.20,
"atm_iv": 48.50, "call_25d_iv": 45.10, "call_10d_iv": 43.80,
"skew_25d": 9.10, "smile_ratio": 1.202, "tail_convexity": 2.60
}
],
"term_structure": {
"near_slope_pct": 5.20, "far_slope_pct": 3.10, "state": "contango"
},
"iv_dispersion": { "cross_expiry": 3.45, "cross_strike": 12.80 },
"gex_by_dte": [
{ "bucket": "0-7d", "net_gex": 1200000, "pct_of_total": 35.2, "contract_count": 450 },
{ "bucket": "8-30d", "net_gex": 800000, "pct_of_total": 23.5, "contract_count": 1200 },
{ "bucket": "31-60d", "net_gex": 950000, "pct_of_total": 27.9, "contract_count": 800 },
{ "bucket": "60d+", "net_gex": 460000, "pct_of_total": 13.4, "contract_count": 600 }
],
"theta_by_dte": [
{ "bucket": "0-7d", "net_theta": -450000, "contract_count": 450 },
{ "bucket": "8-30d", "net_theta": -320000, "contract_count": 1200 }
],
"put_call_profile": {
"by_expiry": [
{ "expiry": "2026-03-14", "call_oi": 120000, "put_oi": 95000,
"pc_ratio_oi": 0.792, "call_volume": 45000, "put_volume": 38000, "pc_ratio_volume": 0.844 }
],
"by_moneyness": {
"otm_call_oi": 85000, "atm_call_oi": 25000, "itm_call_oi": 10000,
"otm_put_oi": 60000, "atm_put_oi": 20000, "itm_put_oi": 15000
}
},
"oi_concentration": {
"top_3_pct": 18.5, "top_5_pct": 28.2, "top_10_pct": 45.0, "herfindahl": 0.032
},
"hedging_scenarios": [
{ "move_pct": -5, "dealer_shares": 850000, "direction": "buy", "notional_usd": 225575000 },
{ "move_pct": -2, "dealer_shares": 340000, "direction": "buy", "notional_usd": 90230000 },
{ "move_pct": -1, "dealer_shares": 170000, "direction": "buy", "notional_usd": 45115000 },
{ "move_pct": 1, "dealer_shares": -170000, "direction": "sell", "notional_usd": 45115000 },
{ "move_pct": 2, "dealer_shares": -340000, "direction": "sell", "notional_usd": 90230000 },
{ "move_pct": 5, "dealer_shares": -850000, "direction": "sell", "notional_usd": 225575000 }
],
"liquidity": {
"atm_avg_spread_pct": 1.85, "wing_avg_spread_pct": 45.20,
"atm_contracts": 120, "wing_contracts": 340
}
}
Response Fields
| Section | Field | Description |
|---|---|---|
realized_vol | rv_5d – rv_60d | Annualized realized vol (%) for 5, 10, 20, 30, 60 day windows. Log-returns, sample std dev, ×√252. |
atm_iv | — | At-the-money implied volatility from nearest SVI slice (%) |
iv_rv_spreads | vrp_Nd | IV minus RV spread per window. Positive = IV rich. |
iv_rv_spreads | assessment | VRP regime: very_high_premium, healthy_premium, moderate_premium, thin_premium, negative_spread, danger_zone |
skew_profiles[] | skew_25d | 25-delta risk reversal: put_25d − call_25d |
skew_profiles[] | smile_ratio | Put 25d IV / Call 25d IV. >1 = put skew dominant |
skew_profiles[] | tail_convexity | Wing curvature: (put10-put25) − (put25-ATM). Positive = steep tail |
term_structure | state | contango, backwardation, mixed, or unknown |
gex_by_dte[] | bucket, net_gex, pct_of_total | GEX bucketed by DTE: 0-7d, 8-30d, 31-60d, 60d+ |
theta_by_dte[] | net_theta | Aggregate theta × OI × 100 per DTE bucket |
oi_concentration | herfindahl | Herfindahl index (0-1). Higher = more concentrated |
hedging_scenarios[] | move_pct, dealer_shares, notional_usd | Estimated dealer hedging for ±1%, ±2%, ±5% moves |
liquidity | atm_avg_spread_pct | Average bid-ask spread % for ATM options (within 2% of spot) |
liquidity | wing_avg_spread_pct | Average bid-ask spread % for wings (>10% OTM) |
Notes
- Realized vol uses close-to-close log-returns with sample standard deviation (N-1), annualized by √252.
- Skew profiles use delta-to-moneyness approximation: k = ±σ√t × Φ¹(δ). 25-delta uses 0.6745, 10-delta uses 1.2816.
- Tail convexity measures the second difference of the skew. Positive values indicate steep left-wing curvature (crash protection being bid).
- GEX by DTE uses the SpotGamma convention: gamma × OI × 100 × spot² × 0.01.
- Herfindahl index ranges from 1/N (perfectly even) to 1.0 (all OI at one strike). Values above 0.10 suggest high concentration.
- Hedging scenarios assume dealers are net short options. Positive GEX + upward move = dealers sell shares.
What Is the Volatility Analysis Endpoint?
The /v1/volatility/{symbol} endpoint returns a deep volatility profile for any US equity or ETF. It covers realized volatility across 5 windows (5d, 10d, 20d, 30d, 60d), IV-RV spread assessments, delta-based skew profiles per expiry, IV term structure analysis, gamma exposure bucketed by days to expiry, theta decay by DTE, put/call breakdowns by expiry and moneyness, OI concentration metrics (Herfindahl index), multi-move dealer hedging scenarios (±1%, ±2%, ±5%), and options liquidity analysis.
Common Use Cases
- Vol premium trading — compare realized vol across windows to ATM IV to identify rich/cheap vol regimes
- Skew analysis — 10-delta and 25-delta skew profiles per expiry reveal crash protection demand and tail risk pricing
- DTE-based strategies — GEX and theta bucketed by DTE help select optimal expiries for calendar spreads or wheel strategies
- Risk management — multi-move hedging scenarios show estimated dealer flow for ±1%, ±2%, and ±5% spot moves
- Liquidity scoring — ATM vs wing bid-ask spreads help assess execution cost before entering a position
- Concentration risk — OI Herfindahl index and top-strike percentages reveal pin risk and gamma clustering