QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes | List of all members
HullWhite Class Reference

Single-factor Hull-White (extended Vasicek) model class. More...

#include <hullwhite.hpp>

+ Inheritance diagram for HullWhite:
+ Collaboration diagram for HullWhite:

Classes

class  Dynamics
 Short-rate dynamics in the Hull-White model. More...
 
class  FittingParameter
 Analytical term-structure fitting parameter \( \varphi(t) \). More...
 

Public Member Functions

 HullWhite (const Handle< YieldTermStructure > &termStructure, Real a=0.1, Real sigma=0.01)
 
ext::shared_ptr< Latticetree (const TimeGrid &grid) const override
 Return by default a trinomial recombining tree. More...
 
ext::shared_ptr< ShortRateDynamicsdynamics () const override
 returns the short-rate dynamics More...
 
Real discountBondOption (Option::Type type, Real strike, Time maturity, Time bondMaturity) const override
 
Real discountBondOption (Option::Type type, Real strike, Time maturity, Time bondStart, Time bondMaturity) const override
 
- Public Member Functions inherited from Vasicek
 Vasicek (Rate r0=0.05, Real a=0.1, Real b=0.05, Real sigma=0.01, Real lambda=0.0)
 
Real discountBondOption (Option::Type type, Real strike, Time maturity, Time bondMaturity) const override
 
ext::shared_ptr< ShortRateDynamicsdynamics () const override
 returns the short-rate dynamics More...
 
Real a () const
 
Real b () const
 
Real lambda () const
 
Real sigma () const
 
Real r0 () const
 
- Public Member Functions inherited from OneFactorAffineModel
 OneFactorAffineModel (Size nArguments)
 
Real discountBond (Time now, Time maturity, Array factors) const override
 
Real discountBond (Time now, Time maturity, Rate rate) const
 
DiscountFactor discount (Time t) const override
 Implied discount curve. More...
 
- Public Member Functions inherited from OneFactorModel
 OneFactorModel (Size nArguments)
 
 ~OneFactorModel () override=default
 
virtual ext::shared_ptr< ShortRateDynamicsdynamics () const =0
 returns the short-rate dynamics More...
 
ext::shared_ptr< Latticetree (const TimeGrid &grid) const override
 Return by default a trinomial recombining tree. More...
 
- Public Member Functions inherited from ShortRateModel
 ShortRateModel (Size nArguments)
 
virtual ext::shared_ptr< Latticetree (const TimeGrid &) const =0
 
- Public Member Functions inherited from CalibratedModel
 CalibratedModel (Size nArguments)
 
void update () override
 
virtual void calibrate (const std::vector< ext::shared_ptr< CalibrationHelper > > &, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >(), const std::vector< bool > &fixParameters=std::vector< bool >())
 Calibrate to a set of market instruments (usually caps/swaptions) More...
 
Real value (const Array &params, const std::vector< ext::shared_ptr< CalibrationHelper > > &)
 
const ext::shared_ptr< Constraint > & constraint () const
 
EndCriteria::Type endCriteria () const
 Returns end criteria result. More...
 
const ArrayproblemValues () const
 Returns the problem values. More...
 
Array params () const
 Returns array of arguments on which calibration is done. More...
 
virtual void setParams (const Array &params)
 
Integer functionEvaluation () const
 
- Public Member Functions inherited from Observer
 Observer ()=default
 
 Observer (const Observer &)
 
Observeroperator= (const Observer &)
 
virtual ~Observer ()
 
std::pair< iterator, boolregisterWith (const ext::shared_ptr< Observable > &)
 
void registerWithObservables (const ext::shared_ptr< Observer > &)
 
Size unregisterWith (const ext::shared_ptr< Observable > &)
 
void unregisterWithAll ()
 
virtual void update ()=0
 
virtual void deepUpdate ()
 
- Public Member Functions inherited from Observable
 Observable ()
 
 Observable (const Observable &)
 
Observableoperator= (const Observable &)
 
 Observable (Observable &&)=delete
 
Observableoperator= (Observable &&)=delete
 
virtual ~Observable ()=default
 
void notifyObservers ()
 
virtual DiscountFactor discount (Time t) const =0
 Implied discount curve. More...
 
virtual Real discountBond (Time now, Time maturity, Array factors) const =0
 
virtual Real discountBondOption (Option::Type type, Real strike, Time maturity, Time bondMaturity) const =0
 
virtual Real discountBondOption (Option::Type type, Real strike, Time maturity, Time bondStart, Time bondMaturity) const
 
- Public Member Functions inherited from TermStructureConsistentModel
 TermStructureConsistentModel (Handle< YieldTermStructure > termStructure)
 
const Handle< YieldTermStructure > & termStructure () const
 

Static Public Member Functions

static Rate convexityBias (Real futurePrice, Time t, Time T, Real sigma, Real a)
 
static std::vector< boolFixedReversion ()
 

Protected Member Functions

void generateArguments () override
 
Real A (Time t, Time T) const override
 
- Protected Member Functions inherited from Vasicek
Real A (Time t, Time T) const override
 
Real B (Time t, Time T) const override
 
virtual Real A (Time t, Time T) const =0
 
virtual Real B (Time t, Time T) const =0
 
virtual void generateArguments ()
 

Private Attributes

Parameter phi_
 

Additional Inherited Members

- Public Types inherited from Observer
typedef set_type::iterator iterator
 
- Protected Attributes inherited from Vasicek
Real r0_
 
Parametera_
 
Parameterb_
 
Parametersigma_
 
Parameterlambda_
 
- Protected Attributes inherited from CalibratedModel
std::vector< Parameterarguments_
 
ext::shared_ptr< Constraintconstraint_
 
EndCriteria::Type shortRateEndCriteria_ = EndCriteria::None
 
Array problemValues_
 
Integer functionEvaluation_
 

Detailed Description

Single-factor Hull-White (extended Vasicek) model class.

This class implements the standard single-factor Hull-White model defined by

\[ dr_t = (\theta(t) - \alpha r_t)dt + \sigma dW_t \]

where \( \alpha \) and \( \sigma \) are constants.

Tests:
calibration results are tested against cached values
Bug:
When the term structure is relinked, the r0 parameter of the underlying Vasicek model is not updated.

Definition at line 49 of file hullwhite.hpp.

Constructor & Destructor Documentation

◆ HullWhite()

HullWhite ( const Handle< YieldTermStructure > &  termStructure,
Real  a = 0.1,
Real  sigma = 0.01 
)

Definition at line 31 of file hullwhite.cpp.

+ Here is the call graph for this function:

Member Function Documentation

◆ tree()

ext::shared_ptr< Lattice > tree ( const TimeGrid grid) const
overridevirtual

Return by default a trinomial recombining tree.

Reimplemented from OneFactorModel.

Definition at line 43 of file hullwhite.cpp.

+ Here is the call graph for this function:

◆ dynamics()

ext::shared_ptr< OneFactorModel::ShortRateDynamics > dynamics ( ) const
overridevirtual

returns the short-rate dynamics

Implements OneFactorModel.

Definition at line 163 of file hullwhite.hpp.

+ Here is the call graph for this function:

◆ discountBondOption() [1/2]

Real discountBondOption ( Option::Type  type,
Real  strike,
Time  maturity,
Time  bondMaturity 
) const
overridevirtual

Implements AffineModel.

Definition at line 89 of file hullwhite.cpp.

+ Here is the call graph for this function:

◆ discountBondOption() [2/2]

Real discountBondOption ( Option::Type  type,
Real  strike,
Time  maturity,
Time  bondStart,
Time  bondMaturity 
) const
overridevirtual

Reimplemented from AffineModel.

Definition at line 107 of file hullwhite.cpp.

+ Here is the call graph for this function:

◆ convexityBias()

Rate convexityBias ( Real  futurePrice,
Time  t,
Time  T,
Real  sigma,
Real  a 
)
static

Futures convexity bias (i.e., the difference between futures implied rate and forward rate) calculated as in G. Kirikos, D. Novak, "Convexity Conundrums", Risk Magazine, March 1997.

Note
t and T should be expressed in yearfraction using deposit day counter, F_quoted is futures' market price.

Definition at line 133 of file hullwhite.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ FixedReversion()

static std::vector< bool > FixedReversion ( )
static

Definition at line 83 of file hullwhite.hpp.

◆ generateArguments()

void generateArguments ( )
overrideprotectedvirtual

Reimplemented from CalibratedModel.

Definition at line 85 of file hullwhite.cpp.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ A()

Real A ( Time  t,
Time  T 
) const
overrideprotectedvirtual

Implements OneFactorAffineModel.

Definition at line 75 of file hullwhite.cpp.

+ Here is the call graph for this function:

Member Data Documentation

◆ phi_

Parameter phi_
private

Definition at line 98 of file hullwhite.hpp.