QuantLib 0.3.9
Getting started
Reference manual
|
Release 0.3.9 - May 2005
GLOBAL FEATURES
- QL_SQRT, QL_MIN etc. deprecated in favor of std::sqrt, std::min...
- Added a tentative tracing facility to ease debugging.
- Formatters deprecated in favor of output manipulators. A number of data types can now be sent directly to output streams.
- Stream-based implementation of QL_REQUIRE, QL_TRACE and similar macros. Together with manipulators, this allows one to write simpler error messages, as in:
INSTRUMENTS
- Improved Bond class
- yield-related calculation can be performed with either compounded or continuous compounding;
- added theoretical price based on discount curve;
- fixed-rate coupon bonds can define different rates for each coupon;
- added zero-coupon and floating-rate bonds (thanks to StatPro.)
- Option instruments now take a generic StochasticProcess; however, most pricing engines still require a BlackScholesProcess. They should be checked to see whether the requirement can be relaxed. Following this change, Merton76Process no longer inherits from BlackScholesProcess. This avoids erroneous upcasts.
- Partial fix for Bermudan swaptions with exercise lag (thanks to Luca Berardi for the report and discussion.)
- Fix for analytic cap/floor engine; caplets/floorlets whose fixing is in the past are now calculated correctly (thanks to Aurelien Chanudet.)
CALENDARS
- Added Bratislava and Prague calendars.
INDICES
- Fixed calendars for LIBOR fixings (thanks to Daniele De Francesco.)
FINITE_DIFFERENCES FRAMEWORK
- Migrated finite-difference pricers to pricing-engine framework (thanks to Joseph Wang.)
YIELD TERM STRUCTURES
- Added generic piecewise yield term structure. Client code can choose what to interpolate (discounts, zero yields, forwards) and how (linear, log-linear, flat) by instantiating types such as:
PiecewiseYieldCurve<Discount,LogLinear>
PiecewiseYieldCurve<ZeroYield,Linear>
PiecewiseYieldCurve<ForwardRate,Linear>
- Interpolated discount, zero-yield and forward-rate curves can now be set any interpolation.
- FlatForward can now take rates with compounding other than continuous.
- Fix for extrapolation in zero-spreaded and forward-spreaded yield term structure (thanks to Adjriou Belak for the report.)
MATH
- Added backward- and forward-flat interpolations.
Release 0.3.8 - December 22nd, 2004
REQUIRED PACKAGES
- Boost version 1.31.0 or later is now required.
DOCUMENTATION
- Documentation now includes a FAQ page.
GLOBAL FEATURES
- Global evaluation date added through Settings class. Used for index-fixing and exchange-rate lookup.
- added InterestRate class, which encapsulate the interest rate compounding algebra. It manages day-counting convention, compounding convention, conversion between different conventions, and discount/compounding factor calculations. It also has its own formatter.
INSTRUMENTS
- Bond and FixedCouponBond classes added (thanks to Jeff Yu) providing price/yield conversions; tests provided.
DATE, CALENDARS, AND DAY COUNT CONVENTIONS
- Reworked Date interface. Added nextWeekday() and nthWeekday() static methods to the class Date. Added nextIMM() for the calculation of the next IMM date.
- Added WeekdayFormatter and FrequencyFormatter
- Added "1/1" day counter. The Actual365 is deprecated: as per ISDA documentation "Actual/365" is the same as "Actual/Actual". Use the ActualActual class instead, or the Actual365Fixed class.
- Added dayCounterFromString(std::string) to QuantLibFunctions.
- Improved Beijing calendar (thanks to Zhou Wu.)
CURRENCIES AND FX RATES
- Added currency classes; CurrencyTag replaced in library code.
- Added money class providing arithmetic with or without conversions; tests provided.
- Added exchange-rate class; tests provided.
- Added exchange-rate manager with smart rate lookup, i.e., able to derive a missing exchange rate as a chain of provided rates; tests provided.
MONTE CARLO FRAMEWORK
- Added Faure low-discrepancy sequence (thanks to Gianni Piolanti;) tests provided.
- Added randomized (shifted) low discrepancy sequences that will be used for randomized quasi Monte Carlo.
- Added SeedGenerator class, for random generation of seeds when they are not given by the user.
- Added the implementation of Sobol sequences using the coefficients of the free direction integers as provided by Bratley and Fox, who credited unpublished work of Sobol's and Levitan's.
- Added an implementation of Sobol sequences using the coefficients of the free direction integers of Lemieux, Cieslak, and Luttmer. Coefficients for d<=40 are the same as in Bradley-Fox. For dimension 40<d<=360 the coefficients have been calculated as optimal values based on the "resolution" criterion. The values has been provided by Christiane Lemieux, private communication, September 2004.
- PathGenerator now works correctly with processes describing S instead of log S. Geometric Brownian process added (thanks to Walter Penschke.)
LATTICE FRAMEWORK
- Reworked the DiscretizedAsset interface.
PRICING ENGINES FRAMEWORK
- Added pricing engine for American options with Ju quadratic approximation.
- Average-price Asian pricers have been deprecated. New equivalent pricing engines added.
FIXED INCOME
- Added current coupon to discretized swap and cap/floor.
- Added IndexManager as a singleton (will replace XiborManager--already obsoleted in library code.)
- Added DayCounter parameter to ParCoupon (to be used for accruing spreads and past fixings.) When missing, it defaults to that of the term structure.
- Added compilation flag to select default floating-coupon type.
- IndexedCoupon can now take a generic index rather than a Libor (thanks to Daniele De Francesco.)
- Added hooks for convexity adjustment in floating-rate coupons; implemented adjustment for InArrearIndexedCoupon.
YIELD TERM STRUCTURE
- TermStructure renamed to YieldTermStructure (the former name was deprecated.)
- New base class BaseTermStructure which can calculate its reference date based on the global evaluation date. YieldTermStructure, BlackVolTermStructure, LocalVolTermStructure, CapFlatVolatilityStructure, CapletForwardVolatilityStructure, and SwaptionVolatilityStructure are now derived from BaseTermStructure so that they inherit its functionality.
PATTERNS
MATH
- Added N-dimensional cubic spline (thanks to Roman Gitlin.)
- Added CovarianceDecomposition class (decomposes a covariance matrix into standard deviations and correlations)
MISCELLANEA
- Renamed RelinkableHandle to Handle.
PORTABILITY
- Support for Dev-C++ IDE added.
- Fixes for gcc 2.95 added (thanks to Michael Dirkmann.)
Release 0.3.7 - July 23rd, 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.shtml) 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.
|