# lattices man page

lattices — Lattice methods

### Classes

classTsiveriotisFernandesLattice< T >

Binomial lattice approximating the Tsiveriotis-Fernandes model.

classExtendedBinomialTree< T >

Binomial tree base class.

classExtendedEqualProbabilitiesBinomialTree< T >

Base class for equal probabilities binomial tree.

classExtendedEqualJumpsBinomialTree< T >

Base class for equal jumps binomial tree.

classExtendedJarrowRudd

Jarrow-Rudd (multiplicative) equal probabilities binomial tree.

classExtendedCoxRossRubinstein

Cox-Ross-Rubinstein (multiplicative) equal jumps binomial tree.

classExtendedAdditiveEQPBinomialTree

Additive equal probabilities binomial tree.

classExtendedTrigeorgis

Trigeorgis (additive equal jumps) binomial tree

classExtendedTian

Tian tree: third moment matching, multiplicative approach

classExtendedLeisenReimer

Leisen & Reimer tree: multiplicative approach.

classBinomialTree< T >

Binomial tree base class.

classEqualProbabilitiesBinomialTree< T >

Base class for equal probabilities binomial tree.

classEqualJumpsBinomialTree< T >

Base class for equal jumps binomial tree.

classJarrowRudd

Jarrow-Rudd (multiplicative) equal probabilities binomial tree.

classCoxRossRubinstein

Cox-Ross-Rubinstein (multiplicative) equal jumps binomial tree.

classAdditiveEQPBinomialTree

Additive equal probabilities binomial tree.

classTrigeorgis

Trigeorgis (additive equal jumps) binomial tree

classTian

Tian tree: third moment matching, multiplicative approach

classLeisenReimer

Leisen & Reimer tree: multiplicative approach.

classBlackScholesLattice< T >

Simple binomial lattice approximating the Black-Scholes model.

classTreeLattice< Impl >

Tree-based lattice-method base class.

classTreeLattice1D< Impl >

One-dimensional tree-based lattice.

classTreeLattice2D< Impl, T >

Two-dimensional tree-based lattice.

classTree< T >

Tree approximating a single-factor diffusion

classTrinomialTree

Recombining trinomial tree class.

## Detailed Description

The framework (corresponding to the ql/Lattices directory) contains basic building blocks for pricing instruments using lattice methods (trees). A lattice, i.e. an instance of the abstract class **QuantLib::Lattice**, relies on one or several trees (each one approximating a diffusion process) to price an instance of the DiscretizedAsset class. Trees are instances of classes derived from **QuantLib::Tree**, classes which define the branching between nodes and transition probabilities.

## Binomial trees

The binomial method is the simplest numerical method that can be used to price path-independent derivatives. It is usually the preferred lattice method under the Black-Scholes-Merton model. As an example, let's see the framework implemented in the bsmlattice.hpp file. It is a method based on a binomial tree, with constant short-rate (discounting). There are several approaches to build the underlying binomial tree, like Jarrow-Rudd or Cox-Ross-Rubinstein.

## Trinomial trees

When the underlying stochastic process has a mean-reverting pattern, it is usually better to use a trinomial tree instead of a binomial tree. An example is implemented in the **QuantLib::TrinomialTree** class, which is constructed using a diffusion process and a time-grid. The goal is to build a recombining trinomial tree that will discretize, at a finite set of times, the possible evolutions of a random variable $ y $ satisfying [ dy_t = mu(t, y_t) dt + sigma(t, y_t) dW_t. ] At each node, there is a probability $ p_u, p_m $ and $ p_d $ to go through respectively the upper, the middle and the lower branch. These probabilities must satisfy [ p_{u}y_{i+1,k+1}+p_{m}y_{i+1,k}+p_{d}y_{i+1,k-1}=E_{i,j} ] and [ p_u y_{i+1,k+1}^2 + p_m y_{i+1,k}^2 + p_d y_{i+1,k-1}^2 = V^2_{i,j}+E_{i,j}^2, ] where k (the index of the node at the end of the middle branch) is the index of the node which is the nearest to the expected future value, $ E_{i,j}=mathbf{E}left( y(t_{i+1})|y(t_{i})=y_{i,j}right) $ and $ V_{i,j}^{2}=mathbf{Var}y(t_{i+1})|y(t_{i})=y_{i,j} $. If we suppose that the variance is only dependant on time $ V_{i,j}=V_{i} $ and set $ y_{i+1} $ to $ V_{i}sqrt{3} $, we find that [ p_{u} = ac{1}{6}+ac{(E_{i,j}-y_{i+1,k})^{2}}{6V_{i}^{2}} + ac{E_{i,j}-y_{i+1,k}}{2sqrt{3}V_{i}}, ] [ p_{m} = ac{2}{3}-ac{(E_{i,j}-y_{i+1,k})^{2}}{3V_{i}^{2}}, ] [ p_{d} = ac{1}{6}+ac{(E_{i,j}-y_{i+1,k})^{2}}{6V_{i}^{2}} - ac{E_{i,j}-y_{i+1,k}}{2sqrt{3}V_{i}}. ]

## Bidimensional lattices

To come...

## The QuantLib::DiscretizedAsset class

This class is a representation of the price of a derivative at a specific time. It is roughly an array of values, each value being associated to a state of the underlying stochastic variables. For the moment, it is only used when working with trees, but it should be quite easy to make a use of it in finite-differences methods. The two main points, when deriving classes from **QuantLib::DiscretizedAsset**, are:

- 1.
- Define the initialisation procedure (e.g. terminal payoff for european stock options).
- 2.
- Define the method adjusting values, when necessary, at each time steps (e.g. apply the step condition for american or bermudan options). Some examples are found in QuantLib::DiscretizedSwap and QuantLib::DiscretizedSwaption.

## Author

Generated automatically by Doxygen for QuantLib from the source code.