|
From: <fho...@gm...> - 2007-11-02 18:52:30
|
Hi Luigi! Thanks for your quick reply and the hints for possible correction. I = will play around a little with the existing code and would be happy to (hopefully) be able to contribute a version which suits better. By the way, does MakeMCEuropeanHestonEngine behave similarly? = Presumably, yes? Regards Frank > -----Urspr=FCngliche Nachricht----- > Von: Luigi Ballabio [mailto:lui...@gm...]=20 > Gesendet: Freitag, 2. November 2007 17:17 > An: fho...@gm... > Cc: qua...@li...;=20 > qua...@li... > Betreff: Re: [Quantlib-users] MakeMCEuropeanEngine<PseudoRandom> >=20 >=20 >=20 > Hi Frank, >=20 > On Thu, 2007-11-01 at 22:12 +0100, Frank H=F6vermann wrote: > > When I change the value which is passed to .withTimeSteps starting=20 > > from 1 to, say, 5 in the case of non-flat vol term=20 > structure (but flat > > skew) which is defined by 5 points on the time scale, the value 1=20 > > results in a plain vanilla call option's value which corresponds to=20 > > the start vol (all else being equal). Increasing the number of time=20 > > steps the option's value seems to approach the value of the closed=20 > > form solution where the speed of convergence depends on the=20 > particular=20 > > shape of the term structure in the neighborhood of maturity. > > =20 > > I would expect, especially in the case of one time step for=20 > this plain=20 > > vanilla call, the vol to be taken as the terminal vol not=20 > the initial=20 > > one. Am I wrong? >=20 > No, you're right. The problem is in the way that the=20 > Black-Scholes stochastic process is discretized. By default,=20 > it uses Euler discretization, which at each step simply takes=20 > the initial value (see > <ql/processes/eulerdiscretization.cpp>.) You can obtain the=20 > behavior you want by defining another discretization (you can=20 > do it by cloning the Euler code and modify it) that takes the=20 > terminal value. Once you have implemented it, you can pass it=20 > to the BlackScholesProcess constructor so that it overrides=20 > the default behavior. If you want, you can implement more=20 > refined behaviors, too (such as integrating the variance, or=20 > using some predictor-corrector algorithm.) >=20 > Luigi >=20 > P.S. If you implement the new class and want to contribute=20 > it, I'll be glad to add it to the library. >=20 >=20 >=20 > --=20 >=20 > The nice thing about standards is that there are so many of them to=20 > choose from.=20 > -- Andrew S. Tanenbaum=20 >=20 |