Logo
Reference manual - version qle_version
Public Types | Public Member Functions | List of all members
LinearGaussMarkovModel Class Reference

Linear Gauss Morkov Model. More...

#include <qle/models/lgm.hpp>

+ Inheritance diagram for LinearGaussMarkovModel:

Public Types

enum class  Discretization { Euler , Exact }
 
- Public Types inherited from IrModel
enum class  Measure { LGM , BA }
 

Public Member Functions

 LinearGaussMarkovModel (const boost::shared_ptr< IrLgm1fParametrization > &parametrization, const Measure measure=Measure::LGM, const Discretization=Discretization::Euler, const bool evaluateBankAccount=true, const boost::shared_ptr< Integrator > &integrator=boost::make_shared< SimpsonIntegral >(1.0E-8, 100))
 
Measure measure () const override
 IrModel interface.
 
const boost::shared_ptr< ParametrizationparametrizationBase () const override
 
Handle< YieldTermStructure > termStructure () const override
 
Size n () const override
 
Size m () const override
 
Size n_aux () const override
 
Size m_aux () const override
 
boost::shared_ptr< StochasticProcessstateProcess () const override
 
QuantLib::Real discountBond (const QuantLib::Time t, const QuantLib::Time T, const QuantLib::Array &x, const QuantLib::Handle< QuantLib::YieldTermStructure > &discountCurve=Handle< YieldTermStructure >()) const override
 
QuantLib::Real numeraire (const QuantLib::Time t, const QuantLib::Array &x, const QuantLib::Handle< QuantLib::YieldTermStructure > &discountCurve=Handle< YieldTermStructure >(), const QuantLib::Array &aux=Array()) const override
 
QuantLib::Real shortRate (const QuantLib::Time t, const QuantLib::Array &x, const QuantLib::Handle< QuantLib::YieldTermStructure > &discountCurve=Handle< YieldTermStructure >()) const override
 
const boost::shared_ptr< IrLgm1fParametrizationparametrization () const
 LGM specific methods.
 
Real numeraire (const Time t, const Real x, const Handle< YieldTermStructure > discountCurve=Handle< YieldTermStructure >()) const
 
Real bankAccountNumeraire (const Time t, const Real x, const Real y, const Handle< YieldTermStructure > discountCurve=Handle< YieldTermStructure >()) const
 
Real discountBond (const Time t, const Time T, const Real x, Handle< YieldTermStructure > discountCurve=Handle< YieldTermStructure >()) const
 
Real reducedDiscountBond (const Time t, const Time T, const Real x, const Handle< YieldTermStructure > discountCurve=Handle< YieldTermStructure >()) const
 
Real discountBondOption (Option::Type type, const Real K, const Time t, const Time S, const Time T, Handle< YieldTermStructure > discountCurve=Handle< YieldTermStructure >()) const
 
void calibrateVolatilitiesIterative (const std::vector< boost::shared_ptr< BlackCalibrationHelper >> &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
 
void calibrateReversionsIterative (const std::vector< boost::shared_ptr< BlackCalibrationHelper >> &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
 
void calibrateVolatilities (const std::vector< boost::shared_ptr< BlackCalibrationHelper >> &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
 
void calibrateReversions (const std::vector< boost::shared_ptr< BlackCalibrationHelper >> &helpers, OptimizationMethod &method, const EndCriteria &endCriteria, const Constraint &constraint=Constraint(), const std::vector< Real > &weights=std::vector< Real >())
 
void update () override
 
void generateArguments () override
 
std::vector< bool > MoveVolatility (const Size i)
 
std::vector< bool > MoveReversion (const Size i)
 
void setCalibrationInfo (const LgmCalibrationInfo &calibrationInfo)
 
const LgmCalibrationInfogetCalibrationInfo () const
 
- Public Member Functions inherited from LinkableCalibratedModel
void update () override
 
virtual void calibrate (const std::vector< boost::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...
 
virtual void calibrate (const std::vector< boost::shared_ptr< BlackCalibrationHelper > > &, 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 >())
 for backward compatibility
 
Real value (const Array &params, const std::vector< boost::shared_ptr< CalibrationHelper > > &)
 
Real value (const Array &params, const std::vector< boost::shared_ptr< BlackCalibrationHelper > > &)
 for backward compatibility
 
const boost::shared_ptr< Constraint > & constraint () const
 
EndCriteria::Type endCriteria () const
 Returns end criteria result.
 
const Array & problemValues () const
 Returns the problem values.
 
Array params () const
 Returns array of arguments on which calibration is done.
 
virtual void setParams (const Array &params)
 

Additional Inherited Members

- Protected Attributes inherited from LinkableCalibratedModel
std::vector< boost::shared_ptr< Parameter > > arguments_
 
boost::shared_ptr< Constraintconstraint_
 
EndCriteria::Type endCriteria_
 
Array problemValues_
 

Detailed Description

Linear Gauss Morkov Model.

LGM 1f interest rate model Basically the same remarks as for CrossAssetModel hold

Member Function Documentation

◆ parametrizationBase()

const boost::shared_ptr<Parametrization> parametrizationBase ( ) const
overridevirtual

parametrization (as base class)

Implements IrModel.

◆ termStructure()

Handle<YieldTermStructure> termStructure ( ) const
overridevirtual

yield term structure to which the IrModel is (initially) calibrated

Implements IrModel.

◆ n()

Size n ( ) const
overridevirtual

dimension of model state, excluding auxilliary states

Implements IrModel.

◆ m()

Size m ( ) const
overridevirtual

number of Brownians to evolve the state

Implements IrModel.

◆ n_aux()

Size n_aux ( ) const
overridevirtual

(effective) dimension of auxilliary state, typically to evaluate the numeraire in the BA-measure

Implements IrModel.

◆ m_aux()

Size m_aux ( ) const
overridevirtual

(effective) number of Brownians required to evolve the auxilliary state, typcially for exact discretization schemes

Implements IrModel.

◆ stateProcess()

boost::shared_ptr< StochasticProcess > stateProcess ( ) const
overridevirtual

stochastic process, this has dimension n() + n_aux() and m() + m_aux() Brownian drivers

Implements IrModel.

◆ discountBond()

QuantLib::Real discountBond ( const QuantLib::Time  t,
const QuantLib::Time  T,
const QuantLib::Array &  x,
const QuantLib::Handle< QuantLib::YieldTermStructure > &  discountCurve = Handle< YieldTermStructure >() 
) const
overridevirtual

discount bond depending on state (of dimension n())

Implements IrModel.

◆ numeraire()

QuantLib::Real numeraire ( const QuantLib::Time  t,
const QuantLib::Array &  x,
const QuantLib::Handle< QuantLib::YieldTermStructure > &  discountCurve = Handle< YieldTermStructure >(),
const QuantLib::Array &  aux = Array() 
) const
overridevirtual

numeraire depending on state and aux state (of dimensions n(), n_aux()

Implements IrModel.

◆ shortRate()

QuantLib::Real shortRate ( const QuantLib::Time  t,
const QuantLib::Array &  x,
const QuantLib::Handle< QuantLib::YieldTermStructure > &  discountCurve = Handle< YieldTermStructure >() 
) const
overridevirtual

short rate at t

Implements IrModel.

◆ bankAccountNumeraire()

Real bankAccountNumeraire ( const Time  t,
const Real  x,
const Real  y,
const Handle< YieldTermStructure >  discountCurve = Handle< YieldTermStructure >() 
) const

Bank account measure numeraire B(t) as a function of LGM state variable x (with drift) and auxiliary state variable y

◆ calibrateVolatilitiesIterative()

void calibrateVolatilitiesIterative ( const std::vector< boost::shared_ptr< BlackCalibrationHelper >> &  helpers,
OptimizationMethod method,
const EndCriteria &  endCriteria,
const Constraint constraint = Constraint(),
const std::vector< Real > &  weights = std::vector<Real>() 
)

calibrate volatilities to a sequence of ir options with expiry times equal to step times in the parametrization

◆ calibrateReversionsIterative()

void calibrateReversionsIterative ( const std::vector< boost::shared_ptr< BlackCalibrationHelper >> &  helpers,
OptimizationMethod method,
const EndCriteria &  endCriteria,
const Constraint constraint = Constraint(),
const std::vector< Real > &  weights = std::vector<Real>() 
)

calibrate reversion to a sequence of ir options with maturities equal to step times in the parametrization

◆ calibrateVolatilities()

void calibrateVolatilities ( const std::vector< boost::shared_ptr< BlackCalibrationHelper >> &  helpers,
OptimizationMethod method,
const EndCriteria &  endCriteria,
const Constraint constraint = Constraint(),
const std::vector< Real > &  weights = std::vector<Real>() 
)

calibrate volatilities globally

◆ calibrateReversions()

void calibrateReversions ( const std::vector< boost::shared_ptr< BlackCalibrationHelper >> &  helpers,
OptimizationMethod method,
const EndCriteria &  endCriteria,
const Constraint constraint = Constraint(),
const std::vector< Real > &  weights = std::vector<Real>() 
)

calibrate volatilities globally

◆ update()

void update ( )
override

observer and linked calibrated model interface

◆ MoveVolatility()

std::vector<bool> MoveVolatility ( const Size  i)

calibration constraints, these can be used directly, or through the customized calibrate methods above

◆ setCalibrationInfo()

void setCalibrationInfo ( const LgmCalibrationInfo calibrationInfo)

set info on how the model was calibrated

◆ getCalibrationInfo()

const LgmCalibrationInfo& getCalibrationInfo ( ) const

get info on how the model was calibrated