ALPHA TIER HISTORICAL LEAK-FREE

Historical VRP Data API

Volatility Risk Premium with leak-free percentiles & z-scores - by design. Percentile history is date-bounded so any historical query at at only sees data with SnapshotDate < at.Date. No lookahead bias. Same shape as live /v1/vrp. Why this matters →

Coverage
2017-01-03 → 2026-07-17
Granularity
1 minute
Tier
Alpha+
Format
JSON (REST)

Endpoint

GET/v1/vrp/{symbol}?at=...
Host: historical.flashalpha.comAuth: X-Api-KeyTier: Alpha
curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://historical.flashalpha.com/v1/vrp/SPY?at=2026-03-05T15:30:00"

Response

{
  "symbol": "SPY",
  "underlying_price": 679.46,
  "as_of": "2026-03-05T15:30:00",
  "vrp": {
    "atm_iv": 18.37,
    "rv_5d":  11.38,
    "rv_20d": 10.26,
    "vrp_5d": 6.99,
    "vrp_20d": 8.11,
    "z_score":   2.84,
    "percentile": 100,
    "history_days": 60
  },
  "variance_risk_premium": 0.0232,
  "convexity_premium":     5.43,
  "fair_vol":              23.8,
  "term_vrp":      [ { "dte": 7, "iv": "...", "rv": "...", "vrp": "..." } ],
  "directional":   { "downside_vrp": "...", "upside_vrp": "..." },
  "gex_conditioned":   { "regime": "...", "harvest_score": "..." },
  "vanna_conditioned": { "outlook": "...", "interpretation": "..." },
  "regime":            { "gamma": "positive_gamma", "vrp_regime": "...", "gamma_flip": 677.5 },
  "strategy_scores":   { "short_put_spread": "...", "short_strangle": "...", "iron_condor": "...", "calendar_spread": "..." },
  "macro": { "vix": 23.75, "vix_3m": "...", "vix_term_slope": "...", "dgs10": "...", "hy_spread": 3.5 }
}

What This Unlocks

  • Backtest vol-selling strategies honestly - percentile + z_score reflect only data knowable at the as-of timestamp. No accidental forward-leaking.
  • Validate "VRP > X percentile" entry rules using vrp_5d / vrp_20d against the actual historical sequence.
  • Replay regime-conditioned VRP - gex_conditioned.harvest_score across positive vs negative gamma for strategy scoring.
  • Score structures point-in-time - strategy_scores (short strangle, iron condor, calendar) graded on the VRP that was actually live.
  • Condition on macro - join convexity_premium and fair_vol against the as-of macro.vix_term_slope to isolate VRP that survives a VIX-term filter.

Related reading