{"slug":"zm-implied-volatility","qid":"earnings_crush","label":"earnings_crush","post_title":"zm-implied-volatility","post_url":"/blog/zm-implied-volatility#q-earnings_crush","columns":["label","iv_two_weeks_pct","iv_peak_pct","iv_after_pct","crush_pct"],"rows":[{"label":"Nov 26, 2024","iv_two_weeks_pct":52.4,"iv_peak_pct":65.6,"iv_after_pct":29.3,"crush_pct":36.3},{"label":"Feb 25, 2025","iv_two_weeks_pct":49.3,"iv_peak_pct":50.8,"iv_after_pct":33.9,"crush_pct":16.9},{"label":"May 22, 2025","iv_two_weeks_pct":42.9,"iv_peak_pct":42.8,"iv_after_pct":29.3,"crush_pct":13.5},{"label":"Aug 22, 2025","iv_two_weeks_pct":40.8,"iv_peak_pct":41.7,"iv_after_pct":27.9,"crush_pct":13.8},{"label":"Nov 25, 2025","iv_two_weeks_pct":45,"iv_peak_pct":42,"iv_after_pct":33.7,"crush_pct":8.3},{"label":"Feb 26, 2026","iv_two_weeks_pct":53.9,"iv_peak_pct":54.4,"iv_after_pct":40.8,"crush_pct":13.6},{"label":"May 21, 2026","iv_two_weeks_pct":63.4,"iv_peak_pct":65,"iv_after_pct":41.2,"crush_pct":23.8},{"label":"Aug 26, 2026","iv_two_weeks_pct":49.3,"iv_peak_pct":52.4,"iv_after_pct":40.3,"crush_pct":12.1}],"shape":"table","sql":"WITH atm_daily AS\n(\n    SELECT\n        date,\n        round(100 * avg(toFloat64(implied_volatility)), 1) AS iv_pct\n    FROM global_markets.options_greeks\n    WHERE underlying_symbol = 'ZM'\n      AND iv_converged = 1\n      AND volume > 0\n      AND days_to_expiry BETWEEN 20 AND 45\n      AND toFloat64(underlying_close) > 0\n      AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05\n    GROUP BY date\n),\nseq AS\n(\n    SELECT\n        date,\n        iv_pct,\n        toInt64(rn_raw) AS rn\n    FROM\n    (\n        SELECT\n            date,\n            iv_pct,\n            row_number() OVER (ORDER BY date) AS rn_raw\n        FROM atm_daily\n    )\n),\nevents AS\n(\n    SELECT\n        c.date                        AS crush_date,\n        p.iv_pct                      AS iv_two_weeks_pct,\n        b.iv_pct                      AS iv_peak_pct,\n        c.iv_pct                      AS iv_after_pct,\n        round(b.iv_pct - c.iv_pct, 1) AS crush_pct,\n        row_number() OVER (PARTITION BY toStartOfQuarter(c.date) ORDER BY b.iv_pct - c.iv_pct DESC) AS quarter_rank\n    FROM seq AS c\n    INNER JOIN seq AS b ON b.rn = c.rn - 1\n    INNER JOIN seq AS p ON p.rn = c.rn - 10\n)\nSELECT\n    formatDateTime(crush_date, '%b %e, %Y') AS label,\n    iv_two_weeks_pct,\n    iv_peak_pct,\n    iv_after_pct,\n    crush_pct\nFROM events\nWHERE quarter_rank = 1\n  AND crush_pct > 0\n  AND crush_date >= today() - 760\nORDER BY crush_date","computed_at":"2026-10-01T15:21:08.824180+00:00","elapsed":11.48535713}