# Option pricing using characteristic function

I'm currently on a mission trying to calculate option prices using the rough Heston model. I've found that this is usually done using the characteristic function of the model, but I must admit that I don't really understand which formulas that are applicable, and how they're derived. I feel quite comfortable with the math being a major in applied mathematics, but I'm having trouble finding nice references.

For example, in the paper "Optimal Fourier inversion in semi-analytical option pricing" they say that (where $$\varphi$$ is the characteristic function of the model):

"Knowing the characteristic function allows us to express the forward price of a European call with strike $$K$$ and maturity $$\tau$$ very similarly to the Black-Scholes price as $$C(S,K,\tau) = F\Pi_1 - K\Pi_2,$$ with $$F$$ being the forward value of the underlying and $$\Pi_1 := \frac{1}{2} + \frac{1}{\pi}\int_0^{\infty}Re\left(\frac{e^{-iuk}\varphi(u-i)}{iu\varphi(-i)}du\right).$$ The logarithm of the strike is denoted as $$k=\ln(K)$$. [...]. Moreover we have $$\Pi_2 := \frac{1}{2} + \frac{1}{\pi}\int_0^{\infty}Re\left(\frac{e^{-iuk}\varphi(u)}{iu}du\right)."$$

Is this formula applicable to all financial models? How is this formula derived? What are some good resources for learning more about this, in a structured and "mathematical way"?

Many thanks

The simplest reference would be Derivative Analytics with Python -- simple, concise and to the point about why this works and how to apply it. It also comes with Python code (bad inefficient, but illustrative code).

The key to "when" you apply this? It's useful when you can write the conditional characteristic function as an exponentially affine function of state variables. In discrete time models, you then have coefficients in there that you can back out recursively from the time at maturity. If I recall, something similar applies in continuous time.

I know this idea will work with Black-Scholes-Merton and with Heston's 1993 model. It also works with all so-called affine GARCH models in discrete time (e.g., Heston and Nandi, 2000). But it DOESN'T work with a non affine model like Duan's 1995 GARCH option pricing model (same as HN2000, but the volatility enters the return equation differently). For that one, your only choice is to simulate the model.

Also, note that this can be written using the imaginary rather than the real part in the integral, though it is less common. You can also look at the late Peter Christoffersen's webpage -- he has MATLAB codes for GARCH option pricing where he does what you want, but in discrete time models.

• Great answer! Thanks for your response! Does Derivative Analytics with Python explain the difference between affine and non-affine GARCH models and why this approach works on one but not the other, or do you have some other resource for this? Nov 9, 2021 at 13:57
• I'm also thinking about other methods, for example in the presented in "Option valuation using the fast Fourier transform" by Peter Carr and Dilip B. Madan. In section 3, they introduce a method for calculation of option prices that I believe would work for any model? Atleast, I don't see any reason for why it would not. Nov 9, 2021 at 14:12
• Affine refers to the conditional volatility entering the expected return linearly inside the exponential -- i.e., it's a GARCH-in-mean type of model. That's necessary in discrete time models to obtained a closed-form expression for the characteristic function. Otherwise, you have to price using Monte Carlo methods. Nov 10, 2021 at 15:10
• That book does not cover this topic. You'd have to read the actual papers. I'd suggest reading Christoffersen, Dorion, Jacobs and Wang (2010) because they have many models in one place and the paper is very pedagogical. Note that you can also risk-neutralize with quadratic kernel (you have a risk premium and a variance premium directly built into the stochastic discount factor) -- the theory is in Christoffersen, Elkamhi, Feunou and Jacons (2010) and an application can be found in Christoffersen, Jacobs and Heston (2013). Nov 10, 2021 at 15:18
• For the comment about Carr and Madan's approach, all Fourier-based pricing is based on the knowledge of a characteristic function (conditional on current price and volatility, for the log asset price). If your model does not allow you to compute it in closed form, you then turn towards Monte Carlo methods. If you do that, remember to use the correction proposed by Duan and Simonato (1998). A problem with naive simulations is that the martingale property being only approximately enforced can lead to option prices that violate rational pricing bounds in simulation which pollutes your estimates. Nov 10, 2021 at 15:25

You may want to have a look at this paper:

@ARTICLE{Bakshi2000a,
author       = {Gurdip Bakshi and Dilip B. Madan},
title        = {Spanning and Derivative-Security Valuation},
journal      = {Journal of Financial Economics},
year         = 2000,
volume       = 55,
pages        = {205--238},
number       = 2
}