Releases: lballabio/QuantLib
1.27.1
Downloads:
Changes for QuantLib 1.27.1:
QuantLib 1.27.1 is a bug-fix release.
It restores the old implementation of Null<T>
which was replaced
in version 1.27 with a new one; the latter was reported to cause
an internal compiler error under Visual C++ 2022 for some client code.
The new version (which avoids some problems when replacing Real
with some AAD-enabled types) is still available; depending on how
you compile QuantLib, it can be enabled through the
--enable-null-as-functions
configure flag, the cmake variable
QL_NULL_AS_FUNCTIONS
, or the define with the same name in the
ql/userconfig.hpp
header (@lballabio).
Full Changelog: QuantLib-v1.27...QuantLib-v1.27.1
1.27
Downloads:
Changes for QuantLib 1.27:
QuantLib 1.27 includes 37 pull requests from several contributors.
Some of 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/23?closed=1.
Portability
- Removed support: as announced in the notes for the previous release, support for Visual Studio 2013 was dropped.
- End of support: as announced in the notes for the previous release, this release will be the last to avoid C++14 syntax. Allowing the newer (but still oldish) standard should still support most compilers released in the past several years.
- Future end of support: this release and the next will be the last to manage thread-local singletons via a user-provided
sessionId
function. Future releases will use the built-in language support for thread-local variables. - The
Real
type is now used consistently throughout the codebase, thanks to the Xcelerit dev team (@xcelerit-dev). This, along with other changes, allows its default definition todouble
to be replaced with one of the available third-party AAD types. - The test suite is now built using the header-only version of Boost.Test, thanks to Jonathan Sweemer (@sweemer). This might simplify Boost installation for some users, since in the default configuration QuantLib now only needs the Boost headers.
- Replaced some Boost facilities with the corresponding C++11 counterparts; thanks to Klaus Spanderen (@klausspanderen) and Jonathan Sweemer (@sweemer).
Date/time
- Fixed the behavior of a couple of Australian holidays; thanks to Pradeep Krishnamurthy (@pradkrish) and Fredrik Gerdin Börjesson (@gbfredrik).
Instruments
- Added the Turnbull-Wakeman engine for discrete Asian options; thanks to Fredrik Gerdin Börjesson (@gbfredrik) for the main engine code and to Jack Gillett (@jackgillett101) for the Greeks.
- Added more validation to barrier options; thanks to Jonathan Sweemer (@sweemer).
Models
- Fixed the start date of the underlying swap in swaption calibration helpers; thanks to Peter Caspers (@pcaspers).
- Fixed parameter checks in SVI volatility smiles; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
Patterns
- Avoid possible iterator invalidation while notifying observers; thanks to Klaus Spanderen (@klausspanderen).
Deprecated features
- Removed the
--enable-disposable
and--enable-std-unique-ptr
configure switches. - Removed features deprecated in version 1.22 (@lballabio):
- the unused
AmericanCondition
andFDAmericanCondition
classes; - the old-style FD shout and dividend shout engines;
- the unused
OneFactorOperator
class; - the
io::to_integer
function; - the
ArrayProxy
andMatrixProxy
classes.
- the unused
- Deprecated the
QL_NOEXCEPT
andQL_CONSTEXPR
macros. - Deprecated the
QL_NULL_INTEGER
andQL_NULL_REAL
macros. - Deprecated some unused parts of the old-style FD framework (@lballabio):
- the
PdeShortRate
class; - the
ShoutCondition
andFDShoutCondition
classes; - the
FDDividendEngineBase
,FDDividendEngineMerton73
,FDDividendEngineShiftScale
andFDDividendEngine
classes; - the
FDStepConditionEngine
andFDEngineAdapter
classes.
- the
- Deprecated a number of function objects in the
ql/math/functional.hpp
header. - Deprecated the unused
MultiCurveSensitivities
class. - Deprecated the unused
inner_product
function.
Thanks go also to Ryan Russell (@ryanrussell) for documentation fixes.
New Contributors
- @gbfredrik made their first contribution in #1351
- @pradkrish made their first contribution in #1374
- @ryanrussell made their first contribution in #1395
- @xcelerit-dev made their first contribution in #1400
- @lotzej made their first contribution in #1401
Full Changelog: QuantLib-v1.26...QuantLib-v1.27
1.26
Downloads:
Changes for QuantLib 1.26:
QuantLib 1.26 includes 26 pull requests from several contributors.
Some of 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/22?closed=1.
Portability
- End of support: as announced in the notes for the previous release, this release is the last to support Visual Studio 2013.
- End of support: this release is the last to support the long-deprecated configure switches
--enable-disposable
and--enable-std-unique-ptr
. From the next release,Disposable
will always be disabled (and eventually removed) andstd::unique_ptr
will always be used instead ofstd::auto_ptr
. This has already been the default in the last few releases. - Future end of support: this release and the next will be the last to avoid C++14 syntax. This should still support most compilers released in the past several years (except for Visual Studio 2013, which we're already dropping in this release).
- If tagged libraries are specified, as is the default on Windows, CMake now gives the built libraries the same names as the Visual Studio solution (for instance,
QuantLib-x64-mt-s
instead ofQuantLib-mt-s-x64
) so that the pragma inql/auto_link.hpp
works. - QuantLib can now also be built as a subproject in a larger CMake build (thanks to @pcaspers).
Date/time
- When printed,
Period
instances now display transparently what their units and length are, instead of doing more fancy formatting (e.g., "16 months" is now displayed instead of "1 year 4 months"). Also,Period
instances that compare as equal now return the same period from theirnormalize
method (@lballabio).
Indexes
- Added Tona (Tokyo overnight average) index (thanks to @nistick21).
- Added static
laggedFixing
method toCPI
structure which provides interpolation of inflation index fixings (@lballabio).
Cash flows
- The
CPICoupon
andCPICashFlow
classes now take into account the correct dates and observation lag for interpolation (@lballabio).
Instruments
- Added a
BondForward
class that generalizes the existingFixedRateBondForward
to any kind of bond (thanks to @marcin-rybacki). - Avoided unexpected jumps in callable bond OAS (thanks to @ralfkonrad).
- Fixed
TreeSwaptionEngine
mispricing when adjusting the instrument schedule to a near exercise date (thanks to @ralfkonrad). - the
ForwardRateAgreement
class now works correctly without an explicit discount curve (@lballabio).
Term structures
- Dates explixitly passed to
InterpolatedZeroInflationCurve
are no longer adjusted automatically to the beginning of their inflation period (@lballabio).
Deprecated features
- Removed the
MCDiscreteAveragingAsianEngine
class, deprecated in version 1.21. - Deprecated the
LsmBasisSystem::PolynomType
typedef, now renamed toPolynomialType
;MakeMCAmericanEngine::withPolynomOrder
was also deprecated and renamed towithPolynomialOrder
. - Deprecated the
ZeroInflationCashFlow
constructor taking an unused calendar and business-day convention. - Deprecated the
CPICoupon
constructor taking a number of fixing days, as well as theCPICoupon::indexObservation
,CPICoupon::adjustedFixing
andCPICoupon::indexFixing
methods and theCPILeg::withFixingDays
method. - Deprecated the
CPICashFlow
constructor taking a precalculated fixing date and a frequency. - Deprecated the
Observer::set_type
andObservable::set_type
typedefs. - Deprecated the unused
Curve
class. - Deprecated the unused
LexicographicalView
class. - Deprecated the unused
Composite
class. - Deprecated the unused
DriftTermStructure
class.
Thanks go also to @mgroncki, @sweemer and @FloridSleeves for smaller fixes, enhancements and bug reports.
New Contributors
- @FloridSleeves made their first contribution in #1295
- @nistick21 made their first contribution in #1302
Full Changelog: QuantLib-v1.25...QuantLib-v1.26
1.25
Downloads:
Changes for QuantLib 1.25:
QuantLib 1.25 includes 35 pull requests from several contributors.
Some of 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/21?closed=1.
Portability
- End of support: this release and the next will be the last two to support Visual Studio 2013.
- Added a few CMake presets for building the library (thanks to @sweemer).
- When built and installed through CMake, the library now installs a
QuantLibConfig.cmake
file that allows other CMake projects to find and use QuantLib (thanks to @sweemer).
Cashflows
- Fixed the accrual calculation in overnight-indexed coupons (thanks to @mshojatalab).
- Fixed fixing-days usage in
SubPeriodsCoupon
class (thanks to @marcin-rybacki). - IBOR coupons fixed in the past no longer need a forecast curve to return their amount (@lballabio).
Indexes
- Important change: inflation indexes inherited from the
ZeroInflationIndex
class no longer rely on their forecast curve for interpolation. For coupons that already took care of interpolation (as in the case ofCPICoupon
andZeroInflationCashFlow
) this should not change the results. In other cases, figures will change but should be more correct as the interpolation is now performed according to market conventions. Also, most inflation curves now assume that the index is not interpolated. Year-on-year inflation indexes and curves are not affected (@lballabio).
Instruments
- Breaking change: convertible bonds were moved out of the
ql/experimental
folder. Also, being market values and not part of the contract, dividends and credit spread were moved from the bond to theBinomialConvertibleEngine
class (thanks to @w31ha0). - The
ForwardRateAgreement
no longer inherits fromForward
. This also made it possible to implement theamount
method returning the expected cash settlement (thanks to @w31ha0). The methods fromForward
were kept available but deprecated so code using them won't break. Client code might break if it performed casts toForward
.
Models
- Fixed formula for discount bond option in CIR++ model (thanks to @mmencke).
Term structures
- It is now possible to use normal volatilities in SABR smile sections, and thus in the
SwaptionVolCube1
class (thanks to @w31ha0).
Date/time
- Added Chinese holidays for 2022 (thanks to @wegamekinglc).
Currencies
- Added a number of African, American, Asian and European currencies from Quaternion's
QuantExt
project (thanks to @OleBueker).
Experimental folder
The ql/experimental
folder contains code whose interface is not fully stable, but is released in order to get user feedback. Experimental classes make no guarantees of backward compatibility; their interfaces might change in future releases.
- Added experimental rate helpers for LIBOR-LIBOR and Overnight-LIBOR basis swaps (@lballabio).
- Renamed
WulinYongDoubleBarrierEngine
toSuoWangDoubleBarrierEngine
(thanks to @aditya113141 for the fix and @xuruilong100 for the heads-up).
Deprecated features
- Deprecated the constructors of zero-coupon inflation term structures taking an
indexIsInterpolated
boolean argument. - Deprecated a number of methods in the
ForwardRateAgreement
class that used to be inherited fromForward
. - Deprecated a couple of constructors in the
SofrFutureRateHelper
class. - Deprecated the
WulinYongDoubleBarrierEngine
alias forSuoWangDoubleBarrierEngine
. - Deprecated the protected
spreadLegValue_
data member in theBlackIborCouponPricer
class.
Thanks go also to @tomwhoiscontrary, @igitur, @matthewkolbe, @bensonluk, @hsegger, @klausspanderen, @jxcv0 and @azsrz for smaller fixes, enhancements and bug reports.
New Contributors
- @sweemer made their first contribution in #1209
- @azsrz made their first contribution in #1242
- @jxcv0 made their first contribution in #1248
- @matthewkolbe made their first contribution in #1254
- @OleBueker made their first contribution in #1262
- @hsegger made their first contribution in #1280
- @aditya113141 made their first contribution in #1279
1.24
Downloads
Changes for QuantLib 1.24:
QuantLib 1.24 includes 25 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/20?closed=1.
Portability
- Overhauled the CMake build system (thanks to @pkovacs). Among other things, it now allows to specify the available configuration options from the
cmake
invocation and adds the required Boost libraries accordingly.
Instruments
- Avoid callable-bond mispricing when a call date is close but not equal to a coupon date (thanks to @ralfkonrad for the fix and to @aichao for the analysis). See #930 for details.
- A new
RiskyBondEngine
is available for bonds (thanks to @w31ha0). It prices bonds based on a risk-free discount cure and a default-probability curve used to assess the probability of each coupon payment. It makes accessible to all bonds the calculations previously available in the experimentalRiskyBond
class.
Cashflows
- The choice between par and indexed coupons was moved to
IborCouponPricer
(thanks to @pcaspers). This also made it possible to override the choice locally when building aVanillaSwap
or aSwapRateHelper
, so that coupons with both behaviors can now be used at the same time.
Term structures
- Cross-currency basis swap rate helpers now support both constant-notional and marked-to-market swaps (thanks to @marcin-rybacki).
Date/time
- Added Chilean calendar (thanks to @anubhav-pandey1).
- Added new
ThirdWednesdayInclusive
date-generation rule that also adjusts start and end dates (thanks to @w31ha0).
Patterns
- Overhauled
Singleton
implementation (thanks to @pcaspers). Singletons are now initialized in a thread-safe way when sessions are enabled, global singletons (that is, independent of sessions) were made available, and static initialization was made safer.
Test suite
- Sped up some of the longer-running tests (thanks to @mshojatalab).
Deprecated features
- Deprecated default constructor for the U.S. calendar; the desired market should now be passed explicitly.
- Deprecated the
nominalTermStructure
method and the corresponding data member in inflation term structures. Any object needing the nominal term structure should have it passed explicitly. - Deprecated the
termStructure_
data member inBlackCalibrationHelper
. It you're inheriting fromBlackCalibrationHelper
and need it, declare it in your derived class. - Deprecated the
createAtParCoupons
,createIndexedCoupons
andusingAtParCoupons
methods ofIborCoupon
, now moved to a newIborCoupon::Settings
singleton (thanks to @pkovacs). - Deprecated the
conversionType
andbaseCurrency
static data members ofMoney
, now moved to a newMoney::Settings
singleton (thanks to @pkovacs). - Removed features deprecated in version 1.19: the
BMAIndex
constructor taking a calendar, theAmericanCondition
andShoutCondition
constructors taking an option type and strike, theCurveDependentStepCondition
class and theStandardCurveDependentStepCondition
typedef, theBlackCalibrationHelper
constructor taking a yield term structure, the various inflation term structure constructors taking a yield term structure, the various yield term constructors taking a vector of jumps but not specifying a reference date.
Thanks go also to @lballabio, @laaouini, @jackgillett101, @bnalgo and @klausspanderen for smaller fixes, enhancements and bug reports.
New Contributors
- @laaouini made their first contribution in #1162
- @anubhav-pandey1 made their first contribution in #1155
- @pkovacs made their first contribution in #1183
- @mshojatalab made their first contribution in #1202
1.23
Downloads:
QuantLib-1.23.tar.gz
QuantLib-1.23.zip
Changes for QuantLib 1.23:
QuantLib 1.23 includes 30 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/19?closed=1.
Portability
- On Mac OS, the
-std=c++11
flag is now added automatically when needed. This applies to bothconfigure
andcmake
(thanks to Leander Schulten). - We now assume that the compiler supports Boost::uBLAS and no longer check for it in configure. (The check was originally introduced for versions of gcc before 4.x, which don't support C++ anyway.) Please let us know if this causes problems on some systems.
- The
Period
,InterestRate
andInterestRateIndex
classes are now visualized more clearly in the Visual Studio debugger (thanks to Francois Botha).
Cashflows
- Year-on-year and CPI legs are now set a default coupon pricer. In most cases, this removes the need for setting it explicitly.
- Add new
ZeroInflationCashFlow
class, used in zero-coupon inflation swaps (thanks to Ralf Konrad).
Currencies
- Added custom constructor that allows to create bespoke currencies not already included in the library (thanks to Marcin Rybacki).
Date/time
- Fixed implementation of U.S. 30/360 convention (the old one is still available as 30/360 NASD).
- The 30/360 ISDA convention can now take the termination date as a constructor argument and use it to adjust the calculation properly.
- Added the 30/360 ISMA convention; the Bond-Basis convention is now an alias to the former.
- The 30/360 German convention was renamed to ISDA; "German" remains as an alias.
- Added new Canadian holiday (National Day for Truth and Reconciliation) established in 2021 (thanks to GitHub user
qiubill
for the heads-up). - Added new U.S. holiday (Juneteenth) established in 2021.
- Added new Platinum Jubilee U.K. holiday for 2022 (thanks to Ioannis Rigopoulos for the heads-up.)
- Added missing Christmas Eve holiday to Norwegian calendar (thanks to Prince Nanda).
Indexes
- Added ESTR index (thanks to Magnus Mencke).
Instruments
- Added zero-coupon swap (thanks to Marcin Rybacki).
- The
Type
enumeration defined in several swap classes was moved to their baseSwap
class. - Fixed sign of theta in experimental Kirk engine for spread options (thanks to Xu Ruilong for the heads-up).
Processes
- Improved discretization of Cox-Ingersoll-Ross process to avoid occasional divergence (thanks to Magnus Mencke).
Deprecated features
- Deprecated default constructor for actual/actual and 30/360 day counters; the desired convention should now be passed explicitly.
- Removed features deprecated in version 1.18: the
CalibrationHelperBase
typedef (nowCalibrationHelper
), some overloads of theCalibratedModel::calibrate
andCalibratedModel::value
methods, the constructors ofPiecewiseYieldCurve
andPiecewiseDefaultCurve
taking anaccuracy
parameter, the constructors ofBondHelper
,FixedRateBondHelper
andCPIBondHelper
taking a booleanuseCleanPrice
parameter, theBondHelper::useCleanPrice()
method, and the non-staticCalendar::holidayList
method.
Thanks go also to Francis Duffy, Kevin Kirchhoff, Magnus Mencke and Klaus Spanderen for smaller fixes, enhancements and bug reports.
1.22
Downloads:
QuantLib-1.22.tar.gz
QuantLib-1.22.zip
Changes for QuantLib 1.22:
QuantLib 1.22 includes 54 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/18?closed=1.
Portability
- As previously announced, this release drops support for Visual C++ 2012. VC++ 2013 or later is now required.
- The
Date
andArray
classes are now visualized more clearly in the Visual Studio debugger (thanks to Francois Botha).
Language standard
- QuantLib now uses the C++11 standard and no longer compiles in C++03 mode. As before, it can be compiled with later versions of the standard. For details on the C++11 features used, see the pull requests marked "C++11 modernization" at the above link; for information on possible problems, see https://www.implementingquantlib.com/2021/02/leaving-03-for-real.html.
Cashflows
- Revised and tested the
SubPeriodCoupon
class (thanks to Marcin Rybacki). The class was moved out of theql/experimental
folder and its interface can now be considered stable. - Add simple averaging to overnight-index coupons in addition to the existing compound averaging (thanks to Marcin Rybacki).
- Fixed accrual calculation for inflation coupon when trading ex-coupon (thanks to GitHub user
bachhani
).
Currencies
- Added the Nigerian Naira (thanks to Bryte Morio).
Date/time
- Fixed actual/actual (ISMA) day counter calculation for long/short final periods (thanks to Francois Botha).
- Updated a couple of changed rules for New Zealand calendar (thanks to Paul Giltinan).
Indexes
- Added
hasHistoricalFixing
inspector toIndex
class to check if the fixing for a given past date is available (thanks to Ralf Konrad).
Instruments
- Added new-style finite-difference engine for shout options (thanks to Klaus Spanderen). In the case of dividend shout options, an escrowed dividend model is used.
- Revised the
OvernightIndexFutures
class. The class was moved out of theql/experimental
folder and its interface can now be considered stable. - Added an overloaded constructor for Asian options that takes all past fixings and thus allows to reprice them correctly when the evaluation date changes (thanks to Jack Gillett).
- Added support for seasoned geometric Asian options to the Heston engine (thanks to Jack Gillett).
Patterns
- Faster implementation of the
Observable
class in the thread-safe case (thanks to Klaus Spanderen).
Term structures
- Added experimental rate helper for constant-notional cross-currency basis swaps (thanks to Marcin Rybacki).
- Added volatility type and displacements to year-on-year inflation volatility surfaces (thanks to Peter Caspers).
Deprecated features
- Removed features deprecated in version 1.17: the
Callability::Type
typedef (nowBond::Price
), theFdmOrnsteinUhlenbackOp
typedef (now correctly spelled asFdmOrnsteinUhlenbeckOp
, and a number of old-style finite-difference engines (FDAmericanEngine
,FDBermudanEngine
,FDDividendAmericanEngine
and its variants,FDDividendEuropeanEngine
and its variants, andFDEuropeanEngine
) all replaced by theFdBlackScholesVanillaEngine
class. - Deprecated the old-style finite difference engines for shout options; they are now replaced by the new
FDDividendShoutEngine
class. - Deprecated a few unused parts of the old-style finite-differences framework: the
AmericanCondition
class, theOneFactorOperator
typedef, and theFDAmericanCondition
class.
Test suite
- Reduced the run time for the longest-running test cases.
Thanks go also to Francis Duffy and Cay Oest for smaller fixes, enhancements and bug reports.
1.21
Downloads:
Changes for QuantLib 1.21:
QuantLib 1.21 includes 24 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/17?closed=1.
Portability
- As previously announced, this is the last release to support Visual C++ 2012. Starting from next release, VC++ 2013 or later will be required in order to enable use of C++11 features.
Instruments
- Improve date generation for CDS schedules under the post-big-bang rules (thanks to Francis Duffy).
- Amortizing fixed-rate bonds can now use a generic
InterestRate
object (thanks to Piter Dias). - Added Monte Carlo pricer for discrete-average arithmetic Asian options under the Heston model (thanks to Jack Gillett).
- Added analytic and Monte Carlo pricers for discrete-average geometric Asian options under the Heston model (thanks to Jack Gillett). Together, they can also be used as a control variate in Monte Carlo models for arithmetic Asian options.
- Added analytic pricer for continuous-average geometric Asian options under the Heston model (thanks to Jack Gillett).
- Added analytic pricer for forward options under the Heston model (thanks to Jack Gillett).
- Added Monte Carlo pricers for forward options under the Black-Scholes and the Heston models (thanks to Jack Gillett).
Term structures
- Added Dutch regulatory term structure, a.k.a. ultimate forward term structure (thanks to Marcin Rybacki).
- Generalized exponential spline fitting to an arbitrary number of parameters; it is now also possible to fix kappa (thanks to David Sansom).
- Fixed averaging period for 1-month SOFR futures rate helper (thanks to Eisuke Tani).
Date/time
- Fixed a bug and added 2017 holidays in Thailand calendar (thanks to GitHub user
phil-zxx
for the heads-up). - Updated Chinese calendar for 2021 (thanks to Cheng Li).
- Updated Japanese calendar for 2021 (thanks to Eisuke Tani).
Thanks go also to Francois Botha, Peter Caspers, Ralf Konrad, Matthias Siemering, Klaus Spanderen and Joseph Wang for smaller fixes, enhancements and bug reports.
1.20
Changes for QuantLib 1.20:
QuantLib 1.20 includes 24 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/16?closed=1.
Portability
- Support for Visual C++ 2012 is being deprecated. It will be dropped after the next release in order to enable use of C++11 features.
- It is now possible to opt into using
std::tuple
instead ofboost::tuple
when the compiler allows it. The default is still to use the Boost implementation. The feature can be enabled by uncommenting theQL_USE_STD_TUPLE
macro inql/userconfig.hpp
on Visual C++ or by passing the--enable-std-tuple
switch to./configure
on other systems. The--enable-std-tuple
switch is also implied by--enable-std-classes
. (Thanks to Joseph Wang.)
Instruments
- Added mixing-factor parameter to Heston finite-differences barrier, rebate and double-barrier engines (thanks to Jack Gillett).
- Added a few additional results to Black swaption engine and to analytic European option engine (thanks to Peter Caspers and Marcin Rybacki).
- Improved calculation of spot date for vanilla swap around holidays (thanks to Paul Giltinan).
- Added ex-coupon feature to amortizing bonds, callable bonds and convertible bonds.
- Added optional first-coupon day counter to fixed-rate bonds (thanks to Jacob Lee-Howes).
Math
- Added convenience classes
LogCubic
andLogMixedLinearCubic
hiding a few default parameters (thanks to Andrea Maffezzoli).
Models
- Added control variate based on asymptotic expansion for the Heston model (thanks to Klaus Spanderen).
Date/time
- Added missing Hong Kong holiday (thanks to GitHub user
CarrieMY
). - Added a couple of one-off closing days to the Romanian calendar.
- Added a one-off holiday to South Korean calendar (thanks to GitHub user
fayce66
). - Added a missing holiday to Turkish calendar (thanks to Berat Postalcioglu).
Documentation
- Added basic documentation to optimization methods (thanks to GitHub user
martinbrose
).
Deprecated features
- Features deprecate in version 1.16 were removed: a constructor of the
FdmOrnsteinUhlenbeckOp
class and a constructor of theSwaptionVolatilityMatrix
class.
1.19
Changes for QuantLib 1.19:
QuantLib 1.19 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/15?closed=1.
Portability
- Support for Visual C++ 2012 is being deprecated. It will be dropped around the end of 2020 or the beginning of 2021 in order to enable use of C++11 features.
- Avoided use in Makefiles of functions only available to GNU Make (thanks to GitHub user
UnitedMarsupials
for the heads-up).
Build
- Automated builds on Travis and GitHub Actions were extended. We now have a build for Mac OS X, as well as a few builds that run a number of checks on the code (including clang-tidy) and automatically open pull requests with fixes.
Term structures
- Added options for iterative bootstrap to widen the search domain or to keep the best result upon failure (thanks to Francis Duffy).
- Added flat-extrapolation option to fitted bond curves (thanks to Peter Caspers).
Instruments
- Added finite-difference pricing engine for equity options under the Cox-Ingersoll-Ross process (thanks to Lew Wei Hao).
- Added Heston engine based on exponentially-fitted Laguerre quadrature rule (thanks to Klaus Spanderen).
- Added Monte Carlo pricing engines for lookback options (thanks to Lew Wei Hao).
- Added Monte Carlo pricing engine for double-barrier options (thanks to Lew Wei Hao).
- Added analytic pricing engine for equity options under the Vasicek model (thanks to Lew Wei Hao).
- The
Bond::yield
method can now specify a guess and whether the passed price is clean or dirty (thanks to Francois Botha).
Models
- Improved grid scaling for FDM Heston SLV calibration, and fixed drift and diffusion for Heston SLV process (thanks to Klaus Spanderen and Peter Caspers).
- Added mixing factor to Heston SLV process (thanks to Lew Wei Hao).
Math
- Improved nodes/weights for the exponentially fitted Laguerre quadrature rule and added sine and cosine quadratures (thanks to Klaus Spanderen).
Date/time
- Improved performance of the Calendar class (thanks to Leonardo Arcari).
- Updated holidays for Indian and Russian calendars (thanks to Alexey Indiryakov).
- Added missing All Souls Day holiday to Mexican calendar (thanks to GitHub user
phil-zxx
for the heads-up). - Restored New Year's Eve holiday to Eurex calendar (thanks to Joshua Engelman).
Deprecated features
- Features deprecate in version 1.15 were removed: constructors of inflation swap helpers, inflation-based pricing engines and inflation coupon pricers that didn't take a nominal term structure.
- The constructor of
BMAIndex
taking a calendar was deprecated. - The constructors of several interest-rate term structures taking jumps without a reference date were deprecated.
- The
CurveDependentStepCondition
class and related typedefs were deprecated. - The constructor of
BlackCalibrationHelper
taking an interest-rate structure was deprecated. - The constructors of several inflation curves taking a nominal curve were deprecated. The nominal curve should now be passed to the used coupon pricers.