Steven R. Dunbar
Department of Mathematics
203 Avery Hall
Lincoln, NE 68588-0130
http://www.math.unl.edu
Voice: 402-472-3731
Fax: 402-472-8466

Stochastic Processes and

__________________________________________________________________________

Put-Call Parity

_______________________________________________________________________

Note: These pages are prepared with MathJax. MathJax is an open source JavaScript display engine for mathematics that works in all browsers. See http://mathjax.org for details on supported browsers, accessibility, copy-and-paste, and other features.

_______________________________________________________________________________________________

### Rating

Mathematically Mature: may contain mathematics beyond calculus with proofs.

_______________________________________________________________________________________________

### Section Starter Question

What does it mean to say that a diﬀerential equation is a linear diﬀerential equation?

_______________________________________________________________________________________________

### Key Concepts

1. The put-call parity principle links the price of a put option, a call option and the underlying security price.
2. The put-call parity principle can be used to price European put options without having to solve the Black-Scholes equation.
3. The put-call parity principle is a consequence of the linearity of the Black-Scholes equation.

__________________________________________________________________________

### Vocabulary

1. The put-call parity principle is the relationship
$C-P=S-K{e}^{-r\left(T-t\right)}$

between the price $C$ of a European call option and the price $P$ of a European put option, each with strike price $K$ and underlying security value $S$.

2. A synthetic portfolio is a combination of securities, bonds, and options that has the same payout at expiration as another ﬁnancial instrument.

______________________________________________________________________________

### Mathematical Ideas

#### Put-Call Parity by Linearity of the Black-Scholes Equation

The Black-Scholes equation is

${V}_{t}+\frac{1}{2}{\sigma }^{2}{S}^{2}{V}_{SS}+rS{V}_{S}-rV=0.$

With the additional terminal condition $V\left(S,T\right)$ given, a solution exists and is unique. We observe that the Black-Scholes is a linear equation, so the linear combination of any two solutions is again a solution.

From the problems in the previous section (or by easy veriﬁcation right now) we know that $S$ is a solution of the Black-Scholes equation and $K{e}^{-r\left(T-t\right)}$ is also a solution, so $S-K{e}^{-r\left(T-t\right)}$ is a solution. At the expiration time $T$, the solution has value $S-K$.

Now if $C\left(S,t\right)$ is the value of a call option at security value $S$ and time $t, then $C\left(S,t\right)$ satisﬁes the Black-Scholes equation, and has terminal value $max\left(S-K,0\right)$. If $P\left(S,t\right)$ is the value of a put option at security value $S$ and time $t, then $P\left(S,t\right)$ also satisﬁes the Black-Scholes equation, and has terminal value $max\left(K-S,0\right)$. Therefore by linearity, $C\left(S,t\right)-P\left(S,t\right)$ is a solution and has terminal value $C\left(S,T\right)-P\left(S,T\right)=S-K$. By uniqueness, the solutions must be the same, and so

$C-P=S-K{e}^{-r\left(T-t\right)}.$

This relationship is known as the put-call parity principle between the price $C$ of a European call option and the price $P$ of a European put option, each with strike price $K$ and underlying security value $S$.

This same principle of linearity and the composition of more exotic options in terms of puts and calls allows us to write closed form formulas for the values of exotic options such as straps, strangles, and butterﬂy options.

#### Put-Call Parity by Reasoning about Arbitrage

Assume that an underlying security satisﬁes the assumptions of the previous sections. Assume further that:

• the security price is currently $S=100$;
• the strike price is $K=100$;
• the expiration time is one year, $T=1$;
• the risk-free interest rate is $r=0.12$; and
• the volatility is $\sigma =0.10$.

One can then calculate that the price of a call option with these assumptions is $11.84$.

Consider an investor with the following portfolio:

• buy one share of stock at price $S=100$;
• sell one call option at $C=V\left(100,0\right)=11.84$;
• buy one put option at unknown price.

At expiration, the stock price could have many diﬀerent values, and those would determine the values of each of the derivatives. See Table 1 for some representative values.

 Security Call Put Portfolio 80 0 20 100 90 0 10 100 100 0 0 100 110 -10 0 100 120 -20 0 100

Table 1: Security, call and put option values at expiration.

At expiration this portfolio always has a value which is the strike price. Holding this portfolio will give a risk-free investment that will pay $100 in any circumstance. This example portfolio has total value $100$. Therefore the value of the whole portfolio must equal the present value of a riskless investment that will pay oﬀ$100 in one year. This is an illustration of the use of options for hedging an investment, in this case the extremely conservative purpose of hedging to preserve value.

The parameter values chosen above are not special and we can reason with general $S$, $C$ and $P$ with parameters $K$, $r$, $\sigma$, and $T$. Consider buying a put and selling a call, each with the same strike price $K$. We will ﬁnd at expiration $T$ that:

• if the stock price $S$ is below $K$ we will realize a proﬁt of $K-S$ from the put option that we own; and
• if the stock price is above $K$, we will realize a loss of $S-K$ from fulﬁlling the call option that we sold.

But this payout is exactly what we would get from a futures contract to sell the stock at price $K$. The price set by arbitrage of such a futures contract must be $K{e}^{-r\left(T-t\right)}-S$. Speciﬁcally, one could sell (short) the stock right now for $S$, and lend $K{e}^{-r\left(T-t\right)}$ dollars right now for a net cash outlay of $K{e}^{-r\left(T-t\right)}-S$, then at time $T$ collect the loan at $K$ dollars and actually deliver the stock. This replicates the futures contract, so the future must have the same price as the initial outlay. Therefore we obtain the put-call parity principle:

$-C+P=Kexp\left(-r\left(T-t\right)\right)-S$

or more naturally

$S-C+P=Kexp\left(-r\left(T-t\right)\right).$

#### Synthetic Portfolios

Another way to view this formula is that it instructs us how to create synthetic portfolio. A synthetic portfolio is a combination of securities, bonds, and options that has the same payout at expiration as another ﬁnancial instrument. Since

$S+P-Kexp\left(-r\left(T-t\right)\right)=C,$

a portfolio “long in the underlying security, long in a put, short $Kexp\left(-r\left(T-t\right)\right)$ in bonds” replicates a call. This same principle of linearity and the composition of more exotic options in terms of puts and calls allows us to create synthetic portfolios for exotic options such as straddles, strangles, and so on. As noted above, we can easily write their values in closed form solutions.

#### Explicit Formulas for the Put Option

Knowing any two of $S$, $C$ or $P$ allows us to calculate the third. Of course, the immediate use of this formula will be to combine the security price and the value of the call option from the solution of the Black-Scholes equation to obtain the value of the put option:

$P=C-S+Kexp\left(-r\left(T-t\right)\right).$

For the sake of mathematical completeness we can write the value of a European put option explicitly as:

$\begin{array}{llll}\hfill {V}_{P}\left(S,t\right)& =S\Phi \left(\frac{log\left(S∕K\right)+\left(r+{\sigma }^{2}∕2\right)\left(T-t\right)}{\sigma \sqrt{T-t}}\right)\phantom{\rule{2em}{0ex}}& \hfill & \phantom{\rule{2em}{0ex}}\\ \hfill & \phantom{\rule{2em}{0ex}}-K{e}^{-r\left(T-t\right)}\Phi \left(\frac{log\left(S∕K\right)+\left(r-{\sigma }^{2}∕2\right)\left(T-t\right)}{\sigma \sqrt{T-t}}\right)\phantom{\rule{2em}{0ex}}& \hfill & \phantom{\rule{2em}{0ex}}\\ \hfill & \phantom{\rule{2em}{0ex}}-S+Kexp\left(-r\left(T-t\right)\right).\phantom{\rule{2em}{0ex}}& \hfill & \phantom{\rule{2em}{0ex}}\end{array}$

Usually one doesn’t see the solution as this full closed form solution. Instead, most versions of the solution write intermediate steps in small pieces, and then present the solution as an algorithm putting the pieces together to obtain the ﬁnal answer. Speciﬁcally, let

$\begin{array}{rcll}{d}_{1}& =& \frac{log\left(S∕K\right)+\left(r+{\sigma }^{2}∕2\right)\left(T-t\right)}{\sigma \sqrt{T-t}}& \text{}\\ {d}_{2}& =& \frac{log\left(S∕K\right)+\left(r-{\sigma }^{2}∕2\right)\left(T-t\right)}{\sigma \sqrt{T-t}}& \text{}\end{array}$

so that

$\begin{array}{rcll}{V}_{P}\left(S,t\right)=S\left(\Phi \left({d}_{1}\right)-1\right)-K{e}^{-r\left(T-t\right)}\left(\Phi \left({d}_{2}\right)-1\right).& & & \text{}\end{array}$

Using the symmetry properties of the c.d.f. $\Phi$, we obtain

${V}_{P}\left(S,t\right)=K{e}^{-r\left(T-t\right)}\Phi \left(-{d}_{2}\right)-S\Phi \left(-{d}_{1}\right).$

#### Graphical Views of the Put Option Value

For graphical illustration let $P$ be the value of a put option with strike price $K=100$. The risk-free interest rate per year, continuously compounded is 12%, so $r=0.12$, the time to expiration is $T=1$ measured in years, and the standard deviation per year on the return of the stock, or the volatility is $\sigma =0.10$. The value of the put option at maturity plotted over a range of stock prices $0\le S\le 150$ surrounding the strike price is illustrated below:

Now we use the Black-Scholes formula to compute the value of the option before expiration. With the same parameters as above the value of the put option is plotted over a range of stock prices $0\le S\le 150$ at time remaining to expiration $t=1$ (red), $t=0.8$, (orange), $t=0.6$ (yellow), $t=0.4$ (green), $t=0.2$ (blue) and at expiration $t=0$ (black).

Notice two trends in the value from this graph:

1. As the stock price increases, for a ﬁxed time the option value decreases.
2. As the time to expiration decreases, for a ﬁxed stock value price less than the strike price the value of the option increases to the value at expiration.

We can also plot the value of the put option as a function of security price and the time to expiration as a value surface.

This value surface shows both trends.

#### Sources

This section is adapted from: Financial Derivatives by Robert W. Kolb, New York Institute of Finance, Englewood Cliﬀs, NJ, 1993, page 107 and following. Parts are also adapted from Stochastic Calculus and Financial Applications by J. Michael Steele, Springer, New York, 2000, page 155.

_______________________________________________________________________________________________

### Algorithms, Scripts, Simulations

#### Algorithm

For given parameter values for $K$, $r$, $T$, and $\sigma$, the Black-Scholes-Merton solution formula for a put option is sampled at a speciﬁed $m×1$ array of times and at a speciﬁed $1×n$ array of security prices using vectorization and broadcasting. The result can be plotted as functions of the security price as done in the text. The calculation is vectorized for an array of $S$ values and an array of $t$ values, but it is not vectorized for arrays in the parameters $K$, $r$, $T$, and $\sigma$. This approach is taken to illustrate the use of vectorization and broadcasting for eﬃcient evaluation of an array of solution values from a complicated formula.

In particular, the calculation of ${d}_{1}$ and ${d}_{2}$ uses broadcasting, also called binary singleton expansion, recycling, single-instruction multiple data, threading or replication.

The calculation relies on using the rules for calculation and handling of inﬁnity and NaN (Not a Number) which come from divisions by $0$, taking logarithms of $0$, and negative numbers and calculating the normal cdf at inﬁnity and negative inﬁnity. The plotting routines will not plot a NaN which accounts for the gap at $S=0$ in the graph line for $t=1$.

#### Scripts

Geogebra

R
1m <- 6;
2n <- 61;
3S0 <- 70;
4S1 <- 130;
5K <- 100;
6r <- 0.12;
7T <- 1.0;
8sigma <- 0.10;
9
10time <- seq(T,0, length=m);
11S <- seq(S0,S1, length=n);
12
13numerd1 <- outer( ( (r + sigma^2/2)*(T-time)), log(S/K), "+");
14numerd2 <- outer( ( (r - sigma^2/2)*(T-time)), log(S/K), "+");
15
16d1 <- numerd1/(sigma*sqrt(T-time));
17d2 <- numerd2/(sigma*sqrt(T-time));
18part1 <- K*exp(-r*(T-time))*pnorm(-d2);
19part2 <- t(t(pnorm(-d1))*S);
20VC <- part1 - part2;
21
22matplot(S, t(VC), type = "l");
23
Octave
1m = 6;
2n = 61;
3S0 = 70;
4S1 = 130;
5K = 100;
6r = 0.12;
7T = 1.0;
8sigma = 0.10;
9
10time = transpose(linspace(T, 0, m) );
11S = linspace(S0,S1,n);
12
13d1 = (log(S/K) + ( (r + sigma^2/2)*(T-time)))./(sigma*sqrt(T-time));
14d2 = (log(S/K) + ( (r - sigma^2/2)*(T-time)))./(sigma*sqrt(T-time));
15part1 = bsxfun( @times, K*exp(-r*(T-time)), normcdf(-d2));
16part2 = bsxfun(@times, normcdf(-d1), S);
17VC = part1 - part2;
18
19plot(S,VC)
20
Perl
1use PDL::NiceSlice;
2
3sub pnorm {
4    my ( $x,$sigma, $mu ) = @_; 5$sigma = 1 unless defined($sigma); 6$mu    = 0 unless defined($mu); 7 8 return 0.5 * ( 1 + erf( ($x - $mu ) / ( sqrt(2) *$sigma ) ) );
9}
10$m = 6; 11$n = 61;
12$S0 = 70; 13$S1 = 130;
14$K = 100; 15$r = 0.12;
16$T = 1.0; 17$sigma = 0.10;
18
19$time = zeroes($m)->xlinvals($T,0.0); 20$S = zeroes($n)->xlinvals($S0,$S1); 21 22$logSoverK = log($S/$K);
23$n12 = (($r + $sigma**2/2)*($T-$time)); 24$n22 = (($r -$sigma**2/2)*($T-$time));
25$numerd1 =$logSoverK + $n12->transpose; 26$numerd2 = $logSoverK +$n22->transpose;
27$d1 =$numerd1/( ($sigma*sqrt($T-$time))->transpose); 28$d2 = $numerd2/( ($sigma*sqrt($T-$time))->transpose);
29
30$part1 = pnorm(-$d2) * ($K*exp(-$r*($T-$time)))->transpose;
31$part2 =$S * pnorm(-$d1); 32$VC = $part1 -$part2;
33
34# file output to use with external plotting programming
35# such as gnuplot, R, octave, etc.
36# Start gnuplot, then from gnuplot prompt
37#    plot for [n=2:7] putcallparity.dat using 1:(column(n)) with lines
38
39
40open( F, ">putcallparity.dat" ) || die "cannot write: $! "; 41wcols$S, $VC, *F; 42close(F); 43 SciPy 1import scipy 2 3m = 6 4n = 61 5S0 = 70 6S1 = 130 7K = 100 8r = 0.12 9T = 1.0 10sigma = 0.10 11 12time = scipy.linspace(T, 0.0, m) 13S = scipy.linspace(S0,S1, n) 14 15logSoverK = scipy.log(S/K) 16n12 = ((r + sigma**2/2)*(T-time)) 17n22 = ((r - sigma**2/2)*(T-time)) 18numerd1 = logSoverK[scipy.newaxis,:] + n12[:,scipy.newaxis] 19numerd2 = logSoverK[scipy.newaxis,:] + n22[:,scipy.newaxis] 20d1 = numerd1/(sigma*scipy.sqrt(T-time)[:,scipy.newaxis]) 21d2 = numerd2/(sigma*scipy.sqrt(T-time)[:,scipy.newaxis]) 22 23from scipy.stats import norm 24part1 = norm.cdf(-d2) * K*scipy.exp(-r*(T-time))[:,scipy.newaxis] 25part2 = S[scipy.newaxis] * norm.cdf(-d1) 26VC = part1 - part2 27 28# optional file output to use with external plotting programming 29# such as gnuplot, R, octave, etc. 30# Start gnuplot, then from gnuplot prompt 31# plot for [n=2:7] putcallparity.dat using 1:(column(n)) with lines 32 33scipy.savetxt(putcallparity.dat, 34 scipy.column_stack((scipy.transpose(S),scipy.transpose(VC))), 35 fmt=(%4.3f)) __________________________________________________________________________ ### Problems to Work for Understanding 1. Calculate the price of a 3-month European put option on a non-dividend-paying stock with a strike price of$50 when the current stock price is $50, the risk-free interest rate is 10% per year (compounded continuously) and the volatility is 30% per year. 2. What is the price of a European put option on a non-dividend paying stock when the stock price is$69, the strike price is $70, the risk-free interest rate is 5% per year (compounded continuously), the volatility is 35% per year, and the time to maturity is 6 months? 3. Show that the Black-Scholes formula for the price of a put option tends to $max\left(K-S,0\right)$ as $t\to T$. 4. For a particular scripting language of your choice, modify the scripts to create a function within that language that will evaluate the Black-Scholes formula for a put option at a time and security value for given parameters. 5. For a particular scripting language of your choice, modify the scripts to create a script within that language that will evaluate the Black-Scholes formula for a put option at a speciﬁed time for given parameters, and return a function of the security prices that can plotted by calling the function over an interval of security prices. 6. Plot the price of a European put option on a non-dividend paying stock over the stock prices$20 to $40, given that the exercise price is$29, the risk-free interest rate is 5%, the volatility is 25% per annum, and the time to maturity is 4 months.
7. For a particular scripting language of your choice, modify the scripts to create a script within that language that will plot the Black-Scholes solution for ${V}_{P}\left(S,t\right)$ as a surface over the two variables $S$ and $t$.

__________________________________________________________________________

### References

[1]   Robert W. Kolb. Financial Derivatives. Institute of Finance, 1993.

[2]   J. Michael Steele. Stochastic Calculus and Financial Applications. Springer-Verlag, 2001. QA 274.2 S 74.

__________________________________________________________________________

1. Video with explanation of put-call parity..
2. Option Research and Technology Services. Provides important option trading terms and jargon, here is the link to deﬁnition of “Put-Call Parity”.

__________________________________________________________________________

I check all the information on each page for correctness and typographical errors. Nevertheless, some errors may occur and I would be grateful if you would alert me to such errors. I make every reasonable eﬀort to present current and accurate information for public use, however I do not guarantee the accuracy or timeliness of information on this website. Your use of the information from this website is strictly voluntary and at your risk.

I have checked the links to external sites for usefulness. Links to external websites are provided as a convenience. I do not endorse, control, monitor, or guarantee the information contained in any external website. I don’t guarantee that the links are active at all times. Use the links here with the same caution as you would all information on the Internet. This website reﬂects the thoughts, interests and opinions of its author. They do not explicitly represent oﬃcial positions or policies of my employer.

Information on this website is subject to change without notice.