Arte SheetsLearn. Try. Understand.

Financial

Cost-of-carry price model: compare a maturity price with spot

Explore Spot × EXP((financing + storage - yield) × years), with explicit continuous-rate assumptions and a comparison against spot.

Model carry for one maturity

The model uses positive spot price, annual continuously compounded financing and proportional storage costs, a continuous income or convenience-yield input, and time in years. Equity dividends and physical convenience yield represent different mechanisms; for the equity example set storage to zero and use dividend yield.

This simplified forward-price relation can approximate a futures price under suitable assumptions. Daily settlement, stochastic rates, commodity borrowing constraints and uncertain convenience yield can matter. The output is not a market quote or a guaranteed arbitrage opportunity. One maturity versus spot does not describe the complete multi-maturity curve.

The displayed price is rounded to two decimals. The comparison instead uses the unrounded carry exponent, with an absolute tolerance of 1e-12 for floating-point zero. A tiny positive difference may therefore be labeled above spot even when the displayed prices round equally.

Carry InputCellNormal MarketSupply Squeeze (y = 12%)
Spot Price S0 ($/bbl)B2$80.00$80.00
Risk-Free r & Storage uB3 = 5%, B4 = 3%Gross carry = 8%/yrGross carry = 8%/yr
Convenience / Div Yield yB52%/yr (Net = +6%)12%/yr (Net = -4%)
6-Month Fair Futures (B6 = 0.5)S0 * EXP(net * T)$82.44 ("Contango")$78.42 ("Backwardation")

Continuous Cost-of-Carry Futures Fair Value F0

For equity index futures with zero storage cost, set B4 = 0 and enter index dividend yield in B5.

=IF(OR(COUNT(B2:B6)<>5,B2<=0,B4<0,B5<0,B6<0),"Invalid inputs",ROUND(B2 * EXP((B3 + B4 - B5) * B6), 2))

Compare the modeled maturity price with spot

Positive net carry over positive time produces Above spot (contango); negative carry produces Below spot (backwardation). These labels describe this model comparison only. At maturity, T=0, the output equals spot.

=IF(OR(COUNT(B2:B6)<>5,B2<=0,B4<0,B5<0,B6<0),"Invalid inputs",LET(carry,(B3+B4-B5)*B6,IF(ABS(carry)<=0.000000000001,"Flat",IF(carry>0,"Contango","Backwardation"))))

Try the example

Use the original values or change them to test your understanding.

Further reading