Put-Call Parity and Arbitrage Construction

Options Pricing · Medium · Free problem

Consider a non-dividend-paying stock with spot price $S_0$, a risk-free continuously compounded rate $r$, and maturity $T$. Let $C_0(K, T)$ and $P_0(K, T)$ denote the time-0 prices of European call and put options with strike $K$ and maturity $T$.

  1. Derive put-call parity from a static replication (no-arbitrage) argument. That is, find two portfolios with identical payoffs at time $T$ and use the law of one price to relate $C_0$, $P_0$, $S_0$, $K$, $r$, and $T$.
  1. Extend the result to the case where the stock pays a known continuous dividend yield $q$.
  1. Suppose observed market prices violate parity by an amount $\epsilon > 0$. That is, one side of the parity equation exceeds the other by $\epsilon$. Construct an explicit arbitrage portfolio that locks in a risk-free profit, and compute the time-0 profit in terms of $\epsilon$.

Hints

  1. Build two portfolios that have the same payoff at maturity $T$ in every possible state of the world, then apply the law of one price.
  2. For the dividend extension, remember that holding $e^{-qT}$ shares today with reinvested dividends gives you exactly one share at time $T$.
  3. If parity is violated, sell the expensive side and buy the cheap side -- the time-$T$ payoffs cancel exactly, leaving you with a risk-free time-0 cash inflow of $\epsilon$.

Worked Solution

How to Think About It: Put-call parity is one of the most fundamental relationships in options pricing -- it holds model-free, requiring only no-arbitrage and the ability to trade the underlying, a bond, and European options. Before writing any formulas, think about it this way: a call lets you buy at $K$ if the stock ends up high; a put lets you sell at $K$ if the stock ends up low. If you hold a call and are short a put (both at the same strike and maturity), your payoff at expiry is $S_T - K$ no matter what. That is exactly a forward contract. So the combination call-minus-put must equal the present value of $S_T - K$. That is put-call parity in one sentence.

Quick Sanity Checks: At expiry, a portfolio of long call + short put gives payoff $(S_T - K)^+ - (K - S_T)^+ = S_T - K$ in every state. A portfolio of long stock + short $Ke^{-rT}$ in bonds also gives $S_T - K$ at expiry. Since both portfolios have the same terminal payoff, they must cost the same today. If $C_0$ were too cheap relative to $P_0$, you could buy the call, sell the put, short the stock, and invest the proceeds -- locking in free money.

Derivation:

*Part 1: Non-dividend case*

Consider two portfolios at time 0:

  • Portfolio A: Long one European call + invest $Ke^{-rT}$ in the risk-free bond.
  • Portfolio B: Long one European put + long one share of stock.

At maturity $T$:

  • If $S_T > K$: Portfolio A pays $(S_T - K) + K = S_T$. Portfolio B pays $0 + S_T = S_T$.
  • If $S_T \le K$: Portfolio A pays $0 + K = K$. Portfolio B pays $(K - S_T) + S_T = K$.

Both portfolios pay $\max(S_T, K)$ in every state. By the law of one price (no arbitrage):

$C_0 + Ke^{-rT} = P_0 + S_0$

Rearranging:

$C_0 - P_0 = S_0 - Ke^{-rT}$

*Part 2: Continuous dividend yield $q$*

When the stock pays a continuous dividend yield $q$, holding one share today and reinvesting dividends gives you $e^{qT}$ shares at time $T$. Equivalently, to have exactly one share at $T$, you only need $e^{-qT}$ shares today.

Modify the portfolios:

  • Portfolio A: Long one call + invest $Ke^{-rT}$ in the bond.
  • Portfolio B: Long one put + long $e^{-qT}$ shares (with dividends reinvested).

At maturity, Portfolio B holds one share (worth $S_T$) plus the put. By the same argument:

$C_0 + Ke^{-rT} = P_0 + S_0 e^{-qT}$

So:

$C_0 - P_0 = S_0 e^{-qT} - Ke^{-rT}$

*Part 3: Arbitrage from a parity violation*

Suppose the market prices satisfy:

$C_0 - P_0 > S_0 - Ke^{-rT} + \epsilon$

(the call is "too expensive" relative to the put). Construct the arbitrage:

  • Sell the call (receive $C_0$)
  • Buy the put (pay $P_0$)
  • Buy one share of stock (pay $S_0$)
  • Borrow $Ke^{-rT}$ at rate $r$ (receive $Ke^{-rT}$ now, repay $K$ at $T$)

Net time-0 cash flow:

$C_0 - P_0 - S_0 + Ke^{-rT} = \epsilon > 0$

You pocket $\epsilon$ today. At maturity:

  • If $S_T > K$: The call is exercised against you -- you deliver the stock, receive $K$. Repay the loan of $K$. Put expires worthless. Net payoff: $0$.
  • If $S_T \le K$: The call expires worthless. Exercise the put -- sell the stock for $K$. Repay the loan of $K$. Net payoff: $0$.

In every state the time-$T$ payoff is zero, so the time-0 cash inflow of $\epsilon$ is pure profit.

If instead $P_0 + S_0 > C_0 + Ke^{-rT} + \epsilon$ (the put side is too expensive), reverse every position: buy the call, sell the put, short the stock, and lend $Ke^{-rT}$. The same logic applies by symmetry.

Practical Interpretation: Put-call parity is the first thing a trader checks when looking at an options market. If parity is violated, it usually signals a data error, a liquidity issue, or (rarely) a true mispricing. In practice, transaction costs, borrowing costs, and execution risk eat into $\epsilon$, so the arbitrage is only worth doing if $\epsilon$ exceeds the round-trip friction. Market makers monitor parity continuously and any real violation gets arbitraged away in milliseconds.

Answer: Put-call parity for a non-dividend-paying stock is $C_0 - P_0 = S_0 - Ke^{-rT}$. With continuous dividend yield $q$, it becomes $C_0 - P_0 = S_0 e^{-qT} - Ke^{-rT}$. A violation by $\epsilon > 0$ is exploited by taking offsetting positions in the call, put, stock, and bond, locking in a risk-free profit of $\epsilon$ at time 0 with zero terminal exposure.

Intuition

Put-call parity is the single most important model-free relationship in options. It does not depend on Black-Scholes, on any distributional assumption, or on any model for the stock -- it follows purely from no-arbitrage and the ability to replicate a forward contract using a call and a put at the same strike. The key insight is that long call plus short put equals a synthetic forward, period. Everything else (the dividend extension, the arbitrage construction) is just bookkeeping around that one identity.

In practice, put-call parity serves as a consistency check on every options book. If you see an implied volatility surface where call and put implieds at the same strike and maturity disagree, one of two things is happening: either you have a data problem, or there is a structural cost (borrow cost, dividend uncertainty, early exercise premium for Americans) that the simple European parity formula does not capture. Understanding which case you are in is the difference between spotting a real trade and chasing a phantom.

Open the full interactive solver →