Root finding in Lord Kahl Method to Compute Heston Call Price (Part III)

I forgot two important points in my previous post about Lord-Kahl method to compute the Heston call price:

- Scaling: scaling the call price appropriately allows to increase the maximum precision significantly, because the Carr-Madan formula operates on log(Forward) and log(Strike) directly, but not the ratio, and alpha is multiplied by the log(Forward). I simply scale by the spot, the call price is (S_0*max(S/S_0-K/S0)). Here are the results for Lord-Kahl, Kahl-Jaeckel (the more usual way limited to machine epsilon accuracy), Forde-Jacquier-Lee ATM implied volatility without scaling for a maturity of 1 day:

strike 62.5=2.919316809400033E-34 8.405720564041985E-12 0.0
strike 68.75=-8.923683388191852E-28 1.000266536266281E-11 0.0
strike 75.0=-3.2319611910032E-22 2.454925152051146E-12 0.0
strike 81.25=1.9401743410877718E-16 2.104982854689297E-12 0.0
strike 87.5=-Infinity -1.6480150577535824E-11 0.0
strike 93.75=Infinity 1.8277663826893331E-9 1.948392142070432E-9
strike 100.0=0.4174318393886519 0.41743183938679845 0.4174314959743768
strike 106.25=1.326968012594355E-11 7.575717830832218E-11 1.1186618909114702E-11
strike 112.5=-5.205783145942609E-21 2.5307755890935368E-11 6.719872683111381E-45
strike 118.75=4.537094156599318E-25 1.8911094912255066E-11 3.615356241778357E-114
strike 125.0=1.006555799739525E-27 3.2365221613872563E-12 2.3126009701775733E-240
strike  131.25=4.4339539263484925E-31 2.4794388764348696E-11 0.0

One can see negative prices and meaningless prices outside ATM. With scaling it changes to:
strike 62.5=2.6668642552659466E-182 8.405720564041985E-12 0.0
strike 68.75=7.156278101597845E-132 1.000266536266281E-11 0.0
strike 81.25=7.863105641534119E-55 2.104982854689297E-12 0.0
strike 87.5=7.073641308465115E-28 -1.6480150577535824E-11 0.0
strike 93.75=1.8375145950924849E-9 1.8277663826893331E-9 1.948392142070432E-9
strike 100.0=0.41743183938755385 0.41743183938679845 0.4174314959743768
strike 106.25=1.3269785342953315E-11 7.575717830832218E-11 1.1186618909114702E-11
strike 112.5=8.803247187972696E-42 2.5307755890935368E-11 6.719872683111381E-45
strike 118.75=5.594342441346233E-90 1.8911094912255066E-11 3.615356241778357E-114
strike 125.0=7.6539757567179276E-149 3.2365221613872563E-12 2.3126009701775733E-240
strike 131.25=0.0 2.4794388764348696E-11 0.0

One can now now see that the Jacquier-Lee approximation is quickly not very good.

- Put: the put option price can be computed using the exact same Carr-Madan formula, but using a negative alpha instead of a positive alpha. When I derived this result (by just reproducing the Carr-Madan steps with the put payoff instead of the call payoff), I was surprised, but it works.

comments powered by Disqus
Tweet Submit to reddit
© 2006-16 Fabien Creative Commons License This work is licensed under a Creative Commons Attribution 4.0 International License.