Realized vs Implied Volatility: How to Spot the Volatility Risk Premium
The volatility risk premium is the persistent spread between what options imply and what stocks actually deliver. This guide breaks down realized volatility estimators (close-to-close, Parkinson, Yang-Zhang), explains why implied volatility almost always overshoots, maps the five VRP regimes returned by the FlashAlpha API, and shows you how to pull real-time VRP data in Python to decide when selling premium has edge and when to stay away.
Realized volatility (RV) measures how much an asset's price actually moved over a specific lookback window. It is backward-looking and computed from observed returns. The simplest estimator uses daily closing prices, but more advanced estimators extract additional information from intraday highs and lows to produce tighter estimates.
Close-to-Close (Standard) Estimator
The most common RV calculation. Take the standard deviation of log returns over N trading days, then annualize:
Where \(C_i\) is the closing price on day \(i\) and \(\bar{r}\) is the mean log return. This estimator is simple and widely used, but it ignores all intraday price action. A stock that gaps up 5% at the open, trades in a 3% range, and closes unchanged registers zero return for that day — even though it was highly volatile.
Parkinson (High-Low) Estimator
Parkinson (1980) uses daily high and low prices instead of just closes, capturing intraday range information:
Parkinson is approximately 5x more efficient than close-to-close — it achieves the same statistical precision with one-fifth the data. The tradeoff: it assumes continuous trading (no overnight gaps), so it underestimates volatility in assets with large opening gaps.
Yang-Zhang Estimator
Yang-Zhang (2000) combines overnight returns (close-to-open), opening returns (open-to-close), and the Rogers-Satchell intraday estimator into a single minimum-variance formula:
This is the most efficient unbiased estimator for assets with meaningful overnight gaps — which includes nearly every equity. It handles gap risk, intraday range, and drift simultaneously. When you see RV quoted by professional platforms, it is often a Yang-Zhang or Rogers-Satchell variant.
Which estimator should you use? For most trading decisions, close-to-close RV is sufficient and universally understood. Parkinson is better when intraday range matters (e.g., intraday strategies). Yang-Zhang is the gold standard when you need the most accurate single estimate. FlashAlpha's Volatility endpoint returns RV across multiple windows so you can compare short-term and long-term realized movement without computing anything yourself.
Close-to-close estimation uses only the blue dots (closing prices), while the Parkinson estimator uses the full daily high-low range (amber bars) for a more efficient volatility estimate.
What Is Implied Volatility?
Implied volatility (IV) is the market's forward-looking estimate of how much the underlying will move over the life of an option. It is not directly observed — it is implied by the option's price via the Black-Scholes model or its extensions. Given the current option price, underlying price, strike, time to expiry, and risk-free rate, IV is the volatility input that makes the model price match the market price.
Implied Volatility
The annualized standard deviation of returns that the options market is pricing in. IV is forward-looking, reflects supply and demand for options, and embeds the market's collective view of uncertainty — including tail risks, event premiums, and hedging demand that realized volatility cannot capture.
The key distinction: RV tells you what happened. IV tells you what the market expects (and fears) will happen. The gap between them is where the edge lives.
The Volatility Risk Premium: IV Almost Always Exceeds RV
The Volatility Risk Premium (VRP) is the spread between implied volatility and subsequent realized volatility:
Empirically, IV exceeds RV approximately 85-90% of the time on major indices. This is not a market inefficiency — it is compensation for risk. Option sellers bear the risk of extreme moves (crashes, gap events, black swans). Option buyers — primarily institutional hedgers — are willing to overpay for protection because the cost of being unhedged during a tail event far exceeds the cost of persistent premium leakage.
~85-90%
Frequency IV exceeds subsequent RV on SPX (historically)
2-4 pts
Median VRP on SPX 30-day options (long-run)
5 windows
RV lookbacks in FlashAlpha API: 5d, 10d, 20d, 30d, 60d
5 regimes
VRP assessment categories from /v1/volatility
The VRP exists because of a structural supply-demand imbalance. Fund managers must hedge. Pension funds must protect portfolios. Retail investors buy protective puts. This persistent demand for insurance inflates IV above fair value. Option sellers — the insurance providers — collect this premium as compensation for bearing the tail risk.
The VRP is not free money. It averages positive, but the 10-15% of the time when RV exceeds IV, losses can be catastrophic. February 2018 (Volmageddon) and March 2020 (COVID crash) each produced losses of 5-10x the premium collected. Selling volatility without monitoring VRP regime is the textbook definition of picking up pennies in front of a steamroller.
IV (blue) almost always sits above RV (green). The shaded gap between them is the Volatility Risk Premium — compensation that option sellers earn for bearing tail risk. During vol spikes, IV leads RV higher; the premium typically widens during calm markets and compresses during crises.
VRP Regimes: The Five States of the Spread
Not all VRP environments are the same. FlashAlpha's /v1/volatility/{symbol} endpoint classifies the current IV-RV spread into one of five regimes, each with distinct trading implications:
very_high_premium
VRP > 8 pts
IV far exceeds RV. Premium selling is richly compensated — but check for event risk that may justify the premium.
healthy_premium
VRP 3-8 pts
The sweet spot. IV comfortably above RV with edge present and no extreme event risk. Full allocation territory.
thin_premium
VRP 0-3 pts
IV barely exceeds RV. Minimal edge — transaction costs and gamma risk may consume the entire spread.
negative_spread
VRP < 0
RV exceeds IV. Options are underpriced relative to actual movement. Selling premium here has negative expected value.
danger_zone
VRP deeply negative
Extreme dislocation. RV is spiking and IV has not caught up. Capital preservation mode — do not sell premium.
Regime awareness is everything
The difference between a profitable short-vol strategy and a blow-up is almost entirely explained by regime awareness. Sell premium in healthy_premium and very_high_premium (with event risk checks). Reduce size in thin_premium. Avoid entirely in negative_spread and danger_zone. The FlashAlpha API does the regime classification for you in real-time.
Pulling VRP Data from the FlashAlpha API
The GET /v1/volatility/{symbol} endpoint returns ATM implied volatility, realized volatility across five lookback windows (5d, 10d, 20d, 30d, 60d), the IV-RV spread, and the regime assessment. Here is how to pull and interpret it:
The 20-day VRP of 4.70% tells you that implied volatility is pricing in 4.7 percentage points more annualized movement than the stock has actually delivered over the past 20 trading days. The healthy_premium assessment confirms this is a favorable environment for selling premium.
Comparing RV Windows: Short-Term vs Long-Term Realized Vol
Comparing different RV windows reveals whether volatility is accelerating or decelerating — a critical signal for timing premium sales:
import requests
API_KEY = "your_api_key"
BASE_URL = "https://lab.flashalpha.com"
def analyze_rv_term_structure(symbol: str):
"""Compare short-term vs long-term RV to detect vol acceleration."""
resp = requests.get(
f"{BASE_URL}/v1/volatility/{symbol}",
headers={"X-Api-Key": API_KEY}
)
resp.raise_for_status()
vol = resp.json()
rv = vol["realized_vol"]
atm = vol["atm_iv"]
windows = [
("5d", rv["rv_5d"]),
("10d", rv["rv_10d"]),
("20d", rv["rv_20d"]),
("30d", rv["rv_30d"]),
("60d", rv["rv_60d"]),
]
print(f"\n{symbol} — RV Term Structure vs ATM IV ({atm:.1f}%)")
print(f"{'Window':<8} {'RV':>8} {'VRP':>8} {'IV/RV':>8}")
print("-" * 36)
for label, rv_val in windows:
vrp = atm - rv_val
ratio = atm / rv_val if rv_val > 0 else float('inf')
print(f"{label:<8} {rv_val:>7.1f}% {vrp:>7.1f}% {ratio:>7.2f}x")
# Detect acceleration/deceleration
rv_5 = rv["rv_5d"]
rv_60 = rv["rv_60d"]
if rv_5 > rv_60 * 1.3:
print(f"\n⚠ Short-term RV accelerating: 5d ({rv_5:.1f}%) >> 60d ({rv_60:.1f}%)")
print(" Caution: recent movement is elevated — VRP may compress.")
elif rv_5 < rv_60 * 0.7:
print(f"\n✓ Short-term RV decelerating: 5d ({rv_5:.1f}%) << 60d ({rv_60:.1f}%)")
print(" Favorable: recent calm amplifies the premium available.")
else:
print(f"\n— RV stable across windows. No acceleration signal.")
return vol
# Scan a watchlist
for ticker in ["SPY", "TSLA", "NVDA", "AAPL"]:
analyze_rv_term_structure(ticker)
When short-term RV (5d) is dropping while long-term RV (60d) remains elevated, IV tends to be sticky — creating a widening VRP. This is the ideal setup for selling premium. When short-term RV is spiking above long-term RV, the market is in an acceleration phase and the VRP may be about to compress or invert.
Multi-Ticker VRP Scanner
The most practical use of VRP data is scanning a universe for the best premium-selling opportunities. This scanner ranks tickers by VRP richness and filters by regime:
API access: The /v1/volatility/{symbol} endpoint requires a Growth plan. Free tier users get 10 requests per day — enough to check a small watchlist. Full documentation is at /docs/lab-api-volatility.
Trading Implications: When to Sell and When to Stay Away
The VRP regime directly maps to trading decisions. Here is the framework:
Sell Premium When
healthy_premium or very_high_premium regime
IV/RV ratio above 1.15 (IV is 15%+ above RV)
Short-term RV is decelerating (5d RV < 60d RV)
Term structure in contango (front vol > back vol is not extreme)
No major binary events (earnings, FDA, FOMC) within the option's life
Stay Away When
negative_spread or danger_zone regime
IV/RV ratio below 1.0 (RV exceeds IV — you are selling too cheap)
Short-term RV is accelerating sharply (5d RV >> 60d RV)
Term structure in steep backwardation (front vol spiking)
Correlation spike across sectors (systemic risk rising)
The most common mistake is selling premium based solely on IV level. An IV of 40% might look "high" — but if the stock is realizing 45% over the past week, you are selling options below fair value. Always compare IV to RV. The spread is what matters, not the level.
The VRP gauge maps directly to trading action. The needle position represents the current regime assessment from the FlashAlpha API. Sell premium in the blue and green zones; reduce or avoid in amber and red.
Strategy Selection by VRP Regime
VRP Regime
Strategy
Sizing
Risk Notes
very_high_premium
Short strangles, iron condors, put credit spreads
Reduced — check for event risk
Very high VRP often precedes earnings or macro events
healthy_premium
Short strangles, jade lizards, calendars
Full allocation
Sweet spot for systematic selling
thin_premium
Calendars, narrow butterflies
Half size or less
Edge is marginal; favor defined-risk structures
negative_spread
Long straddles, long strangles
Speculative only
Options are cheap relative to movement — buy vol
danger_zone
No new positions; hedge existing
Zero
Protect capital first. Wait for regime to stabilize.
The volatility risk premium is the persistent spread between implied volatility (what options price in) and realized volatility (what the stock actually delivers). IV exceeds RV roughly 85-90% of the time on major indices because option buyers — primarily institutional hedgers — systematically overpay for downside protection. Option sellers collect this premium as compensation for bearing tail risk.
Realized volatility is backward-looking — it measures how much the stock actually moved over a past window (e.g., 20 days). Implied volatility is forward-looking — it is derived from current option prices and reflects the market's expectation (and fear) of future movement. Realized vol is a fact; implied vol is a forecast that embeds risk premiums, event expectations, and hedging demand.
Close-to-close is the simplest and most widely used. Parkinson (high-low) is roughly 5x more efficient because it uses intraday range, but it ignores overnight gaps. Yang-Zhang is the most accurate for equities because it combines overnight, open-to-close, and intraday components into a minimum-variance estimate. For most VRP trading decisions, close-to-close across multiple windows (5d, 20d, 60d) gives you the signal you need.
Send a GET request to https://lab.flashalpha.com/v1/volatility/{symbol} with your API key in the X-Api-Key header. The response includes ATM IV, realized volatility across five windows (5d, 10d, 20d, 30d, 60d), the VRP spread, and a regime assessment (very_high_premium, healthy_premium, thin_premium, negative_spread, or danger_zone). Free tier includes 10 requests per day; the Growth plan unlocks full access. See the full documentation.