PricingEngine for American and European option with discrete dividends

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

PricingEngine for American and European option with discrete dividends

Marie-Aude  BRUANT
Dear all,

I’m trying to use QuantLib for the valuation of DividendVanillaOption. (I’m
a new and impressed user)
I’ve made a little test to check the consistency of the results:
I’ve assumed that the underlying pays discrete dividends equal to 0, and
compare with an underlying who doesn’t pay any dividend.
In the European exercise case, all it’s OK. However, in the American
exercise case they are a difference. :( In this context, they must be all
equal.
I use the PricingEngine FDDividendAmericanEngine and FDAmericanEngine for
American exercise and AnalyticDividendEuropeanEngine and
AnalyticEuropeanEngine for European exercise.

///////////////////////////  RESULTS
////////////////////////////////////////////////
Description of the option:        IBM Option
Date of maturity:                       January 26th, 2013
Type of the option:                   Call
Strike of the option:                  190
Discrete dividends
Dates                           Dividends
February 10th, 2012             0
May 10th, 2012                0
August 10th, 2012               0
November 10th, 2012             0
NPV of the European Option with discrete dividends=0:   17.9647
NPV of the European Option without dividend: 17.9647
NPV of the American Option with discrete dividends=0: 18.5707
NPV of the American Option without dividend: 17.9647
//////////////////////////////////////////////////////////////////////////////////////
Note that in the case of a null risk-free, the results are correct.


I have also one other question: I don’t really understand the two
parameters timeSteps and girdPoints in the FDAmericanEngine and
FDDividendAmericanEngine objects. I understand that we need to define the
discretization gird, but I don’t understand how it works. I used to follow
the following recommendation for L_infinity stability in the Crank Nicolson
scheme:
        delta_t/(delta_x*delta_x) <= 1


Please, see the attached .cpp file.
I’m using the 1.1 version.

Thanks,
Best regards,
MA

------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users

OptionValuation.cpp (18K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: PricingEngine for American and European option with discrete dividends

Luigi Ballabio
Hello,
    we're guilty on both counts, I'm afraid.  The behavior of the
American seems to be a bug, so we'll have to investigate.
As for the grid points, I had a look at the code and it's indeed not
obvious what's happening in there.  The calculations can be read in
fdvanillaengine.cpp.  On the time axis, the time goes from today to
maturity date, and delta_t is just the time span divided by the number
of time steps (with some small adjustment to ensure that the dividend
times are on the grid).  On the price axis, the engine sets a
logarithmic grid centered on the spot and extending in either
direction by 4 times the sigma of the expected price distribution at
maturity.  The number of points in the log grid is given by the passed
gridPoints parameter.

I'll let you know what I find about the American case (it might take a
while before I can have a look, though.)

Later,
    Luigi


On Fri, Jan 27, 2012 at 6:33 PM, Marie-Aude  BRUANT
<[hidden email]> wrote:

> I’m trying to use QuantLib for the valuation of DividendVanillaOption. (I’m
> a new and impressed user)
> I’ve made a little test to check the consistency of the results:
> I’ve assumed that the underlying pays discrete dividends equal to 0, and
> compare with an underlying who doesn’t pay any dividend.
> In the European exercise case, all it’s OK. However, in the American
> exercise case they are a difference. :( In this context, they must be all
> equal.
> [...]
> I have also one other question: I don’t really understand the two
> parameters timeSteps and girdPoints in the FDAmericanEngine and
> FDDividendAmericanEngine objects. I understand that we need to define the
> discretization gird, but I don’t understand how it works. I used to follow
> the following recommendation for L_infinity stability in the Crank Nicolson
> scheme:
>        delta_t/(delta_x*delta_x) <= 1

------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users