QuantLib 1.29 includes 42 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/26?closed=1.
-
End of support: as announced in the notes for the previous release, this release no longer manages thread-local singletons via a user-provided
sessionIdfunction, and therefore the latter is no longer needed. Instead, the code now uses the built-in language support for thread-local variables. Thanks go to Peter Caspers (@pcaspers). -
Future end of support: as announced in the notes for the previous release, after the next couple of releases, using
std::tuple,std::functionandstd::bind(instead of theirboostcounterparts) will become the default. If you're usingext::tupleetc. in your code (which is suggested), this should be a transparent change. If not, you'll still be able to choose theboostversions via a configure switch for a while; but we do suggest you start usingext::tupleetc. in the meantime. -
Replaced internal usage of
boost::threadwithstd::thread; thanks to Jonathan Sweemer (@sweemer). This removed our last dependency on Boost binaries and makes it possible to compile QuantLib using a header-only Boost installation. -
On Windows, it is now possible to use the MSVC dynamic runtime when using cmake by passing
-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDLLon the command line; thanks to Jonathan Sweemer (@sweemer). The static runtime remains the default. -
It is now possible to build QuantLib with Intel's
icpxcompiler using cmake; thanks to Jonathan Sweemer (@sweemer). Note that in order to get all the unit tests passing,-fp-model=precisemust be added toCMAKE_CXX_FLAGS.
-
Updated Chinese holidays for 2023; thanks to Cheng Li (@wegamekinglc).
-
Added in-lieu holiday for Christmas 2022 to South-African calendar; thanks to Joshua Hayes (@JoshHayes).
-
Added King Charles III coronation holiday to UK calendar; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
-
Added holiday for National Day of Mourning to Australian calendar; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
-
Added high performance/precision American engine based on fixed-point iteration for the exercise boundary; thanks to Klaus Spanderen (@klausspanderen).
-
Bonds with draw-down (i.e., increasing notionals) are now allowed; thanks to Oleg Kulkov (@Borgomi42 ).
-
Added
withIndexedCouponsandwithAtParCouponsmethods toMakeSwaptionfor easier initialization; thanks to Ralf Konrad (@ralfkonrad). -
It is now possible to use the same pricing engine for vanilla and dividend vanilla options, or for barrier and dividend barrier options (@lballabio).
- Creating a zero inflation index as "interpolated" is now deprecated; thanks to Ralf Konrad (@ralfkonrad). The index should only return monthly fixings. Interpolation is now the responsibility of inflation-based coupons.
- The
ConstantCPIVolatilityconstructor can now take a handle to a volatility quote, instead of just an immutable number (@lballabio).
-
Removed features deprecated in version 1.24:
- the
createAtParCoupons,createIndexedCouponsandusingAtParCouponsmethods ofIborCoupon; - the
RiskyBondclass and its subclassesRiskyFixedBondandRiskyFloatingBond; - the
CrossCurrencyBasisSwapRateHelpertypedef; - the
termStructure_data member ofBlackCalibrationHelper; - the static
baseCurrencyandconversionTypedata members ofMoney; - the
nominalTermStructuremethod and thenominalTermStructure_data member ofInflationTermStructure; - the constructor of the
UnitedStatescalendar not taking an explicit market.
- the
-
Deprecated the
argument_type,first_argument_type,second_argument_typeandresult_typetypedefs in a number of classes; useautoordecltypeinstead. -
Deprecated the constructors of
InflationIndex,ZeroInflationIndex,FRHICP,ZACPI,UKRPI,EUHICP,EUHICPXT,USCPI,AUCPIandGenericCPItaking aninterpolatedparameter; use another constructor. -
Deprecated the
interpolatedmethod and theinterpolated_data member ofInflationIndex. -
Deprecated the
ThreadKeytypedef. It was used in the signature ofsessionId, which is no longer needed after the changes in theSingletonimplementation. -
Deprecated the
rateCurve_data member of theInflationCouponPricerbase class. If you need it, provide it in your derived class. -
Deprecated the
npvbpsfunction taking NPV and BPS as references. Use the overload returning a pair ofReals.
Thanks go also to Matthias Groncki (@mgroncki), Jonathan Sweemer (@sweemer) and Nijaz Kovacevic (@NijazK) for a number of smaller fixes and improvements, to the Xcelerit Dev Team (@xcelerit-dev) for improvements to the automated CI builds, and to Vincenzo Ferrazzanno (@vincferr), @alienbrett, @xuruilong100 and @philippb90 for raising issues.