# Other means of calibrating Heston models

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?

Thanks!

-

## 4 Answers

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\}$$

where

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

-

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 at 0:22

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

-

Nice paper, I was to include it as well but you had it already referenced. – Freddy Jan 22 at 3:16

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

-
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 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 ;-) – Freddy Jan 22 at 3:56

1
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 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. – Freddy Jan 22 at 4:13

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

http://www.frankfurt-school.de/dms/publications-cqf/CPQF_Arbeits6.pdf

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

-

– AZhu Jan 22 at 16:42
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 9, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "github"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "english_confidence": 0.9028873443603516, "perplexity_flag": "middle"}