If you trade options, volatility is not just a number on your screen. It is the market's collective forecast of uncertainty, the engine behind option pricing, and the source of some of the most persistent edges in finance.
Most traders only scratch the surface: they check implied volatility before selling a put and move on. This guide maps the full volatility landscape.
The Two Types of Volatility
Statistical (realized) volatility describes what already happened. It's the annualized standard deviation of past returns, typically measured over a 20 or 60 day window. A stock with 20% realized volatility has been moving at roughly a 1.25% daily range.
Implied volatility describes what the market expects to happen. It's the volatility figure that, when plugged into a pricing model, produces the option's current market price. Forward-looking. The aggregate expectation of future movement embedded in every option contract.
The central tension of all volatility trading: options are priced on implied volatility, but your P&L is determined by realized volatility. The gap between what the market expects and what actually happens is where volatility traders make or lose money.
Every concept in this guide connects back to this fundamental tension.
Implied Volatility Fundamentals
IV is the market's consensus forecast of future price movement. When IV is high, options are expensive. When IV is low, options are cheap.
What drives it:
Supply and demand for options is the primary driver. Heavy put buying before earnings or macro events pushes IV up because sellers demand more premium to take the other side.
Realized volatility feeds back into expectations. A week of 3% daily moves recalibrates what the market considers normal.
Structural flows matter. Institutional hedging programs create persistent demand for downside protection, keeping put IV elevated relative to call IV. This is the volatility skew.
IV is not a single number. It varies by strike price and expiration, forming the volatility surface discussed below.
Realized Volatility
RV measures how much an asset's price actually moved over a historical window. The standard approach uses close-to-close log returns. More sophisticated estimators like Yang-Zhang incorporate open, high, low, and close data for better accuracy.
The lookback window matters:
| Window | Captures | Use Case |
|---|---|---|
| 5-day | Most recent micro-regime | Gamma scalping, short-dated trades |
| 20-day | One trading month | Standard comparison point for IV |
| 60-day | Structural regime | Longer-term vol analysis, trend detection |
Comparing RV across these windows tells you whether recent volatility is accelerating, decelerating, or stable. If 5d RV is spiking while 60d RV is flat, you're in a short-term volatility expansion within a calm structural environment.
The Volatility Risk Premium
The VRP is one of the most documented anomalies in finance: implied volatility systematically exceeds subsequent realized volatility roughly 85% of the time on major indices. This spread exists because risk-averse investors overpay for downside protection.
The VRP is not free money. The other 15% of the time, realized vol explodes past implied, and short-vol strategies suffer drawdowns that can wipe out months of premium in days.
| VRP State | Meaning | Implication |
|---|---|---|
| Positive (IV > RV) | Options overpriced relative to actual movement | Favors premium selling |
| Near zero | Fair pricing | No vol edge, use other signals |
| Negative (RV > IV) | Market underpricing actual movement | Caution. Buy protection or reduce short vol |
You can pull the current VRP for any ticker with a single API call:
import requests
resp = requests.get(
"https://lab.flashalpha.com/v1/volatility/AAPL",
headers={"X-Api-Key": "YOUR_KEY"}
)
vol = resp.json()
print(f"ATM IV: {vol['atm_iv']}%")
print(f"RV (20d): {vol['realized_vol']['rv_20d']}%")
print(f"VRP Spread: {vol['iv_rv_spreads']['vrp_20d']}%")
print(f"Assessment: {vol['iv_rv_spreads']['assessment']}")
The assessment field returns rich_premium, fair_premium, or thin_premium.
IV Rank and IV Percentile
Knowing that IV is "32%" is meaningless without context. Is that high for this stock? Low?
IV rank measures where current IV sits between its 52-week high and low. Simple range percentage.
IV percentile counts what proportion of trading days over the past year had lower IV than today.
The difference matters after extreme events. A single spike stretches the 52-week range. IV rank looks artificially low for months because the denominator expanded. IV percentile remains accurate because one extreme day barely moves the distribution.
| Metric | After a vol spike | Reliability |
|---|---|---|
| IV rank | Depressed for months (range stretched) | Less reliable post-spike |
| IV percentile | Barely affected (one day out of 252) | More reliable in all conditions |
For premium sellers, the combination of high IV percentile and a rich VRP spread is the strongest signal. It tells you IV is elevated relative to history and overpriced relative to actual movement.
The Volatility Surface
Implied volatility varies across both strike price and expiration, forming a three-dimensional surface. The cross-section at a single expiration reveals the volatility smile or skew. Stacking multiple expirations produces the full surface.
The shape tells you where the market sees risk:
Steep put-side skew: the market is pricing crash protection aggressively. Institutions are paying up for downside hedges.
Inverted call skew: suggests melt-up risk. Call buyers are driving up upside IV.
Flat wings: complacency. Nobody is hedging.
Traders who can read the surface and spot deviations from recent norms can construct trades that exploit mispricings between strikes and expirations. These opportunities are invisible from ATM IV alone.
FlashAlpha computes SVI-calibrated surfaces for thousands of tickers. See them visually with the free vol surface tool or pull them via the /v1/surface API endpoint.
Term Structure
Term structure plots ATM implied volatility across expirations. In normal markets it slopes upward (contango): longer-dated options carry higher IV because more time means more uncertainty.
When it inverts (backwardation), short-dated IV exceeds long-dated IV. This signals market stress or a specific near-term event.
| Shape | State | Trading Implication |
|---|---|---|
| Steep contango | Near-term calm, longer-term risk priced | Calendar spreads, front-month premium selling |
| Flat | Transition zone | Avoid calendars, prefer verticals |
| Mild backwardation | Event premium or moderate stress | Sell front-month premium, calendars short front |
| Steep backwardation | Crisis or extreme event | Hedge aggressively. No naked front-month |
A sharp kink at a particular expiration usually corresponds to an earnings date, FOMC meeting, or other catalyst. You can extract the event-implied move using the total variance method (covered in the term structure deep-dive).
Volatility Skew
Skew describes the IV difference between OTM puts and OTM calls at the same expiration. In equities, puts almost always carry higher IV than equidistant calls, reflecting persistent demand for downside protection.
Skew is not static. It steepens before earnings, during macro uncertainty, and ahead of risk events. It flattens in complacent markets. It can invert during parabolic rallies when call demand overwhelms put demand.
Changes in skew are often more tradeable than the absolute level. A rapid steepening of put skew signals that institutional hedgers are suddenly nervous, even when headline VIX barely moves. That divergence is an edge.
Vanna and Charm
First-order Greeks tell you what happens when one variable changes. Second-order Greeks tell you what happens when two variables change simultaneously. In real markets, multiple things always move at once.
Vanna measures how delta changes when implied volatility changes. It captures the crash feedback loop: price drops, vol spikes, delta shifts, dealers sell more stock. Aggregate dealer vanna exposure is one of the best predictors of whether a selloff will be orderly or cascade.
Charm measures how delta changes with time, even if price and vol stay flat. It explains why delta-hedged positions drift over weekends and why deltas shift toward 0 or 1 as expiration approaches.
Together they explain the mechanical flows that drive intraday and end-of-week price action. FlashAlpha computes aggregate vanna exposure (VEX) and charm exposure (CHEX) for any ticker via the exposure endpoints.
Building a Volatility Scanner
Understanding these concepts is one thing. Scanning the market for actionable setups is another.
A well-built scanner combines multiple metrics into a composite score. It might flag stocks where IV percentile is above 80, VRP is positive, and term structure is in contango. That's the trifecta for premium selling.
from flashalpha import FlashAlphaClient
client = FlashAlphaClient(api_key="YOUR_KEY")
tickers = ["AAPL", "TSLA", "NVDA", "AMZN", "META", "SPY"]
for t in tickers:
vol = client.get_volatility(t)
iv = vol["atm_iv"]
vrp = vol["iv_rv_spreads"]["vrp_20d"]
state = vol["term_structure"]["state"]
assessment = vol["iv_rv_spreads"]["assessment"]
if assessment == "rich_premium" and state == "contango":
print(f"{t}: IV={iv}% VRP={vrp}% TS={state} -> SELL PREMIUM")
The full scanner tutorial walks through building this with Discord alerts using the free tier.
Putting It All Together
The traders who consistently extract edge from options combine all of these dimensions:
IV vs RV: the VRP tells you whether options are overpriced relative to actual movement.
Rank and percentile: context metrics tell you whether current IV is historically high or low for this specific stock.
The surface: skew and smile reveal where the market sees the most risk.
Term structure: contango vs backwardation shows whether vol is expected to rise or fall.
A premium seller who checks IV percentile, confirms a rich VRP, sees contango in the term structure, and verifies that skew is not signaling panic has a much higher probability of success than someone who just looks at the VIX and sells a put.
Build your volatility checklist. Automate the screening. Let the data guide your trades.
How to Access This Data
FlashAlpha's /v1/volatility/{symbol} endpoint returns ATM IV, realized vol across multiple windows, VRP spread with assessment labels, term structure state, and skew metrics in a single call. The surface endpoint returns the full SVI-fitted surface.
- Get API access: free tier, 10 req/day, no credit card
-
Python SDK:
pip install flashalpha - Free vol surface tool: 3D IV heatmap, no signup
- IV Rank vs IV Percentile
- Term Structure guide
- Vanna & Charm guide
- Volatility Scanner tutorial
- Code examples on GitHub
Top comments (0)