Option Basics - Calls, Puts, and Payoffs › Put-Call Parity

Michael BrenndoerferNovember 15, 20257 min read
Quantitative FinanceAll chapters
Part 3 of 15Forwards, Futures, and Options
Chapter 18Option Basics - Calls, Puts, and Payoffs › Put-Call Parity
Reading section 8 of 15 · Put-Call Parity · 7 minSection 8 of 15 · 7 min

Book contents

Section 8 of 15 · 7 min read

Option Basics - Calls, Puts, and Payoffs › Put-Call ParityOne section · Sections in this chapter8 / 15 ↓
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

Put-call parity is a fundamental relationship that links the prices of European calls and puts with the same strike and expiration. It's not a pricing model; it's an arbitrage relationship that must hold in efficient markets. Unlike pricing models that make assumptions about volatility or price dynamics, put-call parity relies only on the absence of arbitrage.

Put-Call Parity

For European options on a non-dividend-paying stock, the relationship between call price CC, put price PP, stock price SS, strike price KK, risk-free rate rr, and time to expiration TT is:

C−P=S−Ke−rTC - P = S - K e^{-rT}

where:

  • CC: European call price
  • PP: European put price
  • SS: current stock price
  • KK: strike price
  • rr: risk-free interest rate
  • TT: time to expiration

The equation states that the difference between call and put prices equals the difference between the current stock price and the present value of the strike price. The term Ke−rTK e^{-rT} represents the discounted value of the strike, acknowledging that receiving or paying KK in the future is worth less than receiving or paying KK today.

Deriving Put-Call Parity

To understand why this relationship must hold, consider two portfolios constructed from different instruments but designed to produce identical outcomes at expiration. If two portfolios always produce the same payoff regardless of what happens to the stock price, then they must have the same price today. If they didn't, we could buy the cheaper one and sell the more expensive one, locking in a risk-free profit.

Portfolio A: Long one call option plus cash equal to Ke−rTK e^{-rT} (the present value of the strike price)

This portfolio gives you the right to buy the stock at price KK, plus enough cash that, if invested at the risk-free rate, will grow to exactly KK by expiration.

Portfolio B: Long one put option plus one share of stock

This portfolio combines downside protection (the put) with direct ownership of the underlying asset.

At expiration, both portfolios have identical values regardless of the stock price:

Portfolio values at expiration showing identical outcomes regardless of stock price.
ScenarioPortfolio A ValuePortfolio B Value
ST>KS_T > K(ST−K)+K=ST(S_T - K) + K = S_T0+ST=ST0 + S_T = S_T
ST≤KS_T \leq K0+K=K0 + K = K(K−ST)+ST=K(K - S_T) + S_T = K

In the first scenario where the stock finishes above the strike, Portfolio A exercises the call, paying KK from the cash (which has grown from Ke−rTK e^{-rT} to exactly KK) to acquire stock worth STS_T, resulting in total value STS_T. Portfolio B has a worthless put and stock worth STS_T, also totaling STS_T.

In the second scenario where the stock finishes at or below the strike, Portfolio A lets the call expire worthless and holds cash worth KK, totaling KK. Portfolio B exercises the put to sell the stock for KK, also totaling KK.

Since both portfolios have the same payoff in every scenario, they must have the same price today (no arbitrage). Therefore:

C+Ke−rT=P+S(law of one price)C−P=S−Ke−rT(rearrange terms)\begin{aligned} C + K e^{-rT} &= P + S && \text{(law of one price)} \\ C - P &= S - K e^{-rT} && \text{(rearrange terms)} \end{aligned}

where:

  • CC: call price
  • PP: put price
  • SS: current stock price
  • Ke−rTK e^{-rT}: present value of the strike price

This derivation demonstrates the power of no-arbitrage reasoning. Without making any assumptions about how prices move, volatility, or investor preferences, we've established a precise relationship that must hold between calls, puts, stock, and bonds.

Out[10]:
Visualization
Line chart overlaying Portfolio A and Portfolio B payoff curves at expiration, showing they are identical across all stock prices and confirming put-call parity.
Put-call parity demonstration showing two portfolios with identical payoffs at expiration. Portfolio A (call + cash) and Portfolio B (put + stock) yield identical values across all expiration prices, implying they must have the same present value to prevent arbitrage.

Arbitrage Implications

If put-call parity is violated, you can earn risk-free profits. The specific trades depend on the direction of the violation:

  • If C−P>S−Ke−rTC - P > S - K e^{-rT}: The call is overpriced relative to the put. Sell the call, buy the put, buy the stock, and borrow Ke−rTK e^{-rT}. Lock in a risk-free profit. At expiration, your obligations net to zero, but you started with cash in your pocket.
  • If C−P<S−Ke−rTC - P < S - K e^{-rT}: The put is overpriced relative to the call. Buy the call, sell the put, short the stock, and invest Ke−rTK e^{-rT}. Lock in a risk-free profit. Again, your positions cancel at expiration, but you began with a positive cash flow.

Let's verify put-call parity numerically:

In[11]:
Code
import numpy as np

# Market data
S = 100  # Stock price
K = 100  # Strike price
r = 0.05  # Risk-free rate (5%)
T = 0.5  # Time to expiration (6 months)

# Option prices (hypothetical market quotes)
C = 7.97  # Call premium
P = 5.50  # Put premium

# Calculate both sides of put-call parity
left_side = C - P
right_side = S - K * np.exp(-r * T)

# Check for arbitrage
parity_difference = left_side - right_side
Out[12]:
Console
Put-Call Parity Check
----------------------------------------
C - P = $7.97 - $5.50 = $2.47
S - K*exp(-rT) = $100.00 - $100.00*exp(-0.05*0.5) = $2.47
Difference: $0.0010

Put-call parity holds (within transaction costs)

In practice, small deviations from put-call parity exist due to transaction costs, bid-ask spreads, and borrowing constraints. Larger deviations indicate either mispricing (an opportunity) or factors not accounted for (dividends, early exercise rights for American options).

Synthetic Positions

Put-call parity enables the creation of synthetic positions, replicating the payoff of one instrument using others. This capability proves invaluable when one instrument is more liquid, cheaper, or easier to trade than another:

  • Synthetic long stock: Buy call, sell put (same strike), invest Ke−rTK e^{-rT}
  • Synthetic short stock: Sell call, buy put (same strike), borrow Ke−rTK e^{-rT}
  • Synthetic long call: Buy put, buy stock, borrow Ke−rTK e^{-rT}
  • Synthetic long put: Buy call, short stock, invest Ke−rTK e^{-rT}

Synthetic positions are useful when one instrument is more liquid, cheaper, or easier to trade than another. For instance, if a stock is hard to borrow for shorting, you might create a synthetic short using options instead.