FFT and Carr-Madan Pricing

Hard·23 min read
Numerical MethodsFFTCharacteristic FunctionsCarr-MadanFourier Pricing

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,

where wjw_j are quadrature weights (e.g., trapezoidal: w0=1/2w_0 = 1/2, wj=1w_j = 1 for j>0j > 0; or Simpson's rule alternating 1/3,4/3,2/3,4/3,1/3, 4/3, 2/3, 4/3, \ldots).

Evaluate at a grid of log-strikes ku=b+λuk_u = -b + \lambda u for u=0,1,,N1u = 0, 1, \ldots, N-1, where b=Nλ/2b = N\lambda/2 centres the grid near the money:

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

Substituting vj=ηjv_j = \eta j and ku=b+λuk_u = -b + \lambda u:

eivjku=eiηj(b+λu)=eiηjbeiηλju.e^{-iv_j k_u} = e^{-i\eta j(-b + \lambda u)} = e^{i\eta j b} \cdot e^{-i\eta\lambda j u}.

The FFT Condition

For the sum j=0N1eiηλjufj\sum_{j=0}^{N-1} e^{-i\eta\lambda ju} f_j to be computable by FFT, we need:

ηλ=2πN.\eta \lambda = \frac{2\pi}{N}.

With NN a power of 2, the Cooley-Tukey FFT computes all NN values simultaneously in O(NlogN)O(N \log N) operations. This is the Nyquist-Shannon link between the frequency spacing η\eta and the log-strike spacing λ\lambda.

The full algorithm:

  1. Choose N=2nN = 2^n, upper truncation vmax=ηNv_{\max} = \eta N, frequency spacing η\eta.
  2. Set log-strike spacing λ=2π/(ηN)\lambda = 2\pi / (\eta N) and grid centre b=Nλ/2b = N\lambda/2.
  3. Compute: xj=eivjbΨT(vj)ηwjx_j = e^{i v_j b} \Psi_T(v_j) \eta w_j for j=0,,N1j = 0, \ldots, N-1.
  4. Apply FFT: yu=j=0N1ei(2π/N)juxjy_u = \sum_{j=0}^{N-1} e^{-i(2\pi/N)ju} x_j.
  5. Recover prices: CT(ku)=eαkuRe(yu)/πC_T(k_u) = e^{-\alpha k_u} \cdot \mathrm{Re}(y_u) / \pi.

Total cost: one characteristic function evaluation at NN frequencies + one FFT = O(NlogN)O(N \log N). Compare to NN separate numerical integrations at cost O(NMquad)O(N \cdot M_{\mathrm{quad}}) where MquadM_{\mathrm{quad}} is the number of quadrature points per integration.


Grid Design and Parameter Choice

Frequency Grid (η\eta)

η\eta controls the upper truncation vmax=ηNv_{\max} = \eta N and the log-strike spacing. Increasing η\eta extends the integration to higher frequencies (important for models with heavy tails or discontinuities) but coarsens the log-strike grid. A typical value: η=0.25\eta = 0.25 with N=1024N = 1024 gives λ=2π/(0.25×1024)0.024\lambda = 2\pi/(0.25 \times 1024) \approx 0.024 (log-strike spacing of 2.4%, i.e., roughly every 2.4% in relative strike).

Dampening Parameter α\alpha

The dampening condition requires EQ[ST1+α]<\mathbb{E}^{\mathbb{Q}}[S_T^{1+\alpha}] < \infty. For GBM this is always satisfied. For Heston, the moment condition can fail for large α\alpha when the Feller condition is violated (large ξ\xi). The standard choice α=1.5\alpha = 1.5 works well for most equity models. The integrand ΨT(v)\Psi_T(v) must decay as v|v| \to \infty — if α\alpha is too large, the denominator factor α2+αv2\alpha^2 + \alpha - v^2 changes sign at v=α2+αv = \sqrt{\alpha^2 + \alpha}, creating a pole in ΨT\Psi_T that corrupts the integration. Verify that ΨT(v)\Psi_T(v) is smooth on [0,vmax][0, v_{\max}].

Aliasing

FFT implicitly assumes the integrand is periodic with period Nλ=2π/ηN\lambda = 2\pi/\eta. Aliasing occurs when the characteristic function has significant energy at frequencies above vmax=ηNv_{\max} = \eta N. Signs of aliasing: prices wrap around from deep OTM options at high strikes to low strikes; option prices become non-monotone or negative. Mitigation: increase NN or η\eta (larger vmaxv_{\max}), or use the fractional FFT (FRFT) which breaks the link ηλ=2π/N\eta\lambda = 2\pi/N, allowing independent control of η\eta and λ\lambda.


Limitations

Accuracy for deep OTM options. The Fourier inversion is most accurate near the money. For deep OTM options, CT(k)C_T(k) is very small (machine-epsilon territory), and the max(Re(y_u), 0) applied to remove negative prices (from numerical errors) can introduce relative errors of 100%. For deep OTM options, compute the out-of-the-money put and use put-call parity.

Single maturity. The FFT as described prices all strikes at a single maturity TT in one pass. For multiple maturities (calibration to a surface), one FFT pass per maturity is needed. This is still faster than option-by-option integration.

Dampening sensitivity. The choice of α\alpha materially affects accuracy for some models. The optimal α\alpha depends on model parameters and maturity. In practice, test multiple values of α\alpha and cross-validate against analytic prices (when available, e.g., Black-Scholes).

Model restriction. Carr-Madan applies to models where the characteristic function is available in closed form. For local-stochastic-vol models (e.g., SABR-Heston), the characteristic function is not available analytically; Monte Carlo or PDE methods are required.

Fractional FFT (FRFT). The standard FFT imposes ηλ=2π/N\eta\lambda = 2\pi/N. The FRFT (Bailey-Swarztrauber) removes this constraint at the cost of doubling the FFT length, enabling fine log-strike grids without large η\eta. This is the method of choice when fine strike resolution is needed (e.g., calibration to illiquid OTM strikes).


Interview Angle

L1. What is the characteristic function of lnST\ln S_T under Black-Scholes? Why is it useful for option pricing even though Black-Scholes has a closed-form formula?

GBM characteristic function. Under Q\mathbb{Q}: lnSTN(lnS0+(rσ2/2)T,σ2T)\ln S_T \sim \mathcal{N}(\ln S_0 + (r-\sigma^2/2)T, \sigma^2 T), so φT(u)=exp(iu(lnS0+(rσ2/2)T)u2σ2T/2)\varphi_T(u) = \exp(iu(\ln S_0 + (r-\sigma^2/2)T) - u^2\sigma^2 T/2). It is useful as a template: Heston, VG, and NIG all modify this baseline by replacing the diffusion exponent with a more complex function. The Fourier method works for all such models uniformly — the only change is the characteristic function plugged into the same numerical recipe.

L2. Derive the Carr-Madan formula for ΨT(v)\Psi_T(v). State the dampening condition and explain why α>0\alpha > 0 is needed. Show how the FFT condition ηλ=2π/N\eta\lambda = 2\pi/N arises.

Derivation outline. Start from zT(k)=eαkCT(k)z_T(k) = e^{\alpha k}C_T(k), take the Fourier transform, swap expectation and integral via Fubini (valid under the moment condition), evaluate the inner integral over kk:

xT+lnS0e(α+iv)k(S0exTek)dk=S0exTe(α+iv)(xT+lnS0)α+ive(α+1+iv)(xT+lnS0)α+1+iv.\int_{-\infty}^{x_T+\ln S_0} e^{(\alpha+iv)k}(S_0 e^{x_T} - e^k)\,dk = \frac{S_0 e^{x_T} e^{(\alpha+iv)(x_T+\ln S_0)}}{\alpha+iv} - \frac{e^{(\alpha+1+iv)(x_T+\ln S_0)}}{\alpha+1+iv}.

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

FFT condition: We want to compute j=0N1eiηλjufj\sum_{j=0}^{N-1} e^{-i\eta\lambda ju} f_j using FFT. The FFT computes sums of the form jei(2π/N)jufj\sum_j e^{-i(2\pi/N)ju} f_j. Matching: ηλ=2π/N\eta\lambda = 2\pi/N. This forces a trade-off: finer frequency grid (η\eta small) → coarser strike grid (λ\lambda large), and vice versa.

L3. Explain the aliasing phenomenon in Carr-Madan. Derive the FRFT extension that decouples η\eta and λ\lambda. For Heston with large ξ\xi, when does the moment condition E[ST1+α]<\mathbb{E}[S_T^{1+\alpha}] < \infty fail, and what is the practical implication for ΨT(v)\Psi_T(v)?

Aliasing. The discrete Fourier sum implicitly wraps the integrand with period NλN\lambda (the total width of the log-strike grid). If the call price function zT(k)z_T(k) has significant support outside [Nλ/2,Nλ/2][-N\lambda/2, N\lambda/2] (i.e., at very high or very low log-strikes), the periodic wrap causes the contribution from outside the grid to be added to points inside — aliasing error. Increase NN or η\eta (larger vmaxv_{\max}) to reduce the tails of ΨT(v)\Psi_T(v) and the aliasing.

FRFT. Define a fractional DFT: yu=j=0N1eiδjuxjy_u = \sum_{j=0}^{N-1} e^{-i\delta ju}x_j for arbitrary δ\delta (not necessarily 2π/N2\pi/N). This is computable as a product of three standard FFTs of length 2N2N (using the chirp-z transform). Setting δ=ηλ\delta = \eta\lambda (arbitrary, no longer constrained to 2π/N2\pi/N), FRFT allows η\eta and λ\lambda to be chosen independently.

Heston moment failure. The moment generating function E[ST1+α]=φT(i(1+α))\mathbb{E}[S_T^{1+\alpha}] = \varphi_T(-i(1+\alpha)) requires evaluating the characteristic function at an imaginary argument. For Heston, φT(u)\varphi_T(u) is defined via the Riccati ODE for B(u,T)B(u,T); for u=i(1+α)u = -i(1+\alpha), the discriminant d(u)d(u) can become real and large. If 2κθ<ξ2(1+α)α2\kappa\theta < \xi^2(1+\alpha)\alpha (a condition on the Feller parameter relative to α\alpha), the CIR process variance can dominate and φT(i(1+α))=+\varphi_T(-i(1+\alpha)) = +\infty. Practically: the denominator α2+αv2+i(2α+1)v\alpha^2+\alpha-v^2+i(2\alpha+1)v in ΨT(v)\Psi_T(v) has a real zero at v0=α2+αv_0 = \sqrt{\alpha^2+\alpha}. If φT\varphi_T also has a singularity near this v0v_0, the integrand blows up and numerical integration fails. Solution: reduce α\alpha until the moment condition is satisfied, or use the Lewis formula (contour at Im(u)=1/2\mathrm{Im}(u) = -1/2) which avoids the pole entirely.

Read the theory? Verify your understanding.

Take the Quiz