LINEBURG


<< . .

 6
( 20)



. . >>


};


provides the output

one period european call = 3.64342
two period european call = 5.44255




36
Chapter 6

Basic Option Pricing, the Black Scholes formula
Contents
6.1 The formula . . . . . . . . . . . . . . . . . . . . . . . . . . . . .......... . . 37
6.2 Understanding the why™s of the formula . . . . . . . . . . . .......... . . 40
6.2.1 The original Black Scholes analysis . . . . . . . . . . . . . . ........... . . 40
6.2.2 The limit of a binomial case . . . . . . . . . . . . . . . . . . ........... . . 40
6.2.3 The representative agent framework . . . . . . . . . . . . . ........... . . 41
6.3 Partial derivatives. . . . . . . . . . . . . . . . . . . . . . . . . .......... . . 41
6.3.1 Delta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ........... . . 41
6.3.2 Other Derivatives . . . . . . . . . . . . . . . . . . . . . . . . ........... . . 41
6.3.3 Implied Volatility. . . . . . . . . . . . . . . . . . . . . . . . ........... . . 44


The pricing of options and related instruments has been a major breakthrough for the use of ¬nancial theory
in practical application. Since the original papers of Black and Scholes [1973] and Merton [1973], there
has been a wealth of practical and theoretical applications. We will now consider the orginal Black Scholes
formula for pricing options, how it is calculated and used. For the basic intuition about option pricing the
reader should ¬rst read the discussion of the binomial model in the previous chapter, as that is a much better
environment for understanding what is actually calculated.
An option is a derivative security, its value depends on the value, or price, of some other underlying security,
called the underlying security.. Let S denote the value, or price, of this underlying security. We need to keep
track of what time this price is observed at, so let St denote that the price is observed at time t. A call (put)
option gives the holder the right, but not the obligation, to buy (sell) some underlying asset at a given price
K, called the exercise price, on or before some given date T . If the option is a so called European option, it
can only be used (exercised) at the maturity date. If the option is of the so called American type, it can be
used (exercised) at any date up to and including the maturity date T . If exercised at time T , a call option
provides payo¬

CT = max(0, ST ’ K)

and a put option provides payo¬

PT = max(0, K ’ ST )

The Black Scholes formulas provides analytical solutions for European put and call options, options which
can only be exercised at the options maturity date. Black and Scholes showed that the additional information
needed to price the option is the (continously compounded) risk free interest rate r, the variability of the
underlying asset, measured by the standard deviation σ of (log) price changes, and the time to maturity
(T ’ t) of the option, measured in years. The original formula was derived under the assumption that there
are no payouts, such as stock dividends, coming from the underlying security during the life of the option.
Such payouts will a¬ection option values, as will become apparent later.


6.1 The formula

Formula 6.1 gives the exact formula for a call option, and the calculation of the same call option is shown in
code 6.1



37
c = SN (d1 ) ’ Ke’r(T ’t) N (d2 )

where
S
+ (r + 1 σ 2 )(T ’ t)
ln K
√2
d1 =
σ T ’t
and

d2 = d1 ’ σ T ’ t
Alternatively one can calculate d1 and d2 as
S
+ r(T ’ t) 1 √
ln K
√ + σ T ’t
d1 =
2
σ T ’t
S
+ r(T ’ t) 1 √
ln K
√ ’ σ T ’t
d2 =
2
σ T ’t
S is the price of the underlying security, K the exercise price, r the (continously compounded) risk free interest rate, σ the standard
deviation of the underlying asset, t the current date, T the maturity date, T ’ t the time to maturity for the option and N (·) the
cumulative normal distribution.
Formula 6.1: The Black Scholes formula




#include <cmath> // mathematical C library
// the calculation of the cumularive normal distribution
#include "normdist.h"

double option price call black scholes(const double& S, // spot (underlying) price
const double& K, // strike (exercise) price,
const double& r, // interest rate
const double& sigma, // volatility
const double& time) { // time to maturity
double time sqrt = sqrt(time);
double d1 = (log(S/K)+r*time)/(sigma*time sqrt)+0.5*sigma*time sqrt;
double d2 = d1’(sigma*time sqrt);
double c = S*N(d1) ’ K*exp(’r*time)*N(d2);
return c;
};


Code 6.1: Price of European call option using the Black Scholes formula




38
Let us price a call option. The option matures 6 months from now, at which time the holder of the option
can recive one unit of the underlying security by paying the exercise price of K = 50. The current price of
the underlying security is S = 50. The volatility of the underlying security is given as σ = 30%. The current
risk free interest rate (with continous compounding) for six month borrowing is 10%.
To calculate this we use the Black Scholes formula with inputs S = 50, K = 50, r = 0.10, σ = 0.3 and
(T ’ t) = 0.5.
The program

void test option price call black scholes(){
double S = 50; double K = 50; double r = 0.10;
double sigma = 0.30; double time=0.50;
cout << " Black Scholes call price = ";
cout << option price call black scholes(S, K , r, sigma, time) << endl;
};


provides the output
Black Scholes call price = 5.45325

Example 6.1: Example using the Black Scholes formula




39
Exercise 4.
The Black Scholes price for a put option is:
p = Ke’r(T ’t) N (’d2 ) ’ SN (’d1 )
where d1 and d2 are as for the call option:
S
+ (r + 1 σ 2 )(T ’ t)
ln X
√2
d1 =
σ T ’t

d2 = d1 ’ σ T ’ t

and S is the price of the underlying secrutity, K the exercise price, r the (continously compounded) risk free
interest rate, σ the standard deviation of the underlying asset, T ’ t the time to maturity for the option and N (·)
the cumulative normal distribution.
1. Implement this formula.


6.2 Understanding the why™s of the formula

To get some understanding of the Black Scholes formula and why it works will need to delve in some detail
into the mathematics underlying its derivation. It does not help that there are a number of ways to prove
the Black Scholes formula, depending on the setup. As it turns out, two of these ways are important to
understand for computational purposes, the original Black Scholes continous time way, and the “limit of a
binomial process” way of Cox et al. [1979].

6.2.1 The original Black Scholes analysis

The primary assumption underlying the Black Scholes analyis concerns the stochastic process governing the
price of the underlying asset. The price of the underlying asset, S, is assumed to follow a geometric Brownian
Motion process, conveniently written in either of the shorthand forms
dS = µSdt + σSdZ
or
dS
= µdt + σdZ
S
where µ and σ are constants, and Z is Brownian motion.
Using Ito™s lemma, the assumption of no arbitrage, and the ability to trade continuously, Black and Scholes
showed that the price of any contingent claim written on the underlying must solve the partial di¬erential
equation (6.1).
1 ‚2f 2 2
‚f ‚f
rS + + σ S = rf (6.1)
2 ‚S 2
‚S ‚t
For any particular contingent claim, the terms of the claim will give a number of boundary conditions that
determines the form of the pricing formula.
The pde given in equation (6.1), with the boundary condition cT = max(0, ST ’ K) was shown by Black
and Scholes to have an analytical solution of functional form shown in the Black Scoles formula 6.1.

6.2.2 The limit of a binomial case

Another is to use the limit of a binomial process [Cox et al., 1979]. The latter is particularly interesting, as
it allows us to link the Black Scholes formula to the binomial, allowing the binomial framework to be used
as an approximation.

40
6.2.3 The representative agent framework

A ¬nal way to show the BS formula to assume a representative agent and lognormality as was done in
Rubinstein [1976].


6.3 Partial derivatives.

In trading of options, a number of partial derivatives of the option price formula is important.

6.3.1 Delta

The ¬rst derivative of the option price with respect to the price of the underlying security is called the delta
of the option price. It is the derivative most people will run into, since it is important in hedging of options.

‚c
= N (d1 )
‚S
Code 6.2 shows the calculation of the delta for a call option.

#include <cmath>
#include "normdist.h"

double option price delta call black scholes(const double& S, // spot price
const double& K, // Strike (exercise) price,
const double& r, // interest rate
const double& sigma, // volatility
const double& time){ // time to maturity
double time sqrt = sqrt(time);
double d1 = (log(S/K)+r*time)/(sigma*time sqrt) + 0.5*sigma*time sqrt;
double delta = N(d1);
return delta;
};


Code 6.2: Calculating the delta of the Black Scholes call option price


6.3.2 Other Derivatives

The remaining derivatives are more seldom used, but all of them are relevant. All of them are listed in
formula 6.3.2.
The calculation of all of these partial derivatives for a call option is shown in code 6.3




41
Delta (∆)
‚c
∆= = N (d1 )
‚S
Gamma (“)
‚2c n(d1 )

=
2
‚S Sσ T ’ t
Theta (˜) (careful about which of these you want)
‚c 1 1
+ rKe’r(T ’t) N (d2 )
= Sn(d1 ) σ √
‚(T ’ t) 2 T ’t
‚c 1 1
’ rKe’r(T ’t) N (d2 )
= ’Sn(d1 ) σ √
‚t 2 T ’t
Vega

‚c
= S T ’ tn(d1 )
‚σ
Rho (ρ)
‚c
= K(T ’ t)e’r(T ’t) N (d2 )
‚r
S is the price of the underlying security, K the exercise price, r the (continously compounded) risk free interest rate, σ the standard
deviation of the underlying asset, t the current date, T the maturity date and T ’ t the time to maturity for the option. n(·) is the
’ 1 z2 z
√1 e 2
normal distribution function n(z) = and N (·) the cumulative normal distribution N (z) = n(t)dt .
2π ’∞


Formula 6.2: Partial derivatives of the Black Scholes call option formula



#include <cmath>
#include "normdist.h"
using namespace std;

void option price partials call black scholes( const double& S, // spot price
const double& K, // Strike (exercise) price,
const double& r, // interest rate
const double& sigma, // volatility
const double& time, // time to maturity
double& Delta, // partial wrt S
double& Gamma, // second prt wrt S
double& Theta, // partial wrt time
double& Vega, // partial wrt sigma
double& Rho){ // partial wrt r
double time sqrt = sqrt(time);
double d1 = (log(S/K)+r*time)/(sigma*time sqrt) + 0.5*sigma*time sqrt;
double d2 = d1’(sigma*time sqrt);
Delta = N(d1);
Gamma = n(d1)/(S*sigma*time sqrt);
Theta =’ (S*sigma*n(d1))/(2*time sqrt) ’ r*K*exp( ’r*time)*N(d2);
Vega = S * time sqrt*n(d1);
Rho = K*time*exp(’r*time)*N(d2);
};


Code 6.3: Calculating the partial derivatives of a Black Scholes call option



42
Consider the same call option as in the previous example. The option matures 6 months from now, at which
time the holder of the option can recive one unit of the underlying security by paying the exercise price of
K = 50. The current price of the underlying security is S = 50. The volatility of the underlying security is
given as σ = 30%. The current risk free interest rate (with continous compounding) for six month borrowing
is 10%. To calculate the partial derivatives we therefore use inputs S = 50, K = 50, r = 0.10, σ = 0.3 and
(T ’ t) = 0.5.
The program

void test black scholes partials call(){
cout << " Option price partial derivatives, call option using Black Scholes " << endl;
double S = 50; double K = 50; double r = 0.10;
double sigma = 0.30; double time=0.50;
double Delta, Gamma, Theta, Vega, Rho;
option price partials call black scholes(S,K,r,sigma, time,
Delta, Gamma, Theta, Vega, Rho);
cout << " Delta = " << Delta << endl;
cout << " Gamma = " << Gamma << endl;
cout << " Theta = " << Theta << endl;
cout << " Vega = " << Vega << endl;
cout << " Rho = " << Rho << endl;
};


provides the output
Option price partial derivatives, call option using Black Scholes
Delta = 0.633737
Gamma = 0.0354789
Theta = -6.61473
Vega = 13.3046
Rho = 13.1168

Example 6.2: Example caclulating partial derivatives using the Black Scholes formula




43
6.3.3 Implied Volatility.

In calculation of the option pricing formulas, in particular the Black Scholes formula, the only unknown is
the standard deviation of the underlying stock. A common problem in option pricing is to ¬nd the implied
volatility, given the observed price quoted in the market. For example, given c0 , the price of a call option,
the following equation should be solved for the value of σ

c0 = c(S, K, r, σ, T ’ t)

Unfortunately, this equation has no closed form solution, which means the equation must be numerically
solved to ¬nd σ. What is probably the algorithmic simplest way to solve this is to use a binomial search
algorithm, which is implemented in the following. We start by bracketing the sigma by ¬nding a high sigma
that makes the BS price higher than the observed price, and then, given the bracketing interval, we search
for the volatility in a systematic way. Code 6.4 shows such a calculation.

#include <cmath>
#include "fin_recipes.h"

double option price implied volatility call black scholes bisections(const double& S,
const double& X,
const double& r,
const double& time,
const double& option price){
double sigma low=0.0001; // check for arbitrage violations:
double price = option price call black scholes(S,X,r,sigma low,time);
if (price>option price) return 0.0; // if price at almost zero volatility greater than price, return 0

// simple binomial search for the implied volatility.
// relies on the value of the option increasing in volatility
const double ACCURACY = 1.0e’5; // make this smaller for higher accuracy
const int MAX ITERATIONS = 100;
const double HIGH VALUE = 1e10;
const double ERROR = ’1e40;

// want to bracket sigma. ¬rst ¬nd a maximum sigma by ¬nding a sigma
// with a estimated price higher than the actual price.
double sigma high=0.3;
price = option price call black scholes(S,X,r,sigma high,time);

<< . .

 6
( 20)



. . >>

Copyright Design by: Sunlight webdesign