Option Pricing¶
We use characteristic function inversion to price European call options on an underlying \(S_t = S_0 e^{s_t}\), where \(S_0\) is the spot price at time 0. We assume zero interest rates, so the forward equals the spot. The log-return \(s_t = x_t - c_t\) is constructed from a driving process \(x_t\) and a deterministic convexity correction \(c_t\) that enforces the martingale condition \({\mathbb E}[e^{s_t}] = 1\).
Call Option¶
The price \(C\) of a call option with strike \(K\) is defined as
\(k\) is the log-strike and \(f_{s_t}\) is the probability density function of \(s_t\). The call price is the discounted expected payoff under the risk-neutral measure, which simplifies to the undiscounted expected payoff when interest rates are zero.
All three methods share this starting point. They all express \(c_k\) via the characteristic function \(\Phi_{s_t}\), but differ in how the integration contour is chosen, how the payoff is handled, and the discretisation strategy.
Carr & Madan¶
We follow Carr & Madan and write the Fourier transform of the call option as
Note that \(c_k\) tends to \(e^{s_t}\) as \(k \to -\infty\), therefore the call price function is not square-integrable. In order to obtain integrability, Carr-Madan introduces a damping factor \(e^{\alpha k}\) and works with the modified call \(\tilde{c}_k = e^{\alpha k} c_k\). The free parameter \(\alpha > 0\) is chosen so that \(\tilde{c}_k\) is square-integrable. Taking the Fourier transform of \(\tilde{c}_k\) and evaluating at \(u = v - i\alpha\) (real \(v\)) gives
Inverting, the call price is recovered as
The same FFT/FRFT machinery used for PDF inversion applies here.
Choice of \(\alpha\)¶
For \(\Psi_u\) to be well-defined, the characteristic function \(\Phi_{s_t}(u - i)\) must be finite at \(u = v - i\alpha\), i.e. \(\Phi_{s_t}(v - i(\alpha + 1))\) must be finite. Denoting the upper edge of the strip of analyticity by \(\beta_+\), this requires
Positive values of \(\alpha\) assist the integrability of the modified call value over the negative moneyness axis, but aggravate the same condition for the positive moneyness axis. For the modified call value to be integrable in the positive moneyness direction, and hence for it to be square-integrable as well, a sufficient condition is provided by \(\Psi_{-i\alpha}\) being finite, which means the characteristic function \(\Phi_{t,{-(\alpha+1)i}}\) is finite.
The constraint \(\alpha + 1 < \beta_+\) can be restrictive: if the model has thin tails then \(\beta_+\) is close to 1 and no positive \(\alpha\) satisfies it cleanly. A poor choice of \(\alpha\) leads to numerical instabilities, especially at short maturities.
Lewis Formula¶
Lewis starts from the same call price expression but avoids the damping parameter by applying Parseval's theorem directly to \(\eqref{call-price}\) and shifting the integration in the complex plane to ensure the call options transform is well-defined and integrable. The shift uses the Residue theorem to account for the poles of the payoff transform.
Fourier Transform of the Payoff¶
The Fourier transform of the call payoff \(g(s) = (e^s - e^k)^+\) is
For the first term to be integrable, we need \(\mathrm{Im}(u) > 1\), while for the second term we need \(\mathrm{Im}(u) > 0\). Therefore the Fourier transform of the payoff is well-defined in the strip \(\mathrm{Im}(u) > 1\).
Splitting and integrating term by term gives
The denominator is zero at \(u = 0\) and \(u = i\).
This result is typical, option payoffs have a Fourier transform as long as we admit a complex valued transform variable and integrate along a horizontal line in the complex plane.
Derivation¶
The call option can now be expressed via Parseval's theorem on a horizontal line in the complex plane. We therefore evaluate the pricing integral along a horizontal contour
Since \(\Phi\) is real-valued, we can replace \(\overline{\Phi(u)}\) by \(\Phi(-u)\):
The integral can be evaluated for any \(\eta > 1\) as discussed in the previous section.
However, the integrand can now be computed for smaller \(\eta\), provided the two poles at \(u = 0\) and \(u = i\) are avoided.
If we move the contour in \(\eta \in (0,1)\), the integrand is well-defined. By the residue theorem, the value of the integral is changed by the contribution of minus \(2\pi i\) times the residues at \(u = i\).
The residue at \(u = i\) is \(\frac{i}{2\pi}\), so the call price can be expressed as
By choosing \(\eta=\frac{1}{2}\), symmetrically located between the two poles, we can avoid numerical instabilities and obtain a stable formula for the call price:
An substituting gives the final formula:
Comparison with Carr & Madan¶
The plots below use a Heston model to compare the two formulas and highlight where the choice of \(\alpha\) matters.
At a normal maturity (TTM=0.5) both methods agree closely with auto-selected \(\alpha\):

At short maturities the auto-selected \(\alpha\) in Carr & Madan can produce significant errors, while Lewis remains stable:

The sensitivity to the choice of \(\alpha\) is most visible at TTM=0.02. A poor choice (e.g. \(\alpha=0.25\)) yields completely wrong prices deep OTM, while Lewis (dotted) is the stable reference:

The example code that generates these plots:
COS Method¶
The COS method (Fang and Oosterlee, 2008) takes a different approach: rather than expressing the call price as a contour integral of the characteristic function, it approximates the density \(f_{s_t}\) on a truncated interval \([a, b]\) using a cosine series and evaluates the payoff integral analytically against each basis function.
Density approximation¶
On the truncated interval \([a, b]\), the density is expanded as
where \(\hat{\Phi}\) is the martingale-corrected characteristic function and the prime denotes a half weight on the \(j=0\) term. The truncation interval is chosen as \([a, b] = [-L\sigma, L\sigma]\) where \(\sigma\) is the standard deviation of \(s_t\) and \(L\) is a parameter (default 12).
Payoff coefficients¶
Substituting the density approximation into the call price integral and changing variables to \(y = x - k\) turns the payoff into the strike-independent form \((e^y - 1)^+\). The payoff integral against each cosine basis function evaluates analytically as
where \(\nu_j = j\pi/(b-a)\) and
Call price¶
Combining the density approximation with the payoff coefficients and accounting for the change of variables gives the call price in forward space as
The \(e^k\) prefactor converts from the strike-normalised density of \(y = x - k\) back to forward-space pricing. Unlike Carr-Madan, no damping parameter is needed. Unlike Lewis, the sum is over the payoff domain rather than the frequency domain, which can give faster convergence for smooth densities at the cost of a fixed truncation error controlled by \(L\).