8
$\begingroup$

Is there a way to reduce oscillations for the numerical integration when evaluating the Heston model. I am pricing a series of 5000 options scattered over the Heston model parameter space and I find that for some parameters, often deep-out-of-the-money options I get negative option prices. I am using 32 Gauss-Laguerre integration, so the integration grid is rather fine, also I have tried extending the maturities to say 10 years, but this only reduces the frequency.

If not I guess Monte-Carlo is the only way to make sure I get no negative prices.

Thanks Sam

$\endgroup$
1
  • $\begingroup$ For anyone interested I discuss this issue with GL in a little more detail in my thesis discovery.ucl.ac.uk/id/eprint/10068568. On pg.148 (pdf page 176) e.q 4.22 I give a condition that helps reduce oscillations in GL integration. $\endgroup$
    – Sam Palmer
    Mar 9, 2020 at 15:01

5 Answers 5

6
$\begingroup$

In SV model, it is well-known that the integrand for the call price can sometimes show high oscillation, can dampen very slowly along the integration axis, and can show discontinuities.

Remedy

  • The ‘‘Little Trap’’ formulation of Albrecher et al.

Also , you can use Fourier transforms

$\endgroup$
2
  • 1
    $\begingroup$ I currently use little trap, my understanding was Little Trap removed discontinuities rather than oscillations from the integration. I shall try FT methods and see if that helps $\endgroup$
    – Sam Palmer
    Jul 14, 2016 at 13:28
  • $\begingroup$ This is not at all an answer, hence my downvote. Using a C++ implementation of the "little trap" formulation, for S0 = 1.0, r = 0.0, V0 = 0.16, theta = 0.16, kappa = 1.0, omega = 2.0, rho = -0.8, Texpiry = 10.0, K = 2.0, for Gauss-Lobatto, Clenshaw-Curtis and many other 1D numerical integration schemes, I find that, N being the number of nodes of the schemes, the price of the call with above parameter is an oscillatory function (around 0.0) up to N=30000. Same for the Kahl+Jäckel method. $\endgroup$
    – Olórin
    Dec 16, 2022 at 9:05
7
$\begingroup$

There has been a huge amount of work on this. Generally a Fourier transform approach is used.

First, be careful to use the form of the characteristic function that does not wind about zero in order to avoid having to count the normal of windings.

Second, using contour shifts can make the integral much better behaved. eg integrate along the line with $0.5$ imaginary part to price a covered call.

Third, use a Black--Scholes call with the same strike as a control. This removes poles and makes the integrand much nicer.

For details, see my book More Mathematical Finance Chapter 17 and/or my paper http://ssrn.com/abstract=1941464 Fourier Transforms, Option pricing and controls.

$\endgroup$
4
$\begingroup$

I'd use FFT or similar rather than direct integration. Here is an old paper with Heston example:

Option pricing using fractional FFT

$\endgroup$
2
$\begingroup$

This is a well known issue. There are three possible tricks:

  1. I am surprised that none of the answers so far mention the work of Lord and Kahl Optimal Fourier Inversion in Semi-Analytical Option Pricing. They study this oscillation problem and propose an optimal contour for the integration. The challenge is to write a small algorithm to obtain the optimal $\alpha$. I believe it can be found in an article from Mike Staunton in a recent Wilmott magazine issue.

  2. A different trick is to use the Black-Scholes model as control variate in the integration (its characteristic function). This is detailed in Andersen and Piterbarg book "Interest Rate Modeling, Volume I: Foundations and Vanilla Models", as well as in @MarkJoshi and Chan paper.

  3. Use a quadrature that takes care of oscillations naturally. This is the approach described in An adaptive Filon quadrature for stochastic volatility models.

$\endgroup$
3
  • $\begingroup$ Regarding the third point there are not so extreme sets of model parameters and call options where even this adaptative method won't work. $\endgroup$
    – Olórin
    Dec 16, 2022 at 9:07
  • $\begingroup$ @Olorin interesting, could you give a concrete example? $\endgroup$
    – jherek
    Dec 20, 2022 at 13:35
  • $\begingroup$ I will do it next week, I'll have more time. $\endgroup$
    – Olórin
    Dec 21, 2022 at 9:59
1
$\begingroup$

Use Fourier-Cosine expansions and you will never look back. Very easy to programme, maths is more intuitive also. Fang & Oosterlee, 2008 (edit: corrected the name)

$\endgroup$
2
  • $\begingroup$ The link given is not accessible for people outside of TUDelft. And it's Fang and Oosterlee, not Wang. $\endgroup$
    – jherek
    Mar 22, 2019 at 9:59
  • $\begingroup$ @jherek I'm not part of Delft and I can access. My bad with the misrembered name $\endgroup$ Mar 22, 2019 at 11:59

Your Answer

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

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