IV-RV Spread (VRP Detail)

Per-window implied-vs-realized volatility spreads with assessment labels — the granular view of the volatility risk premium.

Definition

The per-window spread between ATM implied volatility and realized volatility across 5-day, 10-day, 20-day, and 30-day lookback windows. Each window captures a different horizon of the volatility risk premium. The composite assessment label summarizes whether conditions favour premium selling or buying.

Formula
vrp_Nd = σ_IV(ATM) - σ_RV(N days)

Where N is the lookback window (5, 10, 20, or 30 days). Positive = IV exceeds RV. Negative = RV exceeds IV.

Per-window fields
vrp_5d vrp_10d vrp_20d vrp_30d
Assessment labels
very_high_premium healthy_premium moderate_premium thin_premium negative_spread danger_zone
Interpretation
  • very_high_premium / healthy_premium: IV substantially exceeds RV. Premium selling has a structural edge. Size accordingly.
  • moderate_premium / thin_premium: edge is thin or marginal. Tighten position sizes and be selective on entries.
  • negative_spread / danger_zone: RV exceeds IV. Short premium is structurally unprofitable. Consider debit strategies or flat.

Live Example: SPY

Live SPY data temporarily unavailable. See /stock/spy/vol-surface for current values.

Get IV-RV Spreads via API

Endpoint
GET /v1/volatility/{symbol}
Tier
Growth+
Response shape (iv_rv_spreads section)
{
  "iv_rv_spreads": {
    "vrp_5d": number,
    "vrp_10d": number,
    "vrp_20d": number,
    "vrp_30d": number,
    "assessment": "very_high_premium" | "healthy_premium" |
                  "moderate_premium" | "thin_premium" |
                  "negative_spread" | "danger_zone"
  }
}
curl -H "X-Api-Key: YOUR_KEY" \
  https://lab.flashalpha.com/v1/volatility/SPY
import requests
r = requests.get(
    "https://lab.flashalpha.com/v1/volatility/SPY",
    headers={"X-Api-Key": "YOUR_KEY"}
)
spreads = r.json()["iv_rv_spreads"]
print(f"5d: {spreads['vrp_5d']:.1f}%  20d: {spreads['vrp_20d']:.1f}%")
print(f"Assessment: {spreads['assessment']}")
const r = await fetch(
  "https://lab.flashalpha.com/v1/volatility/SPY",
  { headers: { "X-Api-Key": "YOUR_KEY" } }
);
const s = (await r.json()).iv_rv_spreads;
console.log(`5d: ${s.vrp_5d}%  20d: ${s.vrp_20d}%  Assessment: ${s.assessment}`);

Why IV-RV Spread Matters for Trading

TL;DR

The IV-RV spread is VRP decomposed per window. Persistent positive across windows = strong short-vol edge. Negative = danger.

What it measures
IV minus RV computed separately for 5d, 10d, 20d, 30d, 60d windows.
What it signals
The term structure of the vol risk premium. A healthy curve is positive across all windows; a stressed curve goes negative at the short end first.
Why we measure it
A single VRP number averages a term structure. The per-window view catches early warning signs the aggregate hides.
Who uses it
Vol traders, systematic short-vol desks, volatility targeters.

How to read IV-RV Spread

Positive across all windows
  • Structural short-vol edge present
  • Short premium harvests cleanly
  • Iron condors / strangles win
  • Fits positive gamma
Good for: premium selling across tenors
Negative at short end
  • RV exceeding IV on recent windows
  • Vol regime shifting
  • Early warning for short-vol
  • Reduce exposure
Bad for: short-dated sells — good for: front-month buyers
Mixed / oscillating
  • Some windows positive, some negative
  • No clear regime
  • Trade size down
  • Transition period
Watch

Rules of thumb

  • Short end is leading indicator. 5d and 10d spreads shift first. A negative 5d with positive 30d is a warning.
  • All positive = structural edge. When every window shows IV > RV, short-vol has structural tailwind.
  • Term shape matters. A steeply positive curve (30d much bigger than 5d) vs a flat curve tell different stories.
  • Use with VRP regime. The regime label aggregates the per-window view into an actionable bucket.
  • Event days corrupt short windows. Earnings and FOMC inflate 5d IV-RV — back them out before comparing.

How to Read IV-RV Spreads

The multi-window approach is critical because different trading strategies have different holding periods. A 0DTE iron condor cares about vrp_5d because it is exposed to the most recent realized vol. A monthly credit spread cares about vrp_20d or vrp_30d because it holds through a full realized-vol cycle. Matching your strategy horizon to the right VRP window prevents false signals.

When all four windows are positive, the premium-selling edge is robust across horizons — the market is consistently overpricing movement. When short windows (5d, 10d) are negative but long windows (20d, 30d) are still positive, the underlying may be experiencing a transient vol spike. This is a common setup after a gap move: realized vol spikes for a few days, then mean-reverts. Experienced traders may see this as an entry opportunity if the long-window spread supports the thesis.

The assessment label synthesizes all four windows into a single actionable signal. Use it as a quick filter, then drill into the individual windows for nuance. A danger_zone assessment should halt all short-premium activity regardless of what any single window shows.