I wish to calibrate the Heston model parameters to a given smile. Trouble is, I have Heston implemented as a Monte Carlo simulation, and not some deterministic pricing function.

So, how do we calibrate a monte carlo simulation?

My idea was to generate all the random numbers I need in the monte carlo simulation, and then create a new pricing function which always uses these same numbers, so its deterministic. Then, we can run regular calibration on this function.

Would that be ok? Is there another method?


1 Answer 1


This should generally work but will probably take a very long time as you are running a Monte Carlo simulation within a non-convex optimization problem.

As you are calibrating to European implied volatilities, I would suggest you have a look at Fang and Oosterlee (2008) Fourier cosine method as an alternative to the Monte Carlo simulation. This algorithm is relatively easy to implement (as opposed to the potentially involved scheme you are currently using for the discretization of the Heston process).

If you stick to your Monte Carlo approach, then you should try to "recycle" your paths as much as possible. For a given parameter vector, you can e.g. price all European plain vanilla options of the same maturity using the same set of paths.

Further, note that instead of storing all the random numbers, you could also fix the seed of your random number generator (and reset it at each optimization iteration).

  • 1
    $\begingroup$ It shouldn't take that long - calculating all the option prices in one pass through the options, and it has the advantage of projecting any discretization errors/biases onto your model parameters - provided the same time steps are used later on, and provided enough paths are used that it is converged. $\endgroup$
    – will
    Apr 4, 2017 at 20:23
  • $\begingroup$ And it's actually what someone very familiar with montecarlo techniques recommended me - write a very fast mc, and calibrate exactly that. Partly because you don't need to worry about the discretization so much, due to the projection of errors onto your free parameters, and on top of that you can just make up parameterised models and calibrate them in the exact same framework you'll use them so you don't need to sit down and work out how you can calibrate some model you just made up using pdes or option price approximations. $\endgroup$
    – will
    Apr 4, 2017 at 20:32
  • $\begingroup$ (and you can sort of bootstrap the calibration, letting your parameters have term structures, reducing the number of free parameters, and so making the optimisation faster.) $\endgroup$
    – will
    Apr 4, 2017 at 20:34
  • $\begingroup$ @will Good point regarding the projection of discretization errors onto the model parameters. Never thought about it that way but totally makes sense. $\endgroup$ Apr 4, 2017 at 21:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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