Markets: A Rigorous Course

10.2 The theory of storage

Core about 35 min

Motivation

A crude trader looks at the spread between the first and second month before looking at the price. The spread says how tight prompt supply is. The theory of storage (Kaldor 1939, Working 1949, Brennan 1958) explains why: the slope of the curve is a function of inventories.

10.2.1Cost-of-carry bounds#

Setup

Frictionless markets except where stated. One can borrow and lend at rr. Storage costs are paid "in kind" at proportional rate uu: one unit stored from 00 to TT becomes e−uTe^{-uT} units. (Equivalently, storage is a negative dividend yield. If storage is a fixed rupee amount with present value UU, replace SeuTS e^{uT} by S+US + U throughout.)

Proposition 10.1cash-and-carry upper bound

In the absence of arbitrage,

F0(T)≤S0 e(r+u)T.(10.2)F_0(T) \le S_0\, e^{(r+u)T}. \tag{10.2}

With storage cost of present value UU per unit, F0(T)≤(S0+U)erTF_0(T) \le (S_0 + U) e^{rT}.

Proof

Suppose F0(T)>S0e(r+u)TF_0(T) > S_0 e^{(r+u)T}. At t=0t=0: borrow S0euTS_0 e^{uT}; buy euTe^{uT} units of the commodity; sell one futures contract at F0(T)F_0(T). Net cost zero. Storage paid in kind leaves euT⋅e−uT=1e^{uT}\cdot e^{-uT} = 1 unit at TT. At TT: deliver it against the futures, receive F0(T)F_0(T), repay S0euTerTS_0 e^{uT} e^{rT}. Profit F0(T)−S0e(r+u)T>0F_0(T) - S_0 e^{(r+u)T} > 0 in every state, with zero initial outlay: an arbitrage. With rupee storage cost: borrow S0+US_0 + U, buy one unit and prepay storage, deliver at TT; profit F0(T)−(S0+U)erTF_0(T) - (S_0 + U)e^{rT}.∎

Proposition 10.2no lower bound without inventory

Consider an agent who holds no inventory and cannot borrow the commodity. For any F0(T)<S0e(r+u)TF_0(T) < S_0 e^{(r+u)T}, including F0(T)F_0(T) arbitrarily close to zero or negative, there is no arbitrage available to this agent. An agent who holds inventory, and values the services of a marginal unit held until TT at a convenience yield ℓ\ell (or who can borrow the metal at lease rate ℓ\ell), faces the lower bound

F0(T)≥S0 e(r+u−ℓ)T.(10.3)F_0(T) \ge S_0\, e^{(r+u-\ell)T}. \tag{10.3}
Proof

The agent's static portfolio is x≥0x \ge 0 units of the commodity bought at 00 (stored in kind), ff futures (long if f>0f>0), and β\beta rupees in the bond. Zero cost: β=−xS0\beta = -x S_0. Payoff at TT:

VT=xe−uTST+f(ST−F0)−xS0erT=ST (xe−uT+f)−fF0−xS0erT.V_T = x e^{-uT} S_T + f (S_T - F_0) - x S_0 e^{rT} = S_T\,(x e^{-uT} + f) - f F_0 - x S_0 e^{rT}.

VTV_T is affine in STS_T, so VT≥0V_T \ge 0 for every ST∈[0,∞)S_T \in [0, \infty) if and only if (i) the slope is non-negative, xe−uT+f≥0x e^{-uT} + f \ge 0, and (ii) the intercept is non-negative, −fF0−xS0erT≥0-fF_0 - xS_0 e^{rT} \ge 0. Take 0<F0<S0e(r+u)T0 < F_0 < S_0 e^{(r+u)T}. Condition (ii) gives f≤−xS0erT/F0f \le -x S_0 e^{rT}/F_0, and (i) gives f≥−xe−uTf \ge -x e^{-uT}. Both hold only if −xe−uT≤−xS0erT/F0-x e^{-uT} \le -x S_0 e^{rT}/F_0, i.e. xe−uT≥xS0erT/F0x e^{-uT} \ge x S_0 e^{rT}/F_0, i.e. x (F0−S0e(r+u)T)≥0x\,(F_0 - S_0e^{(r+u)T}) \ge 0, which with F0<S0e(r+u)TF_0 < S_0 e^{(r+u)T} forces x=0x = 0. Then (i) and (ii) read f≥0f \ge 0 and −fF0≥0-fF_0 \ge 0, so f=0f = 0. The only zero-cost portfolio with a non-negative payoff is the empty one: no arbitrage, however low F0F_0 is.

What about F0≤0F_0 \le 0? Then buying futures (x=0x = 0, f>0f > 0) has payoff f(ST−F0)>0f(S_T - F_0) > 0, which looks like an arbitrage. But that payoff assumes the long can take delivery and dispose of the commodity at STS_T. A long without access to storage or transport at the delivery point cannot; at expiry it must pay someone to take the barrels. Its true payoff is f(−kT−F0)f(-k_T - F_0), where kTk_T is the cost of disposal, which is negative when kT>∣F0∣k_T > |F_0|. So even the bound F≥0F \ge 0 is not enforced by arbitrage when storage is unavailable.

For the inventory holder, xx may be negative down to −I-I. Selling one unit from inventory at S0S_0, investing at rr, saving the storage, and buying one futures yields at TT the same unit back plus S0e(r+u)T−F0S_0 e^{(r+u)T} - F_0, minus the value of the services the unit would have provided between 00 and TT. Writing those services as a continuous yield ℓ\ell on the unit's value gives (10.3) by the same algebra as Proposition 10.1 with signs reversed. For gold, ℓ\ell is observable: it is the lease rate at which central banks and bullion banks lend metal.∎

Definitionconvenience yield

Given (S,F,r,u,T)(S, F, r, u, T), the convenience yield is the number that makes (10.1) hold:

y≡r+u−1Tln⁡F0(T)S0.(10.4)y \equiv r + u - \frac{1}{T}\ln\frac{F_0(T)}{S_0}. \tag{10.4}

On its own, (10.4) is a definition, not a theory. The theory of storage gives it content by tying yy to inventories.

10.2.2Competitive storage#

Setup

(Williams and Wright 1991; Deaton and Laroque 1992, discrete-time version). Periods t=0,1,…t = 0, 1, \dots. Risk-neutral competitive storers can carry inventory It≥0I_t \ge 0 from tt to t+1t+1 at a physical cost kk per unit, paid at tt. They discount at rr. Total availability at tt is At=It−1+htA_t = I_{t-1} + h_t (carry-in plus new production hth_t); consumption is qt=At−Itq_t = A_t - I_t; the spot price is St=P(qt)S_t = P(q_t) with PP decreasing.

Proposition 10.3storage arbitrage

In competitive equilibrium, for every tt,

Et[St+1]1+r−St−k≤0,It≥0,It(Et[St+1]1+r−St−k)=0.(10.5)\frac{\mathbb{E}_t[S_{t+1}]}{1+r} - S_t - k \le 0, \qquad I_t \ge 0, \qquad I_t\left(\frac{\mathbb{E}_t[S_{t+1}]}{1+r} - S_t - k\right) = 0. \tag{10.5}

If a one-period futures price Ft(t+1)F_{t}(t+1) exists and storers are risk neutral, Ft(t+1)=Et[St+1]F_t(t+1) = \mathbb{E}_t[S_{t+1}], so: when inventories are positive the spread is at full carry, Ft=(St+k)(1+r)F_t = (S_t + k)(1+r); when inventories are zero (a stock-out) FtF_t can be anywhere below full carry.

Proof

A storer who buys one more unit at tt pays St+kS_t + k and expects EtSt+1/(1+r)\mathbb{E}_t S_{t+1}/(1+r) in present value. Free entry means expected profit cannot be positive: if it were, storers would buy more, raising StS_t (consumption falls) and lowering EtSt+1\mathbb{E}_t S_{t+1} (more carried into t+1t+1) until the gap closes. If expected profit is negative and It>0I_t > 0, storers release stocks: carry-out falls, this period's price falls and next period's expected price rises, until either the gap closes or It=0I_t = 0. These are exactly the Kuhn–Tucker conditions (10.5).∎

Proposition 10.3 is the formal content of Proposition 10.2 at the market level. The aggregate of storers cannot carry negative stocks, so backwardation (a futures price below spot plus carry) is consistent with equilibrium only at a stock-out. That prediction fails in the data: backwardation coexists with positive inventories most of the time. Kaldor (1939) and Working (1949) supplied the fix.

10.2.3Convenience yield and the supply of storage#

Kaldor–Working–Brennan idea A refiner, smelter or jeweller holding stocks gets a flow of services: it can keep the plant running through a delivery delay, meet an unexpected order, or avoid paying a spot premium. The marginal value of these services falls as stocks rise. Call it the marginal convenience yield y(I)y(I), per unit of value per year, with

  • y′(I)<0y'(I) < 0 (more stock, less marginal benefit),
  • y′′(I)>0y''(I) > 0 (the benefit falls fast at first, then flattens),
  • y(I)→0y(I) \to 0 as I→∞I \to \infty, and y(0)=yˉy(0) = \bar y large.

Brennan (1958) added a risk-aversion premium; Working (1949) estimated the curve for wheat. Holders of inventory equate the marginal cost of carrying to the futures spread plus convenience. In continuous time this gives the supply-of-storage curve

1Tln⁡F0(T)S0=r+u−y(I).(10.6)\frac{1}{T}\ln\frac{F_0(T)}{S_0} = r + u - y(I). \tag{10.6}

Proposition 10.4spread–inventory relation

Under the three assumptions on y(⋅)y(\cdot), the annualised log spread s(I)=r+u−y(I)s(I) = r + u - y(I) is

(a) strictly increasing in inventory; (b) strictly concave in inventory; (c) bounded above by full carry r+ur + u, approached as I→∞I \to \infty; (d) negative (backwardation) for I<I∗I < I^*, where y(I∗)=r+uy(I^*) = r + u, provided yˉ>r+u\bar y > r + u.

Proof

s′(I)=−y′(I)>0s'(I) = -y'(I) > 0; s′′(I)=−y′′(I)<0s''(I) = -y''(I) < 0; lim⁡I→∞s(I)=r+u−0\lim_{I\to\infty} s(I) = r + u - 0, and since y>0y > 0, s<r+us < r + u everywhere; yy is continuous and strictly decreasing from yˉ>r+u\bar y > r + u toward 0<r+u0 < r + u, so by the intermediate value theorem there is a unique I∗I^* with s(I∗)=0s(I^*) = 0 and s<0s < 0 on [0,I∗)[0, I^*).∎

So the curve has two regimes. With ample stocks the spread sits near full carry and is insensitive to inventory changes (the flat part of the concave curve). With scarce stocks the spread is very sensitive: a small draw sends the curve into steep backwardation. Two further consequences, both verified in the empirical literature:

  • Volatility. When inventories are low, demand shocks cannot be absorbed by stock drawdowns, so spot prices are more volatile and the front of the curve is more volatile than the back (Samuelson's 1965 maturity effect is strongest in tight markets).
  • Risk premiums. Gorton, Hayashi and Rouwenhorst (2013) show that the futures basis is a nonlinear function of inventories (as Proposition 10.4 says) and that low-inventory, backwardated commodities earn higher subsequent futures excess returns. Fama and French (1987) find that the basis varies with interest rates and with seasonal inventory patterns, as the theory requires.

Keynes and hedging pressure (a different question) Storage theory explains FF relative to SS. A separate question is FF relative to E[ST]\mathbb{E}[S_T]. Keynes (A Treatise on Money, 1930) argued that producers hedge by selling futures and pay speculators a premium to bear the risk, so Ft(T)<Et[ST]F_t(T) < \mathbb{E}_t[S_T]: "normal backwardation" in his sense means futures are downward-biased forecasts, not that the curve slopes down. Do not confuse the two meanings. The answer to "do long futures earn a premium?" depends on this bias, not on the curve shape alone (10.3.3).

Worked exampleimplied convenience yield, illustrative MCX crude numbers

Suppose MCX crude spot-equivalent is ₹7,000/bbl and the three-month contract is ₹6,860. Take r=5.5%r = 5.5\% (the RBI repo rate after the 7 Oct 2026 hike) and storage u=6%u = 6\% a year. Then

y=0.055+0.06−10.25ln⁡68607000=0.115+0.0808=19.6% a year.y = 0.055 + 0.06 - \frac{1}{0.25}\ln\frac{6860}{7000} = 0.115 + 0.0808 = 19.6\% \text{ a year}.

The cash-and-carry bound (10.2) is 7000 e0.115×0.25=₹7,2047000\, e^{0.115 \times 0.25} = \text{₹}7{,}204. A quote above ₹7,204 would be an arbitrage for anyone with access to storage; a quote of ₹6,860 is no arbitrage for anyone without barrels. (MCX crude is cash-settled against NYMEX WTI, 10.10, so no Indian trader can run the physical leg on MCX; the bound is enforced in Cushing, Oklahoma, and transmitted through the settlement link.)

Gold is the full-carry commodity The above-ground stock of gold is very large relative to annual mine output and industrial use (WGC Goldhub publishes both series), so II sits on the flat part of the storage curve and gold futures trade close to full carry. Storage is cheap relative to value. The relevant convenience yield is the lease rate ℓ\ell, so

F0(T)≈S0 e(r−ℓ)T.(10.7)F_0(T) \approx S_0\, e^{(r - \ell)T}. \tag{10.7}

Worked example: with spot gold at ₹1,38,000/10 g, r=5.5%r = 5.5\%, T=2T = 2 months, ℓ=0\ell = 0 gives F=₹1,39,271F = \text{₹}1{,}39{,}271; ℓ=1%\ell = 1\% gives ₹1,39,039. A gold forward below spot is rare and is read by bullion desks as a sign of physical tightness, precisely because by (10.7) it means ℓ>r\ell > r: someone is paying more to borrow metal than to borrow dollars.

Practitioner notes

  • Desks watch calendar spreads (month 1 minus month 2, and the 12-month spread) more than flat price. In crude, the "prompt spread" is a near-real-time inventory gauge between the weekly EIA reports.
  • The theory applies to storable commodities. Electricity is not storable, and its forward curve is a forecast with a risk premium, not a carry relation. Natural gas is storable but seasonal, so its curve has a winter hump even with ample stocks.
  • The full-carry bound is local. Brent's carry is set by the cost of floating storage on tankers; WTI's by tank space at Cushing. When a location's tanks fill, its carry can exceed the generic r+ur + u because uu itself explodes. That is the April 2020 mechanism.
  • Common mistake: "contango means the market expects higher prices." Under storage theory contango mainly means stocks are ample. Whether spot will rise is a separate question.

Create a free account

Reading is open to everyone. An account keeps your progress, answers, notes and code drafts, and gives you the study plan, the journals and the simulator. Running code needs an account approved for it.