When applying the Heston model to generate the sample volatility surface, some of the volatility value will be negative. I am just wondering what do practioners normally do with these negative value. Do you

  1. simply ignore it;
  2. set negatives to 0; or
  3. square it, take absolute values, or something else?

4 Answers 4


It is not necessarily something that must be wrong with your model. Inherent in the Heston discretization methods of its continuous time dynamics is the possibility of negative values in the variance process.

Here are couple solutions you can look at in order to "fix" your problem:

  • Usage of different Euler schemes, such as the Full Truncation scheme.
  • Making the discretization grid smaller.
  • approximate Fourier inversions needed to simulate the integrated variance process.
  • Moment-matching techniques (for example, approximating the non-centrally chi-squared distribution by a related distribution whose moments are (locally) matched with those of the exact distribution).
  • Using drift interpolation instead of Fourier inversion

First, to make that clear: The Heston model does not generate negative volatility, but - for example - an Euler discretization of the Heston model may generate negative volatility (or variance). It is not a problem of the model. It is a problem of the numerical scheme.

If you use an Euler scheme which generates negative volatility and then use any of the methods quoted in you question (e.g. floor volatility, take absolute value of volatility, etc.), then you are effectively modifying the model. As a consequence, the calibration quality of the model may suffer since analytic formulas are no longer valid. Working with a finer time-discretization may heal this, since the probability to hit zero gets smaller.

That said, I assume the question here rather is: Which numerical scheme should be used for Heston model?

Here it may be useful to take a look at the paper by Broadi and Kaya:

Broadie, M.; Kaya, O.: Exact Simulation of Stochastic Volatility and other Affine Jump Diffusion Processes. Operations Research, 2006, Vol.54, No.2, 217-231.

See also http://finmath.stanford.edu/seminars/documents/Broadie.pdf


Negative volatility means something some where along the lines something is inherently wrong with your model, double check your code and theory

  • $\begingroup$ Thanks for the answer but why you can't have negative vol when, say, in Heston model, vol is just a SDE? $\endgroup$
    – AZhu
    Commented Jan 22, 2013 at 2:41
  • $\begingroup$ @AZhu it's usually standard in the model, you either forgot the discretization step or are using a unreasonably small sample size if its still negative after the discretization. $\endgroup$
    – pyCthon
    Commented Jan 22, 2013 at 2:52
  • 3
    $\begingroup$ The Heston model does not generate negative volatility, but an Euler discretization does. It is not a problem of the model. It is a problem of the numerical scheme. $\endgroup$ Commented Jan 22, 2013 at 10:48

There are by now a lot of papers on discretizations of Heston. One objective of them being to avoid negativity. As has already been said, the Heston SDE has no negative solutions, but a crude discretization does give negative variance with positive probability.

If you want to do small steps, then using a log-normal approximation or the QE approximation solves the problem. If you want to do large steps, our method Chan--Joshi is effective.


The code is downloadable from markjoshi.com


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.