QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
Classes
Short-rate modelling framework

Classes

class  GeneralizedHullWhite
 Generalized Hull-White model class. More...
 
class  AffineModel
 Affine model class. More...
 
class  TermStructureConsistentModel
 Term-structure consistent model class. More...
 
class  ShortRateModel
 Abstract short-rate model class. More...
 
class  OneFactorModel
 Single-factor short-rate model abstract class. More...
 
class  OneFactorAffineModel
 Single-factor affine base class. More...
 
class  BlackKarasinski
 Standard Black-Karasinski model class. More...
 
class  CoxIngersollRoss
 Cox-Ingersoll-Ross model class. More...
 
class  ExtendedCoxIngersollRoss
 Extended Cox-Ingersoll-Ross model class. More...
 
class  HullWhite
 Single-factor Hull-White (extended Vasicek) model class. More...
 
class  Vasicek
 Vasicek model class More...
 
class  TwoFactorModel
 Abstract base-class for two-factor models. More...
 
class  G2
 Two-additive-factor gaussian model class. More...
 

Detailed Description

This framework (corresponding to the ql/models/shortrate directory) implements some single-factor and two-factor short rate models. The models implemented in this library are widely used by practitioners. For the moment, the ShortRateModel class defines the short-rate dynamics with stochastic equations of the type

\[ dx_i = \mu(t,x_i) dt + \sigma(t,x_i) dW_t \]

where \( r = f(t,x) \). If the model is affine (i.e. derived from the QuantLib::AffineModel class), analytical formulas for discount bonds and discount bond options are given (useful for calibration).

Single-factor models

The Hull & White model

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

When \( \alpha \) and \( \sigma \) are constants, this model has analytical formulas for discount bonds and discount bond options.
The Black-Karasinski model

\[ d\ln{r_t} = (\theta(t) - \alpha \ln{r_t})dt + \sigma dW_t \]

No analytical tractability here.
The extended Cox-Ingersoll-Ross model

\[ dr_t = (\theta(t) - k r_t)dt + \sigma \sqrt{r_t} dW_t \]

There are analytical formulas for discount bonds (and soon for discount bond options).

Calibration

The class CalibrationHelper is a base class that facilitates the instantiation of market instruments used for calibration. It has a method marketValue() that gives the market price using a Black formula, and a modelValue() method that gives the price according to a model

Derived classed are QuantLib::CapHelper and QuantLib::SwaptionHelper.

For the calibration itself, you must choose an optimization method that will find constant parameters such that the value:

\[ V = \sqrt{\sum_{i=1}^{n} \frac{(T_i - M_i)^2}{M_i}}, \]

where \( T_i \) is the price given by the model and \( M_i \) is the market price, is minimized. A few optimization methods are available in the ql/Optimization directory.

Two-factor models

Pricers

Analytical pricers

If the model is affine, i.e. discount bond options formulas exist, caps are easily priced since they are a portfolio of discount bond options. Such a pricer is implemented in QuantLib::AnalyticalCapFloor. In the case of single-factor affine models, swaptions can be priced using the Jamshidian decomposition, implemented in QuantLib::JamshidianSwaption.

Using Trees

Each model derived from the single-factor model class has the ability to return a trinomial tree. For yield-curve consistent models, the fitting parameter can be determined either analytically (when possible) or numerically. When a tree is built, it is then pretty straightforward to implement a pricer for any path-independent derivative. Just implement a class derived from NumericalDerivative (see QuantLib::NumericalSwaption for example) and roll it back until the present time... Just look at QuantLib::TreeCapFloor and QuantLib::TreeSwaption for working pricers.