Anda di halaman 1dari 14

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

Implied Volatility

Rating
Mathematically Mature: may contain mathematics beyond calculus with
proofs.

1
Section Starter Question
What are some methods you could use to find the solution of f (x) = c for x
where f is a function that is so complicated that you cannot use elementary
functions and algebraic operations to isolate x ?

Key Concepts
1. We estimate historical volatility by applying the standard deviation
estimator from statistics to the observations ln(Si /Si1 ).
2. We deduce implied volatility by numerically solving the Black-Scholes
formula for .

Vocabulary
1. Historical volatility of a security is the variance of the changes in
the logarithm of the price of the underlying asset, obtained from past
data.
2. Implied volatility of a security is the numerical value of the volatility
parameter that makes the market price of an option equal to the value
from the Black-Scholes formula.

2
Mathematical Ideas
Historical volatility
Estimates of historical volatility of security prices use statistical estima-
tors, usually one of the estimators of variance. A main problem for historical
volatility is to select the sample size, or window of observations, used to es-
timate 2 . Different time-windows usually give different volatility estimates.
Furthermore, for some customized over the counter derivatives the neces-
sary price data may not exist.
Another problem with historical volatility is that it assumes future mar-
ket performance is the same as past market data. Although this is a natural
scientific assumption, it does not take into account historical anomalies such
as the October 1987 stock market drop that may be unusual. That is, com-
puting historical volatility has the usual statistical difficulty of how to handle
outliers. The assumption that future market performance is the same as past
performance also does not take into account underlying changes in the market
such as new economic conditions.
To estimate the volatility of a security price empirically observe the secu-
rity price at regular intervals, such as every day, every week, or every month.
Define:

the number of observations n + 1;

the security price at the end of the ith interval Si , i = 0, 1, 2, 3, . . . , n;

the length of each of the time intervals (say in years) item ; and

the increment of the logarithms of the security prices


 
Si
ui = ln(Si ) ln(Si1 ) = ln
Si1

for i = 1, 2, 3, . . ..

We are modeling the security price as a Geometric Brownian Motion, so that


ln(Si ) ln(Si1 ) N (r, 2 ).
Inverting ui = ln(Si /Si1 ) to obtain Si = Si1 eui , we see that ui is the
continuously compounded return (not annualized) in the ith interval. Then

3
the usual estimate s of the standard deviation of the ui s is
v
u n
u 1 X
s= t (ui u)2
n 1 i=1

where u is the mean of the ui s. Sometimes it is more convenient to use the


equivalent formula
v !2
n n
u
u 1 X 1 X
s=t u2 ui .
n 1 i=1 i n(n 1) i=1

We assume the security price varies as a Geometric Brownian Motion.


That means that the logarithm of the security price is a Wiener process with
some drift and on theperiod of time , would have a variance 2 . Therefore,
s is an estimate of . It follows that can be estimated as
s
.

Choosing an appropriate value for n is not obvious. Remember the vari-
ance expression for Geometric Brownian Motion is an increasing function of
time. If we model security prices with Geometric Brownian Motion, then
does change over time, and data that are too old may not be relevant
for the present or the future. A compromise that seems to work reasonably
well is to use closing prices from daily data over the most recent 90 to 180
days. Empirical research indicates that only trading days should be used, so
days when the exchange is closed should be ignored for the purposes of the
volatility calculation [2, page 215].
Economists and financial analysts often estimate historical volatility with
more sophisticated statistical time series methods.

Implied Volatility
The implied volatility is the parameter in the Black-Scholes formula
that would give the option price that is observed in the market, all other
parameters being known.
The Black-Scholes formula is too complicated to invert to explicitly
express as a function of the other parameters. Therefore, we use numerical
techniques to implicitly solve for . A simple idea is to use the method of
bisection search to find .

4
VC 3 VC

2 C

0
0 0.4

Figure 1: Schematic diagram of using Newtons Method to solve for implied


volatility. The current call option value is plotted in blue. The value of the
call option as a function of is plotted in black. The tangent line is plotted
in red

Example. Suppose the value C of a call on a non-dividend-paying security is


1.85 when S = 21, K = 20, r = 0.10, and T t = 0.25 and is unknown.
We start by arbitrarily guessing = 0.20. The Black-Scholes formula gives
C = 1.7647, which is too low. Since C is a increasing function of , this
suggests we try a value of = 0.30. This gives C = 2.1010, too high, so
we bisect the interval [0.20, 0.30] and try = 0.25. This value of gives
a value of C = 1.9268, still too high. Bisect the interval [0.20, 0.25] and
try a value of = 0.225, which yields C = 1.8438, slightly too low. Try
= 0.2375, giving C = 1.8849. Finally try = 0.23125 giving C = 1.8642.
To 2 significant digits, the significance of the data, = 0.23, with a predicted
value of C = 1.86.
Another procedure is to use Newtons method which is also iterative.
Essentially we are trying to solve

f (, S, K, r, T t) C = 0,

so from an initial guess 0 , we form the Newton iterates

i+1 = i f (i )/(df (i )/d).

See Figure 1. Using Newtons method means one has to differentiate the
Black-Scholes formula with respect to . This derivative is one of the greeks

5
known as vega which we will look at more extensively in the next section. A
formula for vega for a European call option is
df
= S T t0 (d1 ) exp(r(T t)).
d
A natural way to do the iteration is with a computer program rather than
by hand.
Implied volatility is a forward-looking estimation technique, in contrast
to the backward-looking historical volatility. That is, it incorporates the
markets expectations about the prices of securities and their derivatives, or
more concisely, market expectations about risk. More sophisticated com-
binations and weighted averages combining estimates from several different
derivative claims can be developed.

Sources
This section is adapted from: Quantitative modeling of Derivative Securities
by Marco Avellaneda, and Peter Laurence, Chapman and Hall, Boca Raton,
2000, page 66; and Options, Futures, and other Derivative Securities second
edition, by John C. Hull, Prentice Hall, 1993, pages 229230.

Algorithms, Scripts, Simulations


Algorithm
First define the function f = VC C as a function of and parameters S, K,
r, T t, and C. Next define the derivative of f with respect to . For given
numerical values for 0 , the guess for the volatility; S, the current security
price; K, the strike price; r, the risk-free interest rate; T t, the time to
expiration; and C, the current call option price, the script uses Newtons
method to find the implied volatility with error tolerance . The implied
volatility is the value of which makes f 0 to within . The Newtons

6
method iteration uses a repeatuntil loop construction which means that
at least one iteration of the loop is computed.

Scripts
Geogebra GeoGebra applet to illustrate implied volatility

R R script for implied volatility.


1
2 f <- function ( sigma , S , K , r , Tminust , C ) {
3 d1 <- ( log ( S / K ) + ( ( r + sigma ^2 / 2) * ( Tminust ) ) ) / ( sigma *
sqrt ( Tminust ) ) ;
4 d2 <- ( log ( S / K ) + ( ( r - sigma ^2 / 2) * ( Tminust ) ) ) / ( sigma *
sqrt ( Tminust ) ) ;
5 part1 <- pnorm ( d1 ) * S ;
6 part2 <- K * exp ( - r * ( Tminust ) ) * pnorm ( d2 ) ;
7 VC <- part1 - part2 ;
8 f <- VC - C ;
9 f
10 }
11
12 fprime <- function ( sigma , S , K , r , Tminust , C ) {
13 d1 <- ( log ( S / K ) + ( ( r + sigma ^2 / 2) * ( Tminust ) ) ) / ( sigma *
sqrt ( Tminust ) ) ;
14 fprime <- S * sqrt ( Tminust ) * dnorm ( d1 ) * exp ( - r * Tminust ) ;
15 fprime
16 }
17
18 S <- 21;
19 K <- 20;
20 Tminust <- 0.25;
21 r <- 0.10;
22 C <- 1.85;
23
24 sigmaNew <- 0.20;
25 epsilon <- 10^( -5) ;
26
27 repeat {
28 sigmaOld <- sigmaNew ;
29 sigmaNew <- sigmaOld - f ( sigmaOld , S , K , r , Tminust , C )
/ fprime ( sigmaOld , S , K , r , Tminust ) ;
30 if ( abs ( sigmaNew - sigmaOld ) < epsilon ) {
31 break ;
32 }

7
33 }
34
35 cat ( sprintf ( " % f \ n " , sigmaNew ) ) ;

Octave Octave script for implied volatility.


1 # Prevent Octave from thinking that this
2 # is a function file :
3
4 1;
5
6 function retval = f ( sigma , S , K , r , Tminust , C )
7 d1 = ( log ( S / K ) + ( ( r + sigma .^2/2) *( Tminust ) ) ) ./( sigma
* sqrt ( Tminust ) ) ;
8 d2 = ( log ( S / K ) + ( ( r - sigma .^2/2) *( Tminust ) ) ) ./( sigma
* sqrt ( Tminust ) ) ;
9 part1 = normcdf ( d1 ) * S ;
10 part2 = K * exp ( - r *( Tminust ) ) * normcdf ( d2 ) ;
11 VC = part1 - part2 ;
12 retval = VC - C ;
13 endfunction
14

15 function retval = fprime ( sigma , S , K , r , Tminust , C )


16 d1 = ( log ( S / K ) + ( ( r + sigma ^2/2) *( Tminust ) ) ) ./( sigma *
sqrt ( Tminust ) ) ;
17 retval = S * sqrt ( Tminust ) * normpdf ( d1 ) * exp ( - r * Tminust ) ;
18 endfunction
19

20 S = 21;
21 K = 20;
22 Tminust = 0.25;
23 r = 0.10;
24 C = 1.85;
25

26
27 sigmaNew = 0.20;
28 epsilon = 10^( -5) ;
29
30 do
31 sigmaOld = sigmaNew ;
32 sigmaNew = sigmaOld - f ( sigmaOld , S , K , r , Tminust , C ) /
fprime ( sigmaOld , S , K , r , Tminust ) ;
33 until ( abs ( sigmaNew - sigmaOld ) < epsilon )
34

8
35 sigmaNew

Perl Perl PDL script for implied volatility.


1
2 use PDL :: NiceSlice ;
3 use PDL :: Constants qw ( PI ) ;
4
5 sub pnorm {
6 my ( $x , $sigma , $mu ) = @_ ;
7 $sigma = 1 unless defined ( $sigma ) ;
8 $mu = 0 unless defined ( $mu ) ;
9
10 return 0.5 * ( 1 + erf ( ( $x - $mu ) / ( sqrt (2) *
$sigma ) ) ) ;
11 }
12
13 sub dnorm {
14 my ( $x ) = @_ ;
15 return (1/ sqrt (2* PI ) ) * exp ( - $x **2/2) ;
16 }
17

18 sub f {
19 my ( $sigma , $S , $K , $r , $Tminust , $C ) = @_ ;
20 $d1 = ( log ( $S / $K ) + ( ( $r + $sigma **2/2) *( $Tminust ) ) ) /(
$sigma * sqrt ( $Tminust ) ) ;
21 $d2 = ( log ( $S / $K ) + ( ( $r - $sigma **2/2) *( $Tminust ) ) ) /(
$sigma * sqrt ( $Tminust ) ) ;
22 $part1 = pnorm ( $d1 ) * $S ;
23 $part2 = $K * exp ( - $r *( $Tminust ) ) * pnorm ( $d2 ) ;
24 $VC = $part1 - $part2 ;
25
26 return $VC - $C ;
27 }
28
29 sub fprime {
30 my ( $sigma , $S , $K , $r , $Tminust , $C ) = @_ ;
31 $d1 = ( log ( $S / $K ) + ( ( $r + $sigma **2/2) *( $Tminust ) ) )
/( $sigma * sqrt ( $Tminust ) ) ;
32

33 return $S * sqrt ( $Tminust ) * dnorm ( $d1 ) * exp ( - $r * $Tminust )


;
34 }
35

9
36 $S = 21;
37 $K = 20;
38 $Tminust = 0.25;
39 $r = 0.10;
40 $C = 1.85;
41
42 $sigmaNew = 0.10;
43 $epsilon = 10**( -5) ;
44
45 do {
46 $sigmaOld = $sigmaNew ;
47 $sigmaNew = $sigmaOld - f ( $sigmaOld , $S , $K , $r ,
$Tminust , $C ) / fprime ( $sigmaOld , $S , $K , $r , $Tminust ) ;
48 } until ( abs ( $sigmaNew - $sigmaOld ) < $epsilon ) ;
49
50 print $sigmaNew , " \ n " ;

SciPy Scientific Python script for implied volatility.


1
2 import scipy
3

4 from scipy . stats import norm


5
6 def f ( sigma , S , K , r , Tminust , C ) :
7
8 logSoverK = scipy . log ( S / K )
9 n12 = (( r + sigma **2/2) * Tminust )
10 n22 = (( r - sigma **2/2) * Tminust )
11 numerd1 = logSoverK + n12
12 numerd2 = logSoverK + n22
13 d1 = numerd1 /( sigma * scipy . sqrt ( Tminust ) )
14 d2 = numerd2 /( sigma * scipy . sqrt ( Tminust ) )
15 part1 = norm . cdf ( d1 ) * S
16 part2 = K * scipy . exp ( - r *( Tminust ) ) * norm . cdf ( d2 )
17 VC = part1 - part2
18 return VC - C
19
20 def fprime ( sigma , S , K , r , Tminust , C ) :
21

22 logSoverK = scipy . log ( S / K )


23 n12 = (( r + sigma **2/2) * Tminust )
24 numerd1 = logSoverK + n12
25 d1 = numerd1 /( sigma * scipy . sqrt ( Tminust ) )

10
26 return S * scipy . sqrt ( Tminust ) * norm . pdf ( d1 ) * scipy . exp ( -
r * Tminust )
27
28 S = 21.
29 K = 20.
30 Tminust = 0.25
31 r = 0.10
32 C = 1.85
33
34 sigmaNew = 0.20
35 epsilon = 10.**( -5)
36
37 while ( True ) :
38 sigmaOld = sigmaNew
39 sigmaNew = sigmaOld - f ( sigmaOld , S , K , r , Tminust , C
) / fprime ( sigmaOld , S , K , r , Tminust , C )
40 if ( scipy . absolute ( sigmaNew - sigmaOld ) < epsilon
):
41 break
42
43 print sigmaNew

Problems to Work for Understanding


1. Suppose that the observations on a security price (in dollars) at the end
of each of 15 consecutive weeks are as follows: 30.25, 32, 31.125, 30.25,
30.375, 30.625, 33, 32.875, 33, 33.5, 33.5 33.75, 33.5, 33.25. Estimate
the security price volatility.

2. Pick a publicly traded security, obtain a record of the last 90 days


of that securitys prices, and compute the historical volatility of the
security.

11
3. A call option on a non-dividend paying security has a market price of
$2.50. The security price is $15, the exercise price is $13, the time to
maturity is 3 months, and the risk-free interest rate is 5% per year.
Using repeated bisection, what is the implied volatility?

4. For a particular scripting language of your choice, create a script within


that language that will compute implied volatility by repeated bisec-
tion.

5. A call option on a non-dividend paying security has a market price of


$2.50. The security price is $15, the exercise price is $13, the time to
maturity is 3 months, and the risk-free interest rate is 5% per year.
Using Newtons method, what is the implied volatility?

6. Sources of financial data on options typically provide information on


the current security price on a quote date, a variety of strike prices, the
current quote date and the expiration date, the option price and the
implied volatility. (Some even provide additional data on the values of
the greeks.) However, the risk-free interest rate is not provided. For
a particular scripting language of your choice, create a script within
that language that will compute the risk-free interest rate by repeated
bisection. Compare that computed rate to historical interest rate on
U.S. Treasury bonds. For example, on October 1, 2010, a call option
on Google stock valued at $525.62 with a strike price of $620 on the
expiration date of January 22, 2011 had a price of $4.75 and an implied
volatility of 0.2529. What was the risk-free interest rate on that date?
What was the interest rate on U.S. Treasury bonds on that date?

12
Reading Suggestion:
References
[1] Marco Allavenada and Peter Laurence. Quantitative Modeling of Deriva-
tive Securities. Chapman and Hall, 2000. HG 6024 A3A93 2000.
[2] John C. Hull. Options, Futures, and other Derivative Securities. Prentice-
Hall, second edition, 1993. economics, finance, HG 6024 A3H85.

Outside Readings and Links:


1. Peter Hoadley, Options Strategy Analysis Tools has a Historic Volatility
Calculator that calculates and graphs historic volatility using historical
price data retrieved from Yahoo.com. Submitted by Bashar Al-Salim,
Dec. 2, 2003.
2. Analysis of asset allocation A calculator to compute implied volatility
using Black and Scholes. Submitted by Bashar Al-Salim, Dec. 2, 2003.
3. MindXpansion,a Tool for Option Traders This option calculator pack-
ages an enormous amount of functionality onto one screen, calculating
implied volatility or historical volatility with Midas Touch. Submitted
by Chun Fan, Dec. 3, 2003.

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

13
guarantee the information contained in any external website. I dont 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, in-
terests 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 Dunbars 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

14

Anda mungkin juga menyukai