VRP History API - Daily VRP Time Series - FlashAlpha Lab API
Lab API VRP History

VRP History API

Daily volatility risk premium time series for charting and backtesting, populated nightly after market close.

Endpoint

GET /v1/vrp/{symbol}/history
Auth required (X-Api-Key) Rate Limited: Yes Alpha plan+

Parameters

Name In Required Default Description
symbol path yes - Stock/ETF ticker
days query no 30 Lookback days (1-365)
curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/vrp/SPY/history?days=30"
import requests

resp = requests.get(
    "https://lab.flashalpha.com/v1/vrp/SPY/history",
    headers={"X-Api-Key": "YOUR_API_KEY"},
    params={"days": 30}
)
data = resp.json()
print(f"Data points: {data['data_points']}")
const resp = await fetch(
  "https://lab.flashalpha.com/v1/vrp/SPY/history?days=30",
  { headers: { "X-Api-Key": "YOUR_API_KEY" } }
);
const data = await resp.json();
console.log("Data points: " + data.data_points);

Response

{
  "symbol": "SPY",
  "days": 30,
  "data_points": 22,
  "history": [
    {
      "date": "2026-05-30",
      "spot": 531.55,
      "atm_iv": 13.4,
      "rv_5d": 9.8,
      "rv_30d": 11.2,
      "vrp_20d": 2.2,
      "straddle": 6.85,
      "expected_move_1d": 4.32
    }
  ]
}

Key Response Fields

Field Type Description
symbolstringTicker symbol
daysnumberRequested lookback
data_pointsnumberNumber of data points returned
history[].datedateSnapshot date
history[].spotnumberClose price
history[].atm_ivnumber?ATM IV (%)
history[].rv_5d ... rv_30dnumber?Realized vol windows
history[].vrp_20dnumber?VRP spread (ATM_IV - RV20d)
history[].straddlenumber?ATM straddle price ($)
history[].expected_move_1dnumber?1-day expected move ($)

Errors

Status Description
403Requires Alpha plan or higher

About

VRP History returns a daily volatility risk premium time series for charting and backtesting. Each row pairs the close price with ATM IV, realized vol windows, the 20-day VRP spread (ATM_IV minus RV20d), ATM straddle price, and the 1-day expected move. The series is populated by the nightly data service after market close (4:35 PM ET).

ATM IV is computed via BSM from Thetadata option snapshots, independent of real-time pollers. Realized vol comes from Yahoo Finance historical closes using log returns and sample standard deviation. Z-score and percentile metrics become available after 5 or more data points have accumulated.

Common Use Cases

  • Chart the implied-versus-realized spread over time by plotting history[].atm_iv against the rv_5d...rv_30d windows per symbol
  • Backtest short-vol or long-vol entries against historical vrp_20d to measure the edge of selling when the spread is wide
  • Score expected-move accuracy by comparing expected_move_1d to the next day's realized close-to-close move
  • Build percentile or z-score overlays from the vrp_20d series once 5+ data_points exist, defining rich/cheap thresholds with no lookahead bias
  • Calibrate straddle pricing by tracking history[].straddle versus realized range to size premium-selling positions
  • Detect regime shifts where vrp_20d compresses or flips negative, flagging when realized vol is overtaking implied

Related reading

Complementary endpoints

  • VRP - the live VRP dashboard with z-score, percentile, and dealer risk
  • Realized Volatility - the RV windows that anchor the spread
  • VIX State - index-level vol regime context for the time series

Ready to build?

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