|
From: Shenze W. <she...@da...> - 2020-06-15 19:58:40
|
Hi, We are currently using `FD*D*ividend*A*mericanEngine` (denoted by *DA* in following) of QuantLib 1.12. Since this engine is removed in QuantLib 1.16, we’d like to switch to `*Fd*BlackScholesVanillaEngine` (denoted by *FD *in following) of QuantLib 1.18. Before we do the switch, we’d like to know the difference between these two engines (DA engine in QuantLib 1.12 and FD engine in QuantLib 1.18) and what are the impacts on the pricing results. We are using the Python version of QuantLib. I priced ~7000 options with different ivols, strikes, interest rates, dividend yields with 3 engines: (a) *DA12* - `FDDividendAmericanEngine` in QuantLib 1.12, (b) *FD12* - `FdBlackScholesVanillaEngine` in QuantLib 1.12, and (c) *FD18* - `FdBlackScholesVanillaEngine` in QuantLib 1.18. Here are some comparisons of the results. *(1)* The difference between FD18 and DA12 including two parts: the difference between FD12 & DA12, and the difference between FD18 & FD12. The difference between FD12 & DA12 is much greater than the difference between FD18 & FD12, as shown in the following form. The form shows CDF of the differences. The numbers in the form are the probability that the difference is in a certain range. *(2)* *FD12 vs DA12*. The option prices generated by FD12 is greater than DA12 for in-the-money options, but lower for at-the-money and out-of-the-money options. Compared to the analytical solutions, FD12 is more accurate for at-the-money and out-of-the-money options, while DA12 is more accurate for in-the-money options. *(3)* *FD18 vs FD12. *Though it is relatively small, there is still a difference between FD18 and FD12, as shown in the following figure. So, my questions are: 1. Do the difference between FD12 & DA12 and the difference between FD18 & FD12 described above behave as expected? 2. What’s the potential reasons for these differences? I know the answers to these questions could be very subtle, but we’d like to understand the reasons for these differences, at least to some extent. I also tried to dig into the C++ codes, but I am not familiar with the codes and I do not know where to start. If you could provide some explanations or point me the right directions, I would be super grateful. Thanks a lot. Best Regards, Shenze Wang DataDock Solutions |