QuantLib 1.39 includes 28 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/37?closed=1.
-
Bug in recent Visual C++ versions: a few recent version of the Visual C++ 2022 compiler (from 17.14.2 to 17.14.8) had a known bug that, unfortunately, affected QuantLib heavily and maed it basically unusable. A fix was released in version 17.14.9; if you’re compiling QuantLib on Windows, make sure you're using at least that version (or, if you can't upgrade, use the Visual C++ 2019 toolset; you can do that from VC++ 2022, as well).
-
Change of default: as already announced, in this release we're switching the default for
ext::anyandext::optionalfrom the Boost implementation to the standard one. Usingboost::anyandboost::optionalis still possible for the time being but deprecated.
-
Fixed a corner case of
Calendar::advancewhen using EOM and the unadjusted business-day convention; thanks to Eugene Toder (@eltoder). -
Fixed an error when asking for the serial number of a null date with intraday support enabled (@lballabio); thanks to @UnitedMarsupial for the heads-up.
-
Added the SHIR fixing calendar (@lballabio).
-
Fixed the order of operations in the 30/360 USA day-count convention; thanks to Eugene Toder (@eltoder).
-
Added the SARON index; thanks to Paolo D'Elia (@paolodelia99).
-
Added a
CustomIborIndexclass that allows to create an IBOR-like index with custom calendars for value and maturity dates calculations; thanks to Eugene Toder (@eltoder).
- The
MakeOISclass now knows the default number of settlement days for a few currencies; thanks to Zak Kraehling (@7astro7).
-
The
FxSwapRateHelperclass can now be built specifying fixed dates instead of a tenor; thanks to Eugene Toder (@eltoder). -
A number of helpers can now take quoted rates either as numbers or
Handle<Quote>via the use ofstd::variant; this reduces the number of overloaded constructors and in some cases allows the use of keyword arguments when exported to Python. Thanks to Paolo D'Elia (@paolodelia99) and Eugene Toder (@eltoder). -
The
OISRateHelperclass can now specify a calendar for the overnight leg; thanks to Eugene Toder (@eltoder). -
The
ZeroCouponInflationSwapHelperclass now doesn't need to be passed a nominal curve, which wouldn't affect the results anyway (@lballabio).
-
Optionlet stripperes can now use overnight indexes; thanks to Paolo D'Elia (@paolodelia99).
-
Added calculation of better guesses for SABR calibration as detailed in the Le Floc'h and Kennedy paper (@lballabio).
-
Removed features deprecated in version 1.34:
- the overloads of
Bond::yield,BondFunctions::atmRate,BondFunctions::yieldandBondFunctions::zSpreadtaking a price as aRealinstead of aBond::Priceinstance; - the
Swaption::underlyingSwapandSwaptionHelper::underlyingSwapmethods; - the constructors of
InflationTermStructure,ZeroInflationTermStructure,YoYInflationTermStructure,InterpolatedZeroInflationCurve,InterpolatedYoYInflationCurve,PiecewiseZeroInflationCurveandPiecewiseYoYInflationCurvetaking an observation lag; - the overload of
InflationTermStructure::setSeasonalitytaking no arguments; - the
InflationTermStructure::setBaseRatemethod; - the
fixedRateBondmethod andfixedRateBond_data member of theFixedRateBondHelperclass, and thecpiBondmethod andcpiBond_data member of theCPIBondHelperclass.
- the overloads of
-
Deprecated the
observationLagandhasExplicitBaseDatemethods and theobservationLag_data member of theInflationTermStructureclass; inflation term structures always have an explicit base date now. -
Deprecated the usage of
boost::anyandboost::optional; their standard counterparts are used by default now. -
Deprecated the constructor of
ZeroCouponInflationSwapHelpertaking a nominal curve; use the other constructor instead.
Thanks go also to Imrane Amri (@raneamri), Ralf Konrad Eckel (@ralfkonrad), Joan Carlos Naftanaila (@MiDDiz), Eugene Toder (@eltoder), Paolo D'Elia (@paolodelia99) and Holger Rother (@hrother) for miscellaneous smaller fixes, improvements or reports.