In this section, we apply the FFT option pricing algorithm of Section 8.3 to the models described in Section 8.2. Our aim is to demonstrate the remarkable speed of the FFT algorithm by comparing it to Monte Carlo simulations. Moreover, we present an application of the fast option pricing algorithm to the calibration of implied volatility (IV) surfaces. In Figure 8.1 we present the IV surface of DAX options on January 4, 1999 where the red points are the observed implied volatilities and the surface is fitted with the Nadaraya-Watson kernel estimator. For analysis of IV surfaces consult Fengler et al. (2002) and Chapter 5.
In order to apply the FFT-based algorithm we need to know the
characteristic function of the risk neutral density which has been
described in Section 8.2 for the Merton, Heston, and Bates
models. Moreover, we have to decide on the parameters ,
,
and
of the algorithm. Schoutens et al. (2003) used
in a calibration procedure for the Eurostoxx 50
index data. We follow their approach and set
to this
value. The computation time depends on the parameter
which we
set to
. As the number of grid points of the numerical
integration is also given by
, this parameter in addition
determines the accuracy of the prices. For parameter
,
which determines the distance of the points of the integration
grid, we use
. A limited simulation study showed that the
FFT algorithm is not sensitive to the choice of
, i.e. small
changes in
gave similar results. In Section 8.3, we
have already discussed the relation between these parameters.
For comparison, we computed the option prices also by Monte Carlo
simulations with time steps and
repetitions. Such
simulations are a convenient way to check the results of the
FFT-based algorithm. The calculations are based on the following
parameters: the price of the underlying asset is
, time
to maturity
, and the interest rate
. For
demonstration we choose the Heston model with parameters:
,
,
,
and
. To make our comparison more sound we also calculate prices
with the analytic formula given in Chapter 7.
In the left panel of Figure 8.2 we show the prices of European call
options as a function of the strike price
. As the prices
obtained with the analytical formula are close to the prices
obtained with the FFT-based method and the Monte Carlo prices
oscillate around them, this figure confirms that the pricing
algorithm works correctly. The different values of the Monte Carlo prices are mainly due to the random nature of this technique. One needs to use even
more time steps and repetitions to get better results. The minor
differences between the analytical and FFT-based prices come form the fact that the latter
method gives the exact values only on the grid (8.16) and
between the grid points one has to use some interpolation method
to approximate the price of the option. This problem can be more
clearly observed in the right panel of Figure 8.2,
where percentage differences between the analytical and FFT prices
are presented. In order to preserve the great speed of the algorithm
we simply use linear interpolation between the grid
points. This approach, however, slightly overestimates the true
prices since the call option price is a convex function of the
strike. It can be clearly seen that near the grid points the
prices obtained by both methods coincide, while between the grid
points the FFT-based algorithm generates higher prices than the
analytical solution.
![]() ![]() |
Although these methods yield similar results they need different
computation time.
In Table 8.1 we compare the speed of C++ implementations
of the Monte Carlo and FFT methods. We
calculate Monte Carlo prices for different strikes for
each of the three models. The speed superiority of the FFT-based
method is clearly visible. It is more than
times faster
than the Monte Carlo approach.
As an application of the fast pricing algorithm we consider the problem of model calibration. Given option prices observed in the market we look for model parameters that can reproduce the data well. Normally, the market prices are given by an implied volatility surface which represents the implied volatility of option prices for different strikes and maturities. The calibration can then be done for the implied volatilities or for the option prices. This decision depends on the problem considered. As a measure of fit one can use the Mean Squared Error (MSE):
![]() |
The calibration results in a minimization problem of the error
function . This optimization can be carried out by different
algorithms like simulated annealing, the
Broyden-Fletcher-Goldfarb-Shanno-algorithm, the Nelder-Mead
simplex algorithm or Monte Carlo Markov Chain methods. An overview
of optimization methods can be found in Cízková (2003).
As minimization algorithms normally have to compute the function
to be minimized many times an efficient algorithm for the option
prices is essential. The FFT-based algorithm is fairly efficient
as is shown in Table 8.1. Moreover, it returns prices for
a whole range of strikes at one maturity. This is an additional
advantage because for the calibration of an implied volatility
surface one needs to calculate prices for many different strikes
and maturities.
![]() |
As an example we present the results for the Bates model
calibrated to the IV surface of DAX options on January 4, 1999.
The data set, which can be found in
MD*Base
, contains
option prices for
maturities (for each maturity there is a
different number of strikes). We minimize (8.18) with
respect to
parameters of the Bates model:
. Since the
function (8.18) has many local minima, we use the
simulated annealing minimization method, which offers the
advantage to search for a global minimum, combined with the
Nelder-Mead simplex algorithm. As a result we obtaine the
following estimates for the model parameters:
,
,
,
,
,
,
,
,
and the value of
is
. In Figure 8.3 we show
the resulting fits of the Bates model to the data for
different maturities.
The red circles are implied volatilities observed in the market on the time to maturities
and the blue lines are
implied volatilities calculated from the Bates model with the calibrated parameters. In the calibration
we used all data points. As the FFT-based algorithm computes prices for the whole range of strikes the biggest impact on the speed of calibration has the number of used maturities, while the total number of observations has only minor influence on the speed.
On the one hand, the Carr-Madan algorithm offers a great speed advantage but on the other hand its applications are restricted to European options. The Monte Carlo approach instead works for a wider class of derivatives including path dependent options.
Thus, this approach has been modified in different ways. The accuracy can be improved by using better integration rules. Carr and Madan (1999) considered also the Simpson rule which leads - taking (8.17) into account - to the following formula for the option prices:
![]() |
An alternative to the original Carr-Madan approach is to consider instead of (8.13) other modifications of the call prices. For example, Cont and Tankov (2004) used the (modified) time value of the options:
![]() |
The calculation of option prices by the FFT-based algorithm leads to different errors. The truncation error results from substituting the infinite upper integration limit by a finite number. The sampling error comes from evaluating the integrand only at grid points. Lee (2004) gives bounds for these errors and discusses error minimization strategies. Moreover, he presents and unifies extensions of the original Carr-Madan approach to other payoff classes. Besides the truncation and the sampling error, the implementation of the algorithm often leads to severe roundoff errors because of the complex form of the characteristic function for some models. To avoid this problem, which often occurs for long maturities, it is necessary to transform the characteristic function.
Concluding, we can say that the FFT-based option pricing method is a technique that can be used whenever time constraints are important. However, in order to avoid severe pricing errors its application requires careful decisions regarding the choice of the parameters and the particular algorithm steps used.