{"slug":"the-heston-model-and-the-volatility-smile","qid":"term_structure","label":"Near-the-money implied volatility by time to expiry (Jan to Jun 2026)","post_title":"Heston Model and the Volatility Smile","post_url":"/blog/the-heston-model-and-the-volatility-smile#q-term_structure","columns":["tenor","spy_iv_pct","nvda_iv_pct"],"rows":[{"tenor":"1 to 7 days","spy_iv_pct":17.05,"nvda_iv_pct":41.22},{"tenor":"8 to 21 days","spy_iv_pct":16.06,"nvda_iv_pct":40.82},{"tenor":"22 to 45 days","spy_iv_pct":16.47,"nvda_iv_pct":41.46},{"tenor":"46 to 90 days","spy_iv_pct":16.55,"nvda_iv_pct":41.8},{"tenor":"91 to 180 days","spy_iv_pct":17.47,"nvda_iv_pct":44.07},{"tenor":"181 to 365 days","spy_iv_pct":18.77,"nvda_iv_pct":44.94}],"shape":"ranking","sql":"SELECT\n    tenor,\n    round(avgIf(implied_volatility, underlying_symbol = 'SPY') * 100, 2)  AS spy_iv_pct,\n    round(avgIf(implied_volatility, underlying_symbol = 'NVDA') * 100, 2) AS nvda_iv_pct\nFROM\n(\n    SELECT\n        implied_volatility,\n        underlying_symbol,\n        days_to_expiry,\n        multiIf(\n            days_to_expiry <= 7,   '1 to 7 days',\n            days_to_expiry <= 21,  '8 to 21 days',\n            days_to_expiry <= 45,  '22 to 45 days',\n            days_to_expiry <= 90,  '46 to 90 days',\n            days_to_expiry <= 180, '91 to 180 days',\n                                   '181 to 365 days') AS tenor\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol IN ('SPY', 'NVDA')\n      AND date BETWEEN '2026-01-02' AND '2026-06-30'\n      AND iv_converged = 1\n      AND volume > 0\n      AND days_to_expiry BETWEEN 1 AND 365\n      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) <= 0.02\n)\nGROUP BY tenor\nHAVING countIf(underlying_symbol = 'SPY') > 0\n   AND countIf(underlying_symbol = 'NVDA') > 0\nORDER BY min(days_to_expiry)","computed_at":"2026-08-12T15:51:34.387475+00:00","elapsed":0.003193714}