How to Read Volatility Term Structure: Contango, Backwardation & Event Pricing | FlashAlpha Research

How to Read Volatility Term Structure: Contango, Backwardation & Event Pricing

Volatility term structure plots ATM implied volatility across expirations, revealing whether the market is in contango or backwardation. Learn how to read term structure shape, extract event-implied moves using total variance, and build a Python term structure analyzer using the FlashAlpha API.

T
Tomasz Dobrowolski
Quant Engineer
Mar 17, 2026 · 40 min read
Volatility TermStructure Contango Backwardation EventPricing Options

What Is Volatility Term Structure

Volatility term structure is a plot of at-the-money implied volatility (ATM IV) across all available option expirations for a given underlying. Each point on the curve represents the market's annualized volatility expectation for that specific time horizon. A 30-day option priced at 25% IV tells you the market expects annualized 25% volatility over the next month. A 90-day option at 28% IV tells you the same market expects slightly higher annualized volatility over the next quarter.

The shape of this curve is what matters. Two stocks can have identical ATM IV for the front month, but completely different term structures — and those shapes carry very different information about market expectations, event risk, and trading opportunities.

Term structure is distinct from the volatility smile or skew, which plots IV across strikes for a single expiration. Term structure plots IV across time at a fixed delta (typically ATM or 50-delta). Together, term structure and skew form the full volatility surface.

Why This Matters

Term structure shape is one of the fastest regime indicators available. A single glance tells you whether the market is calm, fearful, or pricing a discrete event — and each state implies a different optimal trading strategy. If you trade options without checking term structure, you are ignoring half the information the market is giving you.

Contango: The Normal State

In calm markets, volatility term structure slopes upward — shorter-dated options have lower IV than longer-dated options. This is called contango, borrowing the term from commodity futures where the same upward-sloping pattern appears.

Contango is the default state because of a fundamental property of uncertainty: the further into the future you look, the more things can happen. A stock might be quiet this week, but over the next six months it faces earnings cycles, macro events, sector rotations, and general market risk. Longer-dated options must price in all of these possibilities, so their IV is naturally higher.

~65%
Of trading days, SPX term structure is in contango
2-5%
Typical IV slope from 30d to 90d in calm markets
+0.15
Average annualized slope per month in steady contango

The steepness of contango also carries information. A steep contango — where far-dated IV is significantly higher than near-term — suggests the market is extremely complacent in the short run but sees risk on the horizon. A flat contango, where the curve barely slopes upward, suggests the market expects current conditions to persist.

Backwardation: The Warning Signal

When the term structure inverts — shorter-dated IV exceeds longer-dated IV — the curve is in backwardation. This is the abnormal state, and it signals one of two things: the market is under stress right now, or a specific near-term event is inflating front-month IV.

Stress-Driven Backwardation

During market selloffs, fear spikes short-term IV far above long-term IV. Traders rush to buy near-term puts for protection, driving front-month IV sharply higher. The back end stays relatively anchored because the market assumes the crisis will eventually resolve. VIX term structure inverted during COVID (March 2020), the 2022 rate shock, and every meaningful correction in between.

Event-Driven Backwardation

Individual stocks frequently enter backwardation before earnings, FDA decisions, or other binary events. The front expiration — the one that brackets the event — inflates while expirations after the event stay normal. This is not fear. It is the market pricing a known uncertainty that resolves on a specific date.

Contango (Normal)
  • Short-term IV < long-term IV
  • Market is calm, no imminent risk
  • Calendar spreads benefit from positive theta
  • Front-month premium selling is less attractive
  • Volatility risk premium is typically positive
Backwardation (Inverted)
  • Short-term IV > long-term IV
  • Market stress or event pricing
  • Calendar spreads face headwinds
  • Front-month premium selling is richly compensated
  • Realized vol often spikes above implied
45% 40% 35% 30% 25% 20% ATM Implied Volatility 7d 30d 60d 90d 120d 180d Days to Expiration Contango (normal) Backwardation

Figure 1. Contango vs backwardation term structure. In contango (green), IV increases with time to expiration. In backwardation (red dashed), near-term IV exceeds longer-dated IV, signaling stress or event pricing.

Event Pricing and Implied Moves

Discrete events — earnings announcements, FOMC decisions, CPI releases — create visible bumps in the term structure. The expiration that brackets the event has elevated IV relative to surrounding expirations. This bump is not noise; it is the market's consensus estimate of the event's impact.

You can extract the implied move for a specific event using the total variance method. The key insight is that variance (IV squared times time) is additive, but volatility is not. By comparing total variance across expirations that straddle the event, you can isolate the event's contribution.

Total Variance Method

Total variance for an expiration is calculated as IV² × T, where T is time to expiration in years. To extract the event-implied move: compute total variance for the expiration just after the event and the expiration just before the event. The difference is the event variance. The implied move is the square root of the event variance, typically expressed as a percentage of spot price.

For example, if a stock has a weekly option expiring before earnings with 30% IV (T = 0.02 years) and a weekly option expiring after earnings with 55% IV (T = 0.04 years):

# Total variance before event
tv_before = 0.30**2 * 0.02  # = 0.00018

# Total variance after event (includes earnings)
tv_after = 0.55**2 * 0.04   # = 0.01210

# Event variance (isolated)
event_var = tv_after - tv_before  # = 0.01192

# Implied event move (1-day)
import math
implied_move = math.sqrt(event_var) * 100  # = 10.9%

This tells you the market is pricing in approximately an 11% move from the earnings announcement. Compare this to the stock's historical earnings moves to assess whether the market is over- or under-pricing the event.

The total variance method works because variance is additive across independent time intervals. If the pre-event period and the event itself are approximately independent, you can subtract the "background" variance to isolate the event. This method assumes the pre-event and post-event periods contribute independently to total variance — a reasonable approximation when the event window is short relative to the total time to expiration. This is the standard approach used by institutional desks and volatility arbitrage funds.

55% 50% 42% 35% 28% 20% ATM Implied Volatility Mar 21 Mar 28 Apr 17 Apr 25 May 16 Jun 20 Expiration Date Earnings Event Bump Pre-event exps Post-event exps Actual term structure Baseline (no event)

Figure 2. Event bump in term structure. The Apr 25 expiration (which brackets earnings) shows elevated IV compared to the smooth baseline. Pre-event and post-event expirations anchor the "normal" curve, allowing you to isolate the event-implied variance.

Term Structure Slope as a Regime Indicator

The slope of the term structure — the difference between short-dated and long-dated IV — acts as a real-time regime indicator. You do not need sophisticated models to read it. The signal is in the shape.

Slope State Signal Trading Implication
Steep contango 30d IV << 90d IV Near-term complacency, longer-term risk priced Sell far-dated vol, buy near-dated; ratio calendars
Flat 30d IV ≈ 90d IV Transition zone — watch for directional shift Neutral; avoid calendar spreads, prefer verticals
Mild backwardation 30d IV > 90d IV by 1-3% Elevated near-term risk, event premium Sell front-month premium; calendar spreads short front
Steep backwardation 30d IV >> 90d IV Crisis or extreme event pricing Hedge aggressively; avoid selling naked front-month
Deep Backwardation Mild Backwardation Flat Mild Contango Steep Contango Slope: +3.2% -15% 0% +15%

Figure 3. Term structure regime gauge. The slope (30d IV minus 90d IV) maps to a spectrum from deep backwardation (left, red) through flat (center, gray) to steep contango (right, green). The marker shows a sample reading of +3.2% slope, indicating mild contango.

Tracking the slope over time reveals regime transitions before they become obvious in price. When a stock's term structure flattens from steep contango over several days, it often precedes a volatility expansion — the market is gradually pricing in growing near-term uncertainty even before a visible catalyst appears.

Pull Term Structure with the FlashAlpha API

The Volatility Analysis endpoint (/v1/volatility/{symbol}, Growth plan) returns term structure data including the contango/backwardation state and slope percentages. For a free-tier view of the surface, the Surface endpoint (/v1/surface/{symbol}) provides IV across strikes and expirations. Free tier includes 10 requests per day.

Here is a complete Python script that pulls term structure, identifies the regime, and extracts the earnings-implied move:

from flashalpha import FlashAlphaClient
import math

client = FlashAlphaClient(api_key="your_api_key")

# --- Step 1: Pull term structure and regime ---
vol = client.get_volatility("NVDA")

print(f"NVDA ATM IV:        {vol['atm_iv']}%")
print(f"Term Structure:     {vol['term_structure']['state']}")
print(f"Slope (30d-90d):    {vol['term_structure']['slope_pct']}%")

# Access per-expiration ATM IV
for exp in vol["term_structure"]["expirations"]:
    print(f"  {exp['expiry']}  IV={exp['atm_iv']}%  DTE={exp['dte']}")

# --- Step 2: Identify regime ---
state = vol["term_structure"]["state"]
slope = vol["term_structure"]["slope_pct"]

if state == "backwardation":
    print(f"\n⚠ BACKWARDATION detected (slope: {slope}%)")
    print("  Near-term IV elevated — check for upcoming event")
elif state == "contango" and slope > 5:
    print(f"\n✓ Steep contango (slope: {slope}%)")
    print("  Calendar spreads and front-month premium selling favored")
else:
    print(f"\n— Mild contango (slope: {slope}%)")
    print("  Neutral regime — no strong term structure signal")

# --- Step 3: Extract earnings implied move ---
exps = vol["term_structure"]["expirations"]

# Find the two expirations that straddle earnings
# (Assumes you know approximate earnings date)
earnings_date = "2026-04-23"  # example

pre_event = None
post_event = None
for exp in exps:
    if exp["expiry"] < earnings_date:
        pre_event = exp
    elif exp["expiry"] >= earnings_date and post_event is None:
        post_event = exp

if pre_event and post_event:
    tv_pre = (pre_event["atm_iv"] / 100)**2 * (pre_event["dte"] / 365)
    tv_post = (post_event["atm_iv"] / 100)**2 * (post_event["dte"] / 365)
    event_var = tv_post - tv_pre
    if event_var > 0:
        implied_move = math.sqrt(event_var) * 100
        print(f"\nEarnings Implied Move: ±{implied_move:.1f}%")
        print(f"  Pre-event:  {pre_event['expiry']} IV={pre_event['atm_iv']}%")
        print(f"  Post-event: {post_event['expiry']} IV={post_event['atm_iv']}%")
    else:
        print("\nNo event premium detected between these expirations")
else:
    print("\nCould not find expirations straddling earnings date")

Sample output:

NVDA ATM IV:        42.8%
Term Structure:     backwardation
Slope (30d-90d):    -6.2%
  2026-03-21  IV=48.5%  DTE=4
  2026-03-28  IV=46.1%  DTE=11
  2026-04-17  IV=41.3%  DTE=31
  2026-04-25  IV=52.7%  DTE=39
  2026-05-16  IV=39.8%  DTE=60
  2026-06-20  IV=38.2%  DTE=95

⚠ BACKWARDATION detected (slope: -6.2%)
  Near-term IV elevated — check for upcoming event

Earnings Implied Move: ±8.7%
  Pre-event:  2026-04-17 IV=41.3%
  Post-event: 2026-04-25 IV=52.7%

Calendar Spread Trading with Term Structure Signals

Calendar spreads are the natural expression of a term structure view. You sell the expiration with relatively high IV and buy the expiration with relatively low IV — profiting when the term structure normalizes.

Selling Backwardation (Post-Event Normalization)

When a stock enters backwardation before earnings, the front expiration is inflated. A calendar spread — short the front expiration, long the back expiration at the same strike — profits from the IV collapse in the front leg after the event resolves, while the back leg holds its value. This is the purest expression of selling event premium.

Selling Steep Contango

When long-dated IV is unusually elevated relative to short-dated, a reverse calendar — long the front, short the back — bets on flattening. This is less common and riskier, because contango can persist for extended periods. It works best when the back-end elevation is driven by a specific identifiable factor (e.g., an election, a regulatory decision) that is likely to resolve.

Calendar spreads are not pure volatility bets. They also carry directional risk — a large gap in the underlying can overwhelm the vol differential. Size calendars to the maximum loss (the debit paid) and use ATM strikes to minimize directional exposure. If you want pure term structure exposure, use variance swaps or VIX futures spreads at the index level.

Calendar Spread: Selling Backwardation Time / Expiration Near-term exp (post-earnings) Far-term exp SELL Near-term option IV = 48% (inflated) BUY Far-term option IV = 32% (normal) IV collapses to 28% Short leg profits IV stays at ~31% Long leg holds value NET PROFIT Term structure normalizes

Figure 4. Calendar spread structure for selling backwardation. Sell the inflated near-term option (red) and buy the normally-priced far-term option (blue). After the event, near-term IV collapses while far-term IV holds steady, generating profit from term structure normalization.

Practical Workflow

  1. Check term structure state

    Use the /v1/volatility/{symbol} endpoint to confirm contango or backwardation and read the slope percentage.

  2. Identify the event

    If in backwardation, determine whether the cause is an earnings date, macro event, or market-wide stress. The trade differs for each.

  3. Extract the implied move

    Use total variance to isolate the event contribution. Compare to historical moves to assess if the market is over- or under-pricing.

  4. Structure the calendar

    Sell the inflated expiration, buy the adjacent expiration. Choose ATM strikes for the cleanest term structure expression.

  5. Monitor post-event

    After the event, front IV should collapse. Close the spread once normalization occurs rather than holding to full expiration.

Track Term Structure with FlashAlpha

The /v1/volatility/{symbol} endpoint (Growth plan) returns everything you need for term structure analysis: per-expiration ATM IV, contango/backwardation state, slope percentages, and VRP data. For visualizing the full IV surface across both strikes and expirations, the /v1/surface/{symbol} endpoint is available on the free tier with 10 requests per day.

Monitor Term Structure in Real-Time

Detect contango/backwardation shifts, extract event-implied moves, and track slope changes across your watchlist.

Get API Key → Try the Playground

Related Reading

Frequently Asked Questions

Volatility term structure is a curve that plots at-the-money implied volatility across different option expirations for a given underlying. It shows how the market's volatility expectations change as you move further into the future. When the curve slopes upward (contango), the market is calm. When it inverts (backwardation), the market is pricing elevated near-term risk.
Contango means longer-dated options have higher implied volatility than shorter-dated options — this is the normal state in calm markets. Backwardation means shorter-dated options have higher IV than longer-dated options, signaling near-term stress or an upcoming event like earnings or an FOMC decision. The terms are borrowed from commodity futures where similar curve dynamics occur.
Use the total variance method. Calculate total variance (IV squared times time to expiration) for the expiration just before earnings and the expiration just after earnings. Subtract the pre-event variance from the post-event variance to isolate the event's contribution. The square root of this event variance gives you the implied percentage move the market is pricing for the earnings announcement.
Calendar spreads profit from term structure normalization. In backwardation (e.g., before earnings), sell the inflated front-month option and buy the back-month option at the same strike. After the event, front IV collapses while back-month IV holds steady, and the spread gains value. Use ATM strikes to minimize directional exposure and size positions to the maximum loss, which is the debit paid.

Live Market Pulse

Get tick-by-tick visibility into market shifts with full-chain analytics streaming in real time.

Intelligent Screening

Screen millions of option pairs per second using your custom EV rules, filters, and setups.

Execution-Ready

Instantly send structured orders to Interactive Brokers right from your scan results.

Join the Community

Discord

Engage in real time conversations with us!

Twitter / X

Follow us for real-time updates and insights!

GitHub

Explore our open-source SDK, examples, and analytics resources!