QuantLib
: a free/open-source library for quantitative finance
fully annotated source code - version 1.38
Loading...
Searching...
No Matches
pages
lattices.docs
Go to the documentation of this file.
1
2
/*
3
Copyright (C) 2002, 2003 Sadruddin Rejeb
4
5
This file is part of QuantLib, a free-software/open-source library
6
for financial quantitative analysts and developers - http://quantlib.org/
7
8
QuantLib is free software: you can redistribute it and/or modify it
9
under the terms of the QuantLib license. You should have received a
10
copy of the license along with this program; if not, please email
11
<quantlib-dev@lists.sf.net>. The license is also available online at
12
<http://quantlib.org/license.shtml>.
13
14
This program is distributed in the hope that it will be useful, but WITHOUT
15
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16
FOR A PARTICULAR PURPOSE. See the license for more details.
17
*/
18
19
/*! \defgroup lattices Lattice methods
20
21
The framework (corresponding to the ql/methods/lattices directory)
22
contains basic building blocks for pricing instruments using lattice
23
methods (trees). A lattice, i.e. an instance of the abstract class
24
QuantLib::Lattice, relies on one or several trees (each one
25
approximating a diffusion process) to price an instance of the
26
DiscretizedAsset class. Trees are instances of classes derived from
27
QuantLib::Tree, classes which define the branching between
28
nodes and transition probabilities.
29
30
\section binomial Binomial trees
31
The binomial method is the simplest numerical method that can be used to
32
price path-independent derivatives. It is usually the preferred lattice
33
method under the Black-Scholes-Merton model. As an example, let's see
34
the framework implemented in the bsmlattice.hpp file. It is a method
35
based on a binomial tree, with constant short-rate (discounting).
36
There are several approaches to build the underlying binomial tree, like
37
Jarrow-Rudd or Cox-Ross-Rubinstein.
38
39
\section trinomial Trinomial trees
40
When the underlying stochastic process has a mean-reverting pattern, it is
41
usually better to use a trinomial tree instead of a binomial tree. An
42
example is implemented in the QuantLib::TrinomialTree class,
43
which is constructed using a diffusion process and a time-grid. The goal is
44
to build a recombining trinomial tree that will discretize, at a finite set
45
of times, the possible evolutions of a random variable \f$ y \f$ satisfying
46
\f[
47
dy_t = \mu(t, y_t) dt + \sigma(t, y_t) dW_t.
48
\f]
49
At each node, there is a probability \f$ p_u, p_m \f$ and \f$ p_d \f$ to go
50
through respectively the upper, the middle and the lower branch.
51
These probabilities must satisfy
52
\f[
53
p_{u}y_{i+1,k+1}+p_{m}y_{i+1,k}+p_{d}y_{i+1,k-1}=E_{i,j}
54
\f]
55
and
56
\f[
57
p_u y_{i+1,k+1}^2 + p_m y_{i+1,k}^2 + p_d y_{i+1,k-1}^2 =
58
V^2_{i,j}+E_{i,j}^2,
59
\f]
60
where k (the index of the node at the end of the middle branch)
61
is the index of the node which is the nearest to the expected future
62
value, \f$ E_{i,j}=\mathbf{E}\left( y(t_{i+1})|y(t_{i})=y_{i,j}\right) \f$
63
and \f$ V_{i,j}^{2}=\mathbf{Var}\{y(t_{i+1})|y(t_{i})=y_{i,j}\} \f$.
64
If we suppose that the variance is only dependant on time
65
\f$ V_{i,j}=V_{i} \f$ and set \f$ y_{i+1} \f$ to \f$ V_{i}\sqrt{3} \f$,
66
we find that
67
\f[
68
p_{u} = \frac{1}{6}+\frac{(E_{i,j}-y_{i+1,k})^{2}}{6V_{i}^{2}} +
69
\frac{E_{i,j}-y_{i+1,k}}{2\sqrt{3}V_{i}},
70
\f]
71
\f[
72
p_{m} = \frac{2}{3}-\frac{(E_{i,j}-y_{i+1,k})^{2}}{3V_{i}^{2}},
73
\f]
74
\f[
75
p_{d} = \frac{1}{6}+\frac{(E_{i,j}-y_{i+1,k})^{2}}{6V_{i}^{2}} -
76
\frac{E_{i,j}-y_{i+1,k}}{2\sqrt{3}V_{i}}.
77
\f]
78
79
\section bidimensional Bidimensional lattices
80
To come...
81
82
\section discretizedasset The QuantLib::DiscretizedAsset class
83
84
This class is a representation of the price of a derivative at a specific
85
time. It is roughly an array of values, each value being associated to a
86
state of the underlying stochastic variables. For the moment, it is only
87
used when working with trees, but it should be quite easy to make a use
88
of it in finite-differences methods. The two main points, when deriving
89
classes from QuantLib::DiscretizedAsset, are:
90
-# Define the initialisation procedure (e.g. terminal payoff for european
91
stock options).
92
-# Define the method adjusting values, when necessary, at each time steps
93
(e.g. apply the step condition for american or bermudan options).
94
Some examples are found in QuantLib::DiscretizedSwap and
95
QuantLib::DiscretizedSwaption.
96
*/
Generated by
Doxygen
1.9.5