Is 30% IV High? It Depends on the Ticker
IV rank against IV percentile: the latest reading inside each ticker's 52-week rangetable ·
2026-08-02 · 8×6
Where a 30% reading sits in each ticker's own two-year distributiontable ·
2026-08-02 · 8×6
Monthly median 30-day implied volatility: index ETF, staple, and chipmakerseries ·
2026-08-02 · 24×5
Implied volatility band against the move the underlying made the next sessiontable ·
2026-08-02 · 5×5
IV rank against IV percentile: the latest reading inside each ticker's 52-week range
IV rank against IV percentile: the latest reading inside each ticker's 52-week range
| symbol | latest_iv_pct | low_52w_iv_pct | high_52w_iv_pct | iv_rank | iv_percentile |
|---|---|---|---|---|---|
| AAPL | 45.9 | 19 | 45.9 | 100 | 99.6 |
| KO | 20.6 | 13.9 | 25.1 | 60.2 | 71.6 |
| COIN | 77.9 | 48.8 | 97.7 | 59.6 | 89.2 |
| NVDA | 42.2 | 32.4 | 54.4 | 44.6 | 58.4 |
| MSFT | 33.4 | 18.2 | 53.9 | 42.6 | 78.4 |
| MSTR | 79 | 49.8 | 129.4 | 36.6 | 75.6 |
| TSLA | 45.5 | 40.1 | 64.8 | 22 | 32.4 |
| SPY | 14.6 | 12.3 | 26.3 | 16.7 | 40.8 |
the exact SQL behind every number
WITH atm AS (
SELECT underlying_symbol AS symbol,
date,
avg(implied_volatility) * 100 AS iv_pct
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'KO', 'AAPL', 'MSFT', 'NVDA', 'TSLA', 'COIN', 'MSTR')
AND date >= toDate('2025-08-01')
AND date <= toDate('2026-07-31')
AND iv_converged = 1
AND volume > 0
AND underlying_close > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY symbol, date
),
latest AS (
SELECT symbol,
argMax(iv_pct, date) AS latest_iv
FROM atm
GROUP BY symbol
)
SELECT a.symbol AS symbol,
round(any(l.latest_iv), 1) AS latest_iv_pct,
round(min(a.iv_pct), 1) AS low_52w_iv_pct,
round(max(a.iv_pct), 1) AS high_52w_iv_pct,
round(100 * (any(l.latest_iv) - min(a.iv_pct)) / (max(a.iv_pct) - min(a.iv_pct)), 1) AS iv_rank,
round(100 * countIf(a.iv_pct < l.latest_iv) / count(), 1) AS iv_percentile
FROM atm AS a
INNER JOIN latest AS l ON a.symbol = l.symbol
GROUP BY a.symbol
HAVING max(a.iv_pct) > min(a.iv_pct) AND count() >= 100
ORDER BY iv_rank DESC
More from this analysisIs 30% IV High? It Depends on the Ticker
Where a 30% reading sits in each ticker's own two-year distribution
table 8×6
→
Implied volatility band against the move the underlying made the next session
table 5×5
→
Monthly median 30-day implied volatility: index ETF, staple, and chipmaker
series 24×5
→
Where IV percentile sits furthest above IV rank, latest session
table 12×6
→
See all 2,170 queries →