The BS formula for the price of a European call at time
is given by
![]() |
![]() |
![]() |
(6.1) |
![]() |
![]() |
![]() |
(6.2) |
![]() |
![]() |
![]() |
(6.3) |
where denotes the cumulative distribution function of a
standard normal random variable.
denotes the risk-free
interest rate,
the price of the underlying,
the
time to maturity and
the strike price. For ATM options the
equality
holds.
The only parameter in the Black and Scholes formula that cannot be observed directly is
the actual volatility of the underlying price process. However, we may study the
volatility which is implied by option prices observed in the markets, the so called
implied volatility: implied volatility is defined as the parameter
that
yields the actually observed market price of a particular option when substituted into
the BS formula. The implied volatility of a European put with the same strike and
maturity can be deduced from the "put-call parity"
XploRe
offers a fast and convenient numerical way to invert the BS formula in order to
recover
from the market prices of
or
.
As numerical procedures both a bisectional method and a Newton-Raphson algorithm are
available. They are selected by the option IVmethod, which can either be the
bisection method IVmethod="bisect" or the default Newton-Raphson. Within
arbitrage bounds on the other input parameters there exists a unique solution, since the
BS formula is globally concave in . The input vector x contains the
data in an
dimensional matrix, where the first column contains the underlying
asset prices
, the second the strikes
, the third the interest rates
[on a
yearly basis], the fourth maturities
[in scale of years], the fifth the observed
option prices
and
. The sixth column contains the type of the option, where
0 abbreviates a put and
a call. For example, the command
ImplVola
(100~120~0.05~0.5~1.94~1) yields the implied volatility of a
European call at strike
with maturity
of half a year, where the interest
rate is assumed to be
, the price of the underlying asset
and the option
price
: the result is
. One may verify this result by
using
XploRe
:
which calculates European option prices according to the Black and Scholes model, when no
dividend is assumed. The first 5 input parameters follow the notation in this paper, and
task specifies whether one desires to know a call price, task=1, or a
put price, task=0. Indeed, for
we reproduce the assumed option
call price of
.
Now we present a more complex example using option data from the German and Swiss Futures
Exchange (EUREX). The data set volsurfdata2
contains the full set of
option prices (settlement prices) as observed on January 4th, 1999. The first column
contains the settlement price of the DAX, the second the strike price
of the
option, the third the interest rate
, the fourth time to maturity
, the fifth
the option prices
or
and the last column finally the type of option, either
0, i.e. a put, or 1, i.e. a call. Hence the data set is already in the form as required
by the quantlet
ImplVola
. We may therefore use the following code to
calculate the implied volatilities:
library ("finance") x=read("volsurfdata2.dat") ; read the data x=paf(x,x[,4]>0.14&&x[,4]<0.22) ; select 2 months maturity y=ImplVola(x,"bisect") ; calculate ImplVola sort(x[,2]~y) ; sort data according to strikes
In Figure 6.1 we display the output for the strike dimension. The deviation from the BS model is clearly visible: implied volatilities form a convex "smile" in strikes. One finds a curved shape also across different maturities. In combination with the strike dimension this yields a surface with pronounced curvature (Figure 6.2). The discontinuity of the ATM position is related to tax effects exerting different influences on puts and calls, Hafner and Wallmeier (2001). In our case this effect is not so important, since we smooth the observations and calculate the returns of the implied volatility time series before applying the PCA.
Calculation of implied volatilities at different strikes
and maturities yields a surface. The quantlet
volsurf
estimates the implied volatility surface on a specified
grid using a bi-dimensional kernel smoothing procedure. A
Nadaraya-Watson estimator with a quartic kernel is employed,
Aït-Sahalia, and Lo (1998), Aït-Sahalia and Lo (2000),
Härdle (1990), Härdle, Müller, Sperlich, and Werwatz (2002).
More technically, given a partition of explanatory variables
, i.e. of strikes and maturities, the two-dimensional Nadaraya-Watson kernel
estimator is
![]() |
The basic structure of
volsurf
is given by
As input parameters we first have the matrix
x which has been explained in section 6.2.1.
The remaining parameters concern the surface: stepwidth is a
vector determining the stepwidth in
the grid of the surface; the first entry relates to the strike
dimension, the second to the dimension across time to maturity.
firstXF, lastXF, firstMat, lastMat are scalar
constants giving the lowest limit and the highest limit in the
strike dimension, and the lowest and the highest limit of time to
maturity in the volatility surface. The option metric
gives the choice whether to compute the surface in a
moneyness or in a strike metric. Setting metric = 0
will generate a surface computed in a moneyness metric
,
i.e. strike divided by the (implied) forward price of the
underlying, where the forward price is computed by
. If metric = 1, the surface is
computed in the original strike dimension in terms of
.
bandwidth is a
vector determining the width of
the bins for the kernel estimator. p determines
whether for computation a simple Nadaraya-Watson estimator,
p = 0, or a local polynomial regression, p
0, is used. The last and optional parameter IVmethod has the same meaning as in the
ImplVola
quantlet. It tells
XploRe
which method to use for calculating the
implied volatilities, default again is Newton-Raphson.
The output are two variables. IVsurf is an matrix containing the
coordinates of the points computed for the implied volatility surface, where the first
column contains the values of the strike dimension, the second those of time to maturity,
the third estimated implied volatilities.
is the number of grid points.
IVpoints is a
matrix containing the coordinates of the
options used
to estimate the surface. As before, the first column contains the values for the strike
dimension, the second the maturity, the third the implied volatilities.
Before presenting an example we briefly introduce a graphical tool for displaying the volatility surface. The following quantlet plots the implied surface:
As input parameters we have the output of
volsurf
, i.e. the volatility surface
IVsurf, and the original observations IVpoints. An optional
parameter AdjustToSurface determines whether the surface plot is shown based on
the surface data given in IVsurf, or on the basis of the original observations
IVpoints. This option might be useful in a situation where one has estimated
a smaller part of the surface than would be possible given the data. By default, or
AdjustToSurface
, the graph is adjusted according to the estimated
surface.
XFGiv02.xpl
computes an implied volatility surface with the Nadaraya-Watson
estimator and displays it (Figure 6.2). The parameters are determined in
order to suit the example best, then
volsurfplot
is used to create the
graphic. The output matrix IVsurf contains now all surface values on a grid at
the given stepwidth. Doing this for a sequential number of dates produces a
time series
of implied volatility surfaces. Empirical
evidence shows that this surface changes its shape and characteristics as time goes on.
This is what we analyze in the subsequent sections.