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-classes
toconfigure
now causesstd::any
andstd::optional
to 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::function
andboost::bind
instead of theirstd
counterparts; thestd
classes were already the default since release 1.32. The corresponding classes in theext
namespace are now deprecated. -
Future change of default: in a couple of releases, we're going to switch the default for
ext::any
andext::optional
from the Boost implementation to the standard one.
-
Added
startOfMonth
andisStartOfMonth
methods to bothDate
andCalendar
; 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
OvernightIndexedCouponPricer
public and renamed toCompoundingOvernightIndexedCouponPricer
, and movedArithmeticAveragedOvernightIndexedCouponPricer
from experimental to core library; thanks to Ralf Konrad Eckel (@ralfkonrad).
-
Possibly breaking: inherited the
Index
class fromObserver
and added a virtualpastFixing
method. If you inherited a class from bothIndex
andObserver
, 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
needsForecast
method that makes the information available. -
Added
CPI::laggedYoYRate
; also,YoYInflationCoupon
,yoyInflationLeg
,CappedFlooredYoYInflationCoupon
,YearOnYearInflationSwap
,MakeYoYInflationCapFloor
,YearOnYearInflationSwapHelper
,YoYOptionletHelper
and the experimentalYoYCapFloorTermPriceSurface
andInterpolatedYoYCapFloorTermPriceSurface
can now take an explicitCPI::InterpolationType
parameter instead of relying on the index being defined as interpolated or not (@lballabio). This is a first step in removing interpolation fromYoYInflationIndex
and 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
OISRateHelper
andDatedOISRateHelper
classes (@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
GlobalBootstrap
constructor 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
BlackVanillaOptionPricer
typedef; - the constructors of
CPICoupon
taking aspread
parameter, itsspread
method, and its protectedspread_
data member; - the
withSpreads
method ofCPILeg
; - the protected
adjustedFixing
method andspread_
data member ofCPICouponPricer
; - the
YYAUCPIr
,YYEUHICPr
,YYFRHICPr
,YYUKRPIr
,YYUSCPIr
andYYZACPIr
indexes and the experimentalYYGenericCPIr
class; - the constructor of
YoYInflationIndex
taking aratio
parameter; - a couple of constructors of
ForwardRateAgreement
; - the empty files
ql/math/curve.hpp
,ql/math/lexicographicalview.hpp
,ql/termstructures/yield/drifttermstructure.hpp
andql/patterns/composite.hpp
; - the
const_iterator
andconst_value_iterator
typedefs in theGarch11
class; - the
const_time_iterator
,const_value_iterator
,const_reverse_time_iterator
andconst_reverse_value_iterator
typedefs and thecbegin_values
,cend_values
,crbegin_values
,crend_values
,cbegin_time
,cend_time
,crbegin_time
andcrend_time
methods of theTimeSeries
class; - the
base
,increment
,decrement
,advance
anddistance_to
method of thestep_iterator
class.
- the
-
Deprecated
ext::function
,ext::bind
,ext::ref
,ext::cref
,ext::placeholders
,ext::tuple
,ext::make_tuple
,ext::get
andext::tie
; use the correspondingstd::
classes and functions instead. -
Deprecated the
ArithmeticAverageOIS
,MakeArithmeticAverageOIS
andArithmeticOISRateHelper
classes; useOvernightIndexedSwap
,MakeOIS
andOISRateHelper
instead. -
Deprecated the
YoYInflationCoupon
,yoyInflationLeg
,CappedFlooredYoYInflationCoupon
,YearOnYearInflationSwap
,MakeYoYInflationCapFloor
,YearOnYearInflationSwapHelper
,YoYOptionletHelper
,YoYCapFloorTermPriceSurface
andInterpolatedYoYCapFloorTermPriceSurface
constructors that don't take an explicit CPI interpolation type. -
Deprecated the
getInfo
method ofLevenbergMarquardt
; inspect the result ofminimize
instead. -
Deprecated the
ql/experimental/averageois/averageoiscouponpricer.hpp
file; includeql/cashflows/overnightindexedcouponpricer.hpp
instead. -
Deprecated the somewhat out-of-scope and experimental
CreditRiskPlus
,SensitivityAnalysis
,aggregateNPV
,parallelAnalysis
andbucketAnalysis
.
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.