QuantLib v1.14 Release Notes
Release Date: 2018-10-01 // over 5 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.