I confess: I was so satisfied with the quality of our results that I did not ask the correct question: Is this high volatility really a difficult case?

High volatility adds diffusion to the differential equation which should be then easy to be solved as long as you use implicit or semi-implicit schemes. Standard finite element or fintie difference schemes (with central differences used as approximation for the first order derivatives) might get into troubles, when convection gets dominant. In the Vasicek exmaple, this means that volatility should be low, reversion speed should be high for the test case.

Therefore, we now try

(1) a = 0.05, b = 0.5, sigma = 0.005

and

(2) a = 0.05, b = 0.5, sigma = 0.0005

and calculate the prices V of the 10 years zero coupon bond for an initial short rate r = 0.

The analytic solution gives

(1) V= 0.4489

and

(2) V = 0.4487.

We use Dirichlet conditions V=1 at r = -0.4 and at r = 0.4 and compare to numerical schemes

(a) fully implicit time-stepping, central differences for first derivatives

(b) fully implicit time-stepping, upwinding for first derivatives.

Here are the results.

Case (1)

Method (a): V = 0.4489

Method (b): V = 0.4492

Case (2)

Method (a): V = -0.0509

Method (b): V = 0.4491.

What happened here?

The bond prices for different initial spot rates calculated by Method (a) exhibit the following behavior in case(2)

whereas the upwinding method (b) shows an almost boring plot

The upwinding method shows the same smooth behavior as before.

My conclusion when convection plays a role: Use stable methods to get reliable results.

By the way, you can find such methods in the Workout