QuantLib 0.3.7
Getting started
Reference manual
|
Release 0.3.7 - July 2004
IMPORTANT
QuantLib now depends on the Boost library (www.boost.org).
You will need a working Boost installation in order to compile and use QuantLib. Instructions for installing Boost from sources are available at <http://www.boost.org/more/getting_started.html>. Pre-packaged binaries might be available from other sources. Google is your friend (or Debian, or Fink...)
DATE, CALENDARS, AND DAY COUNT CONVENTIONS
- Working on differentiating calendars depending on country or exchange, instead of city.
- Added Italy (Settlement, Exchange), United Kingdom (Settlement, Exchange, Metals), United States (Settlement, Exchange, GovermentBond), Xetra.
- Milan, London, and NewYork calendars have been deprecated.
- Added (old-style) calendars: Beijing, Hong Kong, Riyadh, Seoul, Singapore, Taiwan.
- RollingConvention has been renamed BusinessDayConvention, as for ISDA definitions.
MATH
- Added rounding algorythms as per OMG enumeration/definition.
TEST SUITE
- Moved to Boost unit test framework. CppUnit is no longer needed.
- Added test for quanto and forward compound engines.
- Added test for roundings.
- Added test for discrete dividend European options.
- Added test for cliquet options.
MISCELLANEA
- enable/disableExtrapolation() methods were added to a few classes such as TermStructure. They make it possible to persistently allow extrapolation without the need of specifying it at every method call.
- Added user configured #define to disable usage of deprecated classes.
PORTABILITY
- Fink package available
- Visual C++ 7.x project files added
Release 0.3.6 - April 15th, 2004
Bug-fix release for QuantLib 0.3.5. A bug was removed where calls to impliedVolatility() would break the state of the option and of all options sharing the same stochastic process.
Release 0.3.5 - March 31th, 2004
BOOST SUPPORT
- When available, QuantLib 0.3.5 now uses parts of the Boost library. The presence of Boost is detected automatically under Unix/Linux systems; on Windows systems, it must be enabled by uncommenting the relevant line in ql/userconfig.hpp.
- In the next QuantLib release, the presence of the Boost library will be mandatory.
MONTE CARLO FRAMEWORK
- Modified MultiPath interface to remove drifts. They are now in the stochastic processes.
- Preliminary implementation of Longstaff-Schwartz least-squares
- Monte Carlo pricer for European basket options
- Brownian-bridge bugs fixed
- StochasticProcess base class and derived classes (diffusion, jump-diffusion, etc.) have been created.
PRICING ENGINES FRAMEWORK
- Pricing engines now use Payoff and Exercise classes.
- American basket options.
- Binary barrier option replaced by vanilla option with digital payoff.
- Stulz engine for max and min basket calls and puts on two assets.
- American binary option added (a.k.a. one-touch, american digital, americal barrier, etc.) with different payoffs (cash/asset at hit/expiry, etc.)
- Added engine for Merton 1976 jump-diffusion process.
- Added Bjerksund and Stensland approximation for American option (still unstable.)
- Added Barone-Adesi and Whaley approximation for American option.
- Improved Black formula engine with more greeks added.
- Discrete geometric asian option.
- Added Leisen-Reimer binomial tree.
SHORT RATE MODELS
- Model renamed to ShortRateModel. A typedef is provided for backward compatibility--it will be removed in subsequent releases.
VOLATILITY FRAMEWORK
- bug fix for short time (0<=t<=Tmin) interpolation
OPTIMIZATION FRAMEWORK
- Method renamed to OptimizationMethod. A typedef is provided for backward compatibility--it will be removed in subsequent releases.
PATTERNS
MATH
- Improved cubic spline interpolation. It now handles end conditions such as first derivative value, second derivative value, not-a-knot. Hyman filter for monotonically constrained interpolation has been implemented. Primitive calculation has been enabled in addition to derivative and second derivative.
- Primitive, first derivative, and second derivative functions are available for linear interpolator.
- Singular value decomposition improved.
- Added bivariate cumulative normal distribution.
- Added binomial coefficient calculation, binomial distribution, cumulative binomial distribution, and Peizer-Pratt inversion (method 2.)
- Added beta functions.
- Added Poisson distribution and cumulative distribution.
- Added incomplete gamma functions.
- Added factorial calculation.
- Added rank-reduced square root and improved pseudo-square root of square symmetric matrices.
- Added Cholesky decomposition.
TEST SUITE
- Added test for cubic spline interpolation.
- Added test for singular value decomposition.
- Added test for two-asset baskets using the Stulz pricing engine.
- Added test for Monte Carlo American cash-at-hit options.
- Added test for jump-diffusion engine.
- Added test for American and European digital options.
MISCELLANEA
- Inner namespaces have been deprecated.
- Added frequency enumeration, including 'once'.
- MarketElement renamed to Quote.
- Handling strike=0.0 where possible.
- More Payoff classes have been introduced: gap, asset-or-nothing, cash-or-nothing. Payoff is now extensively used.
- Exercise class is now polymorphic. More derived classes have been introduced, and they are now extensively used.
- Introduced QL_FAIL macro.
- Added calendar for Copenhagen
- 14 April 2004 (election day) added to Johannesburg calendar as a one-off holiday.
- Documentation generated with Doxygen 1.3.6.
- Win32 installer generated with NSIS 2.0.
Release 0.3.4 - November 21th, 2003
MONTE CARLO FRAMEWORK
- MC European in one step with strike-independent vol curve (hopefully)
- Path pricer for Binary options. It should cover both European and American style options. Also known as: Digital, Binary, Cash-At-Hit, Cash-At-Expiry.
- Path pricers for barrier options
PRICING ENGINES FRAMEWORK
- More options moved to the new pricing engine framework: binary, barrier
- Changed setupEngine() into setupArguments(args)
- Moved pricing-engine machinery up to Instrument class
FIXED INCOME
- New basis-point sensitivity functions
- Added Swap::startDate() and maturity()
- Cap/floor fixing days taken into account
SHORT RATE MODELS
- An additional constraint can now be passed to the calibration
VOLATILITY FRAMEWORK
- Visitable volatility term structures
OPTIMIZATION FRAMEWORK
- Added composite constraint
PATTERNS
- Visitor, Alexandrescu-style (saves some code duplication)
MATH
- Added more integration algorithms contributed by Roman Gitlin
- Relaxed constaints on interval boundaries for integration algorithms
- Interpolation traits
TEST SUITE
- Added implied cap/floor term volatility test
- Added test for binary options in PricingEngine Framework.
- Added tests for Barrier options in PricingEngine Framework. Some Monte Carlo tests, but not comprehensive.
MISCELLANEA
- Conditionally allowed negative yields (disabled by default)
- Null calendar and simple day counter for reproducing theoretical calculations
- Fixed for VC++.Net compilation
- Added spec file for RPMs
- Added global flag for early/late payments
- Enabled test suite for Borland
- Removed OnTheEdge VC++ configurations
- Added VC++ configurations for static and dynamic Multithread libraries
- Upgraded to use Doxygen 1.3.4
Release 0.3.3 - September 3rd, 2003
MONTE CARLO FRAMEWORK
- Re-templatized Monte Carlo model based on traits.
- New path generator based on DiffusionProcess, TimeGrid, and externally initialized random number generator.
- Added Halton low discrepancy sequence.
- Added sequence generators: random sequence generator creates a sequence generator out of a random number generator. InvCumGaussianRsg creates a gaussian sequence generator out of a uniform (random or low discrepancy) sequence generator.
- RNG as constructor input constructor( long seed) deprecated.
- Mersenne Twister random number generator added
- Old PathPricers, PathGenerators, etc are available with a trailing _old
- Added Jäckel's Brownian Bridge (not used yet.)
- Sobol Random Sequence Generator. Unit and Jäckel.
- Added randomized Halton sequences.
FINITE DIFFERENCE FRAMEWORK
- Old class Grid no longer exists, use CenteredGrid to obtain the same result.
LATTICE FRAMEWORK
- Abstracted discretized option.
- Additive binomial trees. All binomial trees now use DiffusionProcess.
- Added Tian binomial tree.
PRICING ENGINES FRAMEWORK
- Partially implemented.
- Quanto forward compounded engines.
- Integral (european) pricing engine.
YIELD TERM STRUCTURE
- ZeroCurve: a term structure based on linear interpolation of zero yields.
FIXED INCOME
- Up-front and in-arrear indexed coupon.
- Specific implementation of compound forward rate from zero yield.
- Added compound forward and zero coupon implementations.
- Added Futures rate helper with specified maturity date.
- Added bucketed bps calculation.
- Added swap constructor using specified maturity date as well as added functionality in Scheduler.
- Added date-bucketed basis point sensitivity based on 1st derivative of zero coupon rate.
OPTIMIZATION FRAMEWORK
- Solvers now take any function. ObjectiveFunction disappeared.
PATTERNS
- Abstracted lazy object.
- Abstracted the curiously recurring template pattern.
DATE AND CALENDARS
- Added joint calendars.
- Tokyo, Stockholm, Johannesburg calendar improved.
- "MonthEndReference" business day rolling convention. Similar to "ModifiedFollowing", unless where original date is last business day of month all resulting dates will also be last business day of month.
- Added basic date generation starting from the end.
MATH
- Added Gauss-Kronrod integration algorithm.
- Added primitive polynomial modulo 2 up to dimension 18 (available up to dimension 27.)
- Added BicubicSplineInterpolation.
- Numerical Recipes algorithm is back since there is a problem with Nicolas' code: it is unable to fit a straight line, it waves around the line.
- Prime number generation.
- Acklam's approximation for inverse cumulative normal distribution function (replaced Moro's algorithm as default.)
- Added error function.
- Improved Cumulative Normal Distribution function using the error function.
- Matrix pseudo square algorithm using salvaging algorithm(s).
- Added SequenceStatistics.
- Major Statistic reworking.
- Added DiscrepancyStatistic that inherits from SequenceStatistic and extends it with the calculation of L2-discrepancy.
- HStatistics.
- Added first and second derivative ot cubic splines.
RISK MEASURES
- Introduced semiVariance and regret.
- Redefinition of average shorfall (normalization factor now is cumulative(target) instead of 1.0)
MISCELLANEA
- QuEP 9 "generic disposable objects" implemented.
- Added test suite.
- Dataformatters extended to format long integers, Ordinal numerals, power of two formatting.
- Exercise class adopted.
- Added user configuration section.
- Inhibited automatic conversion of Handle<T> to RelinkableHandle<T>.
- Diffusion process extended.
- Added strikeSensitivity to the Greeks.
- BS does handle t==0.0 and sigma==0.0.
- TimeGrid has been reworked.
- Added payoff file for Payoff classes. Added Cash-Or-Nothing and Asset-Or-Nothing payoff classes.
- Upgraded to use Doxygen 1.3.
Release 0.3.1 - February 4th, 2003
FINITE DIFFERENCE FRAMEWORK
VOLATILITY FRAMEWORK
- added Black and local volatility interface
PRICING ENGINES FRAMEWORK
YIELD TERM STRUCTURE
- interface revisited
- added discrete time forward methods
- added DiscountCurve (loglinear interpolated) and CompoundForward term structures
- ForwardSpreadedTermStructure moved under QuantLib::TermStructures namespace
FIXED INCOME
- Modified coupons so that the payment date can be after the end of the accrual period
MISCELLANEA
- added/verified holidays of many calendars
- added new calendars
- added new currencies
- more date formatters
- added Period(std::string&)
- it is now possible to advance a calandar using a Period
- added LogLinear Interpolation
- the allowExtrapolation boolean in interpolation classes has been removed from constructors and added to the operator()
- Renamed Solver1D::lowBound and hiBound
- bug fixes
BUILD PROCESS
- More autoconfiscated time functions and types
- Migrated to latest autotools
- added patches for Darwin and Solaris
Release 0.3.0 - May 6th, 2002
MONTE CARLO FRAMEWORK
- Path and MultiPath are time-aware
- McPricer: extended interface, improved convergency algorithm
FINITE DIFFERENCE FRAMEWORK
- added mixed (implicit/explicit) scheme, from which Crank-Nicolson, ImplicitEuler, and ExplicitEuler are now derived
- Finite Difference exercise conditions are now in the FiniteDifferences folder/namespace
- Finite Difference pricers now start with 'Fd' letters
- BSMNumericalOption became BsmFdOption
LATTICE FRAMEWORK
- introduced first version of the framework
- CRR and JR binomial trees
VOLATILITY FRAMEWORK
- early works on reorganization of vol structures
YIELD TERM STRUCTURE
- new TermStructure class based on affine model
- yield curves can be spreaded in term of zeros (ZeroSpreadedTermStructure) and forwards (ForwardSpreadedTermStructure)
- Added dates() and times() to PiecewiseFlatForward
- discount factor accuracy in the yield curve bootstrapping is an input
- added single factor short-rate models (Hull-White, Black-Karasinski)
- added two factor short-rate models framework
- cap/floor and swaption calibration helpers
- added bermudan swaption pricing example (including BK and HW calibrations)
FIXED INCOME
- cap/floor and swaption tree pricer
- cap/floor analytical pricer
- vanilla swaption Jamshidian pricer
- Added accruedAmount() to coupons
- Made cash flow vector builders into functions
OPTIMIZATION FRAMEWORK
- added conjugate gradient, simplex
PATTERNS
- implemented QuEP 8 and 10
MISCELLANEA
- added allowExtrapolation parameter to interpolaton classes
- added 2D bilinear interpolation
- better spline interpolation algorithm
- Added non-central chi-square distribution function.
- Improved Inverse Cumulative Normal Distribution using Moro's algorithm
- Introduced class representing stochastic processes
- added isExpired() to Instrument interface
- added functions folder and namespace for QuantLibXL and any other function-like interface to QuantLib
- Handle is now castable to an Handle of a compatible type
- added downsideVariance to the Statistics class
- kustosis() and skewness() now handles the case of stddev == 0 and/or variance == 0
- added Correlation Matrix to MultiVariateAccumulator
- enforced MS VC compilation settings
- added "-debug" to the QL_VERSION version string ifdef QL_DEBUG
- "make check" runs the example programs under Borland C++
- fixed compilation with "g++ -pedantic"
- Spread as market element
- new calendars introduced
- new Xibor Indexes introduced
- Added optional day count to libor indexes
- Shortened file names within 31 char limit to support HFS
Release 0.2.1 - December 3rd, 2001
MONTE CARLO FRAMEWORK
- Path and MultiPath are now classes on their own
- PathPricer now handles both Path and MultiPath
- MonteCarloModel now handles both single factor and multi factors simulations.
- McPricer now handles both single factor and multi factors pricing. New pricing interface
- antithetic variance-reduction technique made possible in Monte Carlo for both single factor and multi factors
- Control Variate specific class removed: control variation technique is now handled by the general MC model
- average price and average strike asian option refactored
- Sample as a (value,weight) struct
- random number generators moved under RandomNumbers folder and namespace
FINITE DIFFERENCE FRAMEWORK
- BackwardEuler and ForwardEuler renamed ImplicitEuler and ExplicitEuler, respectively
- refactoring of TridiagonalOperator and derived classes
YIELD TERM STRUCTURE AND FIXED INCOME
- Added some useful methods to term structure classes
- Allowed passing a quote to RateHelpers as double
- added FuturesRateHelpers (no convexity adjustment yet)
- PiecewiseFlatForward now observer of rates passed as MarketElements
- Unified Date and Time interface in TermStructure
- Added BPS to generic swap legs
- added term_structure+swap example
- Fixing days introduced for floating-coupon bond
PATTERNS
- Added factory pattern
- Calendar and DayCounter now use the Strategy pattern
VARIOUS
- used do-while-false idiom in QL_REQUIRE-like macros
- now using size_t where appropriate
- dividendYield is now a Spread instead of a Rate (that is: cost of carry is allowed)
- RelinkableHandle initialized with an optional Handle
- Worked around VC++ problems in History constructor
- added QL_VERSION and QL_HEX_VERSION
- generic bug fixes
- removed classes deprecated in 0.2.0
INSTALLATION FACILITIES
- improved and smoother Win32 binary installer
DOCUMENTATION
- general re-hauling
- improved and extended Monte Carlo documentation
- improved and extended examples
- Upgraded to Doxygen 1.2.11.1
- Added man pages for installed executables
- added docs in Windows Help format
- added info on "Win32 OnTheEdgeRelease" and "Win32 OnTheEdgeDebug" MS VC++ configurations
- additional information on how to create a MS VC++ project based on QuantLib
Release 0.2.0 - September 18th, 2001
- Library:
- source code moved under ql, better GNU standards
- gcc build dir can now be separated from source tree
- gcc 3.0.1 port
- clean compilation (no warnings)
- bootstrap script on cygwin
- Fixed automatic choice of seed for random number generators
- Actual/actual classes
- extended platform support (see table in documentation)
- antithetic variance-reduction technique made possible in Monte Carlo
- added dividend-Rho greek
- First implementation of segment integral (to be redesigned)
- Knuth random generator
- Cash flows, scheduler, and swap (both generic and simple) added
- added ICGaussian random generator
- generic bug fixes
- Installation facilities:
- improved and smoother Win32 binary installer
- better distribution
- debian packages available
- Documentation:
- general re-hauling
- added examples of using QuantLib and of projects based on QL
Release 0.1.9 - May 31st, 2001
- Library:
- Style guidelines introduced (see http://quantlib.org/style.html) and partially enforced
- full support for Microsoft Visual Studio
- full support for Linux/gcc
- momentarily broken support for Metrowerks CodeWarrior
- autoconfiscation (with specialized config.*.hpp files for platforms without automake/autoconf support)
- Include files moved under Include/ql folder and referenced as "ql/header.hpp"
- Implemented expression templates techniques for array algebra optimization
- Added custom iterators
- Improved term structure
- Added Asian, Bermudan, Shout, Cliquet, Himalaya, and Barrier options (all with greeks calculation, control variated where possible)
- Added Helsinki and Wellington calendars
- Improved Normal distribution related functions: cumulative, inverse cumulative, etc.
- Added uniform and Gaussian random number generators
- Added Statistics class (mean, variance, skewness, downside variance, etc.)
- Added RiskMeasures class: VAR, average shortfall, expected shortfall, etc.
- Added RiskStatistics class combining Statistics and RiskMeasures
- Added sample accumulator for multivariate analysis
- Added Monte Carlo tools
- Added matrix-related functions (square root, symmetric Schur decomposition)
- Added interpolation framework (linear and cubic spline interpolation implemented).
- Installation facilities:
- Added Win32 GUI installer for binaries
- Documentation:
- support for Doxygen 1.2.7
- Added man documentation
Release 0.1.1 - November 21st, 2000
Initial release.
|