 
| 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... | |
This framework (corresponding to the ql/ShortRateModels directory) implements some single-factor and two-factor short rate models. The models implemented in this library are widely used by practitionners. For the moment, the ShortRateModels::Model 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 \]](form_0.png) 
 where  . 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).
. 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).
![\[ dr_t = (\theta(t) - \alpha(t) r_t)dt + \sigma(t) dW_t \]](form_2.png) 
 and
 and  are constants, this model has analytical formulas for discount bonds and discount bond options.
 are constants, this model has analytical formulas for discount bonds and discount bond options.
![\[ d\ln{r_t} = (\theta(t) - \alpha \ln{r_t})dt + \sigma dW_t \]](form_5.png) 
![\[ dr_t = (\theta(t) - k r_t)dt + \sigma \sqrt{r_t} dW_t \]](form_6.png) 
The class CalibrationHelper is a base class that facilitates the instanciation 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}}, \]](form_7.png) 
 where  is the price given by the model and
 is the price given by the model and  is the market price, is minimized. A few optimization methods are available in the ql/Optimization directory.
 is the market price, is minimized. A few optimization methods are available in the ql/Optimization directory.
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.
(Doesn't work for the moment) For the moment, this is only available for single-factor affine models. If  is the state variable and follows this stochastic process:
 is the state variable and follows this stochastic process: 
![\[ dx_t = \mu(t,x)dt + \sigma(t,x)dW_t \]](form_11.png) 
any european-style instrument will follow the following PDE:
![\[ \frac{\partial P}{\partial t} + \mu \frac{\partial P}{\partial x} + \frac{1}{2} \sigma^2 \frac{\partial^2 P}{\partial x^2} = r(t,x)P \]](form_12.png) 
The adequate operator to feed a Finite Difference Model instance is defined in the QuantLib::OneFactorOperator class.
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-independant 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.