Futures Curve Trading: Roll Yield, Contango and Backwardation
Futures curve trading exploits the shape of the term structure — the relationship between prices of the same underlying at different expiries. Unlike directional bets on spot, curve trades isolate roll yield: the return from holding a futures position as time passes and the contract rolls toward spot. In commodities, equity indices, rates, and crypto dated futures, the curve shape encodes carry, storage costs, convenience yield, and funding demand. This article builds the accounting, shows when curve trades earn and when they bleed, and connects to carry and basis arbitrage.
The curve in one equation
For a futures price F(t,T) at time t for delivery at T, define the annualized basis:
basis(t,T) = (F(t,T) - S(t)) / S(t) × (365 / days_to_expiry)
- Contango: F > S, basis > 0 — longs pay roll yield (lose on roll)
- Backwardation: F < S, basis < 0 — longs earn roll yield (gain on roll)
The total return of a long futures position decomposes as:
R_futures = R_spot + R_roll
R_roll ≈ -basis × (holding_days / 365) (simplified, continuous roll)
Curve traders often go long backwardation (earn roll) or short contango (collect roll from shorts in commodities with storage costs). The sign depends on the asset class.
Roll yield by asset class
| Asset class | Typical curve shape | Who earns roll | Main driver |
|---|---|---|---|
| Commodities (oil, gas) | Contango (storage cost) | Shorts | Storage, convenience yield |
| Gold | Near-flat to contango | Shorts (mild) | Carry cost of metal |
| Equity index futures | Contango (financing) | Shorts | Dividend + rate differential |
| VIX futures | Persistent contango | Shorts | Vol risk premium |
| Crypto dated futures | Variable | Depends on funding demand | Leverage demand, basis |
| Rates (SOFR, Euribor) | Upward sloping | Long front, short back (curve trades) | Term premium |
The same math applies everywhere; the economic driver differs. Trading the curve without knowing why it is shaped that way is how commodity ETFs bleed 5-10% per year in contango while the spot price is flat.
Calendar spreads: the pure curve trade
A calendar spread is long one expiry and short another on the same underlying:
spread = F_near - F_far (or the reverse, by convention)
P&L comes from the change in the spread, not from spot direction (approximately delta-neutral if betas are matched). Example: long crude M1, short crude M6. If the curve flattens (contango narrows), the spread trade profits even if spot is flat.
def roll_yield_approx(spot: float, front: float, back: float,
days_front: int, days_back: int) -> dict:
"""Annualized roll yield for long front / short back calendar."""
basis_front = (front - spot) / spot * (365 / days_front)
basis_back = (back - spot) / spot * (365 / days_back)
# Long front earns: -basis_front; short back pays: +basis_back
net_roll = -basis_front + basis_back
return {
'basis_front_ann': basis_front,
'basis_back_ann': basis_back,
'net_roll_ann': net_roll,
}
# Spot=80, M1=82 (30d), M6=85 (180d) — contango steepening
r = roll_yield_approx(80, 82, 85, 30, 180)
# Long M1/short M6 loses if back contango > front (curve steepens against you)
The roll mechanism and index products
Passive long futures exposure (commodity ETFs, VIX ETPs) rolls from near to far contract on a schedule. In contango, each roll sells low (expiring) and buys high (next month) — a mechanical loss called negative roll yield. This is not a bug; it is the price of convex exposure without storage.
Quantitative approaches:
- Roll optimization — choose roll dates and target contracts to minimize roll cost
(e.g., roll when contango is flattest, not on a fixed calendar)
- Curve selection — hold the contract with the best roll yield on the curve, not
always front month
- Spread overlay — hedge contango with a calendar spread that profits from curve
flattening
See futures basics for margin and contract specs.
Equity index futures: implied repo and dividends
Index futures trade at:
F = S × exp((r - d) × T)
where r is the risk-free rate and d is the dividend yield. Contango reflects financing minus dividends. Basis trades (long index, short futures) lock in the implied repo rate — a form of classical arbitrage when basis deviates from fair value due to dividend uncertainty or balance-sheet constraints.
Crypto futures curve
Crypto dated futures (CME, Deribit, exchange quarterly) embed funding demand and interest rate arbitrage premia. The perpetual funding rate and the dated basis are linked: when perp funding is high, dated futures often trade at premium. Curve trades include:
- Long spot / short dated future when basis > borrow + fees (cash-and-carry)
- Calendar spread on quarterly vs monthly when term structure is kinked
- Cross-venue basis when the same expiry trades at different prices
Transfer latency and counterparty risk are the binding constraints, not the math.
Risk management on curve trades
Curve trades are not delta-neutral in practice:
- Basis risk — the spread can move against you faster than roll accrues
- Liquidity — back months have wider spreads; slippage on rolls eats roll yield
- Curve regime shifts — OPEC announcement, VIX spike, or rate shock reshapes the
entire curve in hours
- Margin — calendar spreads have reduced margin but tail events can still force
Size by the worst historical spread move in your holding window, not by spot vol. Use stress testing with "curve steepening 2 sigma" scenarios.
Backtesting curve strategies
Common biases:
- Roll assumption — backtests that assume you roll at settlement price ignore
intraday slippage on roll days
- Survivorship in contract chains — use continuous contract series with explicit
roll rules, not spliced prices that hide roll cost
- Liquidity filtering — back-month contracts may have been untradeable at historical
sizes
Event-driven backtesting (event-driven vs vectorized) is preferable: model each roll as an explicit trade with bid-ask and impact.
Key takeaways
- Futures returns = spot return + roll yield; curve shape determines the split
- Contango bleeds longs on roll; backwardation pays longs — know which side you are on
- Calendar spreads isolate curve risk from spot direction
- Roll optimization and spread overlays can recover contango bleed in passive products
- Backtest rolls explicitly with costs — hidden roll assumptions inflate Sharpe
