Tutorials › Stochastic Calculus › Put-Call Parity and Formula Diagnostics

The Black-Scholes Model · Tutorial 480 of 600

Put-Call Parity and Formula Diagnostics

Learn to derive put-call parity and use its price and delta identities as practical checks on Black–Scholes formulas.

Advanced 10 min read

What You'll Learn

  • Derive put-call parity by matching call and put payoffs at maturity.
  • Distinguish the no-dividend identity from its continuous-dividend version.
  • Verify Black–Scholes call and put formulas by subtraction.
  • Check call and put deltas against the derivative of parity.
  • Diagnose sign, discount-factor, and maturity mistakes with exact examples.

Why Put–Call Parity Is a Useful Check

A European call and a European put with the same strike and maturity have payoffs that differ by the terminal stock price minus the strike. This elementary identity has a strong pricing consequence: in the Black–Scholes model, the difference between their current prices is determined by the current stock price and the present value of the strike. It does not depend on volatility. That makes parity both a derivation and a diagnostic: a pair of computed prices that violates it cannot both be correct under the stated model.

We work on a filtered probability space \((\Omega,\mathcal{F},(\mathcal{F}_t)_{t\ge0},\mathbb{P})\), with an equivalent risk-neutral measure \(\mathbb{Q}\). Under \(\mathbb{Q}\), \(B_t^{\mathbb{Q}}\) is Brownian motion and the ex-dividend stock price satisfies \(dS_t=(r-q)S_t\,dt+\sigma S_t\,dB_t^{\mathbb{Q}}\), where \(r\) is the constant risk-free rate, \(q\) is the constant continuous dividend yield, and \(\sigma>0\) is constant volatility. In integral form, the stochastic integral has progressively measurable integrand \(\sigma S_t\), with \(\mathbb{E}^{\mathbb{Q}}\int_0^T \sigma^2S_t^2\,dt<\infty\) for each finite \(T\). We use risk-neutral pricing: the time-\(t\) price of a European payoff \(X_T\) is \(e^{-r(T-t)}\mathbb{E}^{\mathbb{Q}}[X_T\mid\mathcal{F}_t]\). The measure \(\mathbb{P}\) is the physical measure; it is \(\mathbb{Q}\), not \(\mathbb{P}\), that appears in this pricing relation.

Definition: For strike \(K>0\), maturity \(T>t\), and \(\tau=T-t\), the European call and put payoffs at maturity are \(C_T=(S_T-K)^+\) and \(P_T=(K-S_T)^+\), where \(x^+=\max(x,0)\). Their time-\(t\) prices are denoted \(C(t,S_t)\) and \(P(t,S_t)\). The parameter \(\tau\) is time remaining to maturity.

Matching the Terminal Payoffs

Theorem: In the Black–Scholes model with constant interest rate \(r\) and continuous dividend yield \(q\), European call and put prices with the same positive strike \(K\) and maturity \(T>t\) satisfy \(C(t,S_t)-P(t,S_t)=S_t e^{-q\tau}-K e^{-r\tau}\). With no dividends, \(q=0\), this becomes \(C-P=S_t-Ke^{-r\tau}\).

Proof. For any terminal stock value \(x\ge0\), consider the cases \(x\ge K\) and \(x<K\). If \(x\ge K\), then \((x-K)^+=x-K\) and \((K-x)^+=0\), so their difference is \(x-K\). If \(x<K\), then \((x-K)^+=0\) and \((K-x)^+=K-x\), so their difference is again \(x-K\). At \(x=K\), both payoffs are zero and the same identity holds. Therefore \(C_T-P_T=S_T-K\) in every state. Applying the risk-neutral pricing relation and linearity of conditional expectation gives \(C-P=e^{-r\tau}\mathbb{E}^{\mathbb{Q}}[S_T-K\mid\mathcal{F}_t]\). The stock dynamics have the explicit solution \(S_T=S_t\exp((r-q-\tfrac12\sigma^2)\tau+\sigma(B_T^{\mathbb{Q}}-B_t^{\mathbb{Q}}))\). The Brownian increment is independent of \(\mathcal{F}_t\) and is normal with mean zero and variance \(\tau\); using the normal moment-generating function yields \(\mathbb{E}^{\mathbb{Q}}[S_T\mid\mathcal{F}_t]=S_t e^{(r-q)\tau}\). Also, \(\mathbb{E}^{\mathbb{Q}}[K\mid\mathcal{F}_t]=K\). Substitution gives \(C-P=S_t e^{-q\tau}-K e^{-r\tau}\), as claimed. \(\square\)

The stock term is discounted by the dividend yield, not by the risk-free rate. This is because \(S_t e^{-q\tau}\) is the value contribution of the stock under continuous dividends; the strike is a fixed cash amount paid at maturity and is discounted at \(r\). If there are no dividends, the stock term is simply \(S_t\). The identity concerns prices at the same time, for the same strike and the same maturity; changing any of these inputs changes the comparison.

Worked Example: Verify the Payoff Identity State by State

Take \(K=80\). Check \(C_T-P_T=S_T-K\) for terminal stock values \(S_T=110\), \(S_T=50\), and \(S_T=80\).

When \(S_T=110\), the call payoff is \((110-80)^+=30\), and the put payoff is \((80-110)^+=0\). Their difference is \(30-0=30\), equal to \(110-80=30\).

When \(S_T=50\), the call payoff is \((50-80)^+=0\), and the put payoff is \((80-50)^+=30\). Their difference is \(0-30=-30\), equal to \(50-80=-30\).

When \(S_T=80\), both payoffs are \((80-80)^+=0\), and their difference \(0-0=0\) equals \(80-80=0\). The at-the-money case is included; no strict inequality is needed at the strike.

Check: In all three cases, the call minus the put equals the stock value minus the strike. The payoff identity therefore holds pointwise, not merely on average.

Checking the Black–Scholes Formulas

For \(S_t>0\), \(K>0\), \(\tau>0\), and \(\sigma>0\), define \(d_1=[\ln(S_t/K)+(r-q+\tfrac12\sigma^2)\tau]/(\sigma\sqrt{\tau})\) and \(d_2=d_1-\sigma\sqrt{\tau}\). Let \(\Phi\) be the standard normal cumulative distribution function. The Black–Scholes formulas are \(C=S_t e^{-q\tau}\Phi(d_1)-K e^{-r\tau}\Phi(d_2)\) and \(P=K e^{-r\tau}\Phi(-d_2)-S_t e^{-q\tau}\Phi(-d_1)\).

Result: Subtracting the Black–Scholes put formula from the call formula gives \(C-P=S_t e^{-q\tau}-K e^{-r\tau}\). Thus a direct formula evaluation must agree with the payoff-based parity identity.

Proof. Subtract the displayed put expression from the call expression and group the stock and strike terms: \(C-P=S_t e^{-q\tau}[\Phi(d_1)+\Phi(-d_1)]-K e^{-r\tau}[\Phi(d_2)+\Phi(-d_2)]\). For every real \(z\), symmetry of the standard normal density gives \(\Phi(-z)=1-\Phi(z)\), and hence \(\Phi(z)+\Phi(-z)=1\). Applying this identity to \(d_1\) and \(d_2\) reduces the grouped expression to \(S_t e^{-q\tau}-K e^{-r\tau}\). \(\square\)

Worked Example: Diagnose a Discounting and Maturity Error

Suppose there are no dividends, \(S_t=100\), \(K=90\), \(\tau=1\), and \(r=\ln(10/9)\). A calculation reports \(C=29\) and \(P=10\). Check parity, then test two common incorrect formulas.

First, \(e^{-r\tau}=e^{-\ln(10/9)}=9/10\). The correct parity difference is \(S_t-Ke^{-r\tau}=100-90(9/10)=100-81=19\). The reported price difference is \(C-P=29-10=19\), so the pair passes the parity check.

If the strike is mistakenly left undiscounted, the incorrect right-hand side becomes \(S_t-K=100-90=10\). This does not match the reported difference \(19\); the error is \(19-10=9\). If the maturity is mistakenly entered as \(2\), then \(e^{-2r}=(9/10)^2=81/100\), and the incorrect right-hand side is \(100-90(81/100)=100-72.9=27.1\), again not \(19\).

Check: The correct discount factor \(9/10\) reproduces the price difference exactly. The two incorrect calculations use, respectively, no discounting and the wrong maturity; each produces a different parity value.

Delta as a Second Diagnostic

For \(\tau>0\), differentiating the Black–Scholes prices with respect to the current stock price gives \(\Delta_C=e^{-q\tau}\Phi(d_1)\) and \(\Delta_P=-e^{-q\tau}\Phi(-d_1)\). Equivalently, \(\Delta_P=e^{-q\tau}(\Phi(d_1)-1)\). These are partial derivatives with all other model inputs fixed. Differentiating the parity identity with respect to \(S_t\) gives \(\Delta_C-\Delta_P=e^{-q\tau}\), which matches the two delta formulas because \(\Phi(d_1)+\Phi(-d_1)=1\). Thus a call delta and put delta should not generally differ by one when dividends are present; their difference is \(e^{-q\tau}\). When \(q=0\), that difference is one.

Worked Example: Check Call and Put Deltas with Dividends

Let \(\tau=1\), \(\sigma=0.2\), \(r=0.05\), \(q=0.02\), \(K=100\), and \(S_t=100e^{-0.05}\). Evaluate the deltas and compare their difference with the derivative of parity.

Since \(\ln(S_t/K)=\ln(e^{-0.05})=-0.05\), and \(r-q+\tfrac12\sigma^2=0.05-0.02+\tfrac12(0.2)^2=0.03+0.02=0.05\), the numerator of \(d_1\) is \(-0.05+0.05(1)=0\). Its denominator is \(0.2\sqrt{1}=0.2\), so \(d_1=0/0.2=0\). Therefore \(\Phi(d_1)=\Phi(0)=0.5\) and \(\Phi(-d_1)=0.5\).

The dividend discount factor is \(e^{-q\tau}=e^{-0.02}\). Hence \(\Delta_C=0.5e^{-0.02}\), while \(\Delta_P=-0.5e^{-0.02}\). Numerically, \(e^{-0.02}\approx0.9802\), so \(\Delta_C\approx0.4901\) and \(\Delta_P\approx-0.4901\). Their difference is \(0.5e^{-0.02}-(-0.5e^{-0.02})=e^{-0.02}\approx0.9802\).

Check: Differentiating \(S_t e^{-q\tau}-Ke^{-r\tau}\) with respect to \(S_t\) gives \(e^{-q\tau}\), which is exactly the delta difference calculated above.

Common Formula Diagnostics

Parity is an internal consistency check, not a substitute for checking the model assumptions. Before comparing prices, confirm that both options are European, have the same strike and maturity, and are valued at the same time under the same interest rate and dividend assumptions. An American option can be exercised before maturity, so the European payoff argument alone does not establish the same equality for its price.

A frequent sign error is to write \(P-C=S_t-Ke^{-r\tau}\). The correct reversal is \(P-C=Ke^{-r\tau}-S_t\) when \(q=0\), or \(P-C=Ke^{-r\tau}-S_t e^{-q\tau}\) with continuous dividends. A frequent discounting error is to discount the stock by \(e^{-r\tau}\) in the continuous-dividend version, or to leave the strike undiscounted. A frequent maturity error is to use the time elapsed since inception rather than the remaining time \(\tau=T-t\). The exact example above shows that these changes alter the parity value.

CheckCorrect expressionDiagnostic question
Price difference\(C-P=S_t e^{-q\tau}-Ke^{-r\tau}\)Are the two options matched in strike, maturity, and valuation time?
No-dividend case\(C-P=S_t-Ke^{-r\tau}\)Was the strike discounted using the risk-free rate?
Delta difference\(\Delta_C-\Delta_P=e^{-q\tau}\)Was the dividend yield included in both deltas?
Time input\(\tau=T-t\)Was remaining maturity used consistently?

Put–call parity matters because it connects two separately computed option prices to a simple portfolio identity. It can reveal implementation errors even when each price looks numerically plausible, and it supplies an independent check on the sign and dividend adjustment in the delta formulas. It does not require calculating \(d_1\), \(d_2\), or \(\Phi\), so it is particularly useful as a final check after a formula or numerical routine has been evaluated.

Check Your Understanding

Use the payoff identity and the parity formulas to answer the following questions.

  1. For \(S_T=70\) and \(K=75\), compute the call payoff minus the put payoff and compare it with \(S_T-K\).
  2. Write the no-dividend parity relation when \(q=0\), and identify which term is discounted.
  3. If \(C-P=12\), \(S_t=100\), \(q=0\), and \(K=90\), what equation must \(e^{-r\tau}\) satisfy?
  4. For continuous dividend yield \(q>0\), what should \(\Delta_C-\Delta_P\) equal?
  5. Explain why prices for options with different maturities cannot be checked against the same put–call parity equation.