| CARVIEW |
Navigation Menu
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Releases: lballabio/QuantLib
1.40
Downloads:
Changes for QuantLib 1.40
Removals and deprecations
Features deprecated in release 1.35 were removed in this release; see
#2268 for a full list.
A number of features were deprecated in this release and will be
removed in a future release:
- The overload of the
RangeAccrualFloatersCouponconstructor taking ashared_ptrto a schedule; use the other overload instead. - The method
observationsScheduleof the same class; useobservationScheduleinstead. - The
<ql/experimental/fx/blackdeltacalculator.hpp>andql/experimental/fx/deltavolquote.hppheaders; use<ql/pricingengines/blackdeltacalculator.hpp>and<ql/quotes/deltavolquote.hpp>instead. - The overload of the
CPIBondandCPIBondHelperconstructors taking thegrowthOnlyparameter; use the other overload instead. - The methods
cumD1,cumD2,nD1andnD2of theBlackDeltaCalculatorclass; they are internal methods and will be moved to the private section. - The
BlackDeltaPremiumAdjustedSolverClassandBlackDeltaPremiumAdjustedMaxStrikeClass; they were used in the implementation ofBlackDeltaCalculatorbut are now obsolete. - The
BootstrapErrorclass template; use a lambda instead (see #2263 for an example). - The
PenaltyFunctionclass; useSimpleCostFunctioninstead. - The
Tonaindex was renamed toTonar; use the latter instead.
What's Changed
- Make
Nullconstexpr by @eltoder in #2260 - Remove features deprecated in version 1.35 by @lballabio in #2268
- Allow specifying business-day convention in
OISRateHelperby @eltoder in #2264 - Allow specifying business-day convention for floating leg in
SwapRateHelperby @eltoder in #2269 - Replace
BootstrapErrorclass with a lambda and deprecate it by @eltoder in #2263 - Cleanup includes in interpolated curves by @eltoder in #2274
- Expose swap on inflation swap bootstrap helpers by @eltoder in #2275
- Auto-enable extrapolation for
ForwardSpreadedTermStructureby @eltoder in #2273 - Replace and deprecate
LocalBootstrap'sPenaltyFunctionby @eltoder in #2272 - Replacing std::pow() with test-specific LUT implementation for rounding tests in quantlib benchmarking. by @vladimir-polin in #2270
- Support custom pillar dates after the latest relevant date in
IterativeBootstrapby @eltoder in #2262 - Renamed Tona index to Tonar by @lballabio in #2277
- Don't use
shared_ptr<Schedule>by @lballabio in #2280 - Automated fixes by clang-tidy by @github-actions[bot] in #2283
- Use
doublefor constexpr variable to maintain AAD compatibility by @auto-differentiation-dev in #2282 - Add soft-barrier options by @wday0507 in #2271
- Allow creating
PiecewiseZeroInflationCurvebefore the base date is known by @eltoder in #2279 - Update copyright list in license by @lballabio-bot in #2290
- Update generated headers by @lballabio-bot in #2291
- Deprecate
growthOnlyparameter in CPI bond and helper by @lballabio in #2287 - Refactor inflation helpers by @eltoder in #2293
- Add
cmake_runners-latest-matrix.ymlworkflow by @ralfkonrad in #2249 - Automated fixes by clang-tidy by @lballabio-bot in #2294
- Add
InterpolatedSpreadDiscountCurveandPiecewiseSpreadYieldCurveby @eltoder in #2292 - Fix typo in uniform1dmesher by @quantresearch1 in #2298
- Add BRL CDI index by @sophistis42 in #2295
- Update copyright list in license by @lballabio-bot in #2300
- Bump actions/checkout from 4 to 5 by @dependabot[bot] in #2299
- Fix consistent test macro usage for AAD compatibility by @auto-differentiation-dev in #2303
- Add checks in
Schedule'sstartDateandendDatemethods to avoid segfault by @davidizzle in #2304 - Update old license links by @lballabio-bot in #2308
- Better docs string BlackDeltaCalculator by @paolodelia99 in #2301
- Move
BlackDeltaCalculatorandDeltaVolQuotefrom experimental to core by @lballabio in #2309 - Bump actions/stale from 9 to 10 by @dependabot[bot] in #2313
- Replace
ImpliedVolatilityHelperwith lambda by @lballabio in #2318 - Add
BachelierCalculatorclass by @kp9991-git in #2316 - Update old license links by @lballabio-bot in #2322
- Update generated headers by @lballabio-bot in #2323
- Add perpetual futures by @drxyzw in #2315
- Update copyright list in license by @lballabio-bot in #2325
- Fixing naming and styles in pull request #2315 (perpetual futures) by @drxyzw in #2329
- Add Singapore public holidays for 2025 by @sergioUjo in #2330
- Speedup Sobol Sequence Generator by transposing directionIntegers_ matrix by @dmardavies in #2333
- Simplify and generalize the implementation of
inflationPeriodby @eltoder in #2334 - Removing trailing spaces in quantlibbenchmark.cpp by @vladimir-polin in #2335
- Improvement to Latent model execution time by @vladimir-polin in #2336
- Add explicit return type for lambdas to work with expression templates by @auto-differentiation-dev in #2338
- Add end-of-month date adjustment rules for 30/365 by @ragibson in #2337
- Fix potential dangling reference in MultiCubicSpline by @ipenas-cl in #2265
- Automated fixes by clang-tidy by @lballabio-bot in #2332
- Set version to 1.40-rc by @lballabio-bot in #2341
- Set version to 1.40 final by @lballabio-bot in #2343
New Contributors
- @vladimir-polin made their first contribution in #2270
- @wday0507 made their first contribution in #2271
- @lballabio-bot made their first contribution in #2290
- @quantresearch1 made their first contribution in #2298
- @davidizzle made their first contribution in #2304
- @drxyzw made their first contribution in #2315
- @sergioUjo made their first contribution in #2330
- @dmardavies made their first contribution in #2333
- @ragibson made their first contribution in #2337
- @ipenas-cl made their first contribution in #2265
Full Changelog: v1.39...v1.40
Assets 4
1.39
Downloads:
Changes for QuantLib 1.39:
QuantLib 1.39 includes 28 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/37?closed=1.
Portability
- Bug in recent Visual C++ versions: a few recent versions of the Visual C++ 2022 compiler (from 17.14.2 to 17.14.8) had a known bug that, unfortunately, affected QuantLib heavily and made it basically unusable. A fix was released in version 17.14.9; if you’re compiling QuantLib on Windows, make sure you're using at least that version (or, if you can't upgrade, use the Visual C++ 2019 toolset; you can do that from VC++ 2022, as well).
- Change of default: as already announced, in this release we're switching the default for
ext::anyandext::optionalfrom the Boost implementation to the standard one. Usingboost::anyandboost::optionalis still possible for the time being but deprecated.
Dates, calendars and day-count conventions
- Fixed a corner case of
Calendar::advancewhen using EOM and the unadjusted business-day convention; thanks to Eugene Toder (@eltoder). - Fixed an error when asking for the serial number of a null date with intraday support enabled (@lballabio); thanks to @UnitedMarsupial for the heads-up.
- Added the SHIR fixing calendar (@lballabio).
- Fixed the order of operations in the 30/360 USA day-count convention; thanks to Eugene Toder (@eltoder).
Indexes
- Added the SARON index; thanks to Paolo D'Elia (@paolodelia99).
- Added a
CustomIborIndexclass that allows to create an IBOR-like index with custom calendars for value and maturity dates calculations; thanks to Eugene Toder (@eltoder).
Instruments and pricing engines
- The
MakeOISclass now knows the default number of settlement days for a few currencies; thanks to Zak Kraehling (@7astro7).
Interest rates
- The
FxSwapRateHelperclass can now be built specifying fixed dates instead of a tenor; thanks to Eugene Toder (@eltoder). - A number of helpers can now take quoted rates either as numbers or
Handle<Quote>via the use ofstd::variant; this reduces the number of overloaded constructors and in some cases allows the use of keyword arguments when exported to Python. Thanks to Paolo D'Elia (@paolodelia99) and Eugene Toder (@eltoder). - The
OISRateHelperclass can now specify a calendar for the overnight leg; thanks to Eugene Toder (@eltoder). - The
ZeroCouponInflationSwapHelperclass now doesn't need to be passed a nominal curve, which wouldn't affect the results anyway (@lballabio).
Volatility
- Optionlet strippers can now use overnight indexes; thanks to Paolo D'Elia (@paolodelia99).
- Added calculation of better guesses for SABR calibration as detailed in the Le Floc'h and Kennedy paper (@lballabio).
Deprecated features
- Removed features deprecated in version 1.34:
- the overloads of
Bond::yield,BondFunctions::atmRate,BondFunctions::yieldandBondFunctions::zSpreadtaking a price as aRealinstead of aBond::Priceinstance; - the
Swaption::underlyingSwapandSwaptionHelper::underlyingSwapmethods; - the constructors of
InflationTermStructure,ZeroInflationTermStructure,YoYInflationTermStructure,InterpolatedZeroInflationCurve,InterpolatedYoYInflationCurve,PiecewiseZeroInflationCurveandPiecewiseYoYInflationCurvetaking an observation lag; - the overload of
InflationTermStructure::setSeasonalitytaking no arguments; - the
InflationTermStructure::setBaseRatemethod; - the
fixedRateBondmethod andfixedRateBond_data member of theFixedRateBondHelperclass, and thecpiBondmethod andcpiBond_data member of theCPIBondHelperclass.
- the overloads of
- Deprecated the
observationLagandhasExplicitBaseDatemethods and theobservationLag_data member of theInflationTermStructureclass; inflation term structures always have an explicit base date now. - Deprecated the usage of
boost::anyandboost::optional; their standard counterparts are used by default now. - Deprecated the constructor of
ZeroCouponInflationSwapHelpertaking a nominal curve; use the other constructor instead.
Thanks go also to Imrane Amri (@raneamri), Ralf Konrad Eckel (@ralfkonrad), Joan Carlos Naftanaila (@MiDDiz), Eugene Toder (@eltoder), Paolo D'Elia (@paolodelia99) and Holger Rother (@hrother) for miscellaneous smaller fixes, improvements or reports.
New Contributors
Full Changelog: v1.38...v1.39
Assets 4
1.38
Downloads:
Changes for QuantLib 1.38:
QuantLib 1.38 includes 29 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/36?closed=1.
Portability
- Future change of default: as already announced, in the next release we're going to switch the default for
ext::anyandext::optionalfrom the Boost implementation to the standard one. Usingboost::anyandboost::optionalis still possible for the time being but deprecated. - Possible future breaking change: in the next release, the
SimpleQuoteclass might be madefinal. If you're inheriting from it, drop us a line.
Dates and calendars
- The
Scheduleclass now honors the passed business day convention when end-of-month is enabled (@lballabio). Previously, enabling end-of-month caused it to always use the Modified Following convention. - Added Chinese holidays for 2025; thanks to Cheng Li (@wegamekinglc).
- Added Thailand holidays for 2025; thanks to Paolo D'Elia (@paolodelia99).
- Added Hong Kong holidays for 2025; thanks to Ka Wai Lee (@kawailee).
Indexes
- Year-or-year inflation indexes can (and should) now be built without an
interpolatedflag (@lballabio). As for zero inflation indexes, the interpolation was moved into the coupons using the indexes. - Fixed obsolete conventions for the (now discountinued) EUR LIBOR index; thanks to Eugene Toder (@eltoder).
Instruments and pricing engines
- Added implementation of partial-time barrier put options; thanks to Paolo D'Elia (@paolodelia99).
- The
OvernightIndexFutureclass would not receive notifications when the convexity quote or the evaluation date changed; this is now fixed. Thanks to Eugene Toder (@eltoder). - The experimental
BlackCallableFixedRateBondEnginewouldn't take discount correctly into account when evaluation the embedded option; this is now fixed. Thanks to @RobertS548 for the heads-up. - Moved a few instruments and engines from the experimental folder to the core library (@lballabio):
HolderExtensibleOptionandAnalyticHolderExtensibleOptionEngine;WriterExtensibleOptionandAnalyticWriterExtensibleOptionEngine;PartialTimeBarrierOptionandAnalyticPartialTimeBarrierOptionEngine;TwoAssetBarrierOptionandAnalyticTwoAssetBarrierEngine;TwoAssetCorrelationOptionand ``AnalyticTwoAssetCorrelationEngine`;ContinuousArithmeticAsianLevyEngine;AnalyticPDFHestonEngine.
Term structures
- The
DepositRateHelperandFraRateHelperclasses can now be built specifying fixed dates instead of a tenor; thanks to Eugene Toder (@eltoder). - The cross-currency basis-swap rate helpers can now be passed an overnight index and a corresponding payment frequency; it is also possible to pass a payment lag. Thanks to @kp9991-git.
- The additional penalty functions passed to the
GlobalBootstrapclass can now take the curve nodes as arguments; thanks to Eugene Toder (@eltoder). This makes it possible, for example, to penalize gradients to make the curve smoother. It is also possible to specify additional variables to be optimized, e.g., futures convexity adjustments. - Added a piecewise forward-spreaded term structure; thanks to Paolo D'Elia (@paolodelia99).
Deprecated features
- Removed features deprecated in version 1.33:
- the constructors of
CurrencyandCurrency::Datataking a format string, theformatmethod of theCurrencyclass and theformatStringdata member ofCurrency::Data.
- the constructors of
- Deprecated the constructors of year-on-year inflation indexes taking an
interpolatedargument; use the other constructors instead. - Deprecated the header files in
ql/experimental/exoticoptionsfor some classes moved to the core library (see above); use the corresponding new headers inql/instrumentsandql/pricingenginesinstead.
Thanks go also to Eugene Toder (@eltoder), Konstantin Novitsky (@novitk), Tomas Kalibera (@kalibera) and @raneamri for miscellaneous smaller fixes, improvements or reports.
New Contributors
- @paolodelia99 made their first contribution in #2142
- @kp9991-git made their first contribution in #2168
- @kalibera made their first contribution in #2179
- @kawailee made their first contribution in #2196
Full Changelog: v1.37...v1.38
Assets 4
1.37
75e2fb7Downloads:
Changes for QuantLib 1.37:
QuantLib 1.37 includes 27 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/35?closed=1.
Portability
- Future change of default: as already announced, in the next release we're going to switch the default for
ext::anyandext::optionalfrom the Boost implementation to the standard one.
Dates and calendars
- Added closure for President Carter's funeral to the NYSE calendar; thanks to Dirk Eddelbuettel (@eddelbuettel).
- Added distinct Wellington and Auckland variants for New Zealand calendar (@lballabio).
Indexes
- Improved the performance of the
addFixingandaddFixingsmethod in theIndexclass; thanks to Peter Caspers (@pcaspers). - Added the KOFR index; thanks to Jongbong An (@jongbongan).
Instruments and pricing engines
- Added Choi pricing engine for Asian options; thanks to Klaus Spanderen (@klausspanderen).
- Passing a risk-free overnight index to an asset swap now implies using OIS-like coupons (@lballabio).
- Added Bjerksund-Stensland, Operator-Splitting, Deng-Li-Zhou, Choi and n-dim PDE engines for spread options; thanks to Klaus Spanderen (@klausspanderen).
- Deng-Li-Zhou, Choi and n-dim PDE engines for basket options; thanks to Klaus Spanderen (@klausspanderen).
Term structures
- Possibly breaking: better upper and lower bounds for global bootstrap; thanks to Eugene Toder (@eltoder). If you created your own bootstrap traits, you'll need to add
transformDirectandtransformInversemethods for them to work with theGlobalBootstrapclass. - Fitted bond curves can now be passed precomputed parameters without the need for bond helpers (@lballabio).
- Use correct guess in SABR swaption vol cube (@lballabio).
- OIS rate helpers can now be passed a date-generation rule; thanks to Sotirios Papathanasopoulos (@sophistis42).
- Swap rate helpers can now be passed explicit start and end dates; thanks to Eugene Toder (@eltoder).
- OIS rate helpers can now be passed explicit start and end dates, making a distinct
DatedOISRateHelperclass unnecessary; thanks to Eugene Toder (@eltoder).
Cash flows
- Added new
MultipleResetsCouponandMultipleResetsLegclasses to manage coupons with multiple resets (@lballabio). They fix and replaceSubPeriodsCouponandSubPeriodsLeg.
Deprecated features
- Removed features deprecated in version 1.32:
- the
FixedRateBondForwardclass; - the
SampledCurveandSampledCurveSetclasses; - the
StepConditionSetandBoundaryConditionSetclasses; - the
ParallelEvolverandParallelEvolverTraitsclasses; - the
FDVanillaEngineandFDMultiPeriodEngineclasses; - the
BSMTermOperator,StandardFiniteDifferenceModel,StandardSystemFiniteDifferenceModelandStandardStepConditiontypedefs; - the
QL_NULL_FUNCTIONmacro; - the overloads of
DigitalCmsLeg::withReplication,DigitalCmsSpreadLeg::withReplicationandDigitalIborLeg::withReplicationtaking no arguments; - the empty headers
analyticamericanmargrabeengine.hpp,analyticcomplexchooserengine.hpp,analyticcomplexchooserengine.hpp,analyticcompoundoptionengine.hpp,analyticeuropeanmargrabeengine.hpp,analyticsimplechooserengine.hpp,complexchooseroption.hpp,compoundoption.hpp,margrabeoption.hppandsimplechooseroption.hppin theql/experimental/exoticoptionsfolder; - the empty header
ql/experimental/termstructures/multicurvesensitivities.hpp; - the empty headers
pdeshortrate.hppandshoutcondition.hppin theql/methods/finitedifferencesfolder; - the empty header
ql/models/marketmodels/duffsdeviceinnerproduct.hpp; - the empty headers
fdconditions.hpp,fddividendengine.hppandfdstepconditionengine.hppin theql/pricingengines/vanillafolder.
- the
- Deprecated the
SubPeriodsCoupon,SubPeriodsPricer,AveragingRatePricerandCompoundingRatePricerclasses; renamed toMultipleResetsCoupon,MultipleResetsPricer,AveragingMultipleResetsPricerandCompoundingMultipleResetsPricer, respectively. - Deprecated the
SubPeriodsLegclass; useMultipleResetsLeginstead. - Deprecated the
MultipleResetsCouponconstructor without a reset schedule; use the other constructor. - Deprecated the
calendar,price,addQuote,addQuotes,clearQuotes,isValidQuoteDateandquotesmethods in theCommodityIndexclass; usefixingCalendar,fixing,addFixing,addFixings,clearFixings,isValidFixingDateandtimeSeriesinstead. - Deprecated the experimental
SpreadOptionandKirkSpreadOptionEngineclasses; useBasketOptionandKirkEngineinstead. - Deprecated the
TransformedGridandLogGridclasses and theCenteredGrid,BoundedGridandBoundedLogGridfunctions; use the new FD framework instead. - Deprecated the
PdeOperatorandBSMOperatorclasses; use the new FD framework instead. - Deprecated the
PdeSecondOrderParabolic,PdeConstantCoeff,PdeBSMandGenericTimeSetterclasses; use the new FD framework instead. - Deprecated the
hasHistory,getHistory,clearHistory,hasHistoricalFixingandsetHistoryin theIndexManagerclass; useIndex::hasHistoricalFixing,Index::timeSeries,Index::clearFixings,Index::hasHistoricalFixingandIndex::addFixingsinstead. - Deprecated the
notifiermethod in theIndexManagerclass; register with the relevant index instead. - Deprecated one of the
AssetSwapconstructors; use the other overload. - Deprecated the
fcnandjacFcnmethods in theLevenbergMarquardtclass; they are for internal use only. - Deprecated the
indexIsInterpolatedparameter in YoY inflation curve constructors; use another overload. Fixings will be interpolated by coupons instead, so curves and indexes will only be asked for fixing at the start of a month. - Deprecated the
indexIsInterpolatedmethod and theindexIsInterpolated_data member in theYoYInflationTermStructureclass. - Deprecated the
DatedOISRateHelperclass; useOISRateHelperinstead.
Thanks go also to Eugene Toder (@eltoder), Ben Watson (@sonben) and the XAD team (@auto-differentiation-dev) for miscellaneous smaller fixes, improvements or reports.
New Contributors
- @sophistis42 made their first contribution in #2107
Full Changelog: v1.36...v1.37
Assets 4
1.36
66a8487Downloads:
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-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.
Dates and calendars
- 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).
Cash flows
- Made
OvernightIndexedCouponPricerpublic and renamed toCompoundingOvernightIndexedCouponPricer, and movedArithmeticAveragedOvernightIndexedCouponPricerfrom experimental to core library; thanks to Ralf Konrad Eckel (@ralfkonrad).
Indexes
- 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
- 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).
Term structures
- 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).
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
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.
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
Assets 4
1.35
8e1f4acDownloads:
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::functionandboost::bindinstead of theirstdcounterparts; thestdclasses are already the default since release 1.32. - The
config.hppgenerated 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
hasFixedmethod 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
ZigguratGaussianRnggenerator; 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
HandleandRelinkableHandleconstructors 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
DividendVanillaOptionandDividendBarrierOptionclasses; - the constructor of
AnalyticDividendEuropeanEnginetaking only a process and no dividends; - the
SwaptionVolCube1,SwaptionVolCube1a,SwaptionVolCube1xandSwaptionVolCube2typedefs and the empty headersql/experimental/volatility/swaptionvolcube1.hpp,ql/experimental/volatility/swaptionvolcube1a.hppandql/experimental/volatility/swaptionvolcube2.hpp; - the
setCommonmethod ofCappedFlooredYoYInflationCoupon.
- the
- Deprecated the constructor of
DatedOISRateHelpertaking 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
EuriborSWtoEuribor1Wand deprecated the old name. - Deprecated the constructor of
RelinkableHandletaking 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
Assets 4
1.34
35fba52Downloads:
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::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.
Dates and calendars
- 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).
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
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).
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_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.
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
Assets 4
1.33
9b052b1Downloads:
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::functionandboost::bindinstead of theirstdcounterparts; thestdclasses 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
MakeOISandOISRateHelper; 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::impliedVolatilitytaking an NPV as target. - The constructor of
AmortizingFixedRateBondtaking a sinking frequency. - The constructor of
AmortizingFixedRateBondtaking a vector ofInterestRateinstances. - The constructor of
FixedRateBondtaking start date, maturity date etc. instead of a schedule. - The constructor of
FixedRateBondtaking a vector ofInterestRateinstances. - The constructor of
FloatingRateBondtaking start date, maturity date etc. instead of a schedule. - The constructor of
CPICapFloortaking a handle to an interest-rate index. - The
CPICapFloor::inflationIndexmethod. - The
infIndexdata member of theCPICapFloor::argumentsclass. - A redundant constructor of
SabrSmileSection. - The empty headers
ql/experimental/amortizingbonds/amortizingcmsratebond.hpp,ql/experimental/amortizingbonds/amortizingfixedratebond.hppandql/experimental/amortizingbonds/amortizingfloatingratebond.hpp.
- The overload of
- Deprecated the constructor of
CurrencyandCurrency::Datataking a format string, and theCurrency::formatmethod.
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
Assets 4
1.32
3f9a4f2Downloads:
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 theSwaptionVolatilityDiscreteclass 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::functionandboost::bindinstead of theirstdcounterparts; starting from this release, thestdclasses 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
FixedVsFloatingSwapfor 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
redemptionsargument 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_CONSTEXPRandQL_USE_STD_UNIQUE_PTRmacros. - The
MultiCurveSensitivitiesclass. - 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_functionandcompose3functors. - The
PdeShortRate,ShoutCondition,FDShoutCondition,FDStepConditionEngineandFDEngineAdapterclasses from the old finite-differences framework. - The
dsd::inner_productfunction. - The
FDDividendEngineBase,FDDividendEngineMerton73,FDDividendEngineShiftScaleandFDDividendEnginepricing 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.hppandql/utilities/disposable.hpp.
- The
- Deprecated the overload of the
withReplicationmethod in theDigitalIborLeg,DigitalCmsLegandDigitalCmsSpreadLegclasses that takes no arguments; use the other overload instead. - Deprecated the
StandardFiniteDifferenceModel,StandardSystemFiniteDifferenceModelandStandardStepConditiontypedefs; define your own typedefs if needed. - Deprecated the
FDVanillaEngine,FDMultiPeriodEngine,StepConditionSet,ParallelEvolverTraits,ParallelEvolverandSampledCurveclasses and theBSMTermOperatorandSampledCurveSettypedefs; use the new finite-differences framework instead. - Deprecated the
QL_NULL_FUNCTIONmacro; 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.hppandql/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
Assets 4
1.31.1
c5e65eaDownloads:
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