|
What I think is going on......
The solver sets the boundary conditions based on the intrinsic values,
which for a call option are 0.0 on the low end and 1.0 on the high end.
The trouble is that those boundary conditions are incorrect as you move
away from the expiration date. The finite differencer tries to impose
the boundary conditions which starts to cause all sorts of instabilities.
Suppose these are the real first derivatives....
0.25 0.25
Now with the bad boundary conditions you get
0.0 0.25
Now if you have a small spacing, you get a huge second derivative which
destroys the simulation.
To see this happen, set nu to 0.0 in the BSM operator, then decrease the
spacing. You will notice that the problems first start at the ends, and
you will also see the simulator try really hard to impose the boundary
conditions.
It's not clear to me how to fix this. Will think about it some more........
|