|
From: <mat...@gm...> - 2020-06-06 10:33:11
|
Dear QL users,
I cannot say I have great familiarity with short-rate or market models, so please bear with me on this one:
Trying to value a multi-callable swaption and bond using a Hull-White model with (piecewise) time-dependent volatility.
As I understand, <ql/models/shortrate/onefactormodels/hullwhite.hpp> does not satisfy this condition:
This class implements the standard single-factor Hull-White model defined by
\f[
dr_t = (\theta(t) - \alpha r_t)dt + \sigma dW_t
\f]
where \f$ \alpha \f$ and \f$ \sigma \f$ are constants.
I believe it was this ML's archive where I picked up Gsr as a recommended alternative and it looks fine (for some definition of "fine") for swaption pricing.
There are two questions, however:
1) It is apparently not possible to calibrate both volatilities and reversion(s).
While Gsr implements CalibratedModel, performing "joint" calibration like this
// vector<bool> fixedParms = gsr->FixedReversions();
vector<Real> modelVols(voldates.size() + 1, 0.01);
fixedParms = vector<bool>(modelVols.size() + 1, false);
gsr->calibrate(calibSet, lm, ec, NoConstraint{}, vector<Real>{}, fixedParms);
would not work, because only the first modelVols.size() number of calibration instruments are acknowledged, leaving the optimizer with an under-determined function.
Likely there is a good reason for this. Market practice to have mean reversion as a given model parameter? Or that is just the way the model is supposed to work?
2) There is no pricing engine for callable bonds that can consume Gsr, if I am not mistaken. Gsr does not seem to implement ShortRateModel:
Gsr <- {Gaussian1dModel, CalibratedModel, ...} <- {TermStructureConsistentModel, ...}
Likely to do with the tree(const TimeGrid&) method in that interface. Alternatively, there is <ql/experimental/shortrate/generalizedhullwhite.hpp>. It sits in the "experimental" folder, but so does everything callable bond related. So I wonder whether the latter is more suitable for instrument/bond pricing while Gsr might be more model of choice for scenario generation purposes?
Again, apologies for any incorrect terminology or confusing remarks. Happy to clarify further, if necessary (and possible for me).
Thank you,
Matthias
|