{"slug":"where-to-get-historical-implied-volatility-data","qid":"cross_section","label":"Median near-the-money IV, 20 to 45 days to expiry (June 2026)","post_title":"Where to Get Historical Implied Volatility Data","post_url":"/blog/where-to-get-historical-implied-volatility-data#q-cross_section","columns":["symbol","median_iv_pct","contract_day_count"],"rows":[{"symbol":"NVDA","median_iv_pct":38.5,"contract_day_count":648},{"symbol":"AMZN","median_iv_pct":33.2,"contract_day_count":773},{"symbol":"MSFT","median_iv_pct":32,"contract_day_count":1257},{"symbol":"XOM","median_iv_pct":29.6,"contract_day_count":498},{"symbol":"AAPL","median_iv_pct":24.6,"contract_day_count":965},{"symbol":"KO","median_iv_pct":19.8,"contract_day_count":877},{"symbol":"SPY","median_iv_pct":15.4,"contract_day_count":10454},{"symbol":"TLT","median_iv_pct":10.4,"contract_day_count":2135}],"shape":"ranking","sql":"SELECT\n    underlying_symbol                                              AS symbol,\n    round(100 * quantileDeterministic(0.50)(iv, contract_hash), 1) AS median_iv_pct,\n    count()                                                        AS contract_day_count\nFROM\n(\n    SELECT\n        underlying_symbol,\n        toFloat64(implied_volatility) AS iv,\n        cityHash64(ticker)            AS contract_hash\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'AMZN', 'KO', 'XOM', 'TLT')\n      AND date >= '2026-06-01'\n      AND date <  '2026-07-01'\n      AND iv_converged = 1\n      AND volume > 0\n      AND underlying_close > 0\n      AND days_to_expiry BETWEEN 20 AND 45\n      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05\n)\nGROUP BY symbol\nORDER BY median_iv_pct DESC","computed_at":"2026-08-15T16:05:46.769664+00:00","elapsed":0.002448019}