Lattice methods
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
At each node, there is a probability and
to go through respectively the upper, the middle and the lower branch. These probabilities must satisfy
and
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, and
. If we suppose that the variance is only dependant on time
and set
to
, we find that
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:- Define the initialisation procedure (e.g. terminal payoff for european stock options).
- 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.
Classes | |
class | BinomialTree |
Binomial tree base class. More... | |
class | EqualProbabilitiesBinomialTree |
Base class for equal probabilities binomial tree. More... | |
class | EqualJumpsBinomialTree |
Base class for equal jumps binomial tree. More... | |
class | JarrowRudd |
Jarrow-Rudd (multiplicative) equal probabilities binomial tree. More... | |
class | CoxRossRubinstein |
Cox-Ross-Rubinstein (multiplicative) equal jumps binomial tree. More... | |
class | AdditiveEQPBinomialTree |
Additive equal probabilities binomial tree. More... | |
class | Trigeorgis |
Trigeorgis (additive equal jumps) binomial tree More... | |
class | Tian |
Tian tree: third moment matching, multiplicative approach More... | |
class | LeisenReimer |
Leisen & Reimer tree: multiplicative approach. More... | |
class | BlackScholesLattice |
Simple binomial lattice approximating the Black-Scholes model. More... | |
class | TreeLattice |
Tree-based lattice-method base class. More... | |
class | TreeLattice1D |
One-dimensional tree-based lattice. More... | |
class | TreeLattice2D |
Two-dimensional tree-based lattice. More... | |
class | TsiveriotisFernandesLattice |
Binomial lattice approximating the Tsiveriotis-Fernandes model. More... | |
class | Tree |
Tree approximating a single-factor diffusion More... | |
class | TrinomialTree |
Recombining trinomial tree class. More... |