Monte Carlo for American options

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

Monte Carlo for American options

Neil P Firth
Hello,

I have a couple of questions / comments about the Monte Carlo framework.

In the current framework the MCVanillaEngine only handles European
options. Is the plan that it should be able to handle American options? If
not I think that the code could be simplified by merging it with the
MCEuropeanEngine.

In the Longstaff-Schwartz Least Squares Monte Carlo algorithm the
simulated paths are generated first, and then stored. After that the next
step in the algorithm is to work BACKWARDS from the expiry time of the
option to estimate the contiuation value of the option at each time step,
and therefore find a sub-optimal stopping rule.

I don't see that this is possible using the current MonteCarloModel.

Therefore I have started on an AmericanMCEngine class. While playing with
the PathGenerators and RandomNumbers I tried using

new MonteCarlo::GaussianPathGenerator(bs, T, timeSteps, gen)

which gives a complie error in pathgenerator.hpp at

next_Path(timeGrid),1.0)

The constructor using the TimeGrid works okay.
I am not entirely up to speed with the code yet, but it seems that this
cannot work as timeGrid has not been initialized, and is not in that
constructor. That constructor does not seem to be used anywhere in the
code. Looks like a cut and past job to me... Should I submit it as a bug
to the bug list on sourceforge (it doesn't seem that there are many
bugs!).

Cheers,

Neil


---------------------------------------------------
  Neil Firth
  Brasenose College Oxford OX1 4AJ United Kingdom
  Office: 01865 280616
  [hidden email]
  http://www.maths.ox.ac.uk/~firth
---------------------------------------------------

americanmcengines.hpp (2K) Download Attachment
americanmcengines.cpp (4K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Monte Carlo for American options

Luigi Ballabio-2
Hi Neil,

At 12:09 AM 7/16/03 +0100, Neil P Firth wrote:
>I have a couple of questions / comments about the Monte Carlo framework.
>
>In the current framework the MCVanillaEngine only handles European
>options. Is the plan that it should be able to handle American options? If
>not I think that the code could be simplified by merging it with the
>MCEuropeanEngine.

Not Americans, but I think it could possibly handle Asian options (emphasis
on "possibly".) I guess our best shot is to try and implement some kind of
Asian, after which it will be (more) clear if they do have a common base
class and what it is.


>In the Longstaff-Schwartz Least Squares Monte Carlo algorithm the
>simulated paths are generated first, and then stored. After that the next
>step in the algorithm is to work BACKWARDS from the expiry time of the
>option to estimate the contiuation value of the option at each time step,
>and therefore find a sub-optimal stopping rule.
>
>I don't see that this is possible using the current MonteCarloModel.

I've seen the algorithm, although not in detail. No, it is not possible to
implement it with the current MonteCarloModel---it only evaluates the paths
one at a time.

>Therefore I have started on an AmericanMCEngine class. While playing with
>the PathGenerators and RandomNumbers I tried using
>
>new MonteCarlo::GaussianPathGenerator(bs, T, timeSteps, gen)
>
>which gives a complie error in pathgenerator.hpp at
>
>next_Path(timeGrid),1.0)
>
>The constructor using the TimeGrid works okay.
>I am not entirely up to speed with the code yet, but it seems that this
>cannot work as timeGrid has not been initialized, and is not in that
>constructor. That constructor does not seem to be used anywhere in the
>code. Looks like a cut and past job to me... Should I submit it as a bug
>to the bug list on sourceforge (it doesn't seem that there are many
>bugs!).

Ouch.

A cut and paste job it is. I just committed a corrected version into CVS.

Thanks,
         Luigi