I have a complex monte-carlo cashflow model that traditionally uses the finite difference (FD) method to calculate its derivative at any given point. To improve model performance, I coded forward-mode automatic differentiation (AD) to directly calculate the cashflow derivative. The model is significantly faster using AD, and when the shocks (h) are small under the FD method--[f(x+h)-f(x-h)]/2h--the two approaches reach fairly equivalent estimates of the derivative. When the shocks h are larger, the two approaches diverge.
The problem arises in predictive accuracy. The predictive accuracy of my first order derivative actually improves when I widen my shock; AD provides a poorer prediction than the FD method. I've proven this by plotting the predicted versus actual values. The first-order Taylor Series approximation of my function f(x) is more accurate when I use the FD method at nearly all values of x.
Given all the material I've read about AD, this was a very surprising outcome. I would think that a more accurate estimate of the derivative would provide more accurate predictions using a Taylor Series expansion. From what I've seen, that is simply not the case.
Why is this happening, and is there anything I can do to remedy it? Is it because my finite difference method captures second-order effects when the shock is large, or is it a consequence of using a discrete cashflow model that by its very nature has jump points?
I've devoted significant time to expanding this model, and the time saved in calculation is almost irresistible. Without an equivalent or better prediction, my project will likely be dead, so any help is really appreciated.
EDIT: I'm adding a few graphs that may help visualize my function. The first quadrant shows the actual values of f(x) and its first derivative. The bottom left shows how the finite difference method is more accurate. The top right shows the difference in derivative for each scenario generated by the monte-carlo process. The bottom right plots the function itself.