{"slug":"local-volatility-vs-implied-volatility","qid":"term_structure","label":"SPY at-the-money and downside implied volatility across expiry bands, September 2026","post_title":"Local Volatility vs Implied Volatility","post_url":"/blog/local-volatility-vs-implied-volatility#q-term_structure","columns":["expiry_band","atm_iv_pct","downside_iv_pct","skew_spread_pts"],"rows":[{"expiry_band":"7 to 21 days","atm_iv_pct":12.09,"downside_iv_pct":22.23,"skew_spread_pts":10.14},{"expiry_band":"22 to 45 days","atm_iv_pct":13.02,"downside_iv_pct":18.69,"skew_spread_pts":5.67},{"expiry_band":"46 to 90 days","atm_iv_pct":14.02,"downside_iv_pct":18.67,"skew_spread_pts":4.65},{"expiry_band":"91 to 180 days","atm_iv_pct":15.1,"downside_iv_pct":18.48,"skew_spread_pts":3.38},{"expiry_band":"181 to 365 days","atm_iv_pct":16.7,"downside_iv_pct":19.13,"skew_spread_pts":2.43}],"shape":"ranking","sql":"SELECT\n    band                                                  AS expiry_band,\n    round(avgIf(iv, abs(m) <= 0.01) * 100, 2)             AS atm_iv_pct,\n    round(avgIf(iv, m >= -0.08 AND m <= -0.05) * 100, 2)  AS downside_iv_pct,\n    round((avgIf(iv, m >= -0.08 AND m <= -0.05)\n           - avgIf(iv, abs(m) <= 0.01)) * 100, 2)         AS skew_spread_pts\nFROM\n(\n    SELECT\n        iv,\n        m,\n        dte,\n        multiIf(dte <=  21, '7 to 21 days',\n                dte <=  45, '22 to 45 days',\n                dte <=  90, '46 to 90 days',\n                dte <= 180, '91 to 180 days',\n                '181 to 365 days')                                    AS band\n    FROM\n    (\n        SELECT\n            toFloat64(implied_volatility)                             AS iv,\n            toFloat64(strike_price) / toFloat64(underlying_close) - 1 AS m,\n            days_to_expiry                                            AS dte\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 7 AND 365\n          AND underlying_close > 0\n          AND implied_volatility > 0\n    )\n)\nGROUP BY band\nHAVING countIf(abs(m) <= 0.01) >= 50\n   AND countIf(m >= -0.08 AND m <= -0.05) >= 50\nORDER BY min(dte)","computed_at":"2026-10-09T16:40:46.130958+00:00","elapsed":0.004032157}