I used my implementation of the implicit method to resolve the PDE in MacKay et Al, DOI: 10.1111/jori.120942017 and reproduce the left hand side (T = 10) of their Table 2 (pag 15). In fact, by sticking their fair fee values I consistently get 100 +/- 0.01. The conclusion is that my implementation reproduces their results.
## [1] "Fee: 0.0393 Age: 50 => 100"
## [2] "Fee: 0.0442 Age: 60 => 100"
## [3] "Fee: 0.0549 Age: 70 => 100"
## [4] "Fee: 0.019 Age: 50 => 99.9949"
## [5] "Fee: 0.0205 Age: 60 => 99.9935"
## [6] "Fee: 0.0237 Age: 70 => 99.9978"
## [7] "Fee: 0.0167 Age: 50 => 100.013"
## [8] "Fee: 0.0179 Age: 60 => 100.005"
## [9] "Fee: 0.0204 Age: 70 => 100.01"
## [10] "Fee: 0.0166 Age: 50 => 99.9915"
## [11] "Fee: 0.0177 Age: 60 => 100.018"
## [12] "Fee: 0.0202 Age: 70 => 100.01"
I then tried to calculate the same values by means of my implementation of the algorithms proposed in Bacinello et Al. 2011.
## [1] "Fee: 0.0393 Age: 50 => 99.4013"
## [2] "Fee: 0.0442 Age: 60 => 99.4678"
## [3] "Fee: 0.0549 Age: 70 => 99.3081"
## [4] "Fee: 0.019 Age: 50 => 99.8388"
## [5] "Fee: 0.0205 Age: 60 => 100.049"
## [6] "Fee: 0.0237 Age: 70 => 99.7201"
## [7] "Fee: 0.0167 Age: 50 => 100.019"
## [8] "Fee: 0.0179 Age: 60 => 99.9571"
## [9] "Fee: 0.0204 Age: 70 => 99.7342"
## [10] "Fee: 0.0166 Age: 50 => 99.8135"
## [11] "Fee: 0.0177 Age: 60 => 100.28"
## [12] "Fee: 0.0202 Age: 70 => 99.9318"
The number of paths used are 20000 and the Standard Error is around 0.2. Even if for some value of the fee there is a good match, for others it seems to underestimate the value of the contract considerably.