Strasmore Research

IV Term Structure: Wetin the Curve Dey Tell You

IV term structure na implied volatility by expiration. See wetin upward and inverted curves mean, with real option data showing the shape.

IV term structure na implied volatility plotted against expiry, one reading for each expiry, using options wey strike near the current share price. Two shapes cover almost everything wey you go see: upward slope for quiet conditions, where far expirations carry the higher number, and inverted curve when dated event dey inside the front month. Both shapes below come from per contract option data, no be textbook diagram.

Wetin IV term structure dey measure

Implied volatility na the annualized size of the move wey option price dey imply for the underlying stock. Dem quote am per contract, so one stock fit get hundreds of readings any time, one for every strike and expiration for the board. Fix the strike near current price, make expiration change, and those readings go line up into curve. That curve na the term structure.

How you sample the data matter pass wetin most explanations admit. Every panel here take contracts wey absolute delta dey between 0.35 and 0.65. Na the standard way to talk say option dey near the money without tying am to one strike. Then e take median implied volatility inside each maturity band. Median no be average: one stale quote for barely traded contract fit print unrealistic number, and average go carry that number enter the result.

Here be the curve for six liquid names across the June 2026 sessions.

QueryIV term structure, six liquid names: median near-the-money implied volatility by expiry band, June 2026
The exact SQL behind every number
WITH (
    SELECT quantileDeterministic(0.5)(toFloat64(implied_volatility), cityHash64(ticker))
    FROM global_markets.options_greeks
    WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'KO', 'JNJ', 'PG')
      AND date >= toDate('2026-06-01')
      AND date < toDate('2026-07-01')
      AND iv_converged = 1
      AND volume > 0
      AND implied_volatility BETWEEN 0.03 AND 3
      AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
      AND days_to_expiry BETWEEN 5 AND 20
) AS front_band_iv
SELECT multiIf(days_to_expiry <= 20, '5-20 days',
               days_to_expiry <= 45, '21-45 days',
               days_to_expiry <= 90, '46-90 days',
               days_to_expiry <= 180, '91-180 days',
               '181-365 days') AS expiry_band,
       round(100 * quantileDeterministic(0.5)(toFloat64(implied_volatility), cityHash64(ticker)), 1) AS median_iv_pct,
       round(100 * (quantileDeterministic(0.5)(toFloat64(implied_volatility), cityHash64(ticker)) - front_band_iv), 1) AS pts_vs_front_band,
       count() AS contract_count
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'KO', 'JNJ', 'PG')
  AND date >= toDate('2026-06-01')
  AND date < toDate('2026-07-01')
  AND iv_converged = 1
  AND volume > 0
  AND implied_volatility BETWEEN 0.03 AND 3
  AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
  AND days_to_expiry BETWEEN 5 AND 365
GROUP BY expiry_band
ORDER BY min(days_to_expiry)
Run this yourself

Median implied volatility measure 19.6% for the 5-20 days band and 21.5% for the 181-365 days band, 1.9 points above the front. The shape get name wey futures market lend am: contango, where later delivery carry higher price. Inverted curve na backwardation.

Why the curve normally dey slope upward

Two mechanics dey keep the normal shape.

The first one na event density. Contract wey expire in nine days cover nine days of calendar risk. For large cap wey no get anything scheduled inside that window, most of those days na ordinary trading days. Contract wey expire in one year cover four quarterly reports, several central bank meetings, and every unscheduled headline wey fit happen in between. More known unknowns per contract dey push up the annualized number wey market go pay.

The second one na how volatility dey behave. Realized volatility dey cluster: quiet weeks dey follow quiet weeks, and violent weeks dey follow violent weeks. While market quiet, near dated options price close to today’s quiet reading. Options wey expire one year from now price nearer the long run average, wey dey higher. The same arithmetic dey work opposite way after shock. For sessions after crash, front expiry fit print the highest implied volatility for the board, and curve go invert throughout, while far months remain near their usual level.

Wetin fit turn the curve: dated event

Scheduled earnings report na the clearest inversion wey you fit watch. Report go come after close on known date. Every expiration wey settle after that date contain the move, while every expiration wey settle before am no contain am. The nearest expiry wey cover the event get the fewest ordinary days to average the move against, so its annualized reading rise the most. Six-month option spread the same event across roughly 125 trading days and barely register am.

NVIDIA report after close on Wednesday, February 26, 2025. The panel read the whole curve two times: for the last session before the print, February 25, and the first session after am, February 27.

QueryNVDA term structure either side of the February 26, 2025 report: median near-the-money IV by expiry band
The exact SQL behind every number
SELECT multiIf(days_to_expiry <= 20, '5-20 days',
               days_to_expiry <= 45, '21-45 days',
               days_to_expiry <= 90, '46-90 days',
               days_to_expiry <= 180, '91-180 days',
               '181-365 days') AS expiry_band,
       round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
                                                toDate(date) = toDate('2025-02-25')), 1) AS iv_before_print_pct,
       round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
                                                toDate(date) = toDate('2025-02-27')), 1) AS iv_after_print_pct,
       round(100 * (quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
                                                 toDate(date) = toDate('2025-02-25'))
                  - quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
                                                 toDate(date) = toDate('2025-02-27'))), 1) AS iv_drop_pts
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NVDA'
  AND date >= toDate('2025-02-25')
  AND date < toDate('2025-02-28')
  AND iv_converged = 1
  AND volume > 0
  AND implied_volatility BETWEEN 0.05 AND 5
  AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
  AND days_to_expiry BETWEEN 5 AND 365
GROUP BY expiry_band
HAVING countIf(toDate(date) = toDate('2025-02-25')) >= 3
   AND countIf(toDate(date) = toDate('2025-02-27')) >= 3
ORDER BY min(days_to_expiry)
Run this yourself

The 5-20 days band read 84.9% for the session before the print and 66.4% for the session after, a change of 18.5 points. The 181-365 days band move 1 points across the same two closes, just a fraction of the front band move. Na one underlying and one event, but the experience for the two ends of the curve different. That front-end collapse na IV crush, and term structure na where you fit see am ahead of time.

How to watch the curve build and collapse

One session before and after report na just snapshot. The build dey take weeks, and e dey show as the gap between the two ends of the curve dey widen.

QueryNVDA front band vs 91-180 day band: median near-the-money IV per session, Feb 10 to Mar 14, 2025
The exact SQL behind every number
SELECT toDate(date) AS session_date,
       round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
                                                days_to_expiry BETWEEN 5 AND 20), 1) AS front_iv_pct,
       round(100 * quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
                                                days_to_expiry BETWEEN 91 AND 180), 1) AS back_iv_pct,
       round(100 * (quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
                                                 days_to_expiry BETWEEN 5 AND 20)
                  - quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
                                                 days_to_expiry BETWEEN 91 AND 180)), 1) AS front_minus_back_pts
FROM global_markets.options_greeks
WHERE underlying_symbol = 'NVDA'
  AND date >= toDate('2025-02-10')
  AND date < toDate('2025-03-15')
  AND iv_converged = 1
  AND volume > 0
  AND implied_volatility BETWEEN 0.05 AND 5
  AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
  AND ((days_to_expiry BETWEEN 5 AND 20) OR (days_to_expiry BETWEEN 91 AND 180))
GROUP BY session_date
HAVING countIf(days_to_expiry BETWEEN 5 AND 20) >= 3
   AND countIf(days_to_expiry BETWEEN 91 AND 180) >= 3
ORDER BY session_date
Run this yourself

The gap between the bands run 12.4 points for the first session of the window and 3.3 points for the last, across 24 sessions. Watch the shape of the front line instead of the level: e dey climb as report dey near, reach top for the sessions around am, then drop back within one session after. The back line hardly move throughout. Earnings and the option greeks explain wetin the same event dey do to vega and theta for individual contracts.

How often the curve dey invert?

Inversion no be rare, and the amount of the year wey each name spend inverted differ well well between tickers.

QueryShare of sessions wey curve invert: front band dey above the 91-180 day band, twelve months to July 31, 2026
The exact SQL behind every number
WITH daily AS (
    SELECT underlying_symbol,
           toDate(date) AS session_date,
           quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
                                        days_to_expiry BETWEEN 5 AND 30) AS front_iv,
           quantileDeterministicIf(0.5)(toFloat64(implied_volatility), cityHash64(ticker),
                                        days_to_expiry BETWEEN 91 AND 180) AS back_iv
    FROM global_markets.options_greeks
    WHERE underlying_symbol IN ('NVDA', 'AAPL', 'MSFT', 'AMZN', 'KO', 'JNJ', 'PG', 'SPY', 'XOM', 'WMT')
      AND date >= toDate('2025-08-01')
      AND date < toDate('2026-08-01')
      AND iv_converged = 1
      AND volume > 0
      AND implied_volatility BETWEEN 0.03 AND 5
      AND abs(toFloat64(delta)) BETWEEN 0.35 AND 0.65
      AND ((days_to_expiry BETWEEN 5 AND 30) OR (days_to_expiry BETWEEN 91 AND 180))
    GROUP BY underlying_symbol, session_date
    HAVING countIf(days_to_expiry BETWEEN 5 AND 30) >= 3
       AND countIf(days_to_expiry BETWEEN 91 AND 180) >= 3
)
SELECT underlying_symbol AS ticker,
       count() AS sessions,
       round(100 * countIf(front_iv > back_iv) / count(), 1) AS inverted_pct,
       round(100 * quantileDeterministic(0.5)(front_iv - back_iv,
                                              cityHash64(concat(underlying_symbol, toString(session_date)))), 1) AS median_spread_pts
FROM daily
GROUP BY underlying_symbol
ORDER BY inverted_pct DESC
Run this yourself

For 251 sessions during the twelve months to July 31, 2026, XOM print the front band above the 91 to 180 day band on 68.5% of them, compared with 19.5% for SPY. Their median gaps dey 1.4 points and -2.1 points apart. Names wey get dated events on regular calendar spend more of the year inverted. Broad index fund spend most of its time in contango, with inversions clustered around selloffs. IV rank measure different thing: where today’s level dey inside its own past year, no be how curve shape across expirations.

Wetin flat or inverted curve dey do to calendar spread

Calendar spread sell near dated option and buy longer dated option for the same strike. Diagonal do the same thing across two different strikes. Either way, position long the back expiry implied volatility and short the front expiry own. That make term structure the main input, no be background detail.

When curve slope upward, near leg sell at lower implied volatility than the far leg wey you buy. When front month inverted ahead of event, that relationship reverse, and position open inside curve wey get somewhere to converge. Afterwards, front collapse toward the back, back move small, and spread between the two readings return to its normal shape. Where the position finally land still depend on how far the stock travel, and curve no tell you that one. The expected move page cover that part of the matter.

Flat curve na the awkward case. No slope dey there to work with in either direction, so outcome rest almost completely on the stock path and passage of time.

IV term structure FAQ

Wetin be IV term structure for options?

Na implied volatility plotted by expiration date for options wey dey near the money. Across six liquid names for June 2026, the median reading measure 19.6% for the 5-20 days band and 21.5% for the 181-365 days band.

Wetin inverted IV term structure mean?

Inverted curve dey print its highest implied volatility for the nearest expirations. E dey appear when dated event dey inside the front month, and for sessions after sharp selloff, when near dated contracts dey price from recent large moves while distant ones stay closer to long run average.

Why front month implied volatility dey so high before earnings?

Near dated contract get very few ordinary trading days to average one large expected overnight move against, so the annualized figure rise to account for am. NVIDIA’s 5-20 days band read 84.9% for the session before its February 26, 2025 report and 66.4% for the session after.

Term structure na the same thing as volatility skew?

No. Skew compare implied volatility across strikes inside one expiration. Term structure keep moneyness roughly fixed and compare across expirations. Volatility skew cover the strike dimension of the same surface.


Every figure above na stored query over per contract implied volatility, and you fit expand the SQL under each panel. Plot the same curve for any ticker on the Strasmore terminal.