Releases: lballabio/QuantLib
1.36
Downloads:
Changes for QuantLib 1.36:
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.
Portability
- 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.
Dates and calendars
- 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).
Cash flows
- Made
OvernightIndexedCouponPricer
public and renamed toCompoundingOvernightIndexedCouponPricer
, and movedArithmeticAveragedOvernightIndexedCouponPricer
from experimental to core library; thanks to Ralf Konrad Eckel (@ralfkonrad).
Indexes
- 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
- 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).
Term structures
- 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).
Volatility
- Added exact Bachelier implied-vol formula from Jäckel's paper; thanks to Peter Caspers (@pcaspers).
Deprecated features
- 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.
New Contributors
- @raneamri made their first contribution in #2056
- @twan3617 made their first contribution in #2057
- @klin333 made their first contribution in #2059
- @marcinfair made their first contribution in #2063
- @jongbongan made their first contribution in #2086
Full Changelog: v1.35...v1.36
1.35
Downloads:
Changes for QuantLib 1.35:
QuantLib 1.35 includes 32 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/33?closed=1.
Portability
- Future end of support: as announced since release 1.32, this release is 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 next release, 1.36, about three 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 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.
- 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::function
andboost::bind
instead of theirstd
counterparts; thestd
classes are already the default since release 1.32. - The
config.hpp
generated by cmake now behaves like the one generated by autotools and provides values for the defines so that they can be used instatic_assert
(@lballabio). Thanks to Tom Anderson (@tomwhoiscontrary) for the heads-up.
Calendars
- Some fixes for the Chilean calendar; thanks to Eugene Toder (@eltoder).
- Better NFP/SIFMA rule for Good Friday in U.S. government bond calendar; thanks to Eugene Toder (@eltoder).
- Updated Indian NSE holidays for 2024; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
- Some fixes for the Mexican calendar; thanks to Lucas Dias (@lukedays).
Cash flows
- Added lookback days, lockout days and observation shift to overnight-indexed coupons; thanks to Marcin Rybacki (@marcin-rybacki). The same parameters were propagated to overnight-indexed swaps and to the corresponding helpers.
- Added the
hasFixed
method to IBOR coupons that detects whether they have fixed or still need to be forecast; thanks to Tom Anderson (@tomwhoiscontrary).
Instruments
- Overnight index futures didn't manage a start date falling on a holiday; this is now fixed (@lballabio). Thanks to GitHub user @JustCallMeDavid for the heads-up.
- Callable bonds didn't account for nominal when calculating OAS; this is now fixed. Thanks to Hristo Raykov (@HristoRaykov).
- For European swaption, sometimes the price is quoted as a forward price to be paid at exercise time. Such a quoted price can now be used for implied-volatility calculation. The forward price is also returned by the Black and Bachelier swaption engines as an additional result (@lballabio).
Random numbers
- Added the fast
ZigguratGaussianRng
generator; thanks to Ralf Konrad Eckel (@ralfkonrad).
Term structures
- Fix treatment of custom end date in
FuturesRateHelper
(@lballabio). - Add possibility to reset guess in fitted bond curves (@lballabio). Thanks to GitHub user @klin333 for the suggestion.
Utilities
- Overloaded
Handle
andRelinkableHandle
constructors on lvalue and rvalue references for performance; thanks to Jonathan Sweemer (@sweemer).
Tools
- Better benchmark utility; thanks to Jacques du Toit (@amd-jadutoit).
Examples
- Reworked bond example (@lballabio).
Deprecated features
- Removed features deprecated in version 1.30:
- the
DividendVanillaOption
andDividendBarrierOption
classes; - the constructor of
AnalyticDividendEuropeanEngine
taking only a process and no dividends; - the
SwaptionVolCube1
,SwaptionVolCube1a
,SwaptionVolCube1x
andSwaptionVolCube2
typedefs and the empty headersql/experimental/volatility/swaptionvolcube1.hpp
,ql/experimental/volatility/swaptionvolcube1a.hpp
andql/experimental/volatility/swaptionvolcube2.hpp
; - the
setCommon
method ofCappedFlooredYoYInflationCoupon
.
- the
- Deprecated the constructor of
DatedOISRateHelper
taking a forward start; use the other overload instead. - Deprecated the specialized
Bibor9M
,Euribor2W
,Euribor3W
,Euribor2M
,Euribor4M
,Euribor5M
,Euribor7M
,Euribor8M
,Euribor9M
,Euribor10M
,Euribor11M
,Euribor365_SW
,Euribor365_2W
,Euribor365_3W
,Euribor365_1M
,Euribor365_2M
,Euribor365_3M
,Euribor365_4M
,Euribor365_5M
,Euribor365_6M
,Euribor365_7M
,Euribor365_8M
,Euribor365_9M
,Euribor365_10M
,Euribor365_11M
,Euribor365_1Y
,EURLiborSW
,EURLibor2W
,EURLibor2M
,EURLibor4M
,EURLibor5M
,EURLibor7M
,EURLibor8M
,EURLibor9M
,EURLibor10M
,EURLibor11M
; if needed, use the corresponding generic class and pass the tenor (for instance,Euribor(4 * Months)
). - Renamed
EuriborSW
toEuribor1W
and deprecated the old name. - Deprecated the constructor of
RelinkableHandle
taking a raw pointer.
Thanks go also to Dmitri Goloubentsev (@DmitriGoloubentsev), Eleanor Green (@eleanorTurintech), Tom Anderson (@tomwhoiscontrary), Peter Caspers (@pcaspers), Jonghee Lee (@nistick21), Ralf Konrad Eckel (@ralfkonrad) and the XAD team (@auto-differentiation-dev) for miscellaneous fixes, improvements or reports.
New Contributors
- @DmitriGoloubentsev made their first contribution in #1957
- @eleanorTurintech made their first contribution in #1965
- @amd-jadutoit made their first contribution in #1962
- @lukedays made their first contribution in #2018
Full Changelog: v1.34...v1.35
1.34
Downloads:
Changes for QuantLib 1.34:
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.
Portability
- 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::function
andboost::bind
instead of theirstd
counterparts; thestd
classes are already the default since release 1.32. - Generate and install pkg-config files in CMake builds; thanks to GitHub user @jez6.
Dates and calendars
- Prevent
Calendar::advance
from returning the business end of month (instead of the calendar end) whenendOfMonth
istrue
andconvention
isUnadjusted
; 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).
Cash flows
- 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).
Instruments
- Swaptions can now take an OIS as underlying; thanks to Guillaume Horel (@thrasibule) and Peter Caspers (@pcaspers). So far, only
BlackSwaptionEngine
manages OIS explicitly; other engines might work and return approximated values. - More methods in
MakeOIS
andMakeVanillaSwap
; thanks to Eugene Toder (@eltoder). - More methods in the
BondFunctions
class now support either clean or dirty prices; thanks to Francois Botha (@igitur). - The
basisPointValue
andyieldValueBasisPoint
methods inBondFunctions
didn't always manage the settlement date correctly; this is now fixed (thanks to GitHub user @jez6). - Add
Custom
toFutures::Type
enumeration to allow passing custom dates to futures; thanks to Eugene Toder (@eltoder).
Term structures
- 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.
Math
- Handle non-equidistant grids and arbitrary dimensions in Laplace interpolation; thanks to Peter Caspers (@pcaspers).
Deprecated features
- Removed features deprecated in version 1.29:
- The
argument_type
,first_argument_type
,second_argument_type
andresult_type
typedefs in several classes; - The overloads of zero-rate inflation index constructors taking an
interpolated
argument; - The
interpolated
method and the protectedinterpolated_
data member inInflationIndex
; - The overload of
CashFlows::npvbps
taking the result by reference; - The protected
rateCurve_
method inInflationCouponPricer
; - The
ThreadKey
typedef; - The empty header
ql/experimental/credit/riskybond.hpp
.
- The
- Deprecated the constructors of
InflationTermStructure
,ZeroInflationTermStructure
,YoYInflationTermStructure
,InterpolatedZeroInflationCurve
,InterpolatedYoYInflationCurve
,PiecewiseZeroInflationCurve
andPiecewiseYoYInflationCurve
taking an observation lag; use the overloads taking an explicit base date instead. - Deprecated the
Bond::yield
,BondFunctions::atmRate
,BondFunctions::yield
andBondFunctions::zSpread
overloads taking a clean price as a number; use the overloads taking aBond::Price
instead. - Deprecated the
InflationTermStructure::setSeasonality
overload taking no arguments; use the overload taking a pointer and pass an empty one to remove seasonality. - Deprecated the
InflationTermStructure::setBaseRate
method; setbaseRate_
directly if needed. - Deprecated the
Swaption::underlyingSwap
andSwaptionHelper::underlyingSwap
methods; useunderlying
instead. - Deprecated the broken
FixedRateBondHelper::fixedRateBond
andCPIBondHelper::cpiBond
methods 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.
New Contributors
- @isuruf made their first contribution in #1893
- @yyuuhhjjnnmm made their first contribution in #1895
- @jez6 made their first contribution in #1900
- @marcobfv made their first contribution in #1897
- @sdacek made their first contribution in #1906
- @DeimosXing made their first contribution in #1917
Full Changelog: v1.33...v1.34
1.33
Downloads:
Changes for QuantLib 1.33:
QuantLib 1.33 includes 43 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/31?closed=1.
Portability
- Future end of support: as announced in release 1.32, we're targeting the future 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 nine months from now. From that point onwards, this will allows us to enable the use of C++17 in the code base.
- 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::function
andboost::bind
instead of theirstd
counterparts; thestd
classes are already the default since release 1.32. - Added CMake presets for Apple; thanks to Christian Köhnenkamp (@kohnech).
Dates and calendars
- Added New Year's Eve as a holiday to the Chilean calendar; thanks to GitHub user @MoixaStrikes.
- Added Black Awareness Day as a holiday to the Brazilian calendar starting from 2024; thanks to GitHub user @PaulXiCao.
- Added Inauguration Day as a holiday to the Mexican calendar starting from 2024; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
- Added Chinese holidays for 2024; thanks to Cheng Li (@wegamekinglc).
- Updated list of known ECB dates; thanks to GitHub user @PaulXiCao.
- Added Thailandese and Taiwanese holidays up to 2024; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
- Added a one-time holiday to the South African calendar; thanks to Francois Botha (@igitur).
Models
- Added support for angled contour shift integrals to Heston model; thanks to Klaus Spanderen (@klausspanderen).
Instruments
- Allow different calendars and frequencies for different legs in
MakeOIS
andOISRateHelper
; thanks to Eugene Toder (@eltoder). - Enabled negative payment lag in swap legs; thanks to GitHub user @Stoozy.
Random numbers
- Added Burley 2020 scrambled Sobol sequence generator; thanks to Peter Caspers (@pcaspers).
Tests
- Use automated registration of unit tests; thanks to Siddharth Mehrotra (@Sidsky).
- Added a few fuzzing tests; thanks to Nathaniel Brough (@silvergasp).
- Improved test coverage for a few classes; thanks to GitHub user @PaulXiCao.
Deprecated features
- Removed features deprecated in version 1.28:
- The overload of
CallableBond::impliedVolatility
taking an NPV as target. - The constructor of
AmortizingFixedRateBond
taking a sinking frequency. - The constructor of
AmortizingFixedRateBond
taking a vector ofInterestRate
instances. - The constructor of
FixedRateBond
taking start date, maturity date etc. instead of a schedule. - The constructor of
FixedRateBond
taking a vector ofInterestRate
instances. - The constructor of
FloatingRateBond
taking start date, maturity date etc. instead of a schedule. - The constructor of
CPICapFloor
taking a handle to an interest-rate index. - The
CPICapFloor::inflationIndex
method. - The
infIndex
data member of theCPICapFloor::arguments
class. - A redundant constructor of
SabrSmileSection
. - The empty headers
ql/experimental/amortizingbonds/amortizingcmsratebond.hpp
,ql/experimental/amortizingbonds/amortizingfixedratebond.hpp
andql/experimental/amortizingbonds/amortizingfloatingratebond.hpp
.
- The overload of
- Deprecated the constructor of
Currency
andCurrency::Data
taking a format string, and theCurrency::format
method.
Thanks go also to Yi Jiang (@yjian012), Hoang Giap Vu (@hgv79116), Jonathan Sweemer (@sweemer) and the XAD team (@auto-differentiation-dev) for smaller fixes and improvements.
New Contributors
- @Stoozy made their first contribution in #1818
- @silvergasp made their first contribution in #1807
- @PaulXiCao made their first contribution in #1825
- @Sidsky made their first contribution in #1811
- @hgv79116 made their first contribution in #1858
- @yjian012 made their first contribution in #1876
- @MoixaStrikes made their first contribution in #1846
Full Changelog: v1.32...v1.33
1.32
Downloads:
Changes for QuantLib 1.32:
QuantLib 1.32 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/29?closed=1.
Portability
- Possibly breaking change: the protected
evaluationDate_
data member of theSwaptionVolatilityDiscrete
class was renamed tocachedReferenceDate_
. - Future end of support: we're targeting the future 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 one year from now. From that point onwards, this will allows us to enable the use of C++17 in the code base.
- 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::function
andboost::bind
instead of theirstd
counterparts; starting from this release, thestd
classes are already the default. - Reorganized the CMake presets; thanks to the XAD team (@auto-differentiation-dev).
Cash flows
- All cash flows are now lazy; thanks to Peter Caspers (@pcaspers).
Instruments
- Overnight-indexed swaps can now have different schedules and nominals on the two legs; thanks to Tom Anderson (@tomwhoiscontrary).
- Margrabe options, compound options and chooser options were moved from experimental to core (@lballabio).
- Introduced common base class
FixedVsFloatingSwap
for vanilla swap and overnight-indexed swaps; this will be used in the future to help a few existing swap engines support OIS (@lballabio). - Added optional
redemptions
argument to amortizing bond constructors. This allows them to be used for pools of loans where a certain proportion of the underlying loans are subject to defaults and losses. Thanks to Gyan Sinha (@gyansinha). - It is now possible to manually prune the notification tree for swaps and bonds if one knows that the cashflows won't change pricer; thanks to Peter Caspers (@pcaspers).
Models
- Fixed the algorithm to add instruments to the calibration set of the Markov model; thanks to Peter Caspers (@pcaspers) for the fix and Giuseppe Trapani (@lePidduN7) for the heads-up.
Term structures
- Time-to-date conversion in some swaption volatility classes could return the wrong date before the first exercise date; this is now fixed, thanks to Peter Caspers (@pcaspers).
- It's now possible to specify the maximum number of iteration for the solver inside a bootstrapped term structure; thanks to Jonathan Sweemer (@sweemer) for the change and Daniel Ángeles Ortiz (@Danie8) for the heads-up.
- Reduced the number of notifications for bootstrap helpers; thanks to Peter Caspers (@pcaspers).
Random numbers
- Added the xoshiro265** random-number generator; thanks to Ralf Konrad (@ralfkonrad). It is faster than the Mersenne Twister and might be used as default in the future.
Examples
- The code of the examples has been modernized a bit; thanks to Jonathan Sweemer (@sweemer).
Patterns
- Avoided a possible crash when using observables in a multi-threaded setting; thanks to Peter Caspers (@pcaspers).
Deprecated features
- Removed features deprecated in version 1.27:
- The
QL_NULL_INTEGER
,QL_NULL_REAL
,QL_NOEXCEPT
,QL_CONSTEXPR
andQL_USE_STD_UNIQUE_PTR
macros. - The
MultiCurveSensitivities
class. - The
constant
,identity
,square
,cube
,fourth_power
,add
,subtract
,subtract_from
,multiply_by
,divide
,divide_by
,less_than
,greater_than
,greater_or_equal_to
,not_zero
,not_null
,everywhere
,nowhere
,equal_within
,clipped_function
,clip
,composed_function
,compose
,binary_compose3_function
andcompose3
functors. - The
PdeShortRate
,ShoutCondition
,FDShoutCondition
,FDStepConditionEngine
andFDEngineAdapter
classes from the old finite-differences framework. - The
dsd::inner_product
function. - The
FDDividendEngineBase
,FDDividendEngineMerton73
,FDDividendEngineShiftScale
andFDDividendEngine
pricing engines. - The empty headers
ql/auto_ptr.hpp
,ql/math/initializers.hpp
,ql/methods/finitedifferences/americancondition.hpp
,ql/methods/finitedifferences/onefactoroperator.hpp
,ql/pricingengines/vanilla/fddividendshoutengine.hpp
,ql/pricingengines/vanilla/fdshoutengine.hpp
andql/utilities/disposable.hpp
.
- The
- Deprecated the overload of the
withReplication
method in theDigitalIborLeg
,DigitalCmsLeg
andDigitalCmsSpreadLeg
classes that takes no arguments; use the other overload instead. - Deprecated the
StandardFiniteDifferenceModel
,StandardSystemFiniteDifferenceModel
andStandardStepCondition
typedefs; define your own typedefs if needed. - Deprecated the
FDVanillaEngine
,FDMultiPeriodEngine
,StepConditionSet
,ParallelEvolverTraits
,ParallelEvolver
andSampledCurve
classes and theBSMTermOperator
andSampledCurveSet
typedefs; use the new finite-differences framework instead. - Deprecated the
QL_NULL_FUNCTION
macro; to check if a function is empty, use it in a bool context instead. - Deprecated the now empty headers
ql/experimental/exoticoptions/margrabeoption.hpp
,ql/experimental/exoticoptions/analyticcomplexchooserengine.hpp
,ql/experimental/exoticoptions/analyticeuropeanmargrabeengine.hpp
,ql/experimental/exoticoptions/analyticcompoundoptionengine.hpp
,ql/experimental/exoticoptions/simplechooseroption.hpp
,ql/experimental/exoticoptions/compoundoption.hpp
,ql/experimental/exoticoptions/analyticamericanmargrabeengine.hpp
,ql/experimental/exoticoptions/analyticsimplechooserengine.hpp
,ql/experimental/exoticoptions/complexchooseroption.hpp
,ql/experimental/termstructures/multicurvesensitivities.hpp
,ql/methods/finitedifferences/shoutcondition.hpp
,ql/methods/finitedifferences/pdeshortrate.hpp
,ql/pricingengines/vanilla/fddividendengine.hpp
,ql/pricingengines/vanilla/fdstepconditionengine.hpp
,ql/pricingengines/vanilla/fdconditions.hpp
andql/models/marketmodels/duffsdeviceinnerproduct.hpp
.
Thanks go also to Jonathan Sweemer (@sweemer), Ralf Konrad (@ralfkonrad), Klaus Spanderen (@klausspanderen), Peter Caspers (@pcaspers), Tom Anderson (@tomwhoiscontrary), Fredrik Gerdin Börjesson (@gbfredrik), Guillaume Horel (@thrasibule) and the XAD team (@auto-differentiation-dev) for a number of smaller fixes and improvements.
New Contributors
- @gyansinha made their first contribution in #1790
Full Changelog: v1.31.1...v1.32
1.31.1
Downloads:
Changes for QuantLib 1.31.1:
QuantLib 1.31.1 is a bug-fix release for QuantLib 1.31.
It fixes a regression that could cause a segmentation fault when bootstrapping an interest-rate curve using OIS rates.
Details are available at https://github.com/lballabio/QuantLib/milestone/30?closed=1.
Full Changelog: v1.31...v1.31.1
1.31
Downloads:
Changes for QuantLib 1.31:
QuantLib 1.31 includes a record 68 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/28?closed=1.
Portability
- Future end of support: as announced in the notes for the previous release, after this release using
std::tuple
,std::function
andstd::bind
(instead of theirboost
counterparts) will become the default. If you're usingext::tuple
etc. in your code (which is suggested), this should be a transparent change. If not, you'll still be able to choose theboost
versions via a configure switch for a while; but we do suggest you start usingext::tuple
etc. in the meantime. - The cmake build now creates (but doesn't install) a
quantlib-config
script that can be used to retrieve flags for compiling QuantLib-dependent projects; thanks to Christian Köhnenkamp (@kohnech). - A number of Boost classes and functions only used internally were replaced by their standard-library equivalent; thanks to Jonathan Sweemer (@sweemer).
Patterns
- Optional change of behavior: by default, the
LazyObject
class forwards only one notification after recalculating and silently ignores the others. In some edge cases, this could lead to objects not being updated. It's now possible to enable a different behavior where all notifications are forwarded; the new behavior can be chosen at compile time via the configure option--disable-faster-lazy-objects
(or disablingQL_FASTER_LAZY_OBJECTS
in cmake oruserconfig.hpp
) or at run time by callingLazyObject::Defaults::instance().alwaysForwardNotifications()
. This might cause a slow down, so you're invited to try it out and report on the mailing list. If there are no problems, the new behavior might become the default in future releases. Also, a new configure option--enable-throwing-in-cycles
(QL_THROW_IN_CYCLES
in cmake oruserconfig.hpp
) is optionally available; when both this option and the new behavior are enabled, notifications cycles involving a lazy object will throw an exception. It is suggested to try enabling the option and removing such loops, if any. Thanks to Peter Caspers (@pcaspers) for the change and to Ralf Konrad (@ralfkonrad), Jonathan Sweemer (@sweemer) and GitHub user @djkrystul for feedback.
Date/time
- Change of behavior: when the end-of-month option is true, the constructor of a schedule no longer adjust to the end of their month the effective date and the termination date if they were passed explicitly. Thanks to Hristo Raykov (@HristoRaykov).
- Added separate US SOFR calendar to manage days that are business days for the US government bond market but in which SOFR doesn't fix; for instance, Good Friday 2023 (@lballabio). Thanks to Tom Anderson (@tomwhoiscontrary) for reporting the issue.
- Fixed some rolling rules for South Korean calendar; thanks to Jonghee Lee (@nistick21).
- Fixed incorrect 2023 holidays for Hong Kong calendar; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
- Added Hong Kong holidays for 2021-2024; thanks to Rémy Frèrebeau (@rfrerebe-stx) and Binrui Dong (@BrettDong).
- Added Singapore holidays for 2019-2023; thanks to Rémy Frèrebeau (@rfrerebe-stx).
- Added Indian holidays for 2021-2025; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
- Added Taiwanese holidays for 2020-2023; thanks to @jsmx.
- Added a few election days for South African and South Korean calendar; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
- Updated Danish calendar; starting in 2024, General Prayer Day will no longer be a holiday. Thanks to Fredrik Gerdin Börjesson (@gbfredrik).
- Fixed a few holidays in Finland and Singapore calendars; Thanks to Fredrik Gerdin Börjesson (@gbfredrik).
- More day counters (Act/364, Act/365.25, Act/366) now take into account intraday resolution when enabled; thanks to Klaus Spanderen (@klausspanderen).
Cash flows
- The accrued amount for CPI coupons is now correctly based on the index ratio at settlement date. An inspector for retrieving the index ratio at a given date was also added (@lballabio).
- Enabled the use of normal volatilities in Hagan pricer for CMS coupons; thanks to Andre Miemiec (@amiemiec).
- Floating-rate coupons are now lazy; thanks to Peter Caspers (@pcaspers).
Indexes
- When passed a tenor of 7 or 14 business days, interest-rate indexes would wrongly convert it to 1 or 2 weeks. This is now fixed (@lballabio). Thanks to Eugene Toder (@eltoder) for reporting the issue.
- Added DESTR and SWESTR indexes; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
- Added CORRA index; thanks to @AND2797.
- When an YoY inflation index is calculated as a ratio, the underlying inflation index is available through an inspector and its fixings are used to calculate the fixing of the YoY index (@lballabio).
Instruments
- Instruments now register automatically with the global evaluation date and are notified when it changes. This makes sense in general (if the evaluation date changes, you probably want to recalculate) and can also help avoid some edge cases when lazy objects only forward their first notification (@lballabio).
- Allowed passing a schedule without a regular tenor to callable fixed-rate bonds; thanks to Hristo Raykov (@HristoRaykov) for the fix and to @OleBueker for reporting the issue.
- Reorganized the constructors of FRA instruments; thanks to Jake Heke (@jakeheke75).
Term structures
- Ensures that upfront CDS helpers update correctly when the global evaluation date changes; thanks to Andrea Pellegatta (@andrea85p) for the fix and to @bkhoor for reporting the issue.
- Allow more maturities for SOFR quarterly contract in SOFR futures rate helper; thanks to Jake Heke (@jakeheke75).
- Added constructor for date-dependent strikes to StrippedOptionlet; thanks to Peter Caspers (@pcaspers).
Test suite
- Global settings (such as the evaluation date) are now restored and index fixings are now cleaned automatically at the end of each test case, making it unnecessary to clean them up manually. Thanks to Eugene Toder (@eltoder).
- The parallel unit-test runner now passes the
--run_test=<filter>
option down to the underlying Boost.Test implementation. Thanks to Eugene Toder (@eltoder).
Deprecated features
-
Removed features deprecated in version 1.26:
- The
CPICoupon
constructor taking a number of fixing days and itsindexObservation
,adjustedFixing
andindexFixing(date)
methods. - The
CPICashFlow
constructor taking a fixing date. - The
withFixingDays
methods ofCPILeg
. - The
ZeroInflationCashFlow
constructor taking a calendar and business-day convention. - The
LsmBasisSystem::PolynomType
typedef and theMakeMCAmericanEngine::withPolynomOrder
method. - The
Observer::set_type
andObservable::set_type
typedefs. - The
Curve
class. - The
LexicographicalView
class. - The
Composite
class. - The
DriftTermStructure
class.
- The
-
Deprecated the various
time_iterator
andvalue_iterator
types inTimeSeries
, as well as methods returning them. The more generalconst_iterator
andconst_reverse_iterator
types can be used instead. -
Deprecated the constructors of
CPICoupon
taking a spread, as well as itsspread
method, its protectedspread_
data member, and thewithSpreads
methods ofCPILeg
. -
Deprecated the
adjustedFixing
method and the protectedspread_
data member ofCPICouponPricer
. -
Renamed
BlackVanillaOptionPricer
toMarketQuotedOptionPricer
and deprecated the old name. -
Deprecated a couple of constructors of
ForwardRateAgreement
. -
Deprecated the constructor of
YoYInflationIndex
taking aratio
. Also, deprecated explicit classes for YoY ratio indexesYYGenericCPIr
,YYAUCPIr
,YYEUHICPr
,YYFRHICPr
,YYUKRPIr
,YYUSCPIr
andYYZACPIr
. -
Deprecated the
base
,increment
,decrement
,advance
anddistance_to
methods of thestep_iterator
class.
Thanks go also to Jonathan Sweemer (@sweemer), Jose Garcia (@j053g), Jake Heke (@jakeheke75), Eugene Toder (@eltoder), Binrui Dong (@BrettDong), the Xcelerit Dev Team (@xcelerit-dev), Ralf Konrad (@ralfkonrad), Fredrik Gerdin Börjesson (@gbfredrik) and Tom Anderson (@tomwhoiscontrary) for a number of smaller fixes and improvements.
New Contributors
- @rfrerebe-stx made their first contribution in #1640
- @HristoRaykov made their first contribution in #1638
- @amiemiec made their first contribution in #1660
- @kohnech made their first contribution in #1679
- @eltoder made their first contribution in #1690
- @jsmx made their first contribution in #1694
- @AND2797 made their first contribution in #1705
- @andrea85p made their first contribution in #1704
- @BrettDong made their first contribution in #1708
Full Changelog: QuantLib-v1.30...v1.31
1.30
Downloads:
Changes for QuantLib 1.30:
QuantLib 1.30 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/27?closed=1.
Portability
- Future end of support: as announced in the notes for the previous release, after this release and the next, using
std::tuple
,std::function
andstd::bind
(instead of theirboost
counterparts) will become the default. If you're usingext::tuple
etc. in your code (which is suggested), this should be a transparent change. If not, you'll still be able to choose theboost
versions via a configure switch for a while; but we do suggest you start usingext::tuple
etc. in the meantime. - CMake builds now use a stricter warning level by default; thanks to Ralf Konrad (@ralfkonrad).
- Is it now possible to use
std::any
andstd::optional
(and the relatedstd::any_cast
andstd::nullopt
) instead of theirboost
counterparts by setting new compilation switches; thanks to Jonathan Sweemer (@sweemer). Using thestd
classes requires C++17. We expect theboost
classes to remain the default for a while, but in the meantime we encourage to start usingext::any
andext::optional
in preparation for a new default.
Date/time
- Good Friday 2023 is now a business day for the US government bond calendar; thanks to Anastasiia Shumyk (@ashumyk).
- Added specialized Australian calendar for ASX; thanks to Trent Maetzold (@trentmaetzold).
- Fixed Turkish holidays between 2019 and 2023; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
- Added a few missing holidays to Danish calendar; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
- Added the Matariki holiday to the New Zealand calendar; thanks to Jake Heke (@jakeheke75).
Cashflows
- Added a new equity cash flow class to model equity legs in total return swaps; thanks to Marcin Rybacki (@marcin-rybacki). Quanto pricing is also supported.
- Added an overloaded constructor for CPI coupons that allows to specify a base date instead of a base CPI value; thanks to Matthias Groncki (@mgroncki).
Instruments
- Added a new total-return swap; thanks to Marcin Rybacki (@marcin-rybacki). An equity-index class was also added to support this instrument.
- The analytic engine for barrier options would return NaN for low values of volatility; this is now fixed (@lballabio).
- The
VanillaOption
andBarrierOption
classes can now be used to model vanilla and barrier options with discrete dividends; the future dividends (not being part of the terms and conditions of the contract) should be passed to the pricing engine instead (@lballabio). - Added analytical Greeks to Bjerksund-Stensland engine; thanks to Klaus Spanderen (@klausspanderen).
Indexes
- Added UKHICP inflation index; thanks to Fredrik Gerdin Börjesson (@gbfredrik).
Term structures
- Renamed
SwaptionVolCube1
,SwaptionVolCube1x
,SwaptionVolCube1a
andSwaptionVolCube2
toSabrSwaptionVolatilityCube
,XabrSwaptionVolatilityCube
,NoArbSabrSwaptionVolatilityCube
andInterpolatedSwaptionVolatilityCube
, respectively; thanks to Ignacio Anguita (@IgnacioAnguita). The old names are deprecated but still available for a few releases. - Ensure that inflation curves are re-bootstrapped correctly when seasonality is added (@lballabio).
Models
- Moved the Heston SLV model from experimental to main; thanks to Klaus Spanderen (@klausspanderen).
Math
- Added a few overloads to Array and Matrix operators taking rvalue references for increased speed; thanks to Jonathan Sweemer (@sweemer).
Deprecated features
- Removed features deprecated in version 1.25:
- the protected
spreadLegValue_
data member ofBlackIborCouponPricer
; - the
WulinYongDoubleBarrierEngine
alias forSuoWangDoubleBarrierEngine
; - the
settlementDate
,incomeDiscountCurve
,spotIncome
,spotValue
,impliedYield
andforwardValue
methods ofForwardRateAgreement
, as well as its protectedunderlyingIncome_
,underlyingSpotValue_
,settlementDays_
,payoff_
andincomeDiscountCurve_
data members; - constructors for
InflationTermStructure
,ZeroInflationTermStructure
,InterpolatedZeroInflationCurve
,PiecewiseZeroInflationCurve
taking anindexIsInterpolated
parameter; - the
indexIsInterpolated
method ofInflationTermStructure
and its protectedindexIsInterpolated_
data member; - some overloaded constructors of
SofrFutureRateHelper
.
- the protected
- Deprecated the
DividendVanillaOption
andDividendBarrierOption
classes; useVanillaOption
andBarrierOption
instead (see above). - Deprecated the constructor of
AnalyticDividendEuropeanEngine
that takes no dividend information; use the other overload instead. - Deprecated the names
SwaptionVolCube1
,SwaptionVolCube1x
,SwaptionVolCube1a
andSwaptionVolCube2
(see above). - Deprecated the protected
setCommon
method ofCappedFlooredYoYInflationCoupon
.
Thanks go also to Jonathan Sweemer (@sweemer), the Xcelerit Dev Team (@xcelerit-dev), Fredrik Gerdin Börjesson (@gbfredrik), Klaus Spanderen (@klausspanderen) and Peter Caspers (@pcaspers) for a number of smaller fixes and improvements, and to Matthias Groncki (@mgroncki) and @lukey8767 for raising issues.
New Contributors
- @jakeheke75 made their first contribution in #1564
- @trentmaetzold made their first contribution in #1599
- @ashumyk made their first contribution in #1620
Full Changelog: QuantLib-v1.29...QuantLib-v1.30
1.29
Downloads:
Changes for QuantLib 1.29:
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.
Portability
- End of support: as announced in the notes for the previous release, this release no longer manages thread-local singletons via a user-provided
sessionId
function, 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::function
andstd::bind
(instead of theirboost
counterparts) will become the default. If you're usingext::tuple
etc. in your code (which is suggested), this should be a transparent change. If not, you'll still be able to choose theboost
versions via a configure switch for a while; but we do suggest you start usingext::tuple
etc. in the meantime. - Replaced internal usage of
boost::thread
withstd::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=MultiThreadedDLL
on the command line; thanks to Jonathan Sweemer (@sweemer). The static runtime remains the default. - It is now possible to build QuantLib with Intel's
icpx
compiler using cmake; thanks to Jonathan Sweemer (@sweemer). Note that in order to get all the unit tests passing,-fp-model=precise
must be added toCMAKE_CXX_FLAGS
.
Date/time
- 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).
Instruments
- 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
withIndexedCoupons
andwithAtParCoupons
methods toMakeSwaption
for 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).
Indexes
- 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.
Term structures
- The
ConstantCPIVolatility
constructor can now take a handle to a volatility quote, instead of just an immutable number (@lballabio).
Deprecated features
- Removed features deprecated in version 1.24:
- the
createAtParCoupons
,createIndexedCoupons
andusingAtParCoupons
methods ofIborCoupon
; - the
RiskyBond
class and its subclassesRiskyFixedBond
andRiskyFloatingBond
; - the
CrossCurrencyBasisSwapRateHelper
typedef; - the
termStructure_
data member ofBlackCalibrationHelper
; - the static
baseCurrency
andconversionType
data members ofMoney
; - the
nominalTermStructure
method and thenominalTermStructure_
data member ofInflationTermStructure
; - the constructor of the
UnitedStates
calendar not taking an explicit market.
- the
- Deprecated the
argument_type
,first_argument_type
,second_argument_type
andresult_type
typedefs in a number of classes; useauto
ordecltype
instead. - Deprecated the constructors of
InflationIndex
,ZeroInflationIndex
,FRHICP
,ZACPI
,UKRPI
,EUHICP
,EUHICPXT
,USCPI
,AUCPI
andGenericCPI
taking aninterpolated
parameter; use another constructor. - Deprecated the
interpolated
method and theinterpolated_
data member ofInflationIndex
. - Deprecated the
ThreadKey
typedef. It was used in the signature ofsessionId
, which is no longer needed after the changes in theSingleton
implementation. - Deprecated the
rateCurve_
data member of theInflationCouponPricer
base class. If you need it, provide it in your derived class. - Deprecated the
npvbps
function taking NPV and BPS as references. Use the overload returning a pair ofReal
s.
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.
New Contributors
- @dsuprmajstc93r made their first contribution in #1514
- @NijazK made their first contribution in #1530
- @JoshHayes made their first contribution in #1542
Full Changelog: QuantLib-v1.28...QuantLib-v1.29
1.28
Downloads:
Changes for QuantLib 1.28:
QuantLib 1.28 includes 33 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/24?closed=1.
Portability
- New language standard: as announced in the notes for the previous release, this release started using some C++14 syntax. This should be supported by most compilers released in the past several years.
- End of support: as announced in the notes for the previous release, this release is the last to manage thread-local singletons via a user-provided
sessionId
function. Future releases will use the built-in language support for thread-local variables. - Future end of support: after the next two or three releases, using
std::tuple
,std::function
andstd::bind
(instead of theirboost
counterparts) will become the default. If you're usingext::tuple
etc. in your code (which is suggested), this should be a transparent change. If not, you'll still be able to choose theboost
versions via a configure switch for a while.
Date/time
- Added Act/366 and Act/365.25 day counters; thanks to Ignacio Anguita (@IgnacioAnguita).
- Added H.M. the Queen's funeral to the UK calendars; thanks to Tomass Wilson (@Wilsontomass).
Instruments
- Amortizing bonds were moved out of the experimental folder. Also, a couple of utility functions were provided to calculate amortization schedules and notionals.
Pricing engines
- Fixed results from
COSHestonEngine
in the case of an option with short time to expiration and deep ITM or deep OTM strike prices; thanks to Ignacio Anguita (@IgnacioAnguita). - The ISDA engine for CDS could calculate the fair upfront with the wrong sign; this is now fixed, thanks to Gualtiero Chiaia (@gchiaia).
Term structures
- The constructor for
OISRateHelper
now allows to specify theendOfMonth
parameter; thanks to Guillaume Horel (@thrasibule).
Finite differences
- Fixed computation of cds boundaries in
LocalVolRNDCalculator
; thanks to @mdotlic.
Experimental folder
The ql/experimental
folder contains code whose interface is not fully stable, but is released in order to get user feedback. Experimental classes make no guarantees of backward compatibility; their interfaces might change in future releases.
- Breaking change: the constructor of the
CPICapFloorTermPriceSurface
class now also takes an explicit interpolation type. - Possibly breaking: the protected constructor for
CallableBond
changes its arguments. If you inherited from this class, you'll need to update your code. If you're using the existing derived bond classes, the change will be transparent. - Pricing engines for callable bonds worked incorrectly when the face amount was not 100. This is now fixed.
- The
impliedVolatility
method for callable bonds was taking a target NPV, not a price. This implementation is now deprecated, and a new overload was added taking a price in base 100.
Deprecated features
- Removed features deprecated in version 1.23:
- the constructors of
ZeroCouponInflationSwap
andZeroCouponInflationSwapHelper
missing an explicit CPI interpolation type; - the constructors of
ActualActual
andThirty360
missing an explicit choice of convention, and the constructor ofThirty360
passing anisLastPeriod
boolean flag.
- the constructors of
- Deprecated the constructors of
FixedRateBond
taking anInterestRate
instance or not taking aSchedule
instance. - Deprecated the constructor of
FloatingRateBond
not taking aSchedule
instance. - Deprecated the constructors of
AmortizingFixedRateBond
taking a sinking frequency or a vector ofInterestRate
instances. - Deprecated the constructor of
CPICapFloor
taking aHandle
to an inflation index, and itsinflationIndex
method returning aHandle
. New versions of both were added usingshared_ptr
instead. - Deprecated one of the constructors of
SabrSmileSection
; a new version was added also taking an optional reference date. - Deprecated the old
impliedVolatility
method for callable bonds; see above.
Thanks go also to Konstantin Novitsky (@novitk), Peter Caspers (@pcaspers), Klaus Spanderen (@klausspanderen), Fredrik Gerdin Börjesson (@gbfredrik) and Dirk Eddelbuettel (@eddelbuettel) for a number of smaller fixes, and to Jonathan Sweemer (@sweemer) for various improvements to the automated CI builds.
New Contributors
- @novitk made their first contribution in #1448
- @IgnacioAnguita made their first contribution in #1453
- @mdotlic made their first contribution in #1435
- @Wilsontomass made their first contribution in #1481
Full Changelog: QuantLib-v1.27.1...QuantLib-v1.28