ZM Implied Volatility: Zoom IV and Earnings
ZM implied volatility, measured from traded Zoom option contracts: the current 30 day at the money level, its percentile, earnings crush, and term structure.
ZM implied volatility is the options market's own estimate of how far Zoom Communications stock is likely to travel, stated as an annualized percentage. As of Sep 29, 2026, at-the-money ZM contracts with 20 to 45 days left to expiry priced that estimate at 40.2%, a level above 31% of the daily readings in this ticker's own record since 2019. ZM is the Nasdaq ticker for Zoom Communications, so a question about Zoom implied volatility and a question about ZM implied volatility have the same answer.
Every figure on this page carries the date it was measured, and each panel recomputes from per-contract option records, so the page keeps reading correctly as the levels move.
What implied volatility measures
Implied volatility, usually shortened to IV, is the number that has to go into an option pricing model to make the model return the option's actual market price. It is quoted in percent per year. Take a hypothetical $100 stock carrying a 40% IV: that implies a one standard deviation range of about $40 over a full year, or close to $11 over a single month, since volatility scales with the square root of time. The mechanics, with worked examples, sit in what implied volatility measures.
Two pieces of vocabulary run through every panel here. At the money (ATM) means the strike price sits close to where the stock trades; the panels below keep strikes within 5% of that session's closing price for ZM. Days to expiry (DTE) counts the calendar days left on the contract. A 30 day ATM reading is the market's volatility estimate for roughly the next month, and it is the cleanest way to line one date up against another, since it holds strike and maturity roughly fixed.
What is ZM implied volatility right now?
The panel below tracks ZM at-the-money IV one session at a time over the trailing few months. The iv_percentile column restates each day's level as its rank against every ATM reading in the record, so a 90 means only one session in ten has ever printed higher.
| session_date | session_label | atm_iv_pct | iv_percentile |
|---|---|---|---|
| 2026-06-03 | Jun 3, 2026 | 49.2 | 49 |
| 2026-06-04 | Jun 4, 2026 | 46.7 | 44 |
| 2026-06-05 | Jun 5, 2026 | 44.5 | 40 |
| 2026-06-08 | Jun 8, 2026 | 46 | 43 |
| 2026-06-09 | Jun 9, 2026 | 46.5 | 43 |
| 2026-06-10 | Jun 10, 2026 | 46 | 43 |
| 2026-06-11 | Jun 11, 2026 | 45.7 | 42 |
| 2026-06-12 | Jun 12, 2026 | 44.9 | 41 |
| 2026-06-15 | Jun 15, 2026 | 44.5 | 40 |
| 2026-06-16 | Jun 16, 2026 | 42.6 | 36 |
| 2026-06-17 | Jun 17, 2026 | 41.2 | 33 |
| 2026-06-18 | Jun 18, 2026 | 42.4 | 35 |
| 2026-06-22 | Jun 22, 2026 | 44.8 | 40 |
| 2026-06-23 | Jun 23, 2026 | 42.8 | 36 |
| 2026-06-24 | Jun 24, 2026 | 43 | 37 |
| 2026-06-25 | Jun 25, 2026 | 43.4 | 38 |
| 2026-06-26 | Jun 26, 2026 | 40.9 | 33 |
| 2026-06-29 | Jun 29, 2026 | 44.6 | 40 |
| 2026-06-30 | Jun 30, 2026 | 40.1 | 31 |
| 2026-07-01 | Jul 1, 2026 | 43.1 | 37 |
The exact SQL behind every number
WITH atm_daily AS
(
SELECT
date,
round(100 * avg(toFloat64(implied_volatility)), 1) AS iv_pct
FROM global_markets.options_greeks
WHERE underlying_symbol = 'ZM'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND toFloat64(underlying_close) > 0
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY date
)
SELECT
toString(date) AS session_date,
formatDateTime(date, '%b %e, %Y') AS session_label,
iv_pct AS atm_iv_pct,
iv_percentile
FROM
(
SELECT
date,
iv_pct,
toUInt8(round(100 * count() OVER (ORDER BY iv_pct) / count() OVER ())) AS iv_percentile
FROM atm_daily
)
WHERE date >= today() - 120
ORDER BY dateThe series holds 82 sessions, opening at 49.2% on Jun 3, 2026 and ending at 40.2% on Sep 29, 2026. Watch the shape of the line rather than the last dot on it. A single IV level means very little on its own. The useful question is where that level sits inside the range this same ticker has already traded through, which is what the percentile column answers.
How has ZM implied volatility behaved year by year?
The per-contract record for ZM options opens in 2019. The yearly view collapses each session's ATM reading into four numbers per calendar year: the session count, the average, the lowest single session, and the highest.
| year | session_count | avg_iv_pct | low_iv_pct | high_iv_pct |
|---|---|---|---|---|
| 2019 | 167 | 59.9 | 35.3 | 84.6 |
| 2020 | 253 | 73.1 | 36.4 | 132 |
| 2021 | 252 | 51.4 | 34.1 | 79.6 |
| 2022 | 251 | 69.9 | 48.3 | 115.8 |
| 2023 | 250 | 47.7 | 28.7 | 80.7 |
| 2024 | 252 | 34.6 | 22.4 | 65.6 |
| 2025 | 250 | 33.5 | 22.5 | 53.6 |
| 2026 | 186 | 46.1 | 25.5 | 65.5 |
The exact SQL behind every number
WITH atm_daily AS
(
SELECT
date,
round(100 * avg(toFloat64(implied_volatility)), 1) AS iv_pct
FROM global_markets.options_greeks
WHERE underlying_symbol = 'ZM'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND toFloat64(underlying_close) > 0
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY date
)
SELECT
toYear(date) AS year,
count() AS session_count,
round(avg(iv_pct), 1) AS avg_iv_pct,
min(iv_pct) AS low_iv_pct,
max(iv_pct) AS high_iv_pct
FROM atm_daily
GROUP BY year
ORDER BY yearThe 2019 rows cover 167 sessions and average 59.9%, between a low of 35.3% and a high of 84.6%. The most recent year in the panel, 2026, averages 46.1% so far. The distance between each year's low and high is the part most readers underestimate: a single name can sit in one volatility regime for months and reprice into another inside a handful of sessions. For the raw series rather than these aggregates, historical implied volatility data covers the sourcing question.
What happens to ZM implied volatility around earnings?
Zoom Communications runs a fiscal year ending January 31, which places its quarterly reports in late February, May, August, and November, released after the closing bell. A contract that expires after a scheduled report date covers that event, and the extra uncertainty of the event is carried in the contract's IV.
The panel below finds, inside each calendar quarter, the one session where ATM IV fell furthest from the previous session. For each of those sessions it shows the level ten sessions earlier, the level on the session immediately before, the level on the drop session itself, and the size of the one day fall in volatility points.
| label | iv_two_weeks_pct | iv_peak_pct | iv_after_pct | crush_pct |
|---|---|---|---|---|
| Nov 26, 2024 | 52.4 | 65.6 | 29.3 | 36.3 |
| Feb 25, 2025 | 49.3 | 50.8 | 33.9 | 16.9 |
| May 22, 2025 | 42.9 | 42.8 | 29.3 | 13.5 |
| Aug 22, 2025 | 40.8 | 41.7 | 27.9 | 13.8 |
| Nov 25, 2025 | 45 | 42 | 33.7 | 8.3 |
| Feb 26, 2026 | 53.9 | 54.4 | 40.8 | 13.6 |
| May 21, 2026 | 63.4 | 65 | 41.2 | 23.8 |
| Aug 26, 2026 | 49.3 | 52.4 | 40.3 | 12.1 |
The exact SQL behind every number
WITH atm_daily AS
(
SELECT
date,
round(100 * avg(toFloat64(implied_volatility)), 1) AS iv_pct
FROM global_markets.options_greeks
WHERE underlying_symbol = 'ZM'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry BETWEEN 20 AND 45
AND toFloat64(underlying_close) > 0
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
GROUP BY date
),
seq AS
(
SELECT
date,
iv_pct,
toInt64(rn_raw) AS rn
FROM
(
SELECT
date,
iv_pct,
row_number() OVER (ORDER BY date) AS rn_raw
FROM atm_daily
)
),
events AS
(
SELECT
c.date AS crush_date,
p.iv_pct AS iv_two_weeks_pct,
b.iv_pct AS iv_peak_pct,
c.iv_pct AS iv_after_pct,
round(b.iv_pct - c.iv_pct, 1) AS crush_pct,
row_number() OVER (PARTITION BY toStartOfQuarter(c.date) ORDER BY b.iv_pct - c.iv_pct DESC) AS quarter_rank
FROM seq AS c
INNER JOIN seq AS b ON b.rn = c.rn - 1
INNER JOIN seq AS p ON p.rn = c.rn - 10
)
SELECT
formatDateTime(crush_date, '%b %e, %Y') AS label,
iv_two_weeks_pct,
iv_peak_pct,
iv_after_pct,
crush_pct
FROM events
WHERE quarter_rank = 1
AND crush_pct > 0
AND crush_date >= today() - 760
ORDER BY crush_dateThe most recent of these sessions is Aug 26, 2026. ATM IV sat at 49.3% ten sessions earlier, reached 52.4% on the session before, then printed 40.3% on the day itself, a fall of 12.1 volatility points in one session. The earliest comparable session in the window, Nov 26, 2024, gave up 36.3 points. Across the 8 quarters shown, the element every row has in common is that last step: one session in which the level drops sharply. Read the ten-session column against the session-before column row by row to see how the level arrived there in each quarter.
That collapse has a name and a mechanism of its own, covered in what IV crush is. The practical point for anyone holding a long option through a Zoom report is that the position can be right about the direction of the stock and still lose value once the event premium leaves the contract.
What does the ZM IV term structure look like today?
Term structure is the IV curve across maturities for one underlying on one date. The front of the curve covers contracts expiring within days. The back covers contracts months out.
| dte_bucket | atm_iv_pct | contract_count | as_of |
|---|---|---|---|
| 0 to 10 days | 44.5 | 152 | Sep 29, 2026 |
| 11 to 30 days | 39.5 | 167 | Sep 29, 2026 |
| 31 to 60 days | 39.5 | 87 | Sep 29, 2026 |
| 61 to 120 days | 43 | 55 | Sep 29, 2026 |
| over 120 days | 43.6 | 51 | Sep 29, 2026 |
The exact SQL behind every number
SELECT
multiIf(days_to_expiry <= 10, '0 to 10 days',
days_to_expiry <= 30, '11 to 30 days',
days_to_expiry <= 60, '31 to 60 days',
days_to_expiry <= 120, '61 to 120 days',
'over 120 days') AS dte_bucket,
round(100 * avg(toFloat64(implied_volatility)), 1) AS atm_iv_pct,
count() AS contract_count,
formatDateTime(max(date), '%b %e, %Y') AS as_of
FROM global_markets.options_greeks
WHERE underlying_symbol = 'ZM'
AND iv_converged = 1
AND volume > 0
AND toFloat64(underlying_close) > 0
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
AND date >= (
SELECT max(date)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'ZM' AND iv_converged = 1
) - 7
GROUP BY dte_bucket
ORDER BY min(days_to_expiry)As of Sep 29, 2026, ZM contracts with 10 days or less to expiry carried 44.5% across 152 traded at-the-money contracts, while the longest bucket on the curve carried 43.6%. Compare those two readings directly. A back month sitting above the front month is the ordinary upward sloping shape. A front month above the back month is an inverted curve, the shape that tends to appear when a dated event falls inside the front contract's remaining life. The IV term structure guide walks through both shapes and how calendar structures read them.
What should a ZM IV reading be compared against?
A ZM IV number needs two comparisons before it means anything. The first is against ZM's own history, which the percentile column in the first panel provides. The second is cross sectional, against what other names price on the same date, since a 45% reading is unremarkable on one ticker and near the top of the range on another. The highest implied volatility stocks screen gives that side of the picture.
One caveat on the percentile used here. It is computed over every session in the available record, not over a trailing 52 weeks, which is how most broker platforms compute IV rank. The two statistics answer slightly different questions and can disagree sharply on the same day. IV rank versus IV percentile sets out exactly where they part company.
How these numbers are measured
Every panel filters to ZM as the underlying symbol, keeps only contracts whose implied volatility solution converged, and requires that the contract traded during that session. At the money means a strike within 5% of the same session's closing price for the underlying. The 30 day readings use contracts with 20 to 45 days to expiry, averaged across the qualifying strikes and both option types for that session. The earnings panel selects the single largest one session fall in that series inside each calendar quarter, so its dates come out of the data rather than from a calendar typed in by hand. Open the SQL under any panel for the exact filters.
FAQ
What is ZM's implied volatility today?
As of Sep 29, 2026, at-the-money ZM contracts with 20 to 45 days to expiry priced implied volatility at 40.2%. That reading sits above 31% of the daily at-the-money readings in the record for this ticker.
Is ZM the same as Zoom?
Yes. ZM is the Nasdaq ticker for Zoom Communications, the video meetings company. A search for Zoom implied volatility and a search for ZM implied volatility point at the same options chain.
What happens to ZM implied volatility after a quarterly report?
In each of the 8 quarters measured above, at-the-money IV fell in a single session once the report was out, by 12.1 volatility points in the most recent case. The ten sessions before each of those drops are shown in the same panel.
Does a high IV percentile mean ZM options are expensive?
A high percentile says the current reading is high relative to this ticker's own past readings, nothing more. Whether the pricing turns out rich also depends on how much the stock actually moves over the contract's life, which is the realized side of the comparison in historical volatility versus implied volatility.
Where does ZM implied volatility data come from?
These panels read daily per-contract option records, which carry an implied volatility and the greeks for each listed ZM contract. The earliest qualifying sessions on this page fall in 2019. Only contracts that traded on the session and whose IV solution converged are counted.
The SQL behind every number on this page sits under its panel. To run the same at-the-money IV screen on another ticker, ask for it in plain English on the Strasmore terminal.