|
From: Philippe H. <phi...@ex...> - 2020-10-25 16:44:25
|
Actually, I have a follow-up question on the drift issue. I was experimenting with the Hull-White implementation from the QuantLib Cookbook, and interestingly, in Chapter 15, they build a flat curve with a forward rate of 5%, via: spot_curve = ql.FlatForward(todays_date, ql.QuoteHandle(ql.SimpleQuote(forward_rate)), day_count) The HW parameters are sigma=10% and a=10%, and the HW engine is built via: hw_process = ql.HullWhiteProcess(spot_curve_handle, a, sigma) They then proceed to generate paths of the short term rate, and they demonstrate that the simulated rate converges to the theoretical expected forward rate f(0,t<T) but the graph of such expected forward is not flat at 5%, instead it is monotonously increasing from 5% to as high as 50% after 30 years. So it very much looks like the paths of rates that they show are not drift adjusted otherwise the expected path should be flat at 5%. So I'm unsure what is going on? Is there an optional argument in the hw_process call to do the drift adjustment or not? Philippe Hatstadt On Sun, Oct 25, 2020 at 9:09 AM Peter Caspers <pca...@gm...> wrote: > Hi Philippe, > > the Jamshidian engine uses a) discount bond prices conditional on the > state of the model (i.e. the short rate in the case of the Hull-White > model) and b) zero bond option prices in the model to come up with a > model swaption price. It retrieves this information via the > discountBond() and discountBondOption() methods in the > OneFactorAffineModel interface. The methods account for the adjustment > term theta(t) in the Hull-White model SDE already, there is nothing > that the engine needs to do in addition to that. I don't know if that > answers your question? > > The HullWhiteProcess also takes into account the adjustment to the > initial curve already. To see that you can look into the > implementation of HullWhiteProcess::drift() > > > https://github.com/lballabio/QuantLib/blob/master/ql/processes/hullwhiteprocess.cpp#L38 > > which coincides with e.g. Brigo Mercurio, Interest Rate Models, Theory > and Practice, Formulas (3.33) and (3.34) observing that in this > context > > > https://github.com/lballabio/QuantLib/blob/master/ql/processes/ornsteinuhlenbeckprocess.hpp#L90 > > level_ is zero, speed_ is the Hull-White mean reversion parameter and > x stands for the short rate at time t. > > Does that make sense? > > Thanks, > Peter > > > On Sun, 25 Oct 2020 at 12:47, philippe hatstadt via QuantLib-users > <qua...@li...> wrote: > > > > Is there any information about how the Jamshidian engine does the drift > adjustment to match the initial curve for the Hull White model? > > If I want to use the QL HW Process in a MC model, I assume II have to do > the drift adjustment myself, or is there existing QL functionality to do > that? > > > > Regards > > > > Philippe Hatstadt > > +1-203-252-0408 > > https://www.linkedin.com/in/philippe-hatstadt > > > > > > > > _______________________________________________ > > 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 > -- Brokerage services offered through Exos Securities LLC, member of SIPC <http://www.sipc.org/> / FINRA <http://www.finra.org/>. For important disclosures, click here <https://www.exosfinancial.com/disclosures>. |