Releases: lballabio/QuantLib
1.6
Changes for QuantLib 1.6:
QuantLib 1.6 includes 65 pull requests from several contributors.
The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt.
Portability
- Enable successful compilation with Boost 1.58 and either gcc or clang.
- Enable multi-processor compilation on Visual C++ as a project switch (thanks to Giorgio Pazmandi).
Date/time
- Added Moscow Exchange calendar (thanks to Dmitri Nesteruk).
- Added 70th anniversary of anti-Japanese day to Chinese calendar (thanks to Cheng Li).
- Fixed Chinese New Year date for 2010 (thanks to Cheng Li).
- Added nearest-trading-day business day convention (thanks to Francois Botha).
- Prevented normalization of a 7-days period to a 1-week period, since this doesn't apply to business days (thanks to Paolo Mazzocchi).
- Allowed schedules built with a vector of dates to be used for coupon generation, given that the required information was provided (thanks to Peter Caspers).
- Added support for Australian Security Exchange (ASX) dates (thanks to Maddalena Zanzi).
- Added ECB dates for April and June 2016 (thanks to Paolo Mazzocchi).
Instruments
- Extended digital American options to handle knock-off case (thanks to Riccardo Ghetta).
- Extended barrier options to handle KIKO/KOKI barriers (thanks to Riccardo Ghetta).
- Added Ikeda/Kunitomo engine, binomial engine and binary/digital engine for double-barrier option (thanks to Riccardo Ghetta).
- Added Bachelier engine for caps/floors based on normal volatility (thanks to Michael von den Driesch).
- Allowed non strike/type payoffs in finite-differences engine for vanilla options (thanks to Joseph Wang).
- Fixed settlement days of BTP bonds.
- Fixed generation of schedule for OIS and vanilla swaps.
- Added support for ASX dates to futures rate helper (thanks to Maddalena Zanzi).
Models
- Moved Markov functional model, GSR model, Gaussian 1D model and related engines, processes and term structures from the experimental folder to the code library (thanks to Peter Caspers).
Cash flows
- Added CMS-spread coupons, including digital (thanks to Peter Caspers).
Indexes
- Added CMS-spread index (thanks to Peter Caspers).
- Fixed day-count convention for Fed Funds rate.
Term structures
- Fixed bug where a valid previous curve state could be a bad guess for the next and lead to a bootstrap failure.
- Allow negative adjustment for futures rate helpers (thanks to Paolo Mazzocchi).
Volatility
- Added support for normal and displaced lognormal volatility to optionlet stripper (thanks to Michael von den Driesch).
- Allowed calibration of the alpha of the SABR model to the ATM point while keeping beta, nu and rho fixed (thanks to Peter Caspers).
- Added Chambers-Nawalkha implied-volatility approximation (thanks to Peter Caspers).
- Added displaced lognormal swaption volatilities (thanks to Peter Caspers).
- Allowed the optionlet boostrap to continue if one caplet can no be matched (thanks to Peter Caspers).
- Added flat-extrapolation option to swaption ATM volatility matrix (thanks to Peter Caspers).
- Implied swaption volatility cube for Gaussian 1-D model (thanks to Peter Caspers).
Math
- Allowed user-defined Jacobian in optimization (thanks to Peter Caspers).
Miscellanea
- Added IDR, MYR, RUB and VND currencies (thanks to Lucy King).
Deprecated features
- Removed deprecated methods and constructors from the BlackVarianceTermStructure, BlackVolTermStructure, CapFloorTermVolatilityStructure, DateParser, FittedBondDiscountCurve, GeneralLinearLeastSquares, Handle, LocalVolTermStructure, OptionletVolatilityStructure, Settings, SwaptionVolatilityStructure and VolatilityTermStructure classes.
Experimental folder
The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases.
Changes and new contributions for this release were:
- Finite-difference meshers based on multi-dimensional integrals (thanks to Klaus Spanderen).
- SVI interpolation and a corresponding smile section (thanks to Peter Caspers).
- ZABR volatility model (thanks to Peter Caspers).
1.5
Changes for QuantLib 1.5:
QuantLib 1.5 includes about 60 pull requests from several contributors, ranging from small bug fixes to relevant new additions to the library.
The most notable changes are included below. A detailed list of changes is available in ChangeLog.txt.
Portability
- Unified project files for Visual Studio 10 and above. Different solutions are still provided for Visual Studio 10, 11 and 12.
Date/time
- Added China Inter-Bank calendar (thanks to Cheng Li).
- Added half-month modified following convention (thanks to Paolo Mazzocchi).
- Added a few more historical closings for NYSE.
- Updated the Hong Kong and China calendar for 2015.
- Updated list of ECB dates up to the first two dates for 2016 (thanks to Paolo Mazzocchi).
Instruments
- Improved Storage and Swing engine (thanks to Klaus Spanderen).
- Fixed behavior of the Bjerksund Stensland engine for very small volatilities (thanks to Klaus Spanderen).
- Add Heston expansion engine for European options (thanks to Fabien Le Floc'h).
- Caps, floors and swaptions can use a displacement in implied-volatility calculation.
- Added partial-time fixed and floating strike lookback options (thanks to Francois Botha).
- Added binary barrier options (thanks to Riccardo Ghetta).
- Added binomial engine for barrier options (thanks to Riccardo Ghetta).
- Added Vecer engine for continuous-averaging Asian options (thanks to Bernd Lewerenz).
Cash flows
- Added ex-coupon feature to fixed-rate bonds, CPI bonds and bond helpers (thanks to Francois Botha).
- Fix calculation of sinking notionals when the coupon rate is very near 0 (thanks to Cheng Li).
Indexes
- Added Shanghai Inter-bank Offering Rate index (thanks to Cheng Li).
- Added Fed Fund index.
- Added South-African CPI (thanks to Francois Botha).
Term structures
- Improvement to CMS market calibration: enabled use of general coupon pricers, added calibration to a term structure of betas (thanks to Peter Caspers).
- InterpolatedZeroCurve can be passed rates with any compounding convention and frequency (thanks to Alexandre Radicchi).
- Bond helpers can now use quotes for either clean or dirty prices (thanks to Francois Botha).
- Added CPI bond helper (thanks to Francois Botha).
- Better handling in rate helpers of evaluation dates which are not business dates.
- Spreaded curves allow extrapolation if their underlying curve does (thanks to Peter Caspers).
- Fixed inflation-rate interpolation (thanks to Amine Ifri).
Math
- Added generation of student-t distributed random numbers (thanks to Jose Aparicio).
- Added Folin's integration methods (thanks to Klaus Spanderen).
- Added mixed backward-flat/linear interpolation (thanks to Peter Caspers).
- Improved performance of matrix multiplication (thanks to Peter Caspers).
- Fixed wrong primitive calculation in mixed interpolation (thanks to Peter Caspers).
- Fixed corner case for finite-difference Newton solver leading to infinite derivative (thanks to Peter Caspers).
- Added Maddock's cumulative normal distribution (thanks to Klaus Spanderen).
- Added bivariate cumulative student t distribution (thanks to Michal Kaut).
Lattices
- Calculate option delta/gamma on binomial trees using Hull formulas (thanks to Riccardo Ghetta).
Miscellanea
- A number of small performance improvements (thanks to Michael Sharpe).
Examples
- Added example for Gaussian 1-D models (thanks to Peter Caspers).
- Added examples for latent models and basket losses (thanks to Jose Aparicio).
- Added example for multi-dimensional integral (thanks to Jose Aparicio).
Deprecated classes
- Removed deprecated Domain and Surface classes.
Experimental folder
The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases.
Changes and new contributions for this release were:
- Extended credit risk plus model (thanks to Peter Caspers).
- No-arbitrage Sabr model with corresponding volatility-cube, smile section and interpolation classes (thanks to Peter Caspers).
- A number of latent models for basket losses (thanks to Jose Aparicio).
- Complex chooser option (thanks to Nathan Kruck, Ahmed Ayadi and Nolan Potier from the IMAFA program at Polytech'Nice Sophia).
- Holder-extensible option (thanks to Nathan Kruck, Ahmed Ayadi and Nolan Potier from the IMAFA program at Polytech'Nice Sophia).
- Partial-time barrier option (thanks to Nathan Kruck, Ahmed Ayadi and Nolan Potier from the IMAFA program at Polytech'Nice Sophia).
- Two-asset correlation option (thanks to Ilyas Rahbaoui and Driss Aouad from the IMAFA program at Polytech'Nice Sophia).
1.4.1
Changes for QuantLib 1.4.1
QuantLib 1.4.1 is a compatibility release. It fixes a number of compilation errors that surfaced when using QuantLib 1.4 with Clang 3.5 and Boost 1.57. Thanks to Tim Smith for the heads-up.
If you are not using Clang, you don't need to upgrade from QuantLib 1.4 to 1.4.1.
1.4
Notable changes for QuantLib 1.4
Portability
- Boost 1.39 or later is now required. We felt this could be enforced without causing grief to virtually anyone, given that 1.39 was released back in May 2009. We don't expect many people being stuck with an earlier version. This allows one to use make_shared to create shared_ptr instances, which has a number of advantages. Unfortunately, the C++03 implementation (which is still used by a number of older compiler that we're supporting) only allows a maximum of 9 constructor arguments, so we won't be able to use it everywhere.
- Support for Visual C++ 2003 (VC++7) was dropped. The compiler is now more than 10 years old and no longer supported by Microsoft. Keeping the support is not worth the time and effort required. Anybody who is still stuck with this compiler and needs the support can fork the repository and maintain the changes.
- Specific support for Visual C++ 2013 (VC++12) is not yet available; however, version checks in the code were relaxed so that one can import and convert the VC++11 solution without causing errors when auto-linking the generated libraries.
- Fixed Clang warnings.
- Use deprecated attribute of supported compilers. This replaces the QL_DISABLE_DEPRECATED mechanism that conditionally removes the features and causes the compiler itself to emit warnings if the features are used. The user can enable or disable the warnings by the means provided by the compiler.
- Allow singletons to work under Visual C++ when CLR is enabled (thanks to Simon Shakeshaft).
- Fixed compilation errors when using STLport (thanks to Marcello Pietrobon for the heads-up).
Configuration
- Added switch to enable OpenMP-based parallelism (thanks to Joseph Wang). Currently, this is only used in a few loops in the finite-differences and tree frameworks.
Date/time
- Added Diamond Jubilee bank holiday to UK calendar.
- Added Royal Wedding bank holiday to UK calendar (thanks to Whit Armstrong for the heads-up).
- Added utilities to parse and format a date with the extended format implemented in Boost.Date (thanks to Michael von den Driesch). The previous parsing utility was deprecated.
- Added Actual/365 (No Leap) day counter (thanks to Nick Glass).
- Updated most moving holidays for 2014.
- Fixed a Schedule bug where a combination of backwards generation and end-of-month convention would result in missing or duplicated dates (thanks to Nicholas Manganaro for the heads-up).
Instruments
- Fixed Delta and Gamma calculation in Ju quadratic engine (thanks to Fabien Le Floc'h).
- Improved calculation in finite-differences Asian options when the running average is much greater than the forward value (thanks to Klaus Spanderen).
- Fixed Theta issue for some American FDM engines (thanks to Klaus Spanderen).
- Fix annuity computation for CMS coupons (thanks to Peter Caspers).
- Enabled case r=0 in Barone-Adesi/Whaley approximation engine (thanks to Klaus Spanderen).
- When building a swaption with MakeSwaption, use the fixed tenor of the underlying swap index if none is given explicitly.
Models
- Allow for calibration of just a subset of a model's parameters. Pre-built constraint are provided for calibration of an Hull-White model while fixing the mean reversion, and for calibration of a Markov functional model while fixing the first component of the piecewise volatility. (Thanks to Peter Caspers.)
- Allow recalculation of exercise and end dates in swaption and cap helpers when the evaluation date changes (thanks to Peter Caspers).
- Allowed negative strikes in BlackFormula, as long as the strike plus the displacement is still positive (thanks to Peter Caspers).
- Added calculation of implied volatility from Bachelier price in BlackFormula (thanks to Gary Kennedy).
- Added Broadie-Kaya exact simulation schema to Heston model (thanks to Klaus Spanderen).
- Fixed upper/lower bound calculation for internal constraint in calibrated model (thanks to Peter Caspers).
Cash flows
- Added support for ex-coupon dates to cashflow calculations (thanks to Nick Glass). Currently, ex-coupons dates can be specified for fixed rate bonds.
- Fixed calculation of duration and convexity when using Act/Act(ISMA) (thanks to Nick Glass).
Indexes
- Fixed IborCoupon construction with null fixing days. The coupon was used the passed fixing days instead of the ones previously processed by the base class constructor (thanks to Lisa Ann and Gerardo Ballabio for the heads-up).
- Add a clone() method to SwapIndex which allows to change the tenor (thanks to Peter Caspers).
- Ignore inflation-index fixings stored at dates later than the evaluation date.
- Added utility class for creating custom Region instances to be passed to inflation indexes.
Term structures
- Prevent some errors when linking a null term structure to a Handle. When settings a null term structure to a Handle used as an underlying for another curve (say, a zero-spreaded curve), the latter tries to reset the jumps in the base class and fails. This error is now trapped. (Thanks to Christoph Breig for the heads-up.)
- Fix interpolation of option dates in SwaptionVolatilityDiscrete and derived classes when evaluation date changes (thanks to Shen Hui).
- Piecewise-spreaded curve can now choose interpolation (thanks to Mario Aleppo).
Math
- Extended Sobol direction numbers up to 21200 dimensions with Joe Kuo 6 searching rule (thanks to Cheng Li).
- Added class for two-dimensional integration (thanks to Klaus Spanderen).
- Added Maddock inverse-cumulative normal distribution from Boost (thanks to Klaus Spanderen).
- Added modified Bessel functions (thanks to Klaus Spanderen).
Experimental folder
The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases.
Changes and new contributions for this release were:
- Deprecated features were removed from experimental code.
- Added initial implementation of catastrophe bond (thanks to Grzegorz Andruszkiewicz).
- Added Vanna/Volga pricing engine for FX barrier options. Engines were provided for both single- and double-barrier FX options. An analytic engine was also provided for double-barrier equity options (thanks to Yue Tian).
- Added Hagan pricing engine for irregular swaptions (thanks to Andre Miemiec).
- Added simulated-annealing optimizer (thanks to Peter Caspers).
- Added rebated exercise class (thanks to Peter Caspers).
- Added pricing engine for arbitrary European payoffs under the Heston model (thanks to Klaus Spanderen).
- Added linear terminal swap rate model pricer for CMS coupons (thanks to Peter Caspers).
- Reorganized functional Markov model. Added one-factor GSR model, and float/float swap and swaption with a number of corresponding engines. (Thanks to Peter Caspers.)
- The Levy engine for continuous-averaging Asian option now checks that the averaging period doesn't start in the future. Also, it allows the b=0 case that would raise an exception until now. (Thanks to Klaus Spanderen.)
- Convertible bond now updates correctly when any of its observables changes.
- Extended generalized Hull-White model (thanks to Cavit Hafizoglu). The model now allows to choose the mapping function between short rate and state variable, and includes the case of constant parameters.
1.3
Notable changes for QuantLib 1.3
Portability
- Enabled g++ compilation in C++11 mode.
- Added VC++11 projects (thanks to Edouard Tallent).
- Added x64 target to VC++10 and VC++11 projects (thanks to Johannes
Göttker-Schnetmann). - Removed most level-4 warnings in VC++ (thanks to Michael Sharpe).
- Removed warnings in VC++ when compiling for the x64 platform (thanks
to Johannes Göttker-Schnetmann).
Date/time
- Fixed holiday for Japanese calendar (thanks to Sebastien Gurrieri).
- Added Epiphany (introduced in 2011) to Polish calendar (thanks to
katastrofa). - Updated South-Korean calendar for 2013 (thanks to Faycal El Karaa).
- Updated Chinese calendar for 2012 (thanks to Cheng Li).
- Updated calendar for 2013 for China, Hong Kong, India, Indonesia,
Singapore, Taiwan and Turkey. - Fixed a few Mexican holidays.
- Prevented out-of-bound access to degenerate schedule.
Instruments
- Finite-difference Bermudan swaption engines for the G2++ and the
Hull-White models (thanks to Klaus Spanderen). - Added analytic Heston-Hull-White pricing engine for vanilla option
using the H1HW approximation (thanks to Klaus Spanderen). - Managed underlying start delay in Jamshidian swaption engine (thanks
to Peter Caspers).
Models
- Added calibration to GARCH model (thanks to Slava Mazur).
- Fixed forward-looking bias in Garch11 calculation (thanks to Slava
Mazur).
Cash flows
- Use correct default for evaluation date in a few CashFlows methods
(thanks to Peter Caspers). - Yield-based NPV calculation now uses coupon reference dates; this
fixes small discrepancies when using day counters such as ISMA
act/act (thanks to Henri Gough and Nick Glass). - Fixed start and end dates for convexity adjustment of in-arrears
floating-rate coupon (thanks to Peter Caspers).
Indexes
- Added inspector for the joint calendar used by Libor indexes.
- Added method to clone a swap index with a different discount curve
(thanks to Peter Caspers).
Term structures
- Fixed degenerate case for ABCD volatility (thanks to Peter Caspers).
- Relaxed extrapolation check for default-probability curves. When
calculating default probabilities between two dates or times, allow
the first to precede the reference date. This effectively assumes
that the default probability before the reference is null, and helps
in cases where a coupon protection extends a couple of days before
the reference due to adjustments (for instance, when the protection
starts on a Saturday and the reference is rolled to the following
Monday). - Pass correct ATM forward rate to smile section of SwaptionVolCube2
(thanks to Peter Caspers). - Added exogenous discount to OptionletStripper1 (thanks to Peter
Caspers).
Math
- Added Sobol brownian-bridge random sequence generator (thanks to
Klaus Spanderen). - Added Richardson-extrapolation utility for numerical methods (thanks
to Klaus Spanderen). - Added differential evolution optimizer (thanks to Ralph Schreyer and
Mateusz Kapturski). - Added special case to close()/close_enough() when either value is 0;
previously, they would always return false which could be surprising
(thanks to Simon Shakeshaft for the fix). - Fixed Gamma distribution tail (thanks to Ian Qsong).
- Ensure that the last function call inside a solver is passed the
root (thanks to Francis Duffy). - Implemented Lagrange boundary condition for cubic interpolation
(thanks to Peter Caspers). - Increased precision in tail of West's bivariate cumulative normal
(thanks to Fabien Le Floc'h). - Improved calibration of SABR interpolation by allowing different
starting points (thanks to Peter Caspers). - Moved FFT and autocovariance implementations from experimental
folder to core library.
Finite differences
- Added time-dependent Dirichlet boundary condition (thanks to Peter
Caspers).
Utilities
- Implicit conversions of shared_ptr to bool are now explicit; they
have been removed in C++11 (thanks to Scott Condit).
Experimental folder
The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases.
New contributions for this release were:
- Two-asset barrier option and related engine (thanks to
IMAFA/Polytech'Nice students Qingxiao Wang and Nabila Barkati). - ODE solver (thanks to Peter Caspers).
- Markov functional model (thanks to Peter Caspers).
1.2.1
Changes for QuantLib 1.2.1
QuantLib 1.2.1 is a bug-fix release for QuantLib 1.2.
Changes:
- The library default is now to allow negative rates as this is
happening for EUR OIS, CHF and German treasury yields, etc. - Fixed problem with EOM adjustment in schedule.
When the end date was not adjusted, the next-to-last date could end up
after the end date due to EOM adjustment. This is now checked and fixed. - Added notional calculation to CPI bond.
This enables the user to use the full bond machinery besides NPV
calculation.
Thanks to Seyfullah Çetin for the heads-up and to Raso Mirko
and Billy Ng for the fix. - Fixed bug in up-rounding (thanks to Simon Shakeshaft).
When up-rounding a number with no digits after the requested
precision (say, 0.86313 with 5-digits precision) the last
digit of the number would be increased. This is now fixed. - Bicubic splines would not update their parameters correctly.
This is now fixed (thanks to Fabio Ramponi). - Fixed extent of new-year holidays for the Russian calendar.
Thanks to Kirill Shemyakin. - Added implementation of assertion_failed_msg function.
This is required for linking with recent Boost versions.
Thanks to Piter Dias. - Build fixes for VC++11 and for g++ in c++11 mode (thanks to Xiangyu
Hong and Joao Paulo Magalhaes, respectively). - A number of minor bug fixes (see the Changelog for full details).
1.2
Changes for QuantLib 1.2
Portability
- Microsoft Visual C++ 2010 no longer needs to disable uBlas code.
- QuantLib now ships with an updated specification file for building
RPMs (thanks to Matt Fair).
Date/time
- When EOM was specified, a schedule's end date was moved to the end
of month even if the 'Unadjusted' convention was given. This is now
fixed. - When a daily frequency was used, a schedule could end up containing
duplicated dates. This is now fixed (thanks to Simone Medori for
the bug report). - Added method to return truncated schedule.
- Fixed Swedish Midsummer Eve's date (thanks to Gary Kennedy).
- Added South Korea holidays for 2011/2012 (thanks to Charles
Chongseok Hyun and Faycal El Karaa). - Added holidays for 2011 to China, Hong Kong, India, Indonesia, Saudi
Arabia, and Taiwan calendars. - Added ECB maintenance dates for 2012 and 2013.
- Greatly improved performance of business/252 day counter. The
previous implementation would count the business days between two
dates at each invocation. The new implementation caches dynamically
the count of business days for whole months and years, so that after
a while only the first and last few days are counted.
Instruments
- The AssetSwap instrument now supports non-par repayment.
- Added specialized class for Italian CCTEU (certificato di credito
del tesoro). - Added CPI-linked swaps, bonds, and cap/floors.
Cash flows
- Added CashFlows::npvbps() method to calculate NPV and BPS in a
single loop to improve performance.
Indexes
- Better detection of forecast/past fixings for inflation indexes.
When an interpolated index is asked for a fixing at the beginning of
a month, the fixing for the following (which would have zero weight
in the interpolation) is no longer required. Also, if a fixing is
loaded in the index time series, it can be used even its observation
lag has not fully elapsed.
Term structures
- Vastly improved the performance of piecewise yield curve bootstrap.
Anchoring the evaluation date (see below) provides a further
improvement. - Moved CPI-volatility interface from experimental folder to the core
library.
Math
- Added Newton 1-D solver with finite difference derivatives.
- Improved interface for linear least-square regression (thanks to
Slava Mazur).
Finite differences
- Added TR-BDF2 scheme (thanks to Fabien Le Floc'h).
- Moved stable parts of 2D finite-difference framework from the
experimental folder to the core library.
Utilities
- Added resetEvaluationDate() and anchorEvaluationDate() methods to
enable/disable change of evaluation date at midnight, respectively.
Anchoring the evaluation date also improves the performance of some
calculations.
Patterns
- Fixed possible problem in LazyObject notification logic. The
previous implementation would pass obsolete information to observers
that asked for data in their update() method (which is not advised,
but possible). This is no longer the case.
Experimental folder
The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases.
New contributions for this release were:
- Spread option and related engine (thanks to IMAFA/Polytech'Nice
students Meryem Chibo and Samad Abdessadki). - Writer-extensible option and related engine (thanks to
IMAFA/Polytech'Nice students Delphine Bouthier, Marine Casanova, and
Xavier Caron). - Levy engine for continuous-averaging Asian options (thanks to
IMAFA/Polytech'Nice students Yasmine Lahlou and Amine Samani). - Simple Virtual Power Plant and related finite-difference (FD) engine
(thanks to Klaus Spanderen). - FD solver and vanilla spread engine for Kluge-Ornstein-Uhlenbeck
process (thanks to Klaus Spanderen). - Added generic n-dimensional FD solver (thanks to Klaus Spanderen).
- Added FD pricing engine for a simple storage option based on an
exponential Ornstein Uhlenbeck process (thanks to Klaus Spanderen). - Added vanilla and swing option FD pricer for Kluge model (thanks to
Klaus Spanderen). - Added FD pricing engine for a simple swing option based on the
Black-Scholes model (thanks to Klaus Spanderen).
1.1
Changes for QuantLib 1.1
Portability
- Added support for Microsoft Visual C++ 2010.
- Fixed m4 macro for QuantLib detection. It now works also when asked
for versions such as 1.1 (as opposed to 1.1.0).
Date/time
- Added Russian calendar.
- Revamped time-series iterators (thanks to Slava Mazur.) Iterators
on dates and values were added, as well as C++0X-style cbegin() and
cend() iterators.
Instruments
- Added a few inspectors to zero-coupon inflation swaps.
- Added Kirk approximation for two-asset spread options.
- Added specialized BTP class (Italian government bonds) and related
RendistatoCalculator class to help instantiation of this type of
FixedRateBond. - Added analytic pricing engine for the piecewise-constant
time-dependent Heston model. - Added paymentCalendar to FixedRateBond, possibly different
than the one used for accrual-date calculation.
Processes
- Added Quadratic Exponential discretization scheme for the Heston
process, including martingale correction.
Indexes
- Added inspector for discounting curve to swap index (thanks to Peter
Caspers.) - Added exogenous discounting to all swap indexes.
- Added SONIA index.
- Added HICPXT indexes.
Term structures
- Added time-based interface to inflation curves.
- Piecewise zero-spreaded term structure can now manage spread with
any compounding (thanks to Robert Philipp.) - FittedBondDiscountCurve now works with any BondHelpers, not only
FixedRateBondHelpers. - Added Svensson curve-fitting method (thanks to Alessandro Roveda.)
Math
- Added Ziggurat random-number generator (thanks to Kakhkhor
Abdijalilov.) - Added experimental copula-based random-number generators (thanks to
Hachemi Benyahia.) - More performant implementation of inverse cumulative distribution
(thanks to Kakhkhor Abdijalilov.) - More performant mt19937 implementation (thanks to Kakhkhor
Abdijalilov.) - Added more copulas (thanks to Hachemi Benyahia.) The new formulas
are for Ali-Mikhail-Haq copula, Galambos copula, Husler-Reiss
copula, and Plackett copula. - Added autocovariance calculation (thanks to Slava Mazur.)
Monte Carlo
- Improved LSM basis system (thanks to Kakhkhor Abdijalilov.)
Utilities
- Reworked Null class template (thanks to Kakhkhor Abdijalilov.) The
new implementation avoids the need for a macro on 64-bit systems and
automatically covers all floating-point and integer types.
Experimental folder
The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases.
New contributions for this release were:
- 2D finite-difference Bates engine based on the partial integro
differential equation. - 2D finite-difference engine for Black-Scholes processes (including
local volatility.) - Black-Scholes process with support for vega stress test (thanks to
Michael Heckl.) - Extended Ornstein-Uhlenbeck process.
- Margrabe option (thanks to IMAFA/Polytech'Nice students Marius Akre,
Michael Benguigui, and Yanice Cherrak.) - Simple chooser option (thanks to IMAFA/Polytech'Nice students
Clement Barret, Fakher Braham, and Mohamed Amine Sadaoui.) - Generalized Hull-White model (thanks to Cavit Hafizoglu.) The
generalized model can take piecewise-constant parameters instead of
constant ones. A matching generalized Ornstein-Uhlenbeck process was
also added. - Variance-gamma implementation (thanks to Adrian O'Neill.)
Contributed classes include a variance-gamma process and model (with
data but no behavior at this time) and a couple of working engines
for European options. - Hybrid products in the McBasket framework (thanks to Andrea Odetti.)
Path pricers now take a vector of YieldTermStructures that contains
the (possibly stochastic) yield curves. - Delta calculator for FX options (thanks to Dimitri Reiswich.)
1.0.1
Changes for QuantLib 1.0.1
QuantLib 1.0.1 is a bug-fix release for version 1.0.
- Added moving holidays for 2010 to Eastern calendars.
- The Singleton class should now work correctly when used on the .Net
platform (thanks to Nathan Abbott.) - QuantLib now compiles with the Sun Studio compiler on the Solaris
platform (thanks to Norbert Irmer for the report and for testing.) - Bug fix: let an IndexedCashFlow observe its index.
Previously, index changes would not be propagated to the cash flow
and thus to any observers of the latter. This affected zero-coupon
inflation swaps. - Bug fix: added missing method implementations to zero-coupon
inflation swaps.
A couple of methods were declared but not defined. - Bug fix: create exercise-date vector correctly for callable bonds.
Previously, the actual exercise dates were stored after a number
of null dates. For most choices of day counter, this resulted in
negative exercise times that were harmlessly discarded. For some
day counters (e.g., ActualActual::Bond) the null dates caused an
exception instead. - Bug fix: properly account for CDS protection-start date.
During bootstrap of the default-probability curve, the
protection-start date was taken into account when calculating the
coupon schedule of the underlying CDS but not when calculating its
value (a few days of protection could be lost.)
Also, sometimes the protection-start date was compared incorrectly
to the accrual-start date leading to false positives when checking
requirements. - Bug fix: coupon pricers now properly check for the result of the
dynamic_cast they perform.
Previously, setting a pricer to a coupon of the wrong type would
cause an access violation by dereferencing the null pointer
returned by the failed cast.
1.0
Changes for QuantLib 1.0
Portability
- Fixes for x64 Visual Studio compilation (thanks to Craig Miller.)
- Enabled language extensions in Visual Studio projects.
- Prevented make errors with older shells (thanks to Walter Eaves.)
Date/time
- Changes to end-of-month adjustment. In a schedule, the Unadjusted convention now supersedes a non-null calendar and causes dates to roll on the unadjusted end of month (possibly a holiday.)
- Added new date-generation rule for CDS (thanks to Jose Aparicio.)
- Fix for CDS fair-upfront calculation (thanks to Jose Aparicio.) Previously, fair-upfront calculation required a non-null upfront to begin with. This is no longer the case.
Instruments
- Fixed discounting of dividends on convertible-bond grid (thanks to Benoit Houzelle and Samuel Lerouge.)
Cash flows
- A number of CashFlows methods now return a meaningful result even if the passed leg is empty.
Processes
- Changed default discretization for Heston process. The new default (giving a better performance) is quadratic exponential with Martingale correction.
Term structures
- Removed ambiguous parRate member functions from YieldTermStructure interface.
Examples
Added market-model example.
Experimental folder
The ql/experimental folder contains code which is still not fully integrated with the library or even fully tested, but is released in order to get user feedback. Experimental classes are considered unstable; their interfaces might change in future releases.
New contributions for this release were:
- Longstaff-Schwartz algorithm for basket products including coupon payments (thanks to Andrea Odetti;)
- added sparse incomplete LU preconditioner for 2D finite-difference models (thanks to Ralph Schreyer.)