Forward and Futures Pricing and Hedging › Cost-of-Carry Pricing
Quantitative FinanceAll chapters Forward and Futures Pricing and Hedging › Cost-of-Carry PricingOne section · Sections in this chapter3 / 11 ↓
Reading tools Definitions & inline links
Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.
Article links
Make inline references clickable
The forward price is determined by a no-arbitrage argument based on the cost of carrying the underlying asset until the delivery date. The core insight is deceptively simple: there are two ways to obtain an asset at a future date. You can either buy it forward, committing today to purchase at a predetermined price when you need it, or you can buy it today in the spot market and store it until you need it. Since both approaches deliver the same outcome, namely possession of the asset at the future date, they must cost the same in present value terms. If they didn't, you could profit risklessly by buying the cheaper approach and selling the more expensive one.
The Fundamental Pricing Equation
Consider an asset with current spot price and a forward contract expiring at time (measured in years). If the continuously compounded risk-free interest rate is , the forward price must satisfy:
where:
- : forward price
- : current spot price
- : continuously compounded risk-free interest rate
- : time to expiration in years
This elegant formula states that the forward price equals the spot price grown at the risk-free rate for the time until delivery. The intuition is straightforward: if you choose to buy the asset today rather than forward, you must finance that purchase. The cost of that financing, accumulated over the contract period, is exactly what makes the two approaches equivalent.
The cost of carry represents all costs and benefits associated with holding an asset over time. For financial assets, this includes financing costs (interest paid to fund the position), minus any income received (dividends, coupons). For physical commodities, it also includes storage costs and may be offset by convenience yield, which is the benefit of having physical possession.
To understand why this formula holds, and why it must hold in a well-functioning market, consider what happens if the forward price deviates from this value. Any deviation creates an arbitrage opportunity, which market participants will exploit until prices realign. Let us examine both cases.
Arbitrage: Cash-and-Carry
Suppose the forward price is too high: . You can lock in a riskless profit through the following cash-and-carry strategy. The name reflects the mechanics: you use cash to buy the asset and carry it until delivery.
- Borrow at the risk-free rate
- Buy the asset in the spot market for
- Enter a short forward contract to sell at at time
At expiration, we unwind all positions:
- Deliver the asset under the forward contract, receiving
- Repay the loan:
- Profit:
This profit is guaranteed regardless of where the spot price ends up at expiration. You hold the physical asset, so there is no market risk; delivery is simply a matter of handing over what you already own. The profit requires zero initial investment because the borrowed funds exactly cover the spot purchase. This is the definition of arbitrage: riskless profit with no capital at risk.
Such opportunities cannot persist in competitive markets. Arbitrageurs would flood the market with this trade, selling forwards (pushing forward prices down) and buying spot (pushing spot prices up), until the price discrepancy disappears. The market quickly converges to .
Arbitrage: Reverse Cash-and-Carry
Conversely, if , the reverse cash-and-carry strategy yields arbitrage profits. The logic is symmetric but the positions are reversed.
- Short-sell the asset, receiving
- Invest at the risk-free rate
- Enter a long forward contract to buy at at time
At expiration:
- Receive from the investment
- Pay under the forward, receive the asset
- Return the asset to close the short position
- Profit:
Again, this is riskless profit with no initial investment. The forward contract guarantees you can acquire the asset at to close the short, eliminating any market risk. Arbitrageurs executing this strategy would buy forwards (pushing forward prices up) and sell spot (pushing spot prices down), eliminating the discrepancy.
The forward price is squeezed between these two arbitrage bounds, leaving only as the equilibrium. Any other price invites profitable trading that moves the market toward this value.

Pricing Assets with Income
Many assets generate income while you hold them. Stocks pay dividends, bonds pay coupons, and foreign currencies earn interest in their home country. This income reduces the cost of carry because the holder benefits from owning the asset. As a forward buyer, you do not receive the asset until expiration. Because you forgo this income, you pay a lower forward price to compensate.
Discrete dividend case:
If the underlying pays a known cash dividend at time , the forward price becomes:
where:
- : forward price
- : current spot price
- : cash dividend amount
- : time until the dividend payment (in years)
- : risk-free interest rate
- : time to expiration
- : discount factor
The term is the present value of the dividend. You subtract it from the spot price because you don't receive this dividend; only the current holder does. Think of it this way: if you buy the asset today, you get both the asset at expiration and the dividend along the way. If you buy forward, you only get the asset at expiration. The forward price must be lower to account for this missing benefit, and the reduction equals exactly the present value of what you forgo.
Continuous dividend yield:
For assets like equity indices where dividends are paid frequently by many constituents, it's convenient to model dividends as a continuous yield . Rather than tracking hundreds of discrete payments, we approximate the aggregate dividend stream as a constant percentage of the index value paid continuously over time:
where:
- : forward price
- : current spot price
- : risk-free interest rate
- : continuous dividend yield (annualized)
- : time to expiration
The dividend yield reduces the forward price because the spot holder earns income that you forgo. The formula has an elegant interpretation: the "net" cost of carry is , representing financing costs minus income received. When dividends are high relative to interest rates, this net cost can be small or even negative. The following function implements the general cost-of-carry model:
def forward_price(spot, rate, time, div_yield=0, storage_cost=0):
"""
Calculate forward price under cost-of-carry model.
Parameters:
- spot: Current spot price
- rate: Continuously compounded risk-free rate (annualized)
- time: Time to expiration in years
- div_yield: Continuous dividend yield (annualized)
- storage_cost: Continuous storage cost rate (annualized)
"""
return spot * np.exp((rate - div_yield + storage_cost) * time)
# Example: S&P 500 index forward
spot_price = 5000
risk_free_rate = 0.05 # 5% annual rate
dividend_yield = 0.015 # 1.5% dividend yield
time_to_expiry = 0.5 # 6 months
index_forward = forward_price(
spot_price, risk_free_rate, time_to_expiry, dividend_yield
)S&P 500 Index Forward Pricing ======================================== Spot price: $5,000.00 Risk-free rate: 5.0% Dividend yield: 1.5% Time to expiry: 0.5 years Forward price: $5,088.27 Forward premium: $88.27
The forward trades at a premium to spot because the interest cost of carrying the position () exceeds the dividend income (). This net cost of carry is reflected in the forward price. In market terminology, we say the forward is trading at a premium or that the curve is in contango.

Commodity Forwards and Storage Costs
Physical commodities introduce additional complexity beyond what we encounter with financial assets. Unlike stocks or currencies, commodities incur real storage costs: warehousing, insurance, and potential spoilage. A barrel of oil doesn't sit for free; it requires tanks, security, and protection from the elements. Gold must be vaulted and insured against theft. Agricultural commodities may deteriorate over time or require climate-controlled storage. These costs increase the forward price because you must cover them:
where:
- : forward price
- : current spot price
- : risk-free interest rate
- : continuous storage cost rate (annualized)
- : time to expiration
However, commodities also exhibit a phenomenon rarely seen in financial assets: convenience yield. Holding physical inventory can be valuable during supply disruptions or production bottlenecks. A manufacturer might pay a premium for immediate access to raw materials rather than waiting for a forward delivery. A refinery that runs out of crude oil must shut down production, incurring massive costs. The option to avoid such disruptions has real economic value.
Convenience yield represents the non-monetary benefits of holding physical inventory. It arises from the option value of having the commodity available for immediate use or sale during supply shortages. Convenience yield is typically unobservable directly and is inferred from observed forward prices.
Including convenience yield , the pricing formula becomes:
where:
- : forward price
- : current spot price
- : risk-free interest rate
- : continuous storage cost rate
- : continuous convenience yield
- : time to expiration
When convenience yield is high, typically during supply disruptions or low inventory periods, forward prices can fall below spot prices. This condition is called backwardation, which reflects that the market "backs" into lower future prices because immediate possession is so useful. When forward prices exceed spot prices (the normal case for non-yielding assets), the market is in contango. Understanding these term structure shapes is needed for commodity traders and hedgers, as they affect rolling strategies and storage economics.
import numpy as np
# Compare term structures: contango vs backwardation
maturities = np.array([0.25, 0.5, 1.0, 1.5, 2.0]) # Years
spot = 100
# Contango: gold (storage cost dominates, no convenience yield)
gold_forwards = forward_price(
spot, rate=0.05, time=maturities, storage_cost=0.005
)
# Backwardation: crude oil with high convenience yield
oil_forwards = forward_price(
spot, rate=0.05, time=maturities, storage_cost=0.02, div_yield=0.08
)