File: overview.docs

package info (click to toggle)
quantlib 0.9.0.20071224-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 22,216 kB
  • ctags: 34,951
  • sloc: cpp: 167,744; ansic: 21,483; sh: 8,947; makefile: 3,327; lisp: 86
file content (317 lines) | stat: -rw-r--r-- 11,632 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317

/*
 Copyright (C) 2004 Ferdinando Ametrano
 Copyright (C) 2000-2003 StatPro Italia srl

 This file is part of QuantLib, a free-software/open-source library
 for financial quantitative analysts and developers - http://quantlib.org/

 QuantLib is free software: you can redistribute it and/or modify it
 under the terms of the QuantLib license.  You should have received a
 copy of the license along with this program; if not, please email
 <quantlib-dev@lists.sf.net>. The license is also available online at
 <http://quantlib.org/license.shtml>.

 This program is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 FOR A PARTICULAR PURPOSE.  See the license for more details.
*/

/*! \page overview Project overview

    The %QuantLib project is at this time in <em>beta</em> status.

    The following list is a (possibly outdated) overview of the
    existing code base.

    The <a href="http://lists.sourceforge.net/lists/listinfo/quantlib-users">
    QuantLib-users</a> and <a
    href="http://lists.sourceforge.net/lists/listinfo/quantlib-dev">
    QuantLib-dev</a> mailing lists are the preferred forum for proposals,
    suggestions and contributions regarding the future development of the
    library.




    <strong>Date, calendars, and day count conventions</strong>
    - Date class.
    - Weekday, month, frequency, time unit enumerations.
    - Period class (eg. 1y, 30d, 2m, etc.)
    - IMM calculation.
    - More than 30 business calendars.
    - NullCalendar (no holidays) for theoretical calculations.
    - Joint calendars made up as holiday union or intersection of base
      calendars.
    - Rolling conventions: Preceding, ModifiedPreceding, Following,
      ModifiedFollowing, MonthEndReference.
    - Schedule class for date stream generation.
    - Day count conventions: Actual360, Actual365Fixed, ActualActual (Bond,
      ISDA, AFB), 30/360 (US, European, Italian), 1/1.




    <strong>Math</strong>
    - Linear, log-linear, and cubic spline interpolation.
    - Primitive, first and second derivative functions of cubic and linear
      interpolators.
    - Cubic spline end conditions: first derivative value, second derivative
      value, not-a-knot.
    - Monotone cubic spline with Hyman non-restrictive filter.
    - Bicubic spline and bilinear interpolations.
    - N-dimensional cubic spline interpolation.
    - Normal and cumulative normal distributions.
    - Inverse cumulative normal distribution: Moro and Acklam approximations.
    - Bivariate cumulative normal distribution.
	- Binomial coefficients, binomial distribution,
	  cumulative binomial distribution, and	Peizer-Pratt inversion (method 2.)
	- Chi square and non-central chi square distributions.
	- Beta functions.
	- Poisson and cumulative Poisson distributions.
	- Incomplete gamma functions.
	- Gamma distribution.
	- Factorials.
    - Integration algorithms: segment, trapezoid, mid-point trapezoid,
      Simpson, Gauss-Kronrod.
    - Error function.
    - General 1-D statistics: mean, variance,
      standard deviation, skewness, kurtosis, error estimation, min, max.
    - Multi-dimensional (sequence) statistics: all the 1-D methods plus
      covariance, correlation, L2-discrepancy calculation, etc.
    - Risk measures for Gaussian and empirical distributions: semi-variance,
      regret, percentile, top percentile, value-at-risk, upside potential,
      shorfall, average shorfall, expected shortfall.
    - Array and matrix classes for algebra.
    - Singular value decomposition.
    - Eigenvalues, eigenvectors for symmetric matrices.
	- Cholesky decomposition.
	- Schur decomposition.
	- Spectral rank-reduced square root, spectral pseudo-square root.


    <strong>1-dimensional solvers</strong>
    - Bisection, false position, Newton, bounded Newton, Ridder, secant,
      Brent.




    <strong>Optimization</strong>
	- Conjugate gradient, simplex, steepest descent, line search,
      Armijo line search, least squares.
    - Constrained (positive, boundary, etc.) and unconstrained optimization




    <strong>Random-number generation</strong>
    - Uniform pseudo-random sequences: Knuth, L'Ecuyer, Mersenne twister.
    - Uniform quasi-random (low-discrepancy) sequences: Halton, Faure,
      Sobol up to dimension 21,200 (8,129,334 if you really want) with
      unit, Jckel, Bradley-Fox, and Lemieux-Cieslak-Luttmer
      initialization numbers.
    - Randomized quasi-random sequences (in progress)
    - Randomized (shifted) low-discrepancy sequences.
    - Primitive polynomials modulo 2 up to dimension 18 (available up
      to dimension 27)
    - Gaussian random numbers from uniform random numbers using different
      algorithms: central limit theorem, Box-Muller, inverse cumulative (Moro
      and Acklam algorithms)




    <strong>Patterns</strong>
	- Bridge, composite, lazy object, observer/observable, singleton,
      strategy, visitor.




    <strong>Finite differences</strong>
    - Mixed theta, implicit, explicit, and Crank-Nicolson 1-dimensional
      schemes.
    - Differential operators: \f$ D_{0} \f$, \f$ D_{+} \f$,
      \f$ D_{-} \f$, \f$ D_{+}D_{-} \f$.
    - Shout, Bermudan and American exercises.




    <strong>Lattices</strong>
    - Binomial trees: Cox-Ross-Rubinstein, Jarrow-Rudd, additive
      equiprobabilities, Trigeorgis, Tian, Leisen-Reimer.
    - Trinomial (interest-rate) tree.
    - Discretized asset.
    - Richardson extrapolation




    <strong>Monte Carlo</strong>
    - One-factor and multi-factor path classes.
    - Path-generator classes: incremental and Brownian-bridge one-factor
      path generation, incremental multi-factor path generation.
    - General-purpose Monte Carlo model based on traits for path
      samples.
    - Antithetic variance-reduction technique.
    - Control variate technique.




    <strong>Pricing engines</strong>
    - Analytic Black formula (plus greeks) for different payoffs.
    - Analytic formula for American-style digital options with payoff
      at expiry.
    - Analytic formula for American-style digital options with payoff at hit.
    - Monte Carlo simulation base engine.
    - Lattice short rate model base engine.
    - Engines for options described by "vanilla" set of parameters: analytic
      digital American, analytic discrete-dividend European,
      analytic European, Barone-Adesi and Whaley approximation for
      American, Ju approximation for American, binomial
      (Cox-Ross-Rubinstein, Jarrow-Rudd, additive equiprobabilities,
      Trigeorgis, Tian, Leisen-Reimer), Bjerksund and Stensland
      approximation for American, integral European, Merton 76
      jump-diffusion, Monte Carlo digital, Monte Carlo European,
      Bates and Heston models, finite-difference European, Bermudan
      and American.
    - Engines for options described by "barrier" set of parameters: analytic
      down/up in/out, Monte Carlo down/up in/out
    - Engines for Asian options:
      analytic discrete geometric average-price, analytic continuous
      geometric average-price, Monte Carlo discrete arithmetic
      average-price, Monte Carlo discrete geometric average-price.
    - Engines for options described by "cliquet" set of parameters:
      analytic, analytic performance.
    - Forward and forward-performance compound engines.
    - Quanto compound engine.
    - Quanto-forward and Quanto-forward-performance compound engines.
    - Basket engine: analytic Stulz engine for max/min on two assets, Monte
      Carlo engine (in progress).
    - Black model base class for vanilla interest rate derivatives
    - Cap/floor pricing engines: analytic Black model, analytic affine models,
      tree based engine.
    - Swaption pricing engines: analytic Black model, analytic affine models
      (Jamshidian), tree based engine.




    <strong>Pricers</strong>
    - Cliquet option
    - Analytic discrete geometric average-price option (European exercise).
    - Analytic discrete geometric average-strike option (European exercise).
    - Monte Carlo cliquet option.
    - Monte Carlo discrete arithmetic average-price option.
    - Monte Carlo discrete arithmetic average-strike option.
    - Monte Carlo Everest option.
    - Monte Carlo Himalaya option.
    - Monte Carlo max basket option.
    - Monte Carlo pagoda option.
    - Monte Carlo forward performance option.




    <strong>Financial Instruments</strong>
    - Instrument base class: npv(), isExpired(), etc.
    - Interest-rate swap.
    - Swaption.
    - Cap/floor.
    - Zero-coupon, fixed-rate coupon, and floating-rate coupon bond.
    - Convertible bond.
    - Stock.
    - One-asset option base class.
    - Asian option.
    - Barrier option.
    - Cliquet option.
    - Forward vanilla option.
    - Quanto vanilla option.
    - Quanto-forward vanilla option.
    - Vanilla option.
    - Multi-asset option base class.
    - Basket option.
    - More...



    <strong>Yield term structures</strong>
    - Term structure common interface.
    - Term structure classes based on discount, zero, or forward
      underlying description.
    - Term structure based on linear interpolation of zero yields.
    - Term structure based on log-linear interpolation of discounts.
    - Term structure based on constant flat forward.
    - Term structure based on piecewise-constant flat forwards with
      libor-futures-swap bootstrapping algorithm.
    - Spreaded term structures.
    - Forward-date implied term structure.



    <strong>Volatility</strong>
    - Interface for cap/floor Black volatility term structures (unstable).
    - Interface for swaption Black volatility term structures (unstable).
    - Interface for equity Black volatility term structures based on
      volatility or variance underlying description: constant,
      time-dependant curve, time-strike surface, forward date implied term
      structure.
    - Interface for equity local volatility term structures: constant,
      time-dependant curve, time-asset level surface (Gatheral's formula).




    <strong>Short rate models</strong>
    - Single factor models: Hull-White, Black-Karasinski, Vasichek (untested),
      CIR (untested), Extended CIR (untested).
    - Two factor models: G2 (untested).




    <strong>Test suite</strong>

    Implemented by means of the Boost unit-test framework.
    More than 300 automated tests.
    \htmlonly
    A semi-automatically-generated list is available <a href="test.html">here</a>.
    \endhtmlonly
    \latexonly
    A semi-automatically-generated list is available in chapter~\ref{test}.
    \endlatexonly




    <strong>Miscellanea</strong>
    - Index classes for handling of fixed-income libor indexes (fixings,
      forecasting, etc.)
    - Cash-flow class.
    - Currency class and enumeration.
    - Money class with automatic exchange-rate capabilities.
    - Output data formatters: long integers, Ordinal numerals,
      power of two, exponential, fixed digit, sequences, dates, etc.
    - Input data parsers.
    - Error classes and error handling.
    - Exercise classes: European, Bermudan, American
    - Payoff classes: plain, gap, asset-or-nothing, cash-or-nothing
    - Grid classes for handling of equally and unequally spaced grids.
    - History class for handling of historical data.
    - Quote class for mutable data.
    - Null types.
    - User-configurable flag to disable usage of deprecated classes.




    <strong>Documentation</strong>
    - Documentation automatically generated with Doxygen (html, PDF, ps,
      WinHelp, man pages)


*/