Put-Call Parity

Table of Contents

1 Overview

Put-Call Parity will allow us to price a put (or call) option given a call (or put), a bond and the stock. Conceptually, what the parity relationship is saying is that:

a protective put spread is equal to a call option plus bond position.

2 No Dividend

For a non-dividend paying stock, Put-Call Parity is:

\[C_0 + \frac{X}{(1 + r_f)^T} = S_0 + P_0\]

where:

  • both the call and put options have the same strike price and expiration.
  • the bond has an $X par value, which is the same as the strike price of the options.
  • you can interpret the 0 subscript as 'today'.
  • \(r_f\) is risk-free rate for bonds maturing at the same time as the options expire.

There are a couple important features of Put-Call Parity:

  • Applies to European options only.
  • Model and assumption free.

2.1 Proof

2.1.1 Payoff on Protective Put At Expiration

  ST > X ST < X
Stock ST ST
Put 0 X - ST
Total ST X

2.1.2 Payoff on Call + Bond At Expiration

  ST > X ST < X
Bond X X
Call ST - X 0
Total ST X

2.2 Arbitrage

If both portfolios pay the same amount at expiration, can they have different prices today?

What if:

\[C_0 + \frac{X}{(1 + r_f)^T} > S_0 + P_0\]

Then today we sell the call option and bond, and buy the put option and stock.

3 With Dividend

Let \(D\) be the expected dividend payment on the stock over the life of the option. Then the put-call parity relationship is:

\[C_0 + \frac{X}{(1 + r_f)^T} + \frac{D}{(1 + r_f)^T} = S_0 + P_0\]

3.1 Proof

4 Application

Say we have the following values. How much is the put option premium?

Stock Price 100
Risk-free rate 0.05
Call strike 110
Call premium 1.00
time 1
stock = inputs[0][1]
rate = inputs[1][1]
strike = inputs[2][1]
call_price = inputs[3][1]
time = inputs[4][1]

put_price = call_price + strike / (1 + rate)**time - stock

print("Put price $", round(put_price, 1))
Put price $ 5.8

Author: Matt Brigida, Ph.D.

Created: 2021-03-31 Wed 12:24

Validate