{"slug":"zm-implied-volatility","qid":"term_structure","label":"term_structure","post_title":"zm-implied-volatility","post_url":"/blog/zm-implied-volatility#q-term_structure","columns":["dte_bucket","atm_iv_pct","contract_count","as_of"],"rows":[{"dte_bucket":"0 to 10 days","atm_iv_pct":44.5,"contract_count":152,"as_of":"Sep 29, 2026"},{"dte_bucket":"11 to 30 days","atm_iv_pct":39.5,"contract_count":167,"as_of":"Sep 29, 2026"},{"dte_bucket":"31 to 60 days","atm_iv_pct":39.5,"contract_count":87,"as_of":"Sep 29, 2026"},{"dte_bucket":"61 to 120 days","atm_iv_pct":43,"contract_count":55,"as_of":"Sep 29, 2026"},{"dte_bucket":"over 120 days","atm_iv_pct":43.6,"contract_count":51,"as_of":"Sep 29, 2026"}],"shape":"ranking","sql":"SELECT\n    multiIf(days_to_expiry <= 10,  '0 to 10 days',\n            days_to_expiry <= 30,  '11 to 30 days',\n            days_to_expiry <= 60,  '31 to 60 days',\n            days_to_expiry <= 120, '61 to 120 days',\n                                   'over 120 days')   AS dte_bucket,\n    round(100 * avg(toFloat64(implied_volatility)), 1) AS atm_iv_pct,\n    count()                                            AS contract_count,\n    formatDateTime(max(date), '%b %e, %Y')             AS as_of\nFROM global_markets.options_greeks\nWHERE underlying_symbol = 'ZM'\n  AND iv_converged = 1\n  AND volume > 0\n  AND toFloat64(underlying_close) > 0\n  AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05\n  AND date >= (\n        SELECT max(date)\n        FROM global_markets.options_greeks\n        WHERE underlying_symbol = 'ZM' AND iv_converged = 1\n      ) - 7\nGROUP BY dte_bucket\nORDER BY min(days_to_expiry)","computed_at":"2026-10-01T15:21:08.945963+00:00","elapsed":0.003667191}