|
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 |
|
From: Luigi B. <lui...@gm...> - 2020-06-16 08:51:09
|
Hello,
thanks for the analysis.
There are people here which are more capable of answering than I am, but
just to make sure that we're comparing equals to
equals: FdBlackScholesVanillaEngine has two possible ways to handle
dividends, and we should document this better. One is the scale/shift
model, and the other is the escrowed dividend model; you can choose the
model by mans of an optional last parameter for the constructor (see <
https://github.com/lballabio/QuantLib-SWIG/blob/master/SWIG/options.i#L1202
>).
Now, FDDividendAmericanEngine uses the escrowed dividend model, which I'm
told is the one described in most texts.
Instead, FdBlackScholesVanillaEngine uses by default the scale/shift
model. If you didn't set the model explicitly, this might be the reason
for the differences. Passing Escrowed as the model would cause the results
to be closer.
If you did that already, though, we'll have to look closer into the code.
Hope this helps,
Luigi
On Mon, Jun 15, 2020 at 10:01 PM Shenze Wang <
she...@da...> wrote:
> 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
> _______________________________________________
> QuantLib-users mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>
|
|
From: Shenze W. <she...@da...> - 2020-06-16 21:28:11
|
Hi Luigi, Thanks a lot for the reply. I did not set the parameter `CashDividendModle` of the constructor `FdBlackScolesVanillaEngine` explicitly in my previous calculations. However, it seems that the parameter `CashDividendModle` does not affect the results at all. I calculated the prices of a bunch of American options with dividend yields with the engine `FdBlackScolesVanillaEngine` from QuantLib 1.18. The results from 'CashDividendModel cashDividendModel = Spot’ and the results from 'CashDividendModel cashDividendModel = Escrowed’ are identical, literally. I am using the Python wrap. Is this normal? Best, Shenze On Jun 16, 2020, 4:51 AM -0400, Luigi Ballabio <lui...@gm...>, wrote: > Hello, > thanks for the analysis. > > There are people here which are more capable of answering than I am, but just to make sure that we're comparing equals to equals: FdBlackScholesVanillaEngine has two possible ways to handle dividends, and we should document this better. One is the scale/shift model, and the other is the escrowed dividend model; you can choose the model by mans of an optional last parameter for the constructor (see <https://github.com/lballabio/QuantLib-SWIG/blob/master/SWIG/options.i#L1202>). > > Now, FDDividendAmericanEngine uses the escrowed dividend model, which I'm told is the one described in most texts. Instead, FdBlackScholesVanillaEngine uses by default the scale/shift model. If you didn't set the model explicitly, this might be the reason for the differences. Passing Escrowed as the model would cause the results to be closer. > > If you did that already, though, we'll have to look closer into the code. > > Hope this helps, > Luigi > > > > > On Mon, Jun 15, 2020 at 10:01 PM Shenze Wang <she...@da...> wrote: > > > Hi, > > > > > > We are currently using `FDDividendAmericanEngine` (denoted by DA in following) of QuantLib 1.12. Since this engine is removed in QuantLib 1.16, we’d like to switch to `FdBlackScholesVanillaEngine` (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: > > > > > > a. Do the difference between FD12 & DA12 and the difference between FD18 & FD12 described above behave as expected? > > > b. 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 > > > _______________________________________________ > > > QuantLib-users mailing list > > > Qua...@li... > > > https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Luigi B. <lui...@gm...> - 2020-06-18 08:32:43
|
Hmm. No, I would expect the result to change at least slightly. Let me check that. Can you share the code you're using? Luigi On Tue, Jun 16, 2020 at 11:02 PM Shenze Wang < she...@da...> wrote: > Hi Luigi, > > Thanks a lot for the reply. > > I did not set the parameter `CashDividendModle` of the constructor > `FdBlackScolesVanillaEngine` explicitly in my previous calculations. > > However, it seems that the parameter `CashDividendModle` does not affect > the results at all. > > I calculated the prices of a bunch of American options with dividend > yields with the engine `FdBlackScolesVanillaEngine` from QuantLib 1.18. > The results from 'CashDividendModel cashDividendModel = Spot’ and the > results from 'CashDividendModel cashDividendModel = Escrowed’ are > *identical*, literally. I am using the Python wrap. > > Is this normal? > > > Best, > Shenze > > On Jun 16, 2020, 4:51 AM -0400, Luigi Ballabio <lui...@gm...>, > wrote: > > Hello, > thanks for the analysis. > > There are people here which are more capable of answering than I am, but > just to make sure that we're comparing equals to > equals: FdBlackScholesVanillaEngine has two possible ways to handle > dividends, and we should document this better. One is the scale/shift > model, and the other is the escrowed dividend model; you can choose the > model by mans of an optional last parameter for the constructor (see < > https://github.com/lballabio/QuantLib-SWIG/blob/master/SWIG/options.i#L1202 > >). > > Now, FDDividendAmericanEngine uses the escrowed dividend model, which I'm > told is the one described in most texts. > Instead, FdBlackScholesVanillaEngine uses by default the scale/shift > model. If you didn't set the model explicitly, this might be the reason > for the differences. Passing Escrowed as the model would cause the results > to be closer. > > If you did that already, though, we'll have to look closer into the code. > > Hope this helps, > Luigi > > > > On Mon, Jun 15, 2020 at 10:01 PM Shenze Wang < > she...@da...> wrote: > >> 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 >> _______________________________________________ >> QuantLib-users mailing list >> Qua...@li... >> https://lists.sourceforge.net/lists/listinfo/quantlib-users >> > |
|
From: Luigi B. <lui...@gm...> - 2020-06-18 08:52:48
Attachments:
dividends.py
|
Yes, they do change. See the script I'm attaching for a simple example. Luigi On Thu, Jun 18, 2020 at 10:32 AM Luigi Ballabio <lui...@gm...> wrote: > Hmm. No, I would expect the result to change at least slightly. Let me > check that. Can you share the code you're using? > > Luigi > > > On Tue, Jun 16, 2020 at 11:02 PM Shenze Wang < > she...@da...> wrote: > >> Hi Luigi, >> >> Thanks a lot for the reply. >> >> I did not set the parameter `CashDividendModle` of the constructor >> `FdBlackScolesVanillaEngine` explicitly in my previous calculations. >> >> However, it seems that the parameter `CashDividendModle` does not affect >> the results at all. >> >> I calculated the prices of a bunch of American options with dividend >> yields with the engine `FdBlackScolesVanillaEngine` from QuantLib 1.18. >> The results from 'CashDividendModel cashDividendModel = Spot’ and the >> results from 'CashDividendModel cashDividendModel = Escrowed’ are >> *identical*, literally. I am using the Python wrap. >> >> Is this normal? >> >> >> Best, >> Shenze >> >> On Jun 16, 2020, 4:51 AM -0400, Luigi Ballabio <lui...@gm...>, >> wrote: >> >> Hello, >> thanks for the analysis. >> >> There are people here which are more capable of answering than I am, but >> just to make sure that we're comparing equals to >> equals: FdBlackScholesVanillaEngine has two possible ways to handle >> dividends, and we should document this better. One is the scale/shift >> model, and the other is the escrowed dividend model; you can choose the >> model by mans of an optional last parameter for the constructor (see < >> https://github.com/lballabio/QuantLib-SWIG/blob/master/SWIG/options.i#L1202 >> >). >> >> Now, FDDividendAmericanEngine uses the escrowed dividend model, which I'm >> told is the one described in most texts. >> Instead, FdBlackScholesVanillaEngine uses by default the scale/shift >> model. If you didn't set the model explicitly, this might be the reason >> for the differences. Passing Escrowed as the model would cause the results >> to be closer. >> >> If you did that already, though, we'll have to look closer into the code. >> >> Hope this helps, >> Luigi >> >> >> >> On Mon, Jun 15, 2020 at 10:01 PM Shenze Wang < >> she...@da...> wrote: >> >>> 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 >>> _______________________________________________ >>> QuantLib-users mailing list >>> Qua...@li... >>> https://lists.sourceforge.net/lists/listinfo/quantlib-users >>> >> |
|
From: Shenze W. <she...@da...> - 2020-06-24 17:19:28
Attachments:
FD_engines.py
results.txt
|
Hi Luigi, Thanks for your codes. Yes, they do change. I did not understand that the dividend model is about the discrete dividends. I was pricing options with dividend yields but without discrete dividends. That’s why I didn’t observe the differences of the two different dividend models. Based on your Python code, I priced some American options. The results of 3 test cases are in the attached “results.txt”. The Python code is in the attached “FD_engines.py”. Here are some findings and questions. Findings: 1. In some cases (Case 1), FDDividendAmericanEngine and FdBlackScholesVanillaEngine with Escrowed generate similar results, and the new engine shows better converge performance. However, in some cases (Case 2), the result of old engine does not match any results from the new engine. The option in Case 2 is the same as Case 1 except that there is an interest rate. 2. In some cases (Case 3), the spot dividend model seems to generate wrong results. The option in Case 3 is an option with a big dividend right after the evaluation date. The results of spot dividend model is very different from others. The price also changes a lot when mesh changes. Questions: 1. About FD schemes. Why there is no CrankNicolson scheme in the latest version? Is it replaced by Douglas scheme because Douglas is generally better? 2. About Dividend models. I understand that in Escrowed Model it is assumed that the stock price minus the present value of dividends follows Geometric Brownian Motion. But I am not sure what’s the Spot Dividend Model in QuantLib. What’s assumption of this model? By checking the C++ codes, it seems that the only difference of this two models is the spotAdjustment in this line: https://github.com/lballabio/QuantLib/blob/master/ql/methods/finitedifferences/meshers/fdmblackscholesmesher.cpp#L81 3. It seems that there is no error estimator for FD engines. Will we have one? Thanks a lot. Best, Shenze On Jun 18, 2020, 4:52 AM -0400, Luigi Ballabio <lui...@gm...>, wrote: > Yes, they do change. See the script I'm attaching for a simple example. > > Luigi > > > On Thu, Jun 18, 2020 at 10:32 AM Luigi Ballabio <lui...@gm...> wrote: > > > Hmm. No, I would expect the result to change at least slightly. Let me check that. Can you share the code you're using? > > > > > > Luigi > > > > > > > > > > On Tue, Jun 16, 2020 at 11:02 PM Shenze Wang <she...@da...> wrote: > > > > > Hi Luigi, > > > > > > > > > > Thanks a lot for the reply. > > > > > > > > > > I did not set the parameter `CashDividendModle` of the constructor `FdBlackScolesVanillaEngine` explicitly in my previous calculations. > > > > > > > > > > However, it seems that the parameter `CashDividendModle` does not affect the results at all. > > > > > > > > > > I calculated the prices of a bunch of American options with dividend yields with the engine `FdBlackScolesVanillaEngine` from QuantLib 1.18. The results from 'CashDividendModel cashDividendModel = Spot’ and the results from 'CashDividendModel cashDividendModel = Escrowed’ are identical, literally. I am using the Python wrap. > > > > > > > > > > Is this normal? > > > > > > > > > > > > > > > Best, > > > > > Shenze > > > > > > > > > > On Jun 16, 2020, 4:51 AM -0400, Luigi Ballabio <lui...@gm...>, wrote: > > > > > > Hello, > > > > > > thanks for the analysis. > > > > > > > > > > > > There are people here which are more capable of answering than I am, but just to make sure that we're comparing equals to equals: FdBlackScholesVanillaEngine has two possible ways to handle dividends, and we should document this better. One is the scale/shift model, and the other is the escrowed dividend model; you can choose the model by mans of an optional last parameter for the constructor (see <https://github.com/lballabio/QuantLib-SWIG/blob/master/SWIG/options.i#L1202>). > > > > > > > > > > > > Now, FDDividendAmericanEngine uses the escrowed dividend model, which I'm told is the one described in most texts. Instead, FdBlackScholesVanillaEngine uses by default the scale/shift model. If you didn't set the model explicitly, this might be the reason for the differences. Passing Escrowed as the model would cause the results to be closer. > > > > > > > > > > > > If you did that already, though, we'll have to look closer into the code. > > > > > > > > > > > > Hope this helps, > > > > > > Luigi > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Jun 15, 2020 at 10:01 PM Shenze Wang <she...@da...> wrote: > > > > > > > > Hi, > > > > > > > > > > > > > > > > We are currently using `FDDividendAmericanEngine` (denoted by DA in following) of QuantLib 1.12. Since this engine is removed in QuantLib 1.16, we’d like to switch to `FdBlackScholesVanillaEngine` (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: > > > > > > > > > > > > > > > > a. Do the difference between FD12 & DA12 and the difference between FD18 & FD12 described above behave as expected? > > > > > > > > b. 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 > > > > > > > > _______________________________________________ > > > > > > > > QuantLib-users mailing list > > > > > > > > Qua...@li... > > > > > > > > https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Klaus S. <kl...@sp...> - 2020-06-25 21:09:31
|
Hi, thanks for sharing your results. W.r.t. your questions 1. Douglas and Crank-Nicolson scheme are exactly the same for one-dimensional problems like the Black-Scholes equation. In higher dimensions operator splitting schemes like Douglas or Craig-Sneyd are better suited than Crank-Nicolson, hence there wasn't really a need to implement it (even though for the sake of completeness the Crank-Nicolson scheme has been added with the 1.18 release in C++). 2. The spot dividend model is described e.q. in "Back to Basics: a new approach to the discrete dividend problem". People might argue that the spot dividend process is more realistic for path dependent options like barrier options or structured equity notes. 3. As far as I know there is no general and meaningful algorithm for this problem, which is as easy as for Monte-Carlo. Observation 1 on Case 2. If I remember correctly then there was subtle difference between interest rate treatment for discrete dividents between the FDDividendAmericanEngine on the one side and AnalyticDividendEuropeanEngine,FdBlackScholesVanillaEngine on the other side. Observation 2: For these pathologic cases the default number of S grid steps is too small. In general I'd use 500 or more S grid steps. best regards Klaus |
|
From: Klaus S. <kl...@sp...> - 2020-06-25 21:26:51
|
please ignore my comment on "Observation 1 on Case 2", it is wrong, On Donnerstag, 25. Juni 2020 22:45:18 CEST Klaus Spanderen wrote: > Hi, > > thanks for sharing your results. > > W.r.t. your questions > 1. Douglas and Crank-Nicolson scheme are exactly the same for one-dimensional problems like the Black-Scholes equation. In higher dimensions operator splitting schemes like Douglas or Craig-Sneyd are better suited than Crank-Nicolson, hence there wasn't really a need to implement it (even though for the sake of completeness the Crank-Nicolson scheme has been added with the 1.18 release in C++). > 2. The spot dividend model is described e.q. in "Back to Basics: a new approach to the discrete dividend problem". People might argue that the spot dividend process is more realistic for path dependent options like barrier options or structured equity notes. > 3. As far as I know there is no general and meaningful algorithm for this problem, which is as easy as for Monte-Carlo. > > Observation 1 on Case 2. If I remember correctly then there was subtle difference between interest rate treatment for discrete dividents between the FDDividendAmericanEngine on the one side and AnalyticDividendEuropeanEngine,FdBlackScholesVanillaEngine on the other side. > Observation 2: For these pathologic cases the default number of S grid steps is too small. In general I'd use 500 or more S grid steps. > > best regards > Klaus > > > > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users > |
|
From: Shenze W. <she...@da...> - 2020-06-26 15:35:21
Attachments:
Pricing of two dividend models.txt
|
Hi Klaus, Thanks a lot for you explanations. I made more calculations. It seems that the differences between Spot dividend model and Escrowed dividend model are not only for pathologic cases. And also a greater number of time steps and grid points do not help. The calculation results are attached. So I guess that there may be something goes wrong with Spot dividend model. The difference between the two dividend model also causes another bug in impliedVolatility. Because for American options, FdBlackScholesVanillaEngine with Spot dividend model is always being used, when calculating ivol. Here is the issue I opened, https://github.com/lballabio/QuantLib/issues/850. I think maybe it is necessary to take a closer look at the two dividend models. Best, Shenze On Jun 25, 2020, 11:49 PM -0400, Klaus Spanderen <kl...@sp...>, wrote: > please ignore my comment on "Observation 1 on Case 2", it is wrong, > > On Donnerstag, 25. Juni 2020 22:45:18 CEST Klaus Spanderen wrote: > > Hi, > > > > thanks for sharing your results. > > > > W.r.t. your questions > > 1. Douglas and Crank-Nicolson scheme are exactly the same for one-dimensional problems like the Black-Scholes equation. In higher dimensions operator splitting schemes like Douglas or Craig-Sneyd are better suited than Crank-Nicolson, hence there wasn't really a need to implement it (even though for the sake of completeness the Crank-Nicolson scheme has been added with the 1.18 release in C++). > > 2. The spot dividend model is described e.q. in "Back to Basics: a new approach to the discrete dividend problem". People might argue that the spot dividend process is more realistic for path dependent options like barrier options or structured equity notes. > > 3. As far as I know there is no general and meaningful algorithm for this problem, which is as easy as for Monte-Carlo. > > > > Observation 1 on Case 2. If I remember correctly then there was subtle difference between interest rate treatment for discrete dividents between the FDDividendAmericanEngine on the one side and AnalyticDividendEuropeanEngine,FdBlackScholesVanillaEngine on the other side. > > Observation 2: For these pathologic cases the default number of S grid steps is too small. In general I'd use 500 or more S grid steps. > > > > best regards > > Klaus > > > > > > > > > > _______________________________________________ > > QuantLib-users mailing list > > Qua...@li... > > https://lists.sourceforge.net/lists/listinfo/quantlib-users > > > > > > > > > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Klaus S. <kl...@sp...> - 2020-06-26 17:30:03
|
Hi Spot dividend and escrowed dividend model are different models and are supposed to give different results for the same parameter set. An implied volatility calculated with the escrowed dividend model will not give the same price back when used in a spot dividend model because the underlying stochastic differential equations are different. best regards Klaus On Freitag, 26. Juni 2020 17:34:57 CEST Shenze Wang wrote: Hi Klaus, Thanks a lot for you explanations. I made more calculations. It seems that the differences between Spot dividend model and Escrowed dividend model are not only for pathologic cases. And also a greater number of time steps and grid points do not help. The calculation results are attached. So I guess that there may be something goes wrong with Spot dividend model. The difference between the two dividend model also causes another bug in impliedVolatility. Because for American options, FdBlackScholesVanillaEngine with Spot dividend model is always being used, when calculating ivol. Here is the issue I opened, https://github.com/lballabio/QuantLib/issues/850[1]. I think maybe it is necessary to take a closer look at the two dividend models. Best, Shenze -------- [1] https://github.com/lballabio/QuantLib/issues/850 |
|
From: Shenze W. <she...@da...> - 2020-06-26 19:58:32
|
Hi Klaus, I understand that different dividend models have different assumptions about the underlying process of the stock price. So, the pricing results will be different. But could you please help me check the pricing results in the following screenshot? It is an American call option with extremely low volatility and a dividend right before the expiry date. S = 100 and K =90. I think the value of this option should be very close to 10, which matches the result of the Spot dividend model. However, the pricing result from Escrowed dividend model is 0, which looks a little wired. Thanks a lot for your patience. Best, Shenze On Jun 26, 2020, 1:32 PM -0400, Klaus Spanderen <kl...@sp...>, wrote: > Hi > Spot dividend and escrowed dividend model are different models and are supposed to give different results for the same parameter set. An implied volatility calculated with the escrowed dividend model will not give the same price back when used in a spot dividend model because the underlying stochastic differential equations are different. > best regards > Klaus > On Freitag, 26. Juni 2020 17:34:57 CEST Shenze Wang wrote: > Hi Klaus, > > Thanks a lot for you explanations. > > I made more calculations. It seems that the differences between Spot dividend model and Escrowed dividend model are not only for pathologic cases. And also a greater number of time steps and grid points do not help. The calculation results are attached. So I guess that there may be something goes wrong with Spot dividend model. > > The difference between the two dividend model also causes another bug in impliedVolatility. Because for American options, FdBlackScholesVanillaEngine with Spot dividend model is always being used, when calculating ivol. Here is the issue I opened, https://github.com/lballabio/QuantLib/issues/850. > > I think maybe it is necessary to take a closer look at the two dividend models. > > > Best, > Shenze > _______________________________________________ > QuantLib-users mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-users |
|
From: Klaus S. <kl...@sp...> - 2020-06-26 19:59:57
|
Hi Shenze, thanks for the example, it nicely highlights the importance of dividend modelling for equity option. Within the spot dividend model the dividend of 10 is substracted from the equity process on the 31.12.2020. The option will be early exercised somewhere between today and the 30.12.2020 to earn the intrinsic value of 10, hence this model gives the expected result. The escrowed dividend model substracts the net dividend payment from the start value of 100 and starts a geometric brownian motion at S(t=0) = S - D = 90. As the volatility is almost zero this process ends at 90 on maturity and the american option expires worthless. Both engine, the old FDDividendAmericanEngine and the FdBlackScholesVanillaEngine produce this result. The numerics is ok but the model is not appicable for this problem and delivers results, which look "a little wired" to say the least;-). best Klaus On Freitag, 26. Juni 2020 20:50:54 CEST Shenze Wang wrote: > Hi Klaus, > > I understand that different dividend models have different assumptions about the underlying process of the stock price. So, the pricing results will be different. > > But could you please help me check the pricing results in the following screenshot? It is an American call option with extremely low volatility and a dividend right before the expiry date. S = 100 and K =90. I think the value of this option should be very close to 10, which matches the result of the Spot dividend model. However, the pricing result from Escrowed dividend model is 0, which looks a little wired. > > Thanks a lot for your patience. > > > > Best, > Shenze > > > On Jun 26, 2020, 1:32 PM -0400, Klaus Spanderen <kl...@sp...>, wrote: > > Hi > > Spot dividend and escrowed dividend model are different models and are supposed to give different results for the same parameter set. An implied volatility calculated with the escrowed dividend model will not give the same price back when used in a spot dividend model because the underlying stochastic differential equations are different. > > best regards > > Klaus > > On Freitag, 26. Juni 2020 17:34:57 CEST Shenze Wang wrote: > > Hi Klaus, > > > > Thanks a lot for you explanations. > > > > I made more calculations. It seems that the differences between Spot dividend model and Escrowed dividend model are not only for pathologic cases. And also a greater number of time steps and grid points do not help. The calculation results are attached. So I guess that there may be something goes wrong with Spot dividend model. > > > > The difference between the two dividend model also causes another bug in impliedVolatility. Because for American options, FdBlackScholesVanillaEngine with Spot dividend model is always being used, when calculating ivol. Here is the issue I opened, https://github.com/lballabio/QuantLib/issues/850. > > > > I think maybe it is necessary to take a closer look at the two dividend models. > > > > > > Best, > > Shenze > > _______________________________________________ > > QuantLib-users mailing list > > Qua...@li... > > https://lists.sourceforge.net/lists/listinfo/quantlib-users > |
|
From: Shenze W. <she...@da...> - 2020-06-26 20:50:35
Attachments:
old_engine.py
|
Hi Klaus, I think I have a different understanding about Escrowed dividend model from you. Let GBM(S_0) represents a Geometric Brownian motion with initial price S_0. In the previous example, with Escrowed dividend model, • You think, the process of the stock S = GBM(90); • However, I think, the process should follow S = 10 + GBM(90), in which 10 is the present value of dividends; The paper Back to Basics proposes that S = GBM(100), but with proper adjustment or assumption when S < D at dividend time. If the Spot dividend model is following that paper, then the difference between the Spot and Escrowed should be that Spot handles the situation when S<D, while Escrowed does not. I do not think throwing away the dividend totally from the process of the price is the right way. If the Escrowed dividend is programmed by my understanding, I believe it also can provide fairly accurate results as long as the dividend is not huge compared to the stock price. Some other things: 1. The option mentioned in my previous email will be always exercised on 30.12.2020, right before the dividend, because it’s an American call. 2. I think the old FDDividendAmericanEngine does not provide the same results as the Escrowed model in the new engine. Codes and results are in attached files. Best, Shenze On Jun 26, 2020, 3:59 PM -0400, Klaus Spanderen <kl...@sp...>, wrote: > Hi Shenze, > > thanks for the example, it nicely highlights the importance of dividend modelling for equity option. > > Within the spot dividend model the dividend of 10 is substracted from the equity process on the 31.12.2020. The option will be early exercised somewhere between today and the 30.12.2020 to earn the intrinsic value of 10, hence this model gives the expected result. > > The escrowed dividend model substracts the net dividend payment from the start value of 100 and starts a geometric brownian motion at S(t=0) = S - D = 90. As the volatility is almost zero this process ends at 90 on maturity and the american option expires worthless. Both engine, the old FDDividendAmericanEngine and the FdBlackScholesVanillaEngine produce this result. The numerics is ok but the model is not appicable for this problem and delivers results, which look "a little wired" to say the least;-). > > best > Klaus > > On Freitag, 26. Juni 2020 20:50:54 CEST Shenze Wang wrote: > > Hi Klaus, > > > > I understand that different dividend models have different assumptions about the underlying process of the stock price. So, the pricing results will be different. > > > > But could you please help me check the pricing results in the following screenshot? It is an American call option with extremely low volatility and a dividend right before the expiry date. S = 100 and K =90. I think the value of this option should be very close to 10, which matches the result of the Spot dividend model. However, the pricing result from Escrowed dividend model is 0, which looks a little wired. > > > > Thanks a lot for your patience. > > > > > > > > Best, > > Shenze > > > > > > On Jun 26, 2020, 1:32 PM -0400, Klaus Spanderen <kl...@sp...>, wrote: > > > Hi > > > Spot dividend and escrowed dividend model are different models and are supposed to give different results for the same parameter set. An implied volatility calculated with the escrowed dividend model will not give the same price back when used in a spot dividend model because the underlying stochastic differential equations are different. > > > best regards > > > Klaus > > > On Freitag, 26. Juni 2020 17:34:57 CEST Shenze Wang wrote: > > > Hi Klaus, > > > > > > Thanks a lot for you explanations. > > > > > > I made more calculations. It seems that the differences between Spot dividend model and Escrowed dividend model are not only for pathologic cases. And also a greater number of time steps and grid points do not help. The calculation results are attached. So I guess that there may be something goes wrong with Spot dividend model. > > > > > > The difference between the two dividend model also causes another bug in impliedVolatility. Because for American options, FdBlackScholesVanillaEngine with Spot dividend model is always being used, when calculating ivol. Here is the issue I opened, https://github.com/lballabio/QuantLib/issues/850. > > > > > > I think maybe it is necessary to take a closer look at the two dividend models. > > > > > > > > > Best, > > > Shenze > > > _______________________________________________ > > > QuantLib-users mailing list > > > Qua...@li... > > > https://lists.sourceforge.net/lists/listinfo/quantlib-users > > > > > > |
|
From: Shenze W. <she...@da...> - 2020-06-26 20:48:34
|
Hi, A correction for the last email. About the Escrowed dividend model, I think: The process should follow S_t = 10 * x_t + GBM(90), in which 10 is the present value of dividends, and x_t is 1 before the dividend and 0 after the dividend. Best, Shenze On Jun 26, 2020, 4:43 PM -0400, Shenze Wang <she...@da...>, wrote: > Hi Klaus, > > I think I have a different understanding about Escrowed dividend model from you. > > Let GBM(S_0) represents a Geometric Brownian motion with initial price S_0. In the previous example, with Escrowed dividend model, > > • You think, the process of the stock S = GBM(90); > • However, I think, the process should follow S = 10 + GBM(90), in which 10 is the present value of dividends; > > The paper Back to Basics proposes that S = GBM(100), but with proper adjustment or assumption when S < D at dividend time. > > If the Spot dividend model is following that paper, then the difference between the Spot and Escrowed should be that Spot handles the situation when S<D, while Escrowed does not. I do not think throwing away the dividend totally from the process of the price is the right way. If the Escrowed dividend is programmed by my understanding, I believe it also can provide fairly accurate results as long as the dividend is not huge compared to the stock price. > > Some other things: > > 1. The option mentioned in my previous email will be always exercised on 30.12.2020, right before the dividend, because it’s an American call. > 2. I think the old FDDividendAmericanEngine does not provide the same results as the Escrowed model in the new engine. Codes and results are in attached files. > > > > Best, > Shenze > > On Jun 26, 2020, 3:59 PM -0400, Klaus Spanderen <kl...@sp...>, wrote: > > Hi Shenze, > > > > thanks for the example, it nicely highlights the importance of dividend modelling for equity option. > > > > Within the spot dividend model the dividend of 10 is substracted from the equity process on the 31.12.2020. The option will be early exercised somewhere between today and the 30.12.2020 to earn the intrinsic value of 10, hence this model gives the expected result. > > > > The escrowed dividend model substracts the net dividend payment from the start value of 100 and starts a geometric brownian motion at S(t=0) = S - D = 90. As the volatility is almost zero this process ends at 90 on maturity and the american option expires worthless. Both engine, the old FDDividendAmericanEngine and the FdBlackScholesVanillaEngine produce this result. The numerics is ok but the model is not appicable for this problem and delivers results, which look "a little wired" to say the least;-). > > > > best > > Klaus > > > > On Freitag, 26. Juni 2020 20:50:54 CEST Shenze Wang wrote: > > > Hi Klaus, > > > > > > I understand that different dividend models have different assumptions about the underlying process of the stock price. So, the pricing results will be different. > > > > > > But could you please help me check the pricing results in the following screenshot? It is an American call option with extremely low volatility and a dividend right before the expiry date. S = 100 and K =90. I think the value of this option should be very close to 10, which matches the result of the Spot dividend model. However, the pricing result from Escrowed dividend model is 0, which looks a little wired. > > > > > > Thanks a lot for your patience. > > > > > > > > > > > > Best, > > > Shenze > > > > > > > > > On Jun 26, 2020, 1:32 PM -0400, Klaus Spanderen <kl...@sp...>, wrote: > > > > Hi > > > > Spot dividend and escrowed dividend model are different models and are supposed to give different results for the same parameter set. An implied volatility calculated with the escrowed dividend model will not give the same price back when used in a spot dividend model because the underlying stochastic differential equations are different. > > > > best regards > > > > Klaus > > > > On Freitag, 26. Juni 2020 17:34:57 CEST Shenze Wang wrote: > > > > Hi Klaus, > > > > > > > > Thanks a lot for you explanations. > > > > > > > > I made more calculations. It seems that the differences between Spot dividend model and Escrowed dividend model are not only for pathologic cases. And also a greater number of time steps and grid points do not help. The calculation results are attached. So I guess that there may be something goes wrong with Spot dividend model. > > > > > > > > The difference between the two dividend model also causes another bug in impliedVolatility. Because for American options, FdBlackScholesVanillaEngine with Spot dividend model is always being used, when calculating ivol. Here is the issue I opened, https://github.com/lballabio/QuantLib/issues/850. > > > > > > > > I think maybe it is necessary to take a closer look at the two dividend models. > > > > > > > > > > > > Best, > > > > Shenze > > > > _______________________________________________ > > > > QuantLib-users mailing list > > > > Qua...@li... > > > > https://lists.sourceforge.net/lists/listinfo/quantlib-users > > > > > > > > > > > |
|
From: Klaus S. <kl...@sp...> - 2020-06-27 00:30:12
|
Hi Shenze,
I think, we have a naming clash here. The implementation of the escrowed dividend models follows chapter 9.1.1 "The Escrowed Dividend Model" in E. Haug's "Guide to Option Pricing Formulas", quote "...can be priced by the BSM formula, by simple replacing S with S minus the present value of the dividends". As we've said before and also stated in Haug's book, in this form the model is not really appicable for American/Bermudan options.
The escrowed model was added lately to FdBlackScholesVanillaEngine mainly, to have a dividend model, which is compatible with the AnalyticDividendEuropeanEngine (for the spot adjustment, see line 50ff in analyticdividendeuropeanengine.cpp).
Sure, one can extend the original model definition from Haug's book by
> The process should follow *S_t = 10 * x_t + GBM(90)*, in which 10 is the present value of dividends, and x_t is 1 before the dividend and 0 after the dividend.
and this will improve American/Bermudan pricing.
Looking at your explanations below, you should be fine with the default dividend model. Just to be precise, for your example the default model will start a GBM at 100 and adds a deterministic down jump at every dividend date. The default model also covers the case S < D.
hope that helps, regards
Klaus
On Freitag, 26. Juni 2020 22:48:17 CEST Shenze Wang wrote:
Hi,
A correction for the last email.
About the Escrowed dividend model, I think:
The process should follow *S_t = 10 * x_t + GBM(90)*, in which 10 is the present value of dividends, and x_t is 1 before the dividend and 0 after the dividend.
Best,
Shenze
On Jun 26, 2020, 4:43 PM -0400, Shenze Wang <she...@da...>, wrote:
Hi Klaus,
I think I have a different understanding about Escrowed dividend model from you.
Let GBM(S_0) represents a Geometric Brownian motion with initial price S_0. In the previous example, with Escrowed dividend model,
* You think, the process of the stock *S = GBM(90)*;
* However, I think, the process should follow *S = 10 + GBM(90)*, in which 10 is the present value of dividends;
The paper /Back to Basics/ proposes that *S = GBM(100)*, but with proper adjustment or assumption when* *S < D at dividend time.
If the Spot dividend model is following that paper, then the difference between the Spot and Escrowed should be that Spot handles the situation when S<D, while Escrowed does not. I do not think throwing away the dividend totally from the process of the price is the right way. If the Escrowed dividend is programmed by my understanding, I believe it also can provide fairly accurate results as long as the dividend is not huge compared to the stock price.
Some other things:
1. The option mentioned in my previous email will be always exercised on 30.12.2020, right before the dividend, because it’s an American call.
2. I think the old FDDividendAmericanEngine does not provide the same results as the Escrowed model in the new engine. Codes and results are in attached files.
Best,
Shenze
|
|
From: Shenze W. <she...@da...> - 2020-06-29 16:07:07
|
Hi Klaus & Luigi, Thanks a lot for your explanations and referring to the papers. They are very helpful and I learnt a lot. After studying the paper Back to basic, I believe the dividend model in that paper (Spot model in QuantLib) is good model with the correct assumption about the process of the underlying, when there are dividends. We’ll probably go with this one. I also think it’s a good idea disable the Escrowed model for path dependent options. Here is one observations about Escrowed model. Even for European options, FdBalckScholesVanilaEngine with Escrowed model and AnalyticDividendEuropeanEngine will give wrong or poor results when the dividend is huge, as shown in the following screen shot. This call option has a big dividend right before expiry and a strike price of 0. You may argue that this is a wired option. But actually you can consider this option as the equity part in the Merton’s model of credit risk. The reason is that in Escrowed model, the dividend part of the underlying price has 0 volatility. Here is one thought about the impliedVolatility. I agree that FdBalckScholesVanilaEngine is a good default engine when calculating ivol for American options. But it would be really nice if I can specify the parameters of this engine when using impliedVolatility(). Because for options with strike far from spot, the results of FdBalckScholesVanilaEngine with default grid_points are not accurate enough. I can use a larger grid_points when calculating the price, but not the impliedVolatility for now. A $30 strike put on a $300 underlying stock is not rare in the market. Here is one more questions. When the stock price is lower than the dividend on the dividend date, what is current behavior of the FdBalckScholesVanilaEngine. Will it pay a dividend equal to the current stock price, or will it pay nothing at all? Thanks again. Best, Shenze On Jun 26, 2020, 8:30 PM -0400, Klaus Spanderen <kl...@sp...>, wrote: > Hi Shenze, > I think, we have a naming clash here. The implementation of the escrowed dividend models follows chapter 9.1.1 "The Escrowed Dividend Model" in E. Haug's "Guide to Option Pricing Formulas", quote "...can be priced by the BSM formula, by simple replacing S with S minus the present value of the dividends". As we've said before and also stated in Haug's book, in this form the model is not really appicable for American/Bermudan options. > The escrowed model was added lately to FdBlackScholesVanillaEngine mainly, to have a dividend model, which is compatible with the AnalyticDividendEuropeanEngine (for the spot adjustment, see line 50ff in analyticdividendeuropeanengine.cpp). > Sure, one can extend the original model definition from Haug's book by > > The process should follow S_t = 10 * x_t + GBM(90), in which 10 is the present value of dividends, and x_t is 1 before the dividend and 0 after the dividend. > and this will improve American/Bermudan pricing. > Looking at your explanations below, you should be fine with the default dividend model. Just to be precise, for your example the default model will start a GBM at 100 and adds a deterministic down jump at every dividend date. The default model also covers the case S < D. > hope that helps, regards > Klaus > On Freitag, 26. Juni 2020 22:48:17 CEST Shenze Wang wrote: > Hi, > > A correction for the last email. > > About the Escrowed dividend model, I think: > The process should follow S_t = 10 * x_t + GBM(90), in which 10 is the present value of dividends, and x_t is 1 before the dividend and 0 after the dividend. > > > Best, > Shenze > On Jun 26, 2020, 4:43 PM -0400, Shenze Wang <she...@da...>, wrote: > Hi Klaus, > > I think I have a different understanding about Escrowed dividend model from you. > > Let GBM(S_0) represents a Geometric Brownian motion with initial price S_0. In the previous example, with Escrowed dividend model, > > • You think, the process of the stock S = GBM(90); > • However, I think, the process should follow S = 10 + GBM(90), in which 10 is the present value of dividends; > > The paper Back to Basics proposes that S = GBM(100), but with proper adjustment or assumption when S < D at dividend time. > > If the Spot dividend model is following that paper, then the difference between the Spot and Escrowed should be that Spot handles the situation when S<D, while Escrowed does not. I do not think throwing away the dividend totally from the process of the price is the right way. If the Escrowed dividend is programmed by my understanding, I believe it also can provide fairly accurate results as long as the dividend is not huge compared to the stock price. > > Some other things: > > 1. The option mentioned in my previous email will be always exercised on 30.12.2020, right before the dividend, because it’s an American call. > 2. I think the old FDDividendAmericanEngine does not provide the same results as the Escrowed model in the new engine. Codes and results are in attached files. > > > > Best, > Shenze |