{"slug":"local-volatility-vs-implied-volatility","qid":"smile_slice","label":"SPY implied volatility by strike distance from spot, 20 to 45 day expiries, September 2026","post_title":"Local Volatility vs Implied Volatility","post_url":"/blog/local-volatility-vs-implied-volatility#q-smile_slice","columns":["strike_vs_spot","iv_pct","contract_count"],"rows":[{"strike_vs_spot":"6 to 10% below spot","iv_pct":20.44,"contract_count":1641},{"strike_vs_spot":"3 to 6% below","iv_pct":16.75,"contract_count":2674},{"strike_vs_spot":"1 to 3% below","iv_pct":14.51,"contract_count":2268},{"strike_vs_spot":"at the money","iv_pct":12.97,"contract_count":2545},{"strike_vs_spot":"1 to 3% above","iv_pct":11.96,"contract_count":2124},{"strike_vs_spot":"3 to 6% above","iv_pct":11.24,"contract_count":2115},{"strike_vs_spot":"6 to 10% above spot","iv_pct":12.03,"contract_count":1188}],"shape":"ranking","sql":"SELECT\n    bucket                      AS strike_vs_spot,\n    round(avg(iv) * 100, 2)     AS iv_pct,\n    count()                     AS contract_count\nFROM\n(\n    SELECT\n        iv,\n        m,\n        multiIf(m < -0.06, '6 to 10% below spot',\n                m < -0.03, '3 to 6% below',\n                m < -0.01, '1 to 3% below',\n                m <=  0.01, 'at the money',\n                m <=  0.03, '1 to 3% above',\n                m <=  0.06, '3 to 6% above',\n                '6 to 10% above spot')                            AS bucket\n    FROM\n    (\n        SELECT\n            toFloat64(implied_volatility)                             AS iv,\n            toFloat64(strike_price) / toFloat64(underlying_close) - 1 AS m\n        FROM global_markets.options_greeks\n        WHERE underlying_symbol = 'SPY'\n          AND date >= '2026-09-01'\n          AND date <  '2026-10-01'\n          AND iv_converged = 1\n          AND volume > 0\n          AND days_to_expiry BETWEEN 20 AND 45\n          AND underlying_close > 0\n          AND implied_volatility > 0\n    )\n    WHERE abs(m) <= 0.10\n)\nGROUP BY bucket\nHAVING count() >= 50\nORDER BY min(m)","computed_at":"2026-10-09T16:40:46.041250+00:00","elapsed":0.003326357}