Skip to content
Accessibility statement
100%
100%
0%
0 turns

3 Estimating Volatility

In order to apply the Black-Scholes pricing formula, we need five parameters – initial stock price , volatility of the stock , riskless interest rate , maturity of the option and strike price . Note that four of the five parameters are known and the value of needs to be estimated. One possibility is to use historic data. In this Section we will detail how to estimate using daily closing prices and also opening and closing prices. We will also consider implied volatility.

3.1 Using Closing Data

Suppose that are independent random variables having a common probability distribution with mean and variance . For unknown , the usual estimator of is the sample variance,

Note that the estimator is a random variable (and the capitalisation of the reflects this). Recall that the above is an unbiased estimator of since

Furthermore, if the are Normally distributed, it can be shown that

In this case, is a consistent estimator of . Recall that for consistency, we need asymptotic unbiasedness and the variance of the estimator to tend to zero as the sample size increases.

Proof of unbiasedness

We can show that as follows. We have that

Now,

Hence, using and re-arranging the above gives

In a very similar manner, we obtain

Finally,

as required.

Application to p.a. volatility estimation

We apply this procedure to estimate the volatility of a stock price as follows. Suppose the closing price of a stock is observed at fixed intervals of time (e.g. every day) and is assumed to follow a G.B.M. with volatility (per annum). Define:

  • : Number of observations

  • : Closing price at the end of interval ()

  • : Length of time interval in years

and let

Now, under the assumption of G.B.M. follows a Normal distribution with variance . In this context, the sample variance would give an unbiased estimator of . Therefore we construct the estimator of as

Comments

  • Choosing a value is not as straightforward as would appear. Naturally, more data will lead to more accuracy. However, it may not be reasonable to assume that the volatility of a particular stock is the same now as, say ten years ago. We will come back to this point later on.

  • The procedure is typically used with daily data. An important point is whether volatility should be measured per calendar year or trading year. Evidence suggests that volatility is largely caused by trading itself and therefore is typically measured per trading year. Since there are (approximately) 252 trading days in a year (so that 1 day years), the estimator of based on days of data is

Example 3.1

Consider the following closing day Gas prices (in dollars) observed on 21 consecutive days.

Day ()

Closing Price ()

Day ()

Closing Price ()

0

52.75

11

59.48

1

53.43

12

58.12

2

54.51

13

57.40

3

53.77

14

56.38

4

53.90

15

57.60

5

53.66

16

57.25

6

54.54

17

57.44

7

54.92

18

56.07

8

55.00

19

56.21

9

56.88

20

57.76

10

57.80

   
Table 1 Commodity Prices (dollars)

Assuming that Gas price follows a G.B.M., we estimate the volatility (per annum) by computing

and

Hence we obtain the estimate

Example 3.2

Here, we will consider daily closing values of the Standard and Poors 500 (S&P500) index from January 03, 2012 until October 25, 2022. The data set can be downloaded from the course page (click Download SandP500.RData and double click the file once it’s downloaded) or can be read directly from the URL using the first line of the code below. The data will then be loaded into (RStudio) where a new vector called ‘sp’ will be loaded into the R environment. The following commands can be used to plot:

load(url("https://www.mas.ncl.ac.uk/~nak102/teaching/mas3904/SandP500.RData"))

plot(ts(sp,start=2012,deltat=1/252),xlab="Time (years)",ylab="Price (dollars)")

We can plot the daily returns, with

len = length(sp)
ret = log(sp[2:len]/sp[1:(len-1)])
plot(ts(ret,start=2012,deltat=1/252),xlab="Time (years)",ylab="Returns")
\includegraphics[scale=0.5]{sp.pdf}
Figure 1 Daily closing prices and returns of the S&P500 index

Figure 1 shows daily closing prices and returns. Assuming that the S&P500 index data follows a G.B.M. we can estimate the volatility per annum, using the full set of observations, with the command,

var(ret)*252

which yields . Note that in computing this estimate we have assumed that the volatility is constant over the period January 03, 2012 – October 25, 2022. Figure 2 shows estimates of square root annual volatility, , obtained by taking the S&P500 data for each year in turn, and applying the formula (and square-rooting). On inspection of this plot, it appears that our assumption of a constant volatility over the entire period may be an unreasonable one.

\includegraphics[scale=0.5]{vol.pdf}
Figure 2 Estimated square root volatility against year, using the S&P500 data.

3.2 Using Opening and Closing Data (not examinable)

Let denote the (closing) price of a particular stock at the end of trading day . Assuming that stock price follows a geometric Brownian motion, follows a Normal distribution with variance . Now let denote the opening price at the start of trading day and write

Now, assuming that the ratio price change during a trading day is independent of the change that happened when the market was closed (i.e. and are independent) it follows that

where and . If we observe closing prices on days and opening prices on days and assume that and both have a mean of approximately 0, then we may estimate by

Example 3.3

Consider the following opening and closing day prices (in dollars) of the S&P500 observed on 11 consecutive days.

Day ()

Open ()

Close ()

0

 

241.13

1

241.24

242.49

2

242.71

245.73

3

245.73

248.13

4

248.18

244.35

5

244.12

241.99

6

241.13

244.06

7

244.56

250.84

8

250.67

252.04

9

252.12

254.70

10

254.70

251.79

Table 2 S&P500 opening and closing prices (dollars)

We estimate the per annum volatility by computing

so that

and

Hence our estimate is


3.3 Implied Volatility

We have seen how to estimate from historic data. In practice, traders usually work with implied volatilities. These are the volatilities implied by option prices observed in the market.

Definition 3.1

The implied volatility of an option is the value of the volatility (of the underlying stock process) which when input into an option pricing model gives a value equal to the current/quoted price of the option.

Example 3.4

Suppose that stock prices follow a risk neutral G.B.M. (with parameters and ). Now suppose that the fair price of one ECO is when , , and . The implied volatility is the value of that, when substituted into the Black-Scholes formula gives .

Unfortunately, it is not possible to analytically express as a function of using the Black-Scholes formula. An iterative search procedure can be used instead. For example, start with a value and calculate a value for . The following R function should be useful:

bs=function(s0=21,K=20,r=0.1,T=0.25,sig) { omega=(r*T+sig*sig*T/2-log(K/s0))/(sig*sqrt(T)) #Return BS price s0*pnorm(omega,0,1)-K*exp(-r*T)*pnorm(omega-sig*sqrt(T)) } bs(sig=0.3)

Then, bs(sig=0.2) gives , which is too low. Since the fair price is increasing in (proof of which is beyond the scope of the course), we could try . We perform the following in R:

bs(sig=0.3)
[1] 2.101014
> bs(sig=0.25)
[1] 1.926831
> bs(sig=0.21)
[1] 1.795785
> bs(sig=0.22)
[1] 1.827633
> bs(sig=0.23)
[1] 1.860137
> bs(sig=0.235)
[1] 1.876611
> bs(sig=0.234)
[1] 1.873305

which suggests an implied volatility of 0.234-0.235. More powerful iterative search procedures, such as the Newton-Raphson method could be used.

/>