QuantLib 1.36 includes 34 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/34?closed=1.
-
New minimum C++ standard: starting from this release, a compiler supporting C++17 is required. Passing
--enable-std-classestoconfigurenow causesstd::anyandstd::optionalto be used. -
End of support: related to the above, and as announced since release 1.32, this release drops support Visual C++ 2015, g++ up to version 6.x, and clang up to version 4. Also, given the testing environments available on GitHub actions, clang 5 and 6 are no longer available to us for testing, and the same holds for g++ 7. Therefore, it is suggested to upgrade to a newer version if possible.
-
End of support: this release also removes the configure switch that allowed to use
boost::tuple,boost::functionandboost::bindinstead of theirstdcounterparts; thestdclasses were already the default since release 1.32. The corresponding classes in theextnamespace are now deprecated. -
Future change of default: in a couple of releases, we're going to switch the default for
ext::anyandext::optionalfrom the Boost implementation to the standard one.
-
Added
startOfMonthandisStartOfMonthmethods to bothDateandCalendar; thanks to Francois Botha (@igitur). -
Added specialized Warsaw Stock Exchange (WSE) calendar to Poland; thanks to Marcin Bogusz (@marcinfair).
-
Added a new one-off holiday to South Korean calendar; thanks to Jongbong An (@jongbongan).
- Made
OvernightIndexedCouponPricerpublic and renamed toCompoundingOvernightIndexedCouponPricer, and movedArithmeticAveragedOvernightIndexedCouponPricerfrom experimental to core library; thanks to Ralf Konrad Eckel (@ralfkonrad).
-
Possibly breaking: inherited the
Indexclass fromObserverand added a virtualpastFixingmethod. If you inherited a class from bothIndexandObserver, change your code to avoid inheriting twice fromObserver. Thanks to Ralf Konrad Eckel (@ralfkonrad). -
Added currency information to
EquityIndex; thanks to Ralf Konrad Eckel (@ralfkonrad).
-
Inflation indexes are now better at deciding when to forecast (@lballabio); also added a
needsForecastmethod that makes the information available. -
Added
CPI::laggedYoYRate; also,YoYInflationCoupon,yoyInflationLeg,CappedFlooredYoYInflationCoupon,YearOnYearInflationSwap,MakeYoYInflationCapFloor,YearOnYearInflationSwapHelper,YoYOptionletHelperand the experimentalYoYCapFloorTermPriceSurfaceandInterpolatedYoYCapFloorTermPriceSurfacecan now take an explicitCPI::InterpolationTypeparameter instead of relying on the index being defined as interpolated or not (@lballabio). This is a first step in removing interpolation fromYoYInflationIndexand moving it into the coupons where it belongs. -
Added method to YoY inflation index returning the date of the last available fixing (@lballabio).
-
Allow passing a pricer to the constructor of the
OISRateHelperandDatedOISRateHelperclasses (@lballabio); this makes it possible to use arithmetic averaging of overnight rates. -
Allow custom constraint in non-linear fitting methods; thanks to Kai Lin (@klin333).
-
Allow creating a swap helper with frequency "Once" (@lballabio).
-
The
GlobalBootstrapconstructor can now take an optional optimizer and end criteria, allowing for better configuration; thanks to Eugene Toder (@eltoder).
- Added exact Bachelier implied-vol formula from Jäckel's paper; thanks to Peter Caspers (@pcaspers).
-
Removed features deprecated in version 1.31:
- the
BlackVanillaOptionPricertypedef; - the constructors of
CPICoupontaking aspreadparameter, itsspreadmethod, and its protectedspread_data member; - the
withSpreadsmethod ofCPILeg; - the protected
adjustedFixingmethod andspread_data member ofCPICouponPricer; - the
YYAUCPIr,YYEUHICPr,YYFRHICPr,YYUKRPIr,YYUSCPIrandYYZACPIrindexes and the experimentalYYGenericCPIrclass; - the constructor of
YoYInflationIndextaking aratioparameter; - a couple of constructors of
ForwardRateAgreement; - the empty files
ql/math/curve.hpp,ql/math/lexicographicalview.hpp,ql/termstructures/yield/drifttermstructure.hppandql/patterns/composite.hpp; - the
const_iteratorandconst_value_iteratortypedefs in theGarch11class; - the
const_time_iterator,const_value_iterator,const_reverse_time_iteratorandconst_reverse_value_iteratortypedefs and thecbegin_values,cend_values,crbegin_values,crend_values,cbegin_time,cend_time,crbegin_timeandcrend_timemethods of theTimeSeriesclass; - the
base,increment,decrement,advanceanddistance_tomethod of thestep_iteratorclass.
- the
-
Deprecated
ext::function,ext::bind,ext::ref,ext::cref,ext::placeholders,ext::tuple,ext::make_tuple,ext::getandext::tie; use the correspondingstd::classes and functions instead. -
Deprecated the
ArithmeticAverageOIS,MakeArithmeticAverageOISandArithmeticOISRateHelperclasses; useOvernightIndexedSwap,MakeOISandOISRateHelperinstead. -
Deprecated the
YoYInflationCoupon,yoyInflationLeg,CappedFlooredYoYInflationCoupon,YearOnYearInflationSwap,MakeYoYInflationCapFloor,YearOnYearInflationSwapHelper,YoYOptionletHelper,YoYCapFloorTermPriceSurfaceandInterpolatedYoYCapFloorTermPriceSurfaceconstructors that don't take an explicit CPI interpolation type. -
Deprecated the
getInfomethod ofLevenbergMarquardt; inspect the result ofminimizeinstead. -
Deprecated the
ql/experimental/averageois/averageoiscouponpricer.hppfile; includeql/cashflows/overnightindexedcouponpricer.hppinstead. -
Deprecated the somewhat out-of-scope and experimental
CreditRiskPlus,SensitivityAnalysis,aggregateNPV,parallelAnalysisandbucketAnalysis.
Thanks go also to Jonathan Sweemer (@sweemer), Eugene Toder (@eltoder), Ralf Konrad Eckel (@ralfkonrad), Tony Wang (@twan3617) and the XAD team (@auto-differentiation-dev) for miscellaneous smaller fixes, improvements or reports.