Hull & White with fixed parameter

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

Hull & White with fixed parameter

Francesco Perissin
Hi all,
I need to calibrate the HullWhite model keeping fixed the a parameter.
 
In order to do that, I think that I have to develop a FixedAlphaHullWhite class, derived from HullWhite, with a modification in the FittingParamater::Impl class, in order to have only sigma as fitting parameter, and erediting alpha from the FixedAlphaHullWhite class.
 
I am not so keen in C++, so I have some trouble in doing this.
 
Any suggestions?
 
Many thanks
Francesco

------------------------------------------------------------------------------

_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: Hull & White with fixed parameter

Kim Kuen Tang

Hi Francesco,

Francesco Perissin schrieb:
> Hi all,
> I need to calibrate the HullWhite model keeping fixed the a parameter.
>  
> In order to do that, I think that I have to develop a
> FixedAlphaHullWhite class, derived from HullWhite, with a modification
> in the FittingParamater::Impl class, in order to
Vasicek is the class that you need to modify. The class FittingParamater
is there to fit the termstructure (yield curve). In the current
implementation a_ is initialized with arguments_[0], which is a member
in the class model (ql\models\model.hpp). This is how it tells quantlib
that a_ is a calibration parameter.

Take a look at the constructor:

Vasicek::Vasicek(Rate r0, Real a, Real b, Real sigma, Real lambda)
    : OneFactorAffineModel(4), r0_(r0),
      a_(arguments_[0]), b_(arguments_[1]), sigma_(arguments_[2]),
      lambda_(arguments_[3]) {
        a_ = ConstantParameter(a, PositiveConstraint());
        b_ = ConstantParameter(b, NoConstraint());
        sigma_ = ConstantParameter(sigma, PositiveConstraint());
        lambda_ = ConstantParameter(lambda, NoConstraint());
    }

What you need to do, is to tell Vasicek that there are only three
parameters to calibrate , instead of four. Then you need to decouple a_
from the calibration process which is straightforward.


HTH

Cheers
Kim

> have only sigma as fitting parameter, and erediting alpha from the
> FixedAlphaHullWhite class.
>  
> I am not so keen in C++, so I have some trouble in doing this.
>  
> Any suggestions?
>  
> Many thanks
> Francesco
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------------------
>  
> ------------------------------------------------------------------------
>
> _______________________________________________
> QuantLib-users mailing list
> [hidden email]
> https://lists.sourceforge.net/lists/listinfo/quantlib-users
>  


------------------------------------------------------------------------------
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: Hull & White with fixed parameter

Francesco Perissin
Hi all again,
 
Is there a simpler way that doesn't modify the Vasicek implementation?
 
In QL 0.3 I did a FixedAlphaHullWhite class, derived from HullWhite, which had a private member, derived from Optimization::Constraint::Impl, that was passing the correct parms to the optimization engines.
 
I attach the old implementation of the class, which was working perfectly under QL0.3., oping that somebody has some good ideas about...
 


 
2010/4/22 Kim Kuen Tang <[hidden email]>

Hi Francesco,

Francesco Perissin schrieb:

Hi all,
I need to calibrate the HullWhite model keeping fixed the a parameter.
 In order to do that, I think that I have to develop a FixedAlphaHullWhite class, derived from HullWhite, with a modification in the FittingParamater::Impl class, in order to
Vasicek is the class that you need to modify. The class FittingParamater is there to fit the termstructure (yield curve). In the current implementation a_ is initialized with arguments_[0], which is a member in the class model (ql\models\model.hpp). This is how it tells quantlib that a_ is a calibration parameter.

Take a look at the constructor:

Vasicek::Vasicek(Rate r0, Real a, Real b, Real sigma, Real lambda)
  : OneFactorAffineModel(4), r0_(r0),
    a_(arguments_[0]), b_(arguments_[1]), sigma_(arguments_[2]),
    lambda_(arguments_[3]) {
      a_ = ConstantParameter(a, PositiveConstraint());
      b_ = ConstantParameter(b, NoConstraint());
      sigma_ = ConstantParameter(sigma, PositiveConstraint());
      lambda_ = ConstantParameter(lambda, NoConstraint());
  }

What you need to do, is to tell Vasicek that there are only three parameters to calibrate , instead of four. Then you need to decouple a_ from the calibration process which is straightforward.


HTH

Cheers
Kim

have only sigma as fitting parameter, and erediting alpha from the FixedAlphaHullWhite class.
 I am not so keen in C++, so I have some trouble in doing this.
 Any suggestions?
 Many thanks
Francesco
------------------------------------------------------------------------

------------------------------------------------------------------------------
 ------------------------------------------------------------------------

_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
 



------------------------------------------------------------------------------

_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users

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

Re: Hull & White with fixed parameter

aincze
Hello Francesco,

  I was wondering why do you need to keep a = cst. ? Are you calibrating on a
special volatility surface or maybe you face some instablity issues when
calibrating ?

André



> Hi all again,
>
> Is there a simpler way that doesn't modify the Vasicek implementation?
>
> In QL 0.3 I did a FixedAlphaHullWhite class, derived from HullWhite, which
> had a private member, derived from Optimization::Constraint::Impl, that was
> passing the correct parms to the optimization engines.
>
> I attach the old implementation of the class, which was working perfectly
> under QL0.3., oping that somebody has some good ideas about...
>
>
>
>
> 2010/4/22 Kim Kuen Tang <[hidden email]>
>
> >
> > Hi Francesco,
> >
> > Francesco Perissin schrieb:
> >
> > Hi all,
> >> I need to calibrate the HullWhite model keeping fixed the a parameter.
> >>  In order to do that, I think that I have to develop a FixedAlphaHullWhite
> >> class, derived from HullWhite, with a modification in the
> >> FittingParamater::Impl class, in order to
> >>
> > Vasicek is the class that you need to modify. The class FittingParamater is
> > there to fit the termstructure (yield curve). In the current implementation
> > a_ is initialized with arguments_[0], which is a member in the class model
> > (ql\models\model.hpp). This is how it tells quantlib that a_ is a
> > calibration parameter.
> >
> > Take a look at the constructor:
> >
> > Vasicek::Vasicek(Rate r0, Real a, Real b, Real sigma, Real lambda)
> >   : OneFactorAffineModel(4), r0_(r0),
> >     a_(arguments_[0]), b_(arguments_[1]), sigma_(arguments_[2]),
> >     lambda_(arguments_[3]) {
> >       a_ = ConstantParameter(a, PositiveConstraint());
> >       b_ = ConstantParameter(b, NoConstraint());
> >       sigma_ = ConstantParameter(sigma, PositiveConstraint());
> >       lambda_ = ConstantParameter(lambda, NoConstraint());
> >   }
> >
> > What you need to do, is to tell Vasicek that there are only three
> > parameters to calibrate , instead of four. Then you need to decouple a_
> from
> > the calibration process which is straightforward.
> >
> >
> > HTH
> >
> > Cheers
> > Kim
> >
> >  have only sigma as fitting parameter, and erediting alpha from the
> >> FixedAlphaHullWhite class.
> >>  I am not so keen in C++, so I have some trouble in doing this.
> >>  Any suggestions?
> >>  Many thanks
> >> Francesco
> >> ------------------------------------------------------------------------
> >>
> >>
> >>
> ------------------------------------------------------------------------------
> >>  ------------------------------------------------------------------------
> >>
> >> _______________________________________________
> >> QuantLib-users mailing list
> >> [hidden email]
> >> https://lists.sourceforge.net/lists/listinfo/quantlib-users
> >>
> >>
> >
> >
>



------------------------------------------------------------------------------
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: Hull & White with fixed parameter

Francesco Perissin
Hi Andrè
 
good question!
 
First, this is a client's requirement. The client is always right!
 
Second, yes, the calibration is more stable with a = cst.
 
Although I haven't done complete tests about this...

2010/4/28 <[hidden email]>
Hello Francesco,

 I was wondering why do you need to keep a = cst. ? Are you calibrating on a
special volatility surface or maybe you face some instablity issues when
calibrating ?

André



> Hi all again,
>
> Is there a simpler way that doesn't modify the Vasicek implementation?
>
> In QL 0.3 I did a FixedAlphaHullWhite class, derived from HullWhite, which
> had a private member, derived from Optimization::Constraint::Impl, that was
> passing the correct parms to the optimization engines.
>
> I attach the old implementation of the class, which was working perfectly
> under QL0.3., oping that somebody has some good ideas about...
>
>
>
>
> 2010/4/22 Kim Kuen Tang <[hidden email]>
>
> >
> > Hi Francesco,
> >
> > Francesco Perissin schrieb:
> >
> > Hi all,
> >> I need to calibrate the HullWhite model keeping fixed the a parameter.
> >>  In order to do that, I think that I have to develop a FixedAlphaHullWhite
> >> class, derived from HullWhite, with a modification in the
> >> FittingParamater::Impl class, in order to
> >>
> > Vasicek is the class that you need to modify. The class FittingParamater is
> > there to fit the termstructure (yield curve). In the current implementation
> > a_ is initialized with arguments_[0], which is a member in the class model
> > (ql\models\model.hpp). This is how it tells quantlib that a_ is a
> > calibration parameter.
> >
> > Take a look at the constructor:
> >
> > Vasicek::Vasicek(Rate r0, Real a, Real b, Real sigma, Real lambda)
> >   : OneFactorAffineModel(4), r0_(r0),
> >     a_(arguments_[0]), b_(arguments_[1]), sigma_(arguments_[2]),
> >     lambda_(arguments_[3]) {
> >       a_ = ConstantParameter(a, PositiveConstraint());
> >       b_ = ConstantParameter(b, NoConstraint());
> >       sigma_ = ConstantParameter(sigma, PositiveConstraint());
> >       lambda_ = ConstantParameter(lambda, NoConstraint());
> >   }
> >
> > What you need to do, is to tell Vasicek that there are only three
> > parameters to calibrate , instead of four. Then you need to decouple a_
> from
> > the calibration process which is straightforward.
> >
> >
> > HTH
> >
> > Cheers
> > Kim
> >
> >  have only sigma as fitting parameter, and erediting alpha from the
> >> FixedAlphaHullWhite class.
> >>  I am not so keen in C++, so I have some trouble in doing this.
> >>  Any suggestions?
> >>  Many thanks
> >> Francesco
> >> ------------------------------------------------------------------------
> >>
> >>
> >>
> ------------------------------------------------------------------------------
> >>  ------------------------------------------------------------------------
> >>
> >> _______________________________________________
> >> QuantLib-users mailing list
> >> [hidden email]
> >> https://lists.sourceforge.net/lists/listinfo/quantlib-users
> >>
> >>
> >
> >
>




------------------------------------------------------------------------------

_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users