Carry & term structure
Trend bets that prices keep moving; mean-reversion bets that they come back. Carry is the third great return source, and it needs no price forecast at all: it is what you earn if the price does nothing — the bond coupon, the interest-rate differential, the futures roll, the perp funding payment. This chapter derives carry from the futures term structure, tours its FX and crypto incarnations, and confronts the catch that defines the trade: carry pays you steadily for insuring against a crash that eventually happens.
Take any position and ask: if every spot price in the world were frozen for a year, what would I earn? A bond still pays its coupon. A high-yield currency funded by a low-yield one still collects the rate gap. A futures contract still slides along its curve toward spot as expiry approaches. A short perpetual still receives its funding every eight hours. That frozen-world return is carry. It is visible in advance— printed in today’s prices and rates, no forecasting model required — which is exactly what makes it seductive: it feels like arbitrage. It is not. The market pays visible carry as compensation for an invisible risk, and the whole craft of carry trading is pricing that risk honestly.
The third return source#
It helps to place carry against the two return sources the earlier chapters built. Each answers a different question about the same price series:
- Trend bets on continuation — that a move already underway persists. It needs the price to keep moving; it earns nothing (and bleeds costs) in a flat market.
- Mean-reversion bets on a stretched price snapping back toward an anchor. It needs the price to move back; a market that trends away from the anchor is its nightmare.
- Carry bets on nothing moving at all. Its return is contractual — a rate gap, a curve slope, a funding payment — realised so long as spot behaves. Its nightmare is the violent repricing that arrives precisely because so many others are harvesting the same payment.
The three are close to orthogonal by construction — they condition on different states of the world — which is why serious books run all three. But orthogonal in normal timesis the operative phrase; the crash state is where carry’s correlations misbehave, and this chapter keeps returning to it.
The futures term structure#
A futures curve plots, at one instant, the prices of contracts on the same underlying across delivery dates . Its shape has names:
- Contango — the curve slopes up: deferred contracts cost more than spot. Typical when storage is costly and convenience yield is low (gold, calm oil markets, VIX futures most of the time).
- Backwardation — the curve slopes down: deferred contracts are cheaper than spot. Typical when holding the physical asset now is valuable (supply squeezes, high convenience yield).
The shape is not a forecast of where spot is going — under no-arbitrage it is pinned by the economics of holding the underlying between now and delivery, the cost of carry:
with financing rate , storage cost , and convenience (or dividend) yield . When the curve is in contango; when it is backwardated.

Hold a futures contract while nothing happens: spot , rates, and the curve’s shape all stay frozen; only calendar time passes. Your contract’s time-to-delivery shrinks, so its price slides along the fixed curve toward spot. From the cost-of-carry formula, take logs and differentiate with respect to time-to-delivery:
As the calendar advances, decreases, so the log-price of your contract changes at the rate
Read it off the picture: the roll yield is minus the slope of the (log) futures curve. In backwardation the curve slopes down, so rolling up it toward spot earns positive carry; in contango you bleed the slope instead. This is the entire mechanical basis of futures carry strategies: rank markets by curve slope, be long the backwardated ones and short the contangoed ones — a cross-sectional sort where the characteristic is printed on the curve rather than estimated from history.
Numbers make the slope tangible. VIX futures spend most of their life in steep contango: a front-month contract 5% above spot VIX with one month to delivery rolls down at roughly /month — a brutal /yr headwind for naive long-vol ETPs, and the entire economic engine of the short-VIX products that compound it in reverse (until a vol spike deletes them). Crude oil in a supply squeeze can back-order to /month of backwardation — a /yr tailwind for the long. Same formula, opposite signs, and both printed on the curve before the trade is ever placed.
FX carry and the peso problem#
The oldest carry trade: borrow a low-yield currency (historically JPY), lend a high-yield one (AUD, BRL, TRY), and pocket the rate differential. The position’s log return decomposes into the contractual part and the price part:
Uncovered interest parity says the exchange rate should depreciate to eat exactly the differential — — leaving zero expected return. Empirically it mostly does not — high-yield currencies have historically depreciated less than the differential implies, leaving positive average returns. The catch is the shape of those returns: years of small steady gains, then a violent unwind in which every crowded carry pair crashes at once (1998, 2008) as funding currencies spike and risk positions are cut simultaneously.
Once you see the pattern — a visible payment for holding one thing against another — carry appears in every asset class, always with the same trade construction and the same skew:
| Asset class | The carry | Where it's printed | The crash that pays for it |
|---|---|---|---|
| Bonds | Yield + rolldown along the curve | The yield curve | Rate spikes / curve inversion |
| FX | Interest-rate differential | Money-market rates | Funding-currency squeeze (1998, 2008) |
| Commodities | Roll yield | Futures curve slope | Curve flip on a supply shock |
| Equities | Dividend yield vs financing | Dividend futures, index basis | Dividend cuts in recessions |
| Crypto | Perp funding / futures basis | Funding prints every 8h | Liquidation cascades |
Crypto carry: funding rates and the basis#
Crypto rebuilt the entire carry complex from scratch. A perpetual swap has no expiry, so exchanges tether it to spot with a funding rate: every 8 hours, if the perp trades above spot, longs pay shorts a fee proportional to the gap (and vice versa). Persistent speculative long demand keeps funding positive most of the time — meaning a hedged position (short perp, long spot) collects funding with no directional exposure. The dated-futures version is the basis trade: buy spot, short a future trading above it, and capture the annualised basis as the two converge at expiry.
import edgekit as ek
# realised funding on the BTC perp (Binance, 8-hourly)
fr = ek.data.fetch_funding_rates("BTCUSDT", limit=1000)
ann = fr["rate"].mean() * 3 * 365 # annualised carry
print(f"avg funding: {ann:.1%}/yr")
# cross-sectional carry portfolio: long high-carry, short low-carry
strat = ek.strategy.Carry(top_frac=0.3, rebalance="W")
out = strat.backtest(prices, carry) # both T×N DataFrames
out["returns"] # weekly long-short carry P&L
A desk runs the hedged BTC trade: long spot, short perp. Funding averages per 8-hour interval — about /yr — so the position drips in roughly a day, a year, with near-zero price exposure. For ten months it does exactly that. Then a crash week: BTC drops in days. The hedge holds — spot losses offset perp gains — but nothing else does: funding flips to per interval (you now pay /yr while unwinding), the exchange holding your short raises margin, the spot leg can’t be sold fast enough at quoted prices, and basis gaps against you as everyone exits the same trade. Realistic all-in damage: of notional — to , i.e. five to eight months of carry, in a week. The 8% was real. So was the week. The strategy’s true annual return is the grind minus the crash amortised over its recurrence time — a number you can only estimate by modelling the tail, not by annualising the calm.
Sizing carry with its skew in mind#
Carry’s return distribution is the mirror image of trend’s: frequent small wins, rare large losses — negative skew, fat left tail. Every moment-based shortcut misfires on that shape:
| Metric | What it says about carry | Why it misleads |
|---|---|---|
| Sharpe ratio | Often > 1.5 in calm samples | Symmetric penalty; blind to unsampled tails |
| Volatility | Low between crashes | The risk is a jump, not a wiggle |
| Max drawdown | Small — until it isn't | Backward-looking; the defining loss may not have happened yet |
| EVT tail VaR/ES | Prices the crash explicitly | The honest basis for sizing (see extreme value theory) |
The practical discipline: size the position off the tail, not the vol. Estimate the crash loss with ek.risk.evt_var_eson the strategy’s own returns (or a stressed simulation if the sample is crash-free), then choose exposure so that loss is survivable under the rules of position sizing. Diversify across carry families — FX, curve, funding — but respect that in a liquidation cascade their correlations converge to one; that is precisely when the tail dependence you ignored gets priced. Kelly on the observed mean and variance of a carry strategy is Kelly on a lie.
Next: the option market runs on its own term structure — implied volatility across strikes and expiries, and the trades hiding in its shape. The volatility surface.

