Lab API
Advanced Volatility
Advanced Volatility API ALPHA
Raw SVI parameters, total variance surface grids, arbitrage detection, greeks surfaces, and variance swap fair values.
α
Alpha Plan Required
These endpoints require the Alpha+ plan. View pricing →
New to SVI surfaces?
Advanced Volatility API Guide explains SVI parameterization, variance surfaces, and arbitrage detection.
Also see: Build an IV Surface in Python for a hands-on tutorial.
Works with CME index futures.
Pass
ES=F or NQ=F and URL-encode the = as %3D - e.g. /v1/adv_volatility/ES%3DF. Options-on-futures are priced with Black-76 using the CME multiplier ($50/pt ES, $20/pt NQ); CME index futures are Growth-tier. See the futures hub.
Endpoint
Auth required (
X-Api-Key)
Rate Limited: Yes
Alpha 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/adv_volatility/SPY"
import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/adv_volatility/SPY",
headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(f"SVI a: {data['svi_parameters'][0]['a']}")
print(f"ATM IV: {data['svi_parameters'][0]['atm_iv']}%")
print(f"Arbitrage flags: {len(data['arbitrage_flags'])}")
const resp = await fetch(
"https://lab.flashalpha.com/v1/adv_volatility/SPY",
{ headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log(`SVI a: ${data.svi_parameters[0].a}`);
console.log(`ATM IV: ${data.svi_parameters[0].atm_iv}%`);
console.log(`Arbitrage flags: ${data.arbitrage_flags.length}`);
Response
{
"symbol": "SPY",
"underlying_price": 580.51,
"as_of": "2026-03-25T15:00:00Z",
"market_open": true,
"svi_parameters": [
{
"expiry": "2026-04-04",
"days_to_expiry": 10,
"forward": 581.25,
"a": 0.004521,
"b": 0.031245,
"rho": -0.182345,
"m": 0.012345,
"sigma": 0.098765,
"atm_total_variance": 0.008912,
"atm_iv": 17.85
}
],
"forward_prices": [
{
"expiry": "2026-04-04",
"days_to_expiry": 10,
"forward": 581.25,
"spot": 580.51,
"basis_pct": 0.1275
}
],
"total_variance_surface": {
"moneyness": [-0.5, -0.475, 0.475, 0.5],
"expiries": ["2026-04-04", "2026-04-17"],
"tenors": [0.027397, 0.063014],
"total_variance": [[0.0089, 0.0087], [0.0092, 0.0090]],
"implied_vol": [[18.05, 17.92], [18.12, 17.98]]
},
"arbitrage_flags": [
{
"expiry": "2026-04-04",
"type": "butterfly",
"strike_or_k": -0.35,
"description": "Negative butterfly at k=-0.350: d²w/dk²=-0.0152"
}
],
"variance_swap_fair_values": [
{
"expiry": "2026-04-04",
"days_to_expiry": 10,
"fair_variance": 0.009234,
"fair_vol": 18.35,
"atm_iv": 17.85,
"convexity_adjustment": 0.50
}
],
"greeks_surfaces": {
"vanna": {
"strikes": [555, 560, 565, 600, 605],
"expiries": ["2026-04-04", "2026-04-17"],
"values": [[0.00012, 0.00023], [0.00015, 0.00028]]
},
"charm": {
"strikes": [555, 560, 565, 600, 605],
"expiries": ["2026-04-04", "2026-04-17"],
"values": [[0.00045, 0.00038], [0.00052, 0.00041]]
},
"volga": {
"strikes": [555, 560, 565, 600, 605],
"expiries": ["2026-04-04", "2026-04-17"],
"values": [[0.00089, 0.00076], [0.00095, 0.00082]]
},
"speed": {
"strikes": [555, 560, 565, 600, 605],
"expiries": ["2026-04-04", "2026-04-17"],
"values": [[-0.000003, -0.000002], [-0.000004, -0.000003]]
}
}
}
Response Fields
| Section | Field | Description |
|---|---|---|
| SVI Parameters | a, b, ρ, m, σ | Raw SVI parameterization: w(k) = a + b(ρ(k−m) + √((k−m)² + σ²)) |
| SVI Parameters | forward | Implied forward price from put-call parity |
| SVI Parameters | atm_total_variance | w(0) - total variance at-the-money |
| SVI Parameters | atm_iv | ATM implied vol (%) derived from total variance |
| Forward Prices | basis_pct | (Forward − Spot) / Spot × 100 |
| Total Variance Surface | moneyness | Log-moneyness grid for the variance surface: −0.5 to +0.5 in 0.025 steps |
| Total Variance Surface | tenors | Time to expiry in years |
| Total Variance Surface | total_variance | w(k,T) values - rows=expiries, columns=moneyness |
| Total Variance Surface | implied_vol | IV (%) from total variance: σ = √(w/T) × 100 |
| Arbitrage Flags | type | Arbitrage type: butterfly (∂²w/∂k² < 0) or calendar (w decreasing in T) |
| Arbitrage Flags | strike_or_k | Log-moneyness where violation occurs |
| Variance Swap | fair_variance | Integrated fair variance for the variance swap over [−15%, +15%] moneyness |
| Variance Swap | fair_vol | √(fair_variance / T) × 100 |
| Variance Swap | convexity_adjustment | fair_vol − atm_iv - positive = convexity premium from wings |
| Greeks Surfaces | vanna | ∂²V/∂S∂σ surface across strikes and expiries |
| Greeks Surfaces | charm | ∂²V/∂S∂t surface |
| Greeks Surfaces | volga | ∂²V/∂σ² surface |
| Greeks Surfaces | speed | ∂³V/∂S³ surface |
Use Cases
- Build the surface - feed the per-expiry SVI parameters (a, b, rho, m, sigma) into an arbitrage-free implied vol surface for any strike and tenor
- Price the convexity premium - compare fair variance vs ATM IV to quantify the premium priced into the wings for variance-swap and dispersion trades
- Scan for arbitrage - read the butterfly and calendar violation flags to catch mispriced strikes and surface inconsistencies in real time
- Manage second-order risk - use the vanna, charm, volga, and speed greeks surfaces to map exposure across strikes and expiries for portfolio hedging
- Calibrate your own models - pass the raw SVI coefficients into local-vol, stochastic-vol, or exotic pricers as a clean starting fit
- Monitor surface stability - track day-over-day shifts in SVI parameters to detect regime changes before they show up in ATM IV
Related
Related reading
- Engineering arbitrage-free volatility surfaces - the math and pitfalls behind the SVI fit this endpoint returns
Complementary endpoints
- Volatility - realized vol, IV-RV spreads, skew, and term structure context
- SVI Parameters - the raw SVI coefficients on their own for custom models
- Skew Term Structure - skew and term structure isolated across expiries
- Dispersion - index-vs-constituent vol for dispersion and correlation trades
Ready to build?
Get your free API key and start pulling live options data in 30 seconds.