Numerical MethodsFFTCharacteristic FunctionsCarr-MadanFourier Pricing

FFT and Carr-Madan Pricing

23 min readLevel: Hard

Setup

Motivation

For many models of practical importance — Heston, Variance Gamma, CGMY, NIG — the dynamics of lnST\ln S_T under the risk-neutral measure are not log-normal, and closed-form option prices do not exist. However, the characteristic function of the log-price is often available in closed form.

The Carr-Madan (1999) method prices European options by Fourier-inverting the characteristic function. Its efficiency comes from evaluating option prices at all strikes simultaneously using a single Fast Fourier Transform (FFT) pass — pricing at NN strikes for the cost of a single O(NlogN)O(N \log N) FFT, compared to O(N)O(N) separate numerical integrations.

Characteristic Function

Let xT=ln(ST/S0)x_T = \ln(S_T / S_0) be the log-return. Under the risk-neutral measure Q\mathbb{Q}:

φT(u)=EQ ⁣[eiuxT],uR.\varphi_T(u) = \mathbb{E}^{\mathbb{Q}}\!\left[e^{iu x_T}\right], \qquad u \in \mathbb{R}.

For GBM: φT(u)=exp ⁣(iu(r12σ2)T12u2σ2T)\varphi_T(u) = \exp\!\left(iu(r - \frac{1}{2}\sigma^2)T - \frac{1}{2}u^2\sigma^2 T\right) (a known Gaussian characteristic function). For Heston: see the preceding module. For Lévy models (VG, NIG, CGMY): the characteristic function is an exponential of the Lévy exponent, available analytically.

Key property. φT(u)\varphi_T(u) is a bounded, uniformly continuous function of uu. It decays as u|u| \to \infty whenever STS_T has a sufficiently smooth density.

Notation

  • k=lnKk = \ln K: log-strike.
  • F=S0erTF = S_0 e^{rT}: forward price.
  • CT(k)=erTEQ[(STek)+]C_T(k) = e^{-rT}\mathbb{E}^{\mathbb{Q}}[(S_T - e^k)^+]: call price as a function of log-strike.
  • φT(u)\varphi_T(u): characteristic function of xT=ln(ST/S0)x_T = \ln(S_T/S_0), so EQ[eiuxT]=φT(u)\mathbb{E}^{\mathbb{Q}}[e^{iux_T}] = \varphi_T(u).

The Carr-Madan Formula

Problem with the Naive Approach

The undiscounted call payoff (STK)+=(exT+lnS0ek)+(S_T - K)^+ = (e^{x_T + \ln S_0} - e^k)^+ is not square-integrable in kk: as kk \to -\infty, CT(k)S0ekrTS0C_T(k) \to S_0 - e^{k-rT} \to S_0 (a constant), so CTL2(R)C_T \notin L^2(\mathbb{R}). The Fourier transform does not exist in the classical sense.

Dampening

Multiply CT(k)C_T(k) by an exponential damping factor eαke^{\alpha k} for some α>0\alpha > 0:

zT(k)=eαkCT(k).z_T(k) = e^{\alpha k} C_T(k).

For α>0\alpha > 0 and sufficiently small (specifically α<αˉ\alpha < \bar{\alpha} where E[ST1+α]<\mathbb{E}[S_T^{1+\alpha}] < \infty): as kk \to -\infty, zT(k)=eαk(S0ekrT+O(e2k))0z_T(k) = e^{\alpha k} \cdot (S_0 - e^{k-rT} + O(e^{2k})) \to 0. As k+k \to +\infty, zT(k)=eαkO(ek)=O(e(α1)k)0z_T(k) = e^{\alpha k} \cdot O(e^{-k}) = O(e^{(\alpha-1)k}) \to 0 for α<1\alpha < 1. So zTL2(R)z_T \in L^2(\mathbb{R}) and its Fourier transform exists.

Fourier Transform of the Modified Price

Define ΨT(v)=eivkzT(k)dk\Psi_T(v) = \int_{-\infty}^{\infty} e^{ivk} z_T(k)\, dk. Substituting zT(k)=eαk+ivkerTEQ[(exT+lnS0ek)+]z_T(k) = e^{\alpha k + ivk} e^{-rT}\mathbb{E}^{\mathbb{Q}}[(e^{x_T + \ln S_0} - e^k)^+] and exchanging expectation and integration (Fubini, justified under the moment condition):

ΨT(v)=erTe(α+iv)kEQ ⁣[(S0exTek)+]dk.\Psi_T(v) = e^{-rT} \int_{-\infty}^{\infty} e^{(\alpha + iv)k} \mathbb{E}^{\mathbb{Q}}\!\left[(S_0 e^{x_T} - e^k)^+\right] dk.

Switching the order of integration (integrating over kk from -\infty to xT+lnS0x_T + \ln S_0 where the payoff is positive):

ΨT(v)=erTφT(v(α+1)i)α2+αv2+i(2α+1)v.\Psi_T(v) = \frac{e^{-rT} \varphi_T(v - (\alpha + 1)i)}{\alpha^2 + \alpha - v^2 + i(2\alpha + 1)v}.

Derivation. Inside the expectation, xT+lnS0e(α+iv)k(S0exTek)dk\int_{-\infty}^{x_T + \ln S_0} e^{(\alpha+iv)k}(S_0 e^{x_T} - e^k)\,dk evaluates to a ratio involving e(α+1+iv)(xT+lnS0)e^{(\alpha+1+iv)(x_T + \ln S_0)}. Taking the expectation introduces E[e(α+1+iv)xT]=φT(i(α+1)+v)\mathbb{E}[e^{(\alpha+1+iv)x_T}] = \varphi_T(-i(\alpha+1) + v). Collecting terms yields the formula above.

Inversion

The call price is recovered by Fourier inversion:

CT(k)=eαkzT(k)=eαkπ0Re ⁣[eivkΨT(v)]dv,C_T(k) = e^{-\alpha k} z_T(k) = \frac{e^{-\alpha k}}{\pi} \int_0^\infty \mathrm{Re}\!\left[e^{-ivk} \Psi_T(v)\right] dv,

using the symmetry of the real part of the integrand (since the imaginary part integrates to zero for real CTC_T):

CT(k)=eαkπ0eivkΨT(v)dv(real part implied).\boxed{C_T(k) = \frac{e^{-\alpha k}}{\pi} \int_0^{\infty} e^{-ivk} \Psi_T(v)\, dv \quad \text{(real part implied)}.}

This is exact for any model with a known characteristic function φT\varphi_T, provided the dampening condition EQ[ST1+α]<\mathbb{E}^{\mathbb{Q}}[S_T^{1+\alpha}] < \infty holds.


FFT Implementation

Discretisation of the Integral

Approximate the integral by a truncated sum over frequencies vj=ηjv_j = \eta j for j=0,1,,N1j = 0, 1, \ldots, N-1, with spacing η>0\eta > 0 and upper limit vmax=η(N1)v_{\max} = \eta(N-1):

CT(k)eαkπj=0N1eivjkΨT(vj)ηwj,C_T(k) \approx \frac{e^{-\alpha k}}{\pi} \sum_{j=0}^{N-1} e^{-iv_j k} \Psi_T(v_j)\, \eta \cdot w_j,

This topic requires Premium

Only today's featured topic is free. Unlock the full Today's Focus archive — every article, quiz, and lab — with Premium.