QuantLib v1.14 Release Notes
Release Date: 2018-10-01 // almost 4 years ago-
๐ Changes for QuantLib 1.14:
QuantLib 1.14 includes 40 pull requests from several contributors.
The most notable changes are included below.
A detailed list of changes is available in ChangeLog.txt and at https://github.com/lballabio/QuantLib/milestone/10?closed=1.Portability
- ๐ In April 2018, Microsoft ended its support for Microsoft Visual C++ 2008. As previously announced, this release drops support for it.
- ๐ Fixed generation of RPM from QuantLib.spec (thanks to Simon Rees).
- ๐ Avoided uses of some features removed in C++17 so that the library can be compiled under the latest standard if needed.
- โก๏ธ
boost::shared_ptr
and a few related classes and functions were imported into the new namespaceQuantLib::ext
. This allows them to be conditionally replaced with theirstd::
versions (see the "opt-in features" section below). The default is still to use the boost implementation. Client code using the boost namespace explicitly doesn't need to be updated. - ๐ Fixed build and tests on FreeBSD-11 (thanks to Klaus Spanderen and to Mikhail Teterin for the heads-up).
- ๐ Fixed tests with the
-ffast-math
compilation flag enabled (thanks to Klaus Spanderen and to Jon Davies for the heads-up).
Instruments and pricing engines
- โ Add different settlement methods for swaptions (thanks to Peter Caspers).
- Take into account distinct day-count conventions for different curves in the analytic barrier-option engine (thanks to GitHub user cosplay-raven).
- Extract the correct constant coefficients to use in finite-difference vanilla-option engine when using a time-dependent Black-Scholes process (thanks to GitHub user Grant6899 for the analysis).
Cash flows and interest rates
- โ Added Bibor and THBFIX indices (thanks to Matthias Lungwitz).
Models
- โ Added a hook for using a custom smile model in the Markov functional model (thanks to Peter Caspers).
- โ Added a base class
CalibrationHelperBase
to the hierarchy of calibration helpers in order to allow for helpers not using the Black model. - Return underlying dynamics from Black-Karasinski model (thanks to Fanis Antoniou).
Finite differences
- โ Added higher-order spatial operators (thanks to Klaus Spanderen).
- โ Added TR-BDF2 finite-difference scheme (thanks to Klaus Spanderen).
Term structures
- ๐ Allow swap helpers to specify end-of-month convention (thanks to Matthias Lungwitz).
Date/time
- Prevented division by zero in Actual/365 Canadian day counter (thanks to Ioannis Rigopoulos for the heads-up).
- โ Added Children's Day to the list of Romanian holidays (thanks to Matthias Lungwitz).
- โ Added new calendar for Thailand (thanks to Matthias Lungwitz).
- โ Added 30/360 German day counter (thanks to Peter Caspers and Alexey Indiryakov).
Math
- ๐ Fixed bug in convex-monotone interpolation (thanks to Peter Caspers for the fix and to Tom Anderson for finding the bug).
๐ New opt-in features
- It is now possible to use
std::shared_ptr
and its related classes instead ofboost::shared_ptr
. Note that, unlike its boost counterpart,std::shared_ptr
doesn't check for null pointers before access; this can lead to crashes. The feature can be enabled by uncommenting theQL_USE_STD_SHARED_PTR
macro inql/userconfig.hpp
on Visual C++ or by passing the--enable-std-pointers
to./configure
on other systems. This requires using at least the C++11 standard during compilation. - It is now possible to use
std::unique_ptr
instead ofstd::auto_ptr
; this makes it possible to compile the library in strict C++17 mode and to avoid deprecation warnings in C++11 and C++14 mode. The feature can be enabled by uncommenting theQL_USE_STD_UNIQUE_PTR
macro inql/userconfig.hpp
on Visual C++ or by passing the--enable-std-unique-ptr
to./configure
on other systems.
๐ Thanks go also to Sam Danbury, Barry Devlin, Roland Kapl, and GitHub user todatamining for smaller fixes, enhancements, and bug reports.