1overview(3)                        QuantLib                        overview(3)
2
3
4

NAME

6       overview - Project overview The QuantLib project is at this time in
7       beta status.
8
9       The following list is a (possibly outdated) overview of the existing
10       code base.
11
12       The QuantLib-users and QuantLib-dev mailing lists are the preferred
13       forum for proposals, suggestions and contributions regarding the future
14       development of the library.
15
16       Date, calendars, and day count conventions
17
18       · Date class.
19
20       · Weekday, month, frequency, time unit enumerations.
21
22       · Period class (eg. 1y, 30d, 2m, etc.)
23
24       · IMM calculation.
25
26       · More than 30 business calendars.
27
28       · NullCalendar (no holidays) for theoretical calculations.
29
30       · Joint calendars made up as holiday union or intersection of base
31         calendars.
32
33       · Rolling conventions: Preceding, ModifiedPreceding, Following,
34         ModifiedFollowing, MonthEndReference.
35
36       · Schedule class for date stream generation.
37
38       · Day count conventions: Actual360, Actual365Fixed, ActualActual (Bond,
39         ISDA, AFB), 30/360 (US, European, Italian), 1/1.
40
41       To do:
42
43       · Differentiate more calendars depending on exchange besides country.
44
45       · enable business day calculation in addition to calendar days
46         calculation in DayCounter::daycount(). See DayTypeEnum in FpML.
47
48       Math
49
50       · Linear, log-linear, and cubic spline interpolation.
51
52       · Primitive, first and second derivative functions of cubic and linear
53         interpolators.
54
55       · Cubic spline end conditions: first derivative value, second
56         derivative value, not-a-knot.
57
58       · Monotone cubic spline with Hyman non-restrictive filter.
59
60       · Bicubic spline and bilinear interpolations.
61
62       · N-dimensional cubic spline interpolation.
63
64       · Normal and cumulative normal distributions.
65
66       · Inverse cumulative normal distribution: Moro and Acklam
67         approximations.
68
69       · Bivariate cumulative normal distribution.
70
71       · Binomial coefficients, binomial distribution, cumulative binomial
72         distribution, and Peizer-Pratt inversion (method 2.)
73
74       · Chi square and non-central chi square distributions.
75
76       · Beta functions.
77
78       · Poisson and cumulative Poisson distributions.
79
80       · Incomplete gamma functions.
81
82       · Gamma distribution.
83
84       · Factorials.
85
86       · Integration algorithms: segment, trapezoid, mid-point trapezoid,
87         Simpson, Gauss-Kronrod.
88
89       · Error function.
90
91       · General 1-D statistics: mean, variance, standard deviation, skewness,
92         kurtosis, error estimation, min, max.
93
94       · Multi-dimensional (sequence) statistics: all the 1-D methods plus
95         covariance, correlation, L2-discrepancy calculation, etc.
96
97       · Risk measures for Gaussian and empirical distributions: semi-
98         variance, regret, percentile, top percentile, value-at-risk, upside
99         potential, shorfall, average shorfall, expected shortfall.
100
101       · Array and matrix classes for algebra.
102
103       · Singular value decomposition.
104
105       · Eigenvalues, eigenvectors for symmetric matrices.
106
107       · Cholesky decomposition.
108
109       · Schur decomposition.
110
111       · Spectral rank-reduced square root, spectral pseudo-square root.
112
113       To do:
114
115       · Periodic and Lagrange end conditions for cubic spline.
116
117       · Implement convexity-preserving filter for cubic spline.
118
119       · Log-linear interpolator primitive, first and second derivative
120         functions.
121
122       · Revise end conditions for bicubic and N-dimensional spline.
123
124       · Trivariate and multi-variate distribution, see Genz, A. (1992)
125         `Numerical Computation of the Multivariate Normal Probabilities', J.
126         Comput. Graph. Stat. 1, pp. 141-150.
127
128       · Hypersphere decomposition, Higham algorithm for pseudo-square root.
129
130       · interface with GALib (genetic algorithm)
131
132       · Add COOOL algorithms
133
134       · Histogram class
135
136       1-dimensional solvers
137
138       · Bisection, false position, Newton, bounded Newton, Ridder, secant,
139         Brent.
140
141       To do:
142
143       · Clean up the interface so that it is clear whether the accuracy is
144         specified for x or f(x).
145
146       Optimization
147
148       · Conjugate gradient, simplex, steepest descent, line search, Armijo
149         line search, least squares.
150
151       · Constrained (positive, boundary, etc.) and unconstrained optimization
152
153       Random-number generation
154
155       · Uniform pseudo-random sequences: Knuth, L'Ecuyer, Mersenne twister.
156
157       · Uniform quasi-random (low-discrepancy) sequences: Halton, Faure,
158         Sobol up to dimension 21,200 (8,129,334 if you really want) with
159         unit, Jäckel, Bradley-Fox, and Lemieux-Cieslak-Luttmer initialization
160         numbers.
161
162       · Randomized quasi-random sequences (in progress)
163
164       · Randomized (shifted) low-discrepancy sequences.
165
166       · Primitive polynomials modulo 2 up to dimension 18 (available up to
167         dimension 27)
168
169       · Gaussian random numbers from uniform random numbers using different
170         algorithms: central limit theorem, Box-Muller, inverse cumulative
171         (Moro and Acklam algorithms)
172
173       Patterns
174
175       · Bridge, composite, lazy object, observer/observable, singleton,
176         strategy, visitor.
177
178       Finite differences
179
180       · Mixed theta, implicit, explicit, and Crank-Nicolson 1-dimensional
181         schemes.
182
183       · Differential operators: $ D_{0} $, $ D_{+} $, $ D_{-} $, $ D_{+}D_{-}
184         $.
185
186       · Shout, Bermudan and American exercises.
187
188       To do:
189
190       · Richardson extrapolation
191
192       · Introduce variable theta schemes.
193
194       · Introduce multi time-level schemes.
195
196       · Enable different solvers (SOR, etc.)
197
198       · Extend to time-dependant parameters.
199
200       · Extend to local volatility.
201
202       · Two-dimension schemes.
203
204       · Improve boundary conditions.
205
206       · Use DiscretisedAsset instead of array?
207
208       · Use TimeGrid
209
210       · Use assetGrid
211
212       · Handle barrier specification
213
214       · Handle variable asset step size
215
216       · Check (and improve) vega, rho, dividendRho greeks, solving their own
217         equations
218
219       Lattices
220
221       · Binomial trees: Cox-Ross-Rubinstein, Jarrow-Rudd, additive
222         equiprobabilities, Trigeorgis, Tian, Leisen-Reimer.
223
224       · Trinomial (interest-rate) tree.
225
226       · Discretized asset.
227
228       · Richardson extrapolation
229
230       To do:
231
232       · Merge finite differences with the lattice framework. Use same
233         rollback scheme.
234
235       · Trinomial trees
236
237       · Implied trinomial trees
238
239       · Calculate binomial tree greeks
240
241       Monte Carlo
242
243       · One-factor and multi-factor path classes.
244
245       · Path-generator classes: incremental and Brownian-bridge one-factor
246         path generation, incremental multi-factor path generation.
247
248       · General-purpose Monte Carlo model based on traits for path samples.
249
250       · Antithetic variance-reduction technique.
251
252       · Control variate technique.
253
254       To do:
255
256       · Greeks calculation.
257
258       · Allow easier selection between Incremental/BrownianBridge path
259         generation.
260
261       · Review Monte Carlo engine for american options.
262
263       · Review multi-factor Monte Carlo simulation.
264
265       · Predictor-corrector scheme.
266
267       · Add Milstein scheme.
268
269       · Add Martingale control variate.
270
271       · Batch samples as N=n_batches*batch_size, and exploit it for
272         randomized low discrepancy sequences (RQMC)
273
274       Pricing engines
275
276       · Analytic Black formula (plus greeks) for different payoffs.
277
278       · Analytic formula for American-style digital options with payoff at
279         expiry.
280
281       · Analytic formula for American-style digital options with payoff at
282         hit.
283
284       · Monte Carlo simulation base engine.
285
286       · Lattice short rate model base engine.
287
288       · Engines for options described by 'vanilla' set of parameters:
289         analytic digital American, analytic discrete-dividend European,
290         analytic European, Barone-Adesi and Whaley approximation for
291         American, Ju approximation for American, binomial (Cox-Ross-
292         Rubinstein, Jarrow-Rudd, additive equiprobabilities, Trigeorgis,
293         Tian, Leisen-Reimer), Bjerksund and Stensland approximation for
294         American, integral European, Merton 76 jump-diffusion, Monte Carlo
295         digital, Monte Carlo European, Bates and Heston models, finite-
296         difference European, Bermudan and American.
297
298       · Engines for options described by 'barrier' set of parameters:
299         analytic down/up in/out, Monte Carlo down/up in/out
300
301       · Engines for Asian options: analytic discrete geometric average-price,
302         analytic continuous geometric average-price, Monte Carlo discrete
303         arithmetic average-price, Monte Carlo discrete geometric average-
304         price.
305
306       · Engines for options described by 'cliquet' set of parameters:
307         analytic, analytic performance.
308
309       · Forward and forward-performance compound engines.
310
311       · Quanto compound engine.
312
313       · Quanto-forward and Quanto-forward-performance compound engines.
314
315       · Basket engine: analytic Stulz engine for max/min on two assets, Monte
316         Carlo engine (in progress).
317
318       · Black model base class for vanilla interest rate derivatives
319
320       · Cap/floor pricing engines: analytic Black model, analytic affine
321         models, tree based engine.
322
323       · Swaption pricing engines: analytic Black model, analytic affine
324         models (Jamshidian), tree based engine.
325
326       To do:
327
328       · Add the trigger level Touch/NoTouch specification for American-style
329         digitals.
330
331       · More vanilla engines: Roll-Geske-Whaley American Call, Geske-Johnson
332         American Put, finite differences, Edgeworth expansion binomial tree,
333         etc.
334
335       · Merge NesQuant SJD engine (http://www.nielses.dk/quantlib/nesquant/)
336
337       · Continuous geometric average-strike.
338
339       · Ensure all path-dependent options allow for evaluation with collected
340         past observations.
341
342       · Define dividendRho for discrete dividends.
343
344       Pricers
345
346       · Cliquet option
347
348       · Analytic discrete geometric average-price option (European exercise).
349
350       · Analytic discrete geometric average-strike option (European
351         exercise).
352
353       · Monte Carlo cliquet option.
354
355       · Monte Carlo discrete arithmetic average-price option.
356
357       · Monte Carlo discrete arithmetic average-strike option.
358
359       · Monte Carlo Everest option.
360
361       · Monte Carlo Himalaya option.
362
363       · Monte Carlo max basket option.
364
365       · Monte Carlo pagoda option.
366
367       · Monte Carlo forward performance option.
368
369       Financial Instruments
370
371       · Instrument base class: npv(), isExpired(), etc.
372
373       · Interest-rate swap.
374
375       · Swaption.
376
377       · Cap/floor.
378
379       · Zero-coupon, fixed-rate coupon, and floating-rate coupon bond.
380
381       · Convertible bond.
382
383       · Stock.
384
385       · One-asset option base class.
386
387       · Asian option.
388
389       · Barrier option.
390
391       · Cliquet option.
392
393       · Forward vanilla option.
394
395       · Quanto vanilla option.
396
397       · Quanto-forward vanilla option.
398
399       · Vanilla option.
400
401       · Multi-asset option base class.
402
403       · Basket option.
404
405       · More...
406
407       Yield term structures
408
409       · Term structure common interface.
410
411       · Term structure classes based on discount, zero, or forward underlying
412         description.
413
414       · Term structure based on linear interpolation of zero yields.
415
416       · Term structure based on log-linear interpolation of discounts.
417
418       · Term structure based on constant flat forward.
419
420       · Term structure based on piecewise-constant flat forwards with libor-
421         futures-swap bootstrapping algorithm.
422
423       · Spreaded term structures.
424
425       · Forward-date implied term structure.
426
427       To do:
428
429       · Future convexity adjustment
430
431       · End of year effect
432
433       Volatility
434
435       · Interface for cap/floor Black volatility term structures (unstable).
436
437       · Interface for swaption Black volatility term structures (unstable).
438
439       · Interface for equity Black volatility term structures based on
440         volatility or variance underlying description: constant, time-
441         dependant curve, time-strike surface, forward date implied term
442         structure.
443
444       · Interface for equity local volatility term structures: constant,
445         time-dependant curve, time-asset level surface (Gatheral's formula).
446
447       To do:
448
449       · Fix implementation of Gatheral's formula for local volatility.
450
451       Short rate models
452
453       · Single factor models: Hull-White, Black-Karasinski, Vasichek
454         (untested), CIR (untested), Extended CIR (untested).
455
456       · Two factor models: G2 (untested).
457
458       Credit derivatives
459
460       To do:
461
462       · everything.
463
464       Test suite
465
466       Implemented by means of the Boost unit-test framework. More than 270
467       automated tests.
468
469       To do:
470
471       · Add covariance/correlation test for SequenceStatistics.
472
473       · Increase coverage.
474
475       Miscellanea
476
477       · Index classes for handling of fixed-income libor indexes (fixings,
478         forecasting, etc.)
479
480       · Cash-flow class.
481
482       · Currency class and enumeration.
483
484       · Money class with automatic exchange-rate capabilities.
485
486       · Output data formatters: long integers, Ordinal numerals, power of
487         two, exponential, fixed digit, sequences, dates, etc.
488
489       · Input data parsers.
490
491       · Error classes and error handling.
492
493       · Exercise classes: European, Bermudan, American
494
495       · Payoff classes: plain, gap, asset-or-nothing, cash-or-nothing
496
497       · Grid classes for handling of equally and unequally spaced grids.
498
499       · History class for handling of historical data.
500
501       · Quote class for mutable data.
502
503       · Null types.
504
505       · User-configurable flag to disable usage of deprecated classes.
506
507       To do:
508
509       · Implement currency as per OMG definition
510
511       Documentation
512
513       · Documentation automatically generated with Doxygen (html, PDF, ps,
514         WinHelp, man pages)
515
516       To do:
517
518       · Add a 'Getting started' page to the site
519
520Version 0.8.1                     29 Oct 2007                      overview(3)
Impressum