QuantLib 1.34 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/32?closed=1.
-
Future end of support: as announced in release 1.32, we're targeting next release (1.35) as the last to support Visual C++ 2015, g++ up to version 6.x, and clang up to version 4; support for those compilers will be dropped in release 1.36, about six months from now. From that point onwards, this will allows us to enable the use of C++17 in the code base. Also, given the testing environments available on GitHub actions, clang 5 is already no longer available to us for testing, and in a while the same will hold for clang 6 and g++ 7. Therefore, it is suggested to upgrade to a newer version if possible.
-
Future end of support: at the same time as the above, we'll also remove the configure switch that allows to use
boost::tuple,boost::functionandboost::bindinstead of theirstdcounterparts; thestdclasses are already the default since release 1.32. -
Generate and install pkg-config files in CMake builds; thanks to GitHub user @jez6.
-
Prevent
Calendar::advancefrom returning the business end of month (instead of the calendar end) whenendOfMonthistrueandconventionisUnadjusted; thanks to GitHub user @DeimosXing. -
Add good Friday holiday for SOFR fixing; thanks to GitHub user @PaulXiCao.
-
Properly restrict São Paulo city holiday to years before 2022; thanks to Marco Bruno Ferreira Vasconcellos (@marcobfv).
-
Update holidays for 2023 and 2024 in calendars for India, Thailand, Singapore and South Africa; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
-
Fixed a couple of cases in which notifications were not forwarded properly; thanks to GitHub user @djkrystul for the heads-up.
-
Fixed past payment dates and added support for OIS in
LinearTsrPricer; thanks to Peter Caspers (@pcaspers).
-
Swaptions can now take an OIS as underlying; thanks to Guillaume Horel (@thrasibule) and Peter Caspers (@pcaspers). So far, only
BlackSwaptionEnginemanages OIS explicitly; other engines might work and return approximated values. -
More methods in
MakeOISandMakeVanillaSwap; thanks to Eugene Toder (@eltoder). -
More methods in the
BondFunctionsclass now support either clean or dirty prices; thanks to Francois Botha (@igitur). -
The
basisPointValueandyieldValueBasisPointmethods inBondFunctionsdidn't always manage the settlement date correctly; this is now fixed (thanks to GitHub user @jez6). -
Add
CustomtoFutures::Typeenumeration to allow passing custom dates to futures; thanks to Eugene Toder (@eltoder).
-
Inflation curves can now be built passing an explicit base date (corresponding to the last published fixing) instead of an observation lag (@lballabio).
-
Fixed calculation of year fraction under Actual/365 Canadian convention in
FuturesRateHelper; thanks to GitHub user @PaulXiCao. -
Fixed settlement date calculation in cross-currency basis-swap rate helpers in some cases; thanks to Marcin Rybacki (@marcin-rybacki) for the fix and to Aleksis Ali Raza for the heads-up.
- Handle non-equidistant grids and arbitrary dimensions in Laplace interpolation; thanks to Peter Caspers (@pcaspers).
-
Removed features deprecated in version 1.29:
- The
argument_type,first_argument_type,second_argument_typeandresult_typetypedefs in several classes; - The overloads of zero-rate inflation index constructors taking an
interpolatedargument; - The
interpolatedmethod and the protectedinterpolated_data member inInflationIndex; - The overload of
CashFlows::npvbpstaking the result by reference; - The protected
rateCurve_method inInflationCouponPricer; - The
ThreadKeytypedef; - The empty header
ql/experimental/credit/riskybond.hpp.
- The
-
Deprecated the constructors of
InflationTermStructure,ZeroInflationTermStructure,YoYInflationTermStructure,InterpolatedZeroInflationCurve,InterpolatedYoYInflationCurve,PiecewiseZeroInflationCurveandPiecewiseYoYInflationCurvetaking an observation lag; use the overloads taking an explicit base date instead. -
Deprecated the
Bond::yield,BondFunctions::atmRate,BondFunctions::yieldandBondFunctions::zSpreadoverloads taking a clean price as a number; use the overloads taking aBond::Priceinstead. -
Deprecated the
InflationTermStructure::setSeasonalityoverload taking no arguments; use the overload taking a pointer and pass an empty one to remove seasonality. -
Deprecated the
InflationTermStructure::setBaseRatemethod; setbaseRate_directly if needed. -
Deprecated the
Swaption::underlyingSwapandSwaptionHelper::underlyingSwapmethods; useunderlyinginstead. -
Deprecated the broken
FixedRateBondHelper::fixedRateBondandCPIBondHelper::cpiBondmethods and the correspondingfixedRateBond_andcpiBond_data members.
Thanks go also to Isuru Fernando (@isuruf), Viktor Zhou (@yyuuhhjjnnmm), Stephen Dacek (@sdacek), Yi Jiang (@yjian012), Jonathan Sweemer (@sweemer), Eugene Toder (@eltoder), the XAD team (@auto-differentiation-dev) and GitHub user @PaulXiCao and @klin333 for miscellaneous fixes, improvements or reports.