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

Stochastic Processes and
Advanced Mathematical Finance

__________________________________________________________________________

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

Rating

Mathematically Mature: may contain mathematics beyond calculus with proofs.

_______________________________________________________________________________________________

Section Starter Question

Section Starter Question

What does it mean to say that a differential equation is a linear differential equation?

_______________________________________________________________________________________________

Key Concepts

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

Vocabulary

  1. The put-call parity principle is the relationship
    C P = S Ker(Tt)

    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 financial instrument.

______________________________________________________________________________

Mathematical Ideas

Mathematical Ideas

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

The Black-Scholes equation is

V t + 1 2σ2S2V SS + rSV S rV = 0.

With the additional terminal condition V (S,T) 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 verification right now) we know that S is a solution of the Black-Scholes equation and Ker(Tt) is also a solution, so S Ker(Tt) is a solution. At the expiration time T, the solution has value S K.

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

C P = S Ker(Tt).

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 butterfly options.

Put-Call Parity by Reasoning about Arbitrage

Assume that an underlying security satisfies the assumptions of the previous sections. Assume further that:

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

Consider an investor with the following portfolio:

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


SecurityCallPutPortfolio




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 off $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, σ, and T. Consider buying a put and selling a call, each with the same strike price K. We will find at expiration T that:

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 Ker(Tt) S. Specifically, one could sell (short) the stock right now for S, and lend Ker(Tt) dollars right now for a net cash outlay of Ker(Tt) 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 = K exp(r(T t)) S

or more naturally

S C + P = K exp(r(T t)).

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 financial instrument. Since

S + P K exp(r(T t)) = C,

a portfolio “long in the underlying security, long in a put, short K exp(r(T t)) 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 + K exp(r(T t)).

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

V P (S,t) = SΦ log(SK) + (r + σ22)(T t) σT t Ker(Tt)Φ log(SK) + (r σ22)(T t) σT t S + K exp(r(T t)).

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 final answer. Specifically, let

d1 = log(SK) + (r + σ22)(T t) σT t d2 = log(SK) + (r σ22)(T t) σT t

so that

V P (S,t) = S(Φ d1 1) Ker(Tt)(Φ d 2 1).

Using the symmetry properties of the c.d.f. Φ, we obtain

V P (S,t) = Ker(Tt)Φ d 2 SΦ d1 .

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 σ = 0.10. The value of the put option at maturity plotted over a range of stock prices 0 S 150 surrounding the strike price is illustrated below:


putcallparity-1.png

Figure 1: Value of the put option at maturity.

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 S 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).


putcallparity-2.png

Figure 2: Value of the call option at various times.

Notice two trends in the value from this graph:

  1. As the stock price increases, for a fixed time the option value decreases.
  2. As the time to expiration decreases, for a fixed 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.


putcallparity-3.png

Figure 3: Value surface from the Black-Scholes formula.

This value surface shows both trends.

Sources

This section is adapted from: Financial Derivatives by Robert W. Kolb, New York Institute of Finance, Englewood Cliffs, 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

Algorithms, Scripts, Simulations

Algorithm

For given parameter values for K, r, T, and σ, the Black-Scholes-Merton solution formula for a put option is sampled at a specified m × 1 array of times and at a specified 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 σ. This approach is taken to illustrate the use of vectorization and broadcasting for efficient evaluation of an array of solution values from a complicated formula.

In particular, the calculation of d1 and d2 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 infinity and NaN (Not a Number) which come from divisions by 0, taking logarithms of 0, and negative numbers and calculating the normal cdf at infinity and negative infinity. 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

R script for Black-Scholes pricing formula for a put option..

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

Octave script for Black-Scholes pricing formula for a put option..

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

Perl PDL script for Black-Scholes pricing formula for a put option..

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

Scientific Python script for Black-Scholes pricing formula for a put option..

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

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(K S, 0) as t 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 specified 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 (S,t) as a surface over the two variables S and t.

__________________________________________________________________________

Books

Reading Suggestion:

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.

__________________________________________________________________________

Links

Outside Readings and Links:

  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 definition 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 effort 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 reflects the thoughts, interests and opinions of its author. They do not explicitly represent official positions or policies of my employer.

Information on this website is subject to change without notice.

Steve Dunbar’s Home Page, http://www.math.unl.edu/~sdunbar1

Email to Steve Dunbar, sdunbar1 at unl dot edu

Last modified: Processed from LATEX source on August 12, 2016