I am trying to perform the numerical integration in the Heston using Gaussian quadrature but I obtain an error of 4e-3 while some of the deep out-of-the-money near expiry Call prices are smaller than 1e-5. Is there any way I can improve the accuracy without being extremely slow or should I exclude those prices from my calibration ?
Use fourier-cosine expansions, first paper by Fang-Oosterlee in 2008.
Very simple to code and exponential convergence affords working accuracy within sub-seconds vs order of magnitude slower under Carr-Madan. For reference precision you can add another order of magnitude.
My VBA implementation is faster and more stable than Carr-Madan in C++ for OTM options
The long list of comments suggests two different issues:
- Are you measuring your error against market prices? or in other words, are you trying to calibrate Heston parameters to market prices. If yes, it is well known that Heston is not going to match well, which is not too surprising since it has only 5 free parameters.
- If you measure against some reference Heston model prices (given in the literature), what kind of Gauss quadrature are you referring to? There are many different. Is it adaptive? How many points are used?
Regarding (2), @James suggestion is good. The Cos method is very simple to implement and produces satisfactory results most of the time. What is not always so trivial is to find a good estimate of the truncation interval (the suggestions from the Cos paper are reasonable good starting point). This impacts mostly very out-of-the-money options.
A recent fast quadrature has been proposed in An adaptive Filon quadrature for stochastic volatility models, along with comparison against various other quadratures methods.