# lattices (3) - Linux Manuals

## NAME

Lattice methods -

### Classes

class **ExtendedBinomialTree< T >**

*Binomial tree base class. *

class **ExtendedEqualProbabilitiesBinomialTree< T >**

*Base class for equal probabilities binomial tree. *

class **ExtendedEqualJumpsBinomialTree< T >**

*Base class for equal jumps binomial tree. *

class **ExtendedJarrowRudd**

*Jarrow-Rudd (multiplicative) equal probabilities binomial tree. *

class **ExtendedCoxRossRubinstein**

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

class **ExtendedAdditiveEQPBinomialTree**

*Additive equal probabilities binomial tree. *

class **ExtendedTrigeorgis**

*Trigeorgis (additive equal jumps) binomial tree *

class **ExtendedTian**

*Tian tree: third moment matching, multiplicative approach *

class **ExtendedLeisenReimer**

*Leisen & Reimer tree: multiplicative approach. *

class **BinomialTree< T >**

*Binomial tree base class. *

class **EqualProbabilitiesBinomialTree< T >**

*Base class for equal probabilities binomial tree. *

class **EqualJumpsBinomialTree< T >**

*Base class for equal jumps binomial tree. *

class **JarrowRudd**

*Jarrow-Rudd (multiplicative) equal probabilities binomial tree. *

class **CoxRossRubinstein**

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

class **AdditiveEQPBinomialTree**

*Additive equal probabilities binomial tree. *

class **Trigeorgis**

*Trigeorgis (additive equal jumps) binomial tree *

class **Tian**

*Tian tree: third moment matching, multiplicative approach *

class **LeisenReimer**

*Leisen & Reimer tree: multiplicative approach. *

class **BlackScholesLattice< T >**

*Simple binomial lattice approximating the Black-Scholes model. *

class **TreeLattice< Impl >**

*Tree-based lattice-method base class. *

class **TreeLattice1D< Impl >**

*One-dimensional tree-based lattice. *

class **TreeLattice2D< Impl, T >**

*Two-dimensional tree-based lattice. *

class **TsiveriotisFernandesLattice< T >**

*Binomial lattice approximating the Tsiveriotis-Fernandes model. *

class **Tree< T >**

*Tree approximating a single-factor diffusion *

class **TrinomialTree**

*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 + igma(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}

suppose that the variance is only dependant on time $ V_{i,j}=V_{i} $ and set $ y_{i+1} $ to $ V_{i}qrt{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}}{2qrt{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}}{2qrt{3}V_{i}}. ]

## Bidimensional lattices

## 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.