Markets: A Rigorous Course

7.1 Forward contracts and the cost-of-carry price

Core about 40 min

Motivation

A forward price is not a forecast. It is the price at which a dealer can deliver the asset at TT without taking any view, by buying it today and carrying it. Once you see this, index futures stop looking like bets on the Nifty and start looking like financed positions in the Nifty, and most of what follows (fair value, roll costs, arbitrage funds, hedge sizing) becomes arithmetic.

7.1.1Definitions#

A forward contract is a bilateral agreement made at time 0 to exchange one unit of an asset at a fixed future date TT for a fixed price KK, the delivery price. The buyer is long and the seller is short. Nothing changes hands at time 0. At TT the long's payoff is

ST−K,and the short’s is K−ST.S_T - K, \qquad \text{and the short's is } K - S_T.

The forward price G0G_0 at time 0 is the delivery price that makes a newly written contract worth zero to both sides. When the contract is struck, K=G0K = G_0; afterwards KK stays fixed while the forward price for the same delivery date moves.

A forward can be physically settled (the asset is delivered against KK) or cash settled (the loser pays the winner ∣ST−K∣|S_T-K|). For valuation the two are identical as long as the cash settlement uses the true STS_T.

A futures contract is a standardised forward traded on an exchange, guaranteed by a clearing corporation and settled daily. 7.2 shows why daily settlement can make its price differ from the forward price, and why for equity index futures the difference is negligible. Until then we write F0F_0 for the forward price as well.

7.1.2Assumptions#

The derivations in 7.1 assume:

  • A1. No frictions. No brokerage, taxes or bid–ask spreads. (Relaxed in Prop. 7.4.)
  • A2. One interest rate. Anyone can borrow and lend any amount at the same continuously compounded rate rr, constant over [0,T][0,T]. (Relaxed in Prop. 7.4 and 7.2.)
  • A3. Short selling. Anyone can sell an asset they do not own and use the full proceeds, paying the lender any dividends that fall due.
  • A4. No default. Counterparties honour the contract. (For exchange-traded futures, the clearing corporation enforces this; 7.2.)
  • A5. Dividends. The asset pays a known continuous yield qq, reinvested in the asset. (Discrete dividends: Prop. 7.2.)

The only economic principle used is no arbitrage: there is no self-financing strategy that costs nothing (or less than nothing) today and has a non-negative payoff that is strictly positive with positive probability. Equivalently: two portfolios with the same payoff at TT and no intermediate cash flows must cost the same today (the law of one price). If one were cheaper, buying it and selling the other would be an arbitrage.

7.1.3The no-arbitrage forward price#

Proposition 7.1cost of carry

Under A1–A5, the forward price for delivery at TT is

F0=S0 e(r−q)T.(7.1)F_0 = S_0\,e^{(r-q)T}. \tag{7.1}
Proof

We show that any other price allows an arbitrage, by constructing it explicitly.

First note the effect of reinvesting dividends. If you hold ntn_t units and reinvest the dividends qStnt dtqS_tn_t\,dt in the asset at price StS_t, the holding grows by dnt=qnt dtdn_t = q n_t\,dt, so nT=n0eqTn_T = n_0e^{qT}. Starting with n0=e−qTn_0=e^{-qT} units gives exactly one unit at TT. The same argument in reverse holds for a short position: a short seller who must pay the lender qStnt dtqS_tn_t\,dt can fund it by shorting qnt dtqn_t\,dt more units, so a short of e−qTe^{-qT} units grows to a short of one unit.

Case 1: F0>S0e(r−q)TF_0 > S_0e^{(r-q)T}. Cash-and-carry arbitrage. At t=0t=0:

Action at t=0t = 0 Cash flow at 0 Cash flow at TT
Borrow S0e−qTS_0e^{-qT} at rr +S0e−qT+S_0e^{-qT} −S0e−qTerT-S_0e^{-qT}e^{rT}
Buy e−qTe^{-qT} units, reinvest dividends −S0e−qT-S_0e^{-qT} hold 1 unit
Sell one forward at F0F_0 0 deliver 1 unit, receive F0F_0
Total 0 F0−S0e(r−q)T>0F_0 - S_0e^{(r-q)T} > 0

The terminal cash flow, the cash-and-carry profit

ΠT=F0−S0e(r−q)T,(7.2)\Pi_T = F_0 - S_0e^{(r-q)T}, \tag{7.2}

does not depend on STS_T, so it is riskless. A strategy that costs nothing and pays a positive certain amount is an arbitrage.

Case 2: F0<S0e(r−q)TF_0 < S_0e^{(r-q)T}. Reverse cash-and-carry arbitrage. At t=0t=0:

Action at t=0t = 0 Cash flow at 0 Cash flow at TT
Short e−qTe^{-qT} units, pay dividends by shorting more +S0e−qT+S_0e^{-qT} short 1 unit
Lend S0e−qTS_0e^{-qT} at rr −S0e−qT-S_0e^{-qT} +S0e−qTerT+S_0e^{-qT}e^{rT}
Buy one forward at F0F_0 0 pay F0F_0, receive 1 unit, return it to close the short
Total 0 S0e(r−q)T−F0>0S_0e^{(r-q)T} - F_0 > 0

Again the payoff is certain and positive at zero cost. Since both strict inequalities lead to arbitrage, F0=S0e(r−q)TF_0 = S_0e^{(r-q)T}.∎

For a cash-settled contract, "deliver 1 unit, receive F0F_0" becomes "sell the unit at STS_T and pay ST−F0S_T - F_0 on the short forward". The net is still F0F_0, so the proof is unchanged. The code m07_carry.carry_trade_pnl performs this accounting leg by leg and checks that the terminal P&L is the same for every STS_T.

Remarks

  1. rr enters because carrying the asset ties up money. qq enters because the holder of the asset receives dividends and the holder of the forward does not. Their difference r−qr-q is the net cost of carry.
  2. Expected returns do not appear. A forward price that "builds in" a view of where the Nifty is going would be arbitraged. This is the first and simplest instance of the replication principle that M08 uses to price options.
  3. With r>qr>q the forward is above spot (contango); with q>rq>r it is below (backwardation). Nifty futures usually trade above spot because Indian short rates exceed the index dividend yield. That is typical, not guaranteed (7.8.2).

Worked example 7.1reference value

S0=24,000S_0 = 24{,}000, r=6.5%r = 6.5\%, q=1.2%q = 1.2\%, T=30/365T = 30/365: F0=24,000 exp⁡(0.053×0.0821918)=24,000×1.0043656=24,104.776F_0 = 24{,}000\,\exp(0.053 \times 0.0821918) = 24{,}000 \times 1.0043656 = 24{,}104.776. The futures premium of 104.78 points is 30 days of carry at 5.3% a year. This is the test value in test_m07_carry.py.

7.1.4Discrete dividends#

Single-stock forwards are affected by individual dividends with known amounts and ex-dates, not by a smooth yield.

Proposition 7.2

If the asset pays known cash amounts DiD_i at times 0<ti≤T0 < t_i \le T, and I=∑iDie−rtiI = \sum_i D_ie^{-rt_i} is their present value, then

F0=(S0−I) erT.(7.3)F_0 = (S_0 - I)\,e^{rT}. \tag{7.3}
Proof

If F0>(S0−I)erTF_0 > (S_0 - I)e^{rT}: borrow S0S_0; buy one unit; sell the forward at F0F_0. Split the loan into pieces: borrow Die−rtiD_ie^{-rt_i} for maturity tit_i (each repaid exactly by the dividend DiD_i) and S0−IS_0 - I for maturity TT. At TT deliver the unit for F0F_0 and repay (S0−I)erT(S_0-I)e^{rT}. Profit F0−(S0−I)erT>0F_0 - (S_0-I)e^{rT}>0 at zero cost.

*If F0<(S0−I)erTF_0 < (S_0 - I)e^{rT}:* short one unit for S0S_0; lend Die−rtiD_ie^{-rt_i} to each tit_i (to pay the dividends owed to the stock lender) and S0−IS_0 - I to TT; buy the forward. At TT receive (S0−I)erT(S_0-I)e^{rT}, pay F0F_0, take delivery and close the short. Profit (S0−I)erT−F0>0(S_0-I)e^{rT}-F_0>0.∎

Worked example 7.2Hull's dividend example

S0=50S_0 = 50, r=8%r = 8\%, dividends of 0.75 at 3, 6 and 9 months, T=10T = 10 months. I=0.75 (e−0.02+e−0.04+e−0.06)=0.75×2.882753=2.162065I = 0.75\,(e^{-0.02} + e^{-0.04} + e^{-0.06}) = 0.75 \times 2.882753 = 2.162065. F0=(50−2.162065) e0.08×10/12=47.837935×1.068939=51.1358F_0 = (50 - 2.162065)\,e^{0.08 \times 10/12} = 47.837935 \times 1.068939 = 51.1358. Hull prints 51.14.

Worked example 7.3a dividend inside the contract, hypothetical numbers

A stock trades at ₹1,500. It goes ex-dividend for ₹10 in 20 days, and the futures expires in 50 days; r=6%r = 6\%. I=10e−0.06×20/365=9.9672I = 10e^{-0.06 \times 20/365} = 9.9672. F0=(1500−9.9672)e0.06×50/365=1490.0328×1.008253=1502.33F_0 = (1500 - 9.9672)e^{0.06 \times 50/365} = 1490.0328 \times 1.008253 = 1502.33. Without the dividend the fair price would be 1500×1.008253=1512.381500 \times 1.008253 = 1512.38. A trader who prices stock futures from the index-style formula with a smooth yield will misjudge the basis by about ₹10 around every ex-date. For a stock with a large special dividend the futures can trade well below spot, and that is fair value, not a "discount" to trade.

7.1.5Value of an existing forward#

Proposition 7.3

At time t<Tt<T, a long forward with delivery price KK is worth

ft=(Ft−K) e−rτ=Ste−qτ−Ke−rτ,τ=T−t.(7.4)f_t = (F_t - K)\,e^{-r\tau} = S_te^{-q\tau} - Ke^{-r\tau}, \qquad \tau = T - t. \tag{7.4}
Proof

Hold the old long forward and sell a new forward for the same date at today's forward price FtF_t, which costs nothing. At TT the two pay (ST−K)+(Ft−ST)=Ft−K(S_T-K) + (F_t - S_T) = F_t - K, a sure amount known at tt. By the law of one price, the pair is worth (Ft−K)e−rτ(F_t-K)e^{-r\tau} today. The new forward is worth zero, so the old one is worth (Ft−K)e−rτ(F_t-K)e^{-r\tau}. Substituting Ft=Ste(r−q)τF_t = S_te^{(r-q)\tau} gives the second form.∎

Two consequences matter in practice. First, the value is linear in StS_t with slope e−qτe^{-q\tau}: a forward's delta is slightly below 1 for a dividend payer. Second, the value is the discounted difference of forward prices. A forward that is 100 points in the money with a year to go is worth less than 100 today. A futures position with the same price gain has already been paid the 100 in cash through daily settlement. That is the whole difference between the two contracts, and 7.2 builds on it.

Worked example 7.4Hull

A long forward on a non-dividend stock, delivery price 24, six months left, S=25S=25, r=10%r=10\%: f=25−24e−0.05=2.1705f = 25 - 24e^{-0.05} = 2.1705.

7.1.6Frictions and the no-arbitrage band#

Real arbitrageurs borrow above the rate at which they lend, pay securities transaction tax (STT) and brokerage, and cross bid–ask spreads. The cost of carry then pins the forward price only to a band.

Proposition 7.4no-arbitrage band

Suppose borrowing costs rbr_b, lending earns rℓ≤rbr_\ell \le r_b, and buying or selling the spot asset costs a proportion cc of its value (round trip charged at inception for simplicity). Then no arbitrage requires

S0(1−c) e(rℓ−q)T  ≤  F0  ≤  S0(1+c) e(rb−q)T.(7.5)S_0(1-c)\,e^{(r_\ell - q)T} \;\le\; F_0 \;\le\; S_0(1+c)\,e^{(r_b - q)T}. \tag{7.5}
Proof

Repeat Prop. 7.1 with the true costs. Cash-and-carry: buying e−qTe^{-qT} units costs S0(1+c)e−qTS_0(1+c)e^{-qT}, all borrowed at rbr_b; at TT the trader owes S0(1+c)e(rb−q)TS_0(1+c)e^{(r_b-q)T} and receives F0F_0. The trade is profitable if and only if F0F_0 exceeds the right side of (7.5). Reverse: shorting e−qTe^{-qT} units raises S0(1−c)e−qTS_0(1-c)e^{-qT}, invested at rℓr_\ell; at TT the trader holds S0(1−c)e(rℓ−q)TS_0(1-c)e^{(r_\ell-q)T} and pays F0F_0. Profitable if and only if F0F_0 is below the left side. Inside the band neither trade makes money.∎

The band is asymmetric in practice. The upper bound is enforced by anyone with capital: banks, proprietary desks and arbitrage mutual funds (a SEBI scheme category that holds stock and sells futures against it). The lower bound needs short selling. In India, institutions can short sell and retail investors can short intraday, but an overnight short of cash equities requires borrowing the stock through the securities lending and borrowing (SLB) mechanism, which is thinner and costlier. The lower bound is therefore enforced mostly by holders of the stock, who can sell what they own and buy futures instead. When those holders are themselves under pressure, futures can sit at a discount for days (7.8.2).

Worked example 7.5Nifty, 5 Nov 2026

The NSE F&O bhavcopy for 5 Nov 2026 (the exchange's end-of-day file) gives the Nifty 50 spot close at 24,536.60 and these futures settlement prices:

Contract Expiry Days dd FF Basis F−SF-S Implied net carry ln⁡(F/S)/T\ln(F/S)/T Implied rr with q=1.42%q = 1.42\%
Nov 2026 23 Nov 2026 18 24,588.00 51.40 4.24% 5.66%
Dec 2026 29 Dec 2026 54 24,719.10 182.50 5.01% 6.43%
Jan 2027 25 Jan 2027 81 24,834.80 298.20 5.44% 6.86%

The dividend yield 1.42% is NSE's published trailing dividend yield for the Nifty 50 on that day. It is a proxy: the correct qq is the expected dividend flow over the contract's life, which is seasonal in India (heavy in July–September after AGMs).

With the RBI repo rate at 5.50% (raised on 7 Oct 2026), the fair Dec price at r=5.50%r = 5.50\% would be 24,536.60 e(0.055−0.0142)×54/365=24,685.1524{,}536.60\,e^{(0.055-0.0142)\times 54/365} = 24{,}685.15. The market is 33.95 points higher. Is this an arbitrage? Price the frictions: STT on delivery equity is 0.1% on each of the buy and the sell, about 49 index points for the round trip, and STT on the futures sale is 0.05%, another 12 points (rates from 1 Apr 2026). Before brokerage and impact, frictions are already about 61 points. The 34-point gap is inside the band. Read differently, the market charges a long futures holder an implied financing rate of 6.43% a year, about 90 bp over repo. That rate is roughly what an arbitrage fund earns for running the cash-and-carry trade, before costs.

Practitioner notes

  • Desks quote the futures premium as an annualised implied rate, not in points. Points are meaningless without days to expiry: 51 points for 18 days and 182 points for 54 days are almost the same carry.
  • The relevant rr is the marginal arbitrageur's funding rate, not the policy rate. In India that is closer to short-dated certificate of deposit or commercial paper rates than to repo.
  • The dividend input is the most common error. For an index, use expected dividends over the life of the contract, not the trailing yield. For stock futures, use the announced dividend and ex-date (Prop. 7.2).
  • Index futures and options on the same expiry share one forward. The practical way to get FF for option pricing (M08 · 8.8) is to read it off the futures market, not to compute it from an estimated qq.

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.