VIX State API - Overvixing / Undervixing Regime - FlashAlpha Lab API
Lab API VIX State

VIX State API

Regime label for the index complex comparing spot VIX against SPX 20-day realized vol, classifying the market as overvixing, undervixing, or neutral.

Endpoint

GET /v1/macro/vix-state
Auth required (X-Api-Key) Rate Limited: Yes Growth plan+

Parameters

Name In Required Default Description
None
curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/macro/vix-state"
import requests

resp = requests.get(
    "https://lab.flashalpha.com/v1/macro/vix-state",
    headers={"X-Api-Key": "YOUR_API_KEY"}
)
data = resp.json()
print(f"State: {data['state']}")
const resp = await fetch(
  "https://lab.flashalpha.com/v1/macro/vix-state",
  { headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log("State: " + data.state);

Response

{
  "as_of": "2026-05-30T15:30:00Z",
  "vix": 18.4,
  "spx_rv_20d": 11.2,
  "spread": 7.2,
  "ratio": 1.6428,
  "state": "overvixing",
  "interpretation": "VIX trades 7.2pp above SPX 20d realized - premium rich, favours short-vol setups."
}

Key Response Fields

Field Description
vixVIX spot from live MarketDataStore.StockQuotes["VIX"].Mid.
spx_rv_20dSPX 20-day annualised realized vol (%). Preferred source is the latest DailyVrpSnapshots row for SPX; falls back to live computation from Yahoo closes when no snapshot exists.
spreadvix − spx_rv_20d (vol points).
ratiovix / spx_rv_20d. null when spx_rv_20d == 0.
stateovervixing (spread ≥ 5), undervixing (spread ≤ 0), neutral (0 < spread < 5).

Errors

Status Description
404 no_vixVIX quote unavailable in the live store.
404 no_rv_dataNo SPX history sufficient to compute RV20d (neither snapshot nor live closes).

About

VIX State produces an "overvixing / undervixing" regime label for the index complex by comparing spot VIX against SPX 20-day realized vol. The signed spread drives the classification: overvixing when the spread is at least 5 vol points, undervixing when it is at or below 0, and neutral in between.

Thresholds are calibrated against typical regimes: around 4pp average premium in quiet markets, and roughly 0pp or inverted in crashes when realized vol catches up to implied. This is a single-snapshot classifier; for a time series of the state, build on top of /v1/vrp/{symbol}/history for SPX.

Methodology

The classifier compares two directly observable numbers and avoids any model fit. The implied leg is spot VIX - the market's 30-day forward volatility expectation. The realized leg is spx_rv_20d, the close-to-close realized volatility of SPX over the trailing 20 trading days, computed from log-returns with sample standard deviation and annualized by √252 (the same realized-vol definition used across the Lab API, matching Bloomberg and QuantLib conventions).

The signed spread vix − spx_rv_20d is the volatility risk premium in vol points - how much extra the market charges for forward protection over what the index has actually been delivering. The 5-point and 0-point cutoffs are not arbitrary. In quiet, trending markets that premium sits around 4 points (implied persistently rich), so a spread at or above 5 marks an unusually rich, mean-reversion-prone overvixing state that historically favours short-vol setups. As realized vol catches up to or overtakes implied - the late stage of a selloff - the spread collapses toward 0 or inverts, flagging undervixing where carry no longer compensates for tail risk. The band in between is neutral.

The ratio field (vix / spx_rv_20d) is provided as a scale-free companion for cross-regime comparison and is null when spx_rv_20d is 0. Because the label is computed from a single snapshot, persist it or rebuild it from /v1/vrp/{symbol}/history to study regime transitions rather than a point-in-time reading.

Common Use Cases

  • Decide short-vol versus long-vol bias from the state label - overvixing favours short-vol setups, undervixing warns carry no longer compensates for tail risk
  • Gate strategy entries on spread crossing the 5-point overvixing threshold so premium-selling only fires when the VRP is genuinely rich
  • Use ratio (vix / spx_rv_20d) as a scale-free companion to compare today's richness against prior regimes
  • Surface the interpretation string as a one-line market-context banner on a dashboard
  • Size or hedge tail exposure when the spread collapses toward 0 or inverts - the late-selloff signature of realized catching up to implied
  • Persist the snapshot label or rebuild it from VRP History to study regime transitions rather than a point-in-time reading

Related reading

Complementary endpoints

  • VRP - the per-symbol implied-minus-realized premium underneath the regime label
  • Volatility - the implied-vol surface behind the VIX leg
  • Spot-Vol Correlation - whether the inverse leverage effect still holds within the regime
  • Skew Term Structure - whether wing skew is rich while the index is overvixing

Ready to build with FlashAlpha?

Get your free API key and start pulling live options data in 30 seconds.

No credit card required Setup in 60 seconds Secure & reliable