CONTENTS

Put-Call Parity

Motivation: why this matters in quant finance

Put-call parity is the single model-free identity in options trading: it relates the prices of a European call and European put with the same strike and expiry through a cash-and-stock combination, and holds for any underlying distribution, any volatility dynamics, any pricing model. Violations imply instant arbitrage.

Traders use it constantly:

  • Quote verification. If the bid-ask spreads on call and put quotes don't reconcile to the spot and discount factor, one of them is wrong.
  • Synthetic positions. A call can be synthesised from a put plus stock plus cash. This matters when the call is illiquid but the put is liquid.
  • Implied dividends. For equity options, put-call parity is how implied dividends are extracted from the market.
  • Sanity bound on any model. Any option pricer — binomial, Black-Scholes, Heston, Monte Carlo — must reproduce put-call parity to the cent. If yours doesn't, it's wrong.

This note states the identity cleanly, proves it by the replication argument, and lists the important generalisations.

The informal idea

Consider at expiry TT: you hold a call and sell a put, both struck at KK. If ST>KS_T > K: the call pays STKS_T - K, the put pays 00. If ST<KS_T < K: the call pays 00, the put "pays" (KST)-(K - S_T) because you're short. In either case, net payoff is STKS_T - K — the payoff of a forward contract to buy the stock at KK.

A forward contract to buy at KK, valued today, is S0KerTS_0 - Ke^{-rT} (spot minus present-value of strike).

Conclusion: C0P0=S0KerTC_0 - P_0 = S_0 - Ke^{-rT}. That's put-call parity.

Formal statement

Theorem (Put-Call Parity for European options on a non-dividend stock). Let C0C_0 and P0P_0 be the time-0 prices of a European call and a European put on the same underlying, both with strike KK and expiry TT. Under no-arbitrage with a constant risk-free rate rr:
C0P0=S0KerT.C_0 - P_0 = S_0 - Ke^{-rT}.
Proof. Construct two portfolios:
  • Portfolio A: long one call, short one put, both strike KK. Cost today: C0P0C_0 - P_0.
  • Portfolio B: long one share of stock, borrow KerTKe^{-rT} cash. Cost today: S0KerTS_0 - Ke^{-rT}.

At expiry TT:

  • Portfolio A: if STKS_T \ge K, call pays STKS_T - K, put pays 00. Net: STKS_T - K. If ST<KS_T < K, call pays 00, put (short) pays (KST)=STK-(K - S_T) = S_T - K. Net: STKS_T - K in both cases.
  • Portfolio B: sell the stock for STS_T, repay the loan KK (since KerTKe^{-rT} grew to KK). Net: STKS_T - K.

Both portfolios have the same payoff STKS_T - K in every state. By no-arbitrage, they must have the same cost today:

C0P0=S0KerT.C_0 - P_0 = S_0 - Ke^{-rT}. \quad\square

Key properties

  • Model-free. The proof uses no distribution assumption on STS_T. It works under Black-Scholes, Heston, jump-diffusion, regime-switching, anything.
  • Dividends modify it. If the stock pays continuous dividend yield qq: C0P0=S0eqTKerTC_0 - P_0 = S_0 e^{-qT} - Ke^{-rT}. For discrete dividends of total PV DD: C0P0=S0DKerTC_0 - P_0 = S_0 - D - Ke^{-rT}.
  • American puts break it (one-sided). For American options, CAmPAmS0KC_{Am} - P_{Am} \ge S_0 - K and CAmPAmS0KerTC_{Am} - P_{Am} \le S_0 - Ke^{-rT} (on non-dividend stocks). The inequality is tight for the call (no early-exercise incentive) but not for the put.
  • Implied dividends. From quoted Cmkt,Pmkt,S0,r,T,KC_{\text{mkt}}, P_{\text{mkt}}, S_0, r, T, K: solve CP=S0DKerTC - P = S_0 - D - Ke^{-rT} for DD.
  • Implied forward. Equivalently, extract the forward price FF of the stock: F=K+erT(CP)F = K + e^{rT}(C - P). For multiple strikes, the forward should be the same — a cross-check on market-maker quotes.

Worked example

S0=100S_0 = 100, r=0.05r = 0.05, T=1T = 1, K=100K = 100, no dividends.

Market quotes: C=10.45C = 10.45, P=5.57P = 5.57.

Check: CP=4.88C - P = 4.88. S0KerT=100100e0.05=10095.12=4.88S_0 - Ke^{-rT} = 100 - 100 e^{-0.05} = 100 - 95.12 = 4.88. ✓

If instead the market quoted C=11.00C = 11.00, P=5.00P = 5.00: CP=6.00C - P = 6.00, but S0KerT=4.88S_0 - Ke^{-rT} = 4.88. Arbitrage of 6.004.88=1.126.00 - 4.88 = 1.12 per unit:

  • Sell the expensive combo (long call + short put) for +6.00+6.00.
  • Buy the cheap combo (long stock + borrow 95.1295.12) for +4.88+4.88 (net inflow after borrowing).
  • Net inflow today: 6.004.88=1.126.00 - 4.88 = 1.12 per unit.
  • At expiry: payoff from combo A is STKS_T - K; payoff from combo B is KSTK - S_T (opposite sign because we bought this one). They cancel.
  • Locked-in profit: \1.12$ today, no further cash flows.

Common confusions and pitfalls

  • Only European, not American. American puts can be optimally exercised early; the payoff "in every state" argument fails.
  • Dividend handling. Careless discounting of dividends is the single most common source of small pricing errors.
  • Settlement conventions. Physical vs cash settlement, early vs late delivery — all enter the discount factor. For exchange-traded options with one standard expiry day the details usually don't matter; for OTC bespoke contracts they do.
  • Short-sale constraints. The arbitrage proof assumes you can short the stock. In practice short-sale constraints on illiquid names can cause put-call parity violations of several percent — which is not a pricing mistake but a real cost of shorting.
  • Synthetic put is not a perfect put. "Long call + short stock + cash" replicates a put's payoff at expiry, but the in-between hedging dynamics differ. For American or early-exercised products this matters.

Where this goes next

  • Black-Scholes formula — one consistency check on any BS implementation.
  • Implied vol curves — put and call implied vols at the same strike must agree under parity; deviations are data errors or dividend-yield errors.
  • American options — where parity weakens to a bound.

Exercises

Test your understanding with 3 exercises for this lesson.