Quantitative Finance Stack Exchange is a question and answer site for finance professionals and academics. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I understand that the simplest way of calibrating a Heston model for volatility surface is to use Monte-Carlo to simulate the vol and stock price trajectories and then use the observed price to do a optimization.

However, I am just wondering if there is a more "clean" way to calibrate the model and how would it be better compare to the MC method?

Also, what might be the potential issues of calibrating Heston models using MC? And what would be some variance reduction techniques that could be used during the calibration?


share|improve this question
up vote 4 down vote accepted

You can find the derivation of the Heston characteristic function (its Fourier Transform) in Gatheral (2006).

Using the characteristic function, you can optimize the model on the prices. There are multiple approaches to optimize, among others pattern search (which is very slow) and stochastic optimization (randomly jump around and stop after n iterations), but i recommend a mix of both. I often use adaptive simulated annealing for an inital calibration and then run a pattern search. Depending on the language you use, these are available as functions and its pretty simple to implement.

If I recall correctly, the Fourier transform/characteristic function of the Heston model is

$$ \phi_T(u) = \exp\{C(u,\tau)\theta + D(u,\tau)v_0\}$$


$$ C(u,\tau)=\ \kappa \left[r_{-} \tau - \frac{2}{\eta^2}\log\left(\frac{1-g e^{-d\tau}}{1-g}\right) \right] $$

$$D(u,\tau)=\ r_{-} \frac{1-e^{-d\tau}}{1-ge^{-d\tau}} $$

$$g =\ \frac{r_{-}}{r_{+}} $$

$$r_{\pm} =\ \frac{b\pm d}{\eta^2} $$

$$d =\ d=\sqrt{b^2-4ac} $$

$$c =\ \frac{\eta^2}{2} $$

$$b =\ \kappa-\rho\eta iu$$

$$a =\ -\frac{u^2}{2} - \frac{iu}{2} $$

Gatheral provides derivations for SVJ, SVJJ, VarG, etc as well.

share|improve this answer
It is really difficult to implement I think, the best way is probably just through numerical integration I guess, but thanks for the answer – AZhu Feb 8 '13 at 0:22

I highly recommend you to stick with the error function (RMSE) value minimization approach. I love MC techniques for this and related problem solving and thus do not recommend you to use anything else because of its simplicity and transparency. It comes down to using the right discretization function and to possibly implement variance reduction approaches.

Re variance reduction have you tried the standard approaches ? (Common random numbers, antithetic variates, control variates, importance sampling and stratified sampling)

Here a reference to a paper that I find quite neatly describes potential pitfalls and model calibration around the Heston model: http://www.math.umn.edu/~bemis/IMA/MMI2008/calibrating_heston.pdf

and another one for its elegance to describe in simple terms: http://ta.twi.tudelft.nl/mf/users/oosterle/oosterlee/chen.pdf

Here a link to actually implement the calibration in Matlab: http://www.mathworks.com/matlabcentral/fileexchange/29446-heston-model-calibration-and-simulation

share|improve this answer
Yes I suppose with the long-jumping discretizations Monte Carlo methods could be used for calibration as well, but I still have the feeling some folks invert the vanilla formulae to calibrate to a given set of European options (if that is the goal). Not 100% sure though. Nice links, will read this week hopefully - never enough time to read everything! – experquisite Jan 22 '13 at 3:49
@experquisite, I hear you, if I printed all the papers of links I stored on my reading list on my ipad they would not fit into the bed room. I see your point re inversion of the close form. What I like is that you have control over the process using a discretization plus having so many variance reduction techniques at hand plus much more powerful means to run MC (parallelization, concurrency, GPU matrix computations,...) does not give an excuse to exotic desks anymore to having to wait till the next morning to get their risk ;-) – Matt Wolf Jan 22 '13 at 3:56
Yeah, it also gives hope that models won't be popularized solely based on their analytical tractability anymore, but on the merits of their accurate description of underlying dynamics, even if they must be numerically solved for everything. – experquisite Jan 22 '13 at 4:02
Nice way of thinking, gotta upvote that ;-) Very much in line with my thoughts, too much attention is paid, imho, to deriving analytic closed-form solutions, and not getting the underlying dynamics right. Look at some volatility models, they arrive at totally messed up smile dynamics. – Matt Wolf Jan 22 '13 at 4:13

Doesn't the Heston model have some Fourier transform formulae for pricing vanillas? I think one could use those to calibrate to the vanillas. Can't provide references at this moment, on the road.

Edit: check out http://www.visixion.com/dok/Visixion_Calibrating_Heston.pdf -- I haven't read this closely but it sounds familiar

share|improve this answer
Nice paper, I was to include it as well but you had it already referenced. – Matt Wolf Jan 22 '13 at 3:16

Here's a decent study of calibration performance using fast fourier transforms versus other techniques. It concludes Gaussian quadrature works better than other techniques.


Edit: AZhu points out the link above is dead and that a working link is http://mpra.ub.uni-muenchen.de/2975/1/MPRA_paper_2975.pdf

share|improve this answer
That link is dead but here is a working one: mpra.ub.uni-muenchen.de/2975/1/MPRA_paper_2975.pdf Thanks for sharing! – AZhu Jan 22 '13 at 16:42

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.