Skip to content
All library documents

Calibrating Heston with Monte Carlo and Variance Reduction

Article Quant Q&A · Author: Garlic

Summary

The document considers calibrating Heston stochastic volatility parameters to an option volatility smile when the available pricing implementation uses Monte Carlo simulation. The proposed approach is to fix the random numbers across calibration iterations, making the simulated pricing function more stable for an optimizer. The answer says this can work, but warns that repeatedly running Monte Carlo inside a non-convex optimization can be very slow.

For European implied volatility calibration, the response suggests using the Fourier cosine pricing method as an alternative to simulation. If Monte Carlo is retained, it recommends reusing simulated paths where possible, such as pricing multiple European vanilla options with the same maturity from one set of paths. Resetting the random number generator to a fixed seed at each iteration is offered as a way to reproduce those paths without storing all random draws. The advice is specific to this calibration setting and does not discuss optimizer choice, simulation discretization error, or how to validate the final fit.

Key ideas

  • Fixed random draws can make Monte Carlo prices more stable across parameter evaluations during calibration.
  • Nested simulation and non-convex optimization may make calibration computationally expensive.
  • Fourier cosine pricing is presented as an alternative for European implied volatility calibration.
  • Reuse paths across options with a shared maturity to reduce redundant simulation.
  • Resetting a random generator to a fixed seed can reproduce paths without storing every draw.

Tags

Full text
# Calibration of Monte Carlo value?


# Calibration of Monte Carlo value?












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?

## Answer by LocalVolatility (score 2)

https://quant.stackexchange.com/a/33501

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).

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.