8.3 Option Pricing with FFT

In the last section, three asset price models and their characteristic functions were presented. In this section, we describe a numerical approach for pricing options which utilizes the characteristic function of the underlying instrument's price process. The approach has been introduced by Carr and Madan (1999) and is based on the FFT. The use of the FFT is motivated by two reasons. On the one hand, the algorithm offers a speed advantage. This effect is even boosted by the possibility of the pricing algorithm to calculate prices for a whole range of strikes. On the other hand, the cf of the log price is known and has a simple form for many models considered in literature, while the density is often not known in closed form.

The approach assumes that the cf of the log-price is given analytically. The basic idea of the method is to develop an analytic expression for the Fourier transform of the option price and to get the price by Fourier inversion. As the Fourier transform and its inversion work for square-integrable functions (see Plancherel's theorem, e.g. in Rudin, 1991) we do not consider directly the option price but a modification of it.

Let $ C_T(k)$ denote the price of a European call option with maturity $ T$ and strike $ K= \exp(k)$:

$\displaystyle C_T(k)=\int_k^\infty e^{-rT} (e^s-e^k)q_T(s)ds,$    

where $ q_T$ is the risk-neutral density of $ s_T= \log S_T$. The function $ C_T$ is not square-integrable because $ C_T(k)$ converges to $ S_0$ for $ k \to -\infty$. Hence, we consider a modified function:

$\displaystyle c_T(k)=\exp (\alpha k) C_T(k),$ (8.13)

which is square-integrable for a suitable $ \alpha >0$. The choice of $ \alpha $ may depend on the model for $ S_t$. The Fourier transform of $ c_T$ is defined by:

$\displaystyle \psi_T(v)=\int_{- \infty}^\infty e^{ivk} c_T(k) dk.$    

The expression for $ \psi_T$ can be computed directly after an interchange of integrals:

\begin{displaymath}\begin{split}\psi_T(v) & = \int_{-\infty}^\infty e^{ivk} \int...
...(\alpha+1)i)}{\alpha^2+\alpha-v^2+i (2\alpha +1)v}, \end{split}\end{displaymath}    

where $ \phi_T$ is the Fourier transform of $ q_T$. A sufficient condition for $ c_T$ to be square-integrable is given by $ \psi_T(0)$ being finite. This is equivalent to

$\displaystyle E(S_T^{\alpha +1}) < \infty.$    

A value $ \alpha=0.75$ fulfills this condition for the models of Section 8.2. With this choice, we follow Schoutens et al. (2003) who found in an empirical study that this value leads to stable algorithms, i.e. the prices are well replicated for many model parameters.

Now, we get the desired option price in terms of $ \psi_T$ using Fourier inversion

$\displaystyle C_T(k)=\frac{\exp (-\alpha k)}{\pi} \int_0^\infty e^{- ivk} \psi (v) dv.$    

This integral can be computed numerically as:

$\displaystyle C_T(k) \approx \frac{\exp (-\alpha k)}{\pi} \sum_{j=0}^{N-1} e^{- iv_j k} \psi (v_j) \eta,$ (8.14)

where $ v_j = \eta j, \ j=0,\ldots,N-1$, and $ \eta >0$ is the distance between the points of the integration grid.

Lee (2004) has developed bounds for the sampling and truncation errors of this approximation. Formula (8.14) suggests to calculate the prices using the FFT, which is an efficient algorithm for computing the sums

$\displaystyle w_u= \sum_{j=0}^{N-1} e^{- i\frac{ 2 \pi } {N} j u } x_j,$    for $\displaystyle u=0,\ldots, N-1.$ (8.15)

To see why this is the case see Example 1 below, which illustrates the basic idea of the FFT. In general, the strikes near the spot price are of interest because such options are traded most frequently. We consider thus an equidistant spacing of the log-strikes around the log spot price $ s_0$:

$\displaystyle k_u= - \frac{1}{2} N \zeta + \zeta u + s_0,$    for $\displaystyle u =0, \ldots ,N-1,$ (8.16)

where $ \zeta >0$ denotes the distance between the log strikes. Substituting these log-strikes yields for $ u=0,\ldots,N-1$:

$\displaystyle C_T(k_u) \approx \frac{\exp (-\alpha k)}{\pi} \sum_{j=0}^{N-1} e^{- i\zeta \eta j u} e^{i\{ ( \frac{1}{2}N \zeta - s_0) v_j \} } \psi (v_j) \eta.$    

Now, the FFT can be applied to

$\displaystyle x_j = e^{i\{ (\frac{1}{2}N \zeta - s_0) v_j \} } \psi (v_j),$    for $\displaystyle j=0, \ldots ,N-1,$    

provided that

$\displaystyle \zeta \eta = \frac{2 \pi } {N }.$ (8.17)

This constraint leads, however, to the following trade-off: the parameter $ N$ controls the computation time and thus is often determined by the computational setup. Hence the right hand side may be regarded as given or fixed. One would like to choose a small $ \zeta$ in order to get many prices for strikes near the spot price. But the constraint implies then a big $ \eta$ giving a coarse grid for integration. So we face a trade-off between accuracy and the number of interesting strikes.

Example 1

The FFT is an algorithm for computing (8.15). Its popularity stems from its remarkable speed: while a naive computation needs $ N^2$ operations the FFT requires only $ N \log
(N)$ steps. The algorithm was first published by Cooley and Tukey (1965) and since then has been continuously refined. We illustrate the original FFT algorithm for $ N=4$. Writing $ u$ and $ j$ as binary numbers:

$\displaystyle u=2u_1+u_0, \ j=2j_1+j_0,$    

with $ u_1,u_0,j_1,j_0 \in \{ 0,1 \} $ $ u=(u_1,u_0), \ j=(j_1,j_0)$ the formula (8.15) is given as:

$\displaystyle w_{(u_1,u_0)}=\sum_{j_0=0}^{1} \sum_{j_1=0}^{1} x_{(j_1,j_0)} W^{(2u_1+u_0)(2j_1+j_0)},$    

where $ W = e^{- 2 \pi i/ N}$. Because of

$\displaystyle W^{(2u_1+u_0)(2j_1+j_0)}=W^{2u_0j_1}W^{(2u_1+u_0)j_0},$    

we get

$\displaystyle w_{(u_1,u_0)}=\sum_{j_0=0}^{1} ( \sum_{j_1=0}^{1} x_{(j_1,j_0)}, W^{2u_0j_1}) W^{(2u_1+u_0)j_0}.$    

Now, the FFT can be described by the following three steps

\begin{displaymath}\begin{split}w_{(u_0,j_0)}^1 &=\sum_{j_1=0}^{1} x_{(j_1,j_0)}...
...(2u_1+u_0)j_0}, \\ w_{(u_1,u_0)} &=w_{(u_0,u_1)}^2. \end{split}\end{displaymath}    

While a naive computation of (8.15) requires $ 4^2=16$ complex multiplications the FFT needs only $ 4 \log (4)=8$ complex multiplications. This explains the speed of the FFT because complex multiplications are the most time consuming operations in this context.