Skip to content

Releases: lballabio/QuantLib

1.42.1

17 Apr 08:03
v1.42.1

Choose a tag to compare

Downloads:

Changes for QuantLib 1.42.1

This is a bug-fix release removing a regression in the Gsr class possibly leading to an infinite notification loop. Thanks to Aleksis Ali Raza for the heads-up.

What's Changed

Full Changelog: v1.42...v1.42.1

1.42

14 Apr 07:31
v1.42

Choose a tag to compare

Downloads:

Changes for QuantLib 1.42

Removals and deprecations

Features deprecated in release 1.37 were removed in this release; see #2424 for a full list.

A number of features were deprecated in this release and will be removed in a future release (probably release 1.47):

  • The overloads of CashFlows::npv, BondFunctions::cleanPrice and BondFunctions::dirtyPrice taking a z-spread and a day-count convention; use the overload without a day counter.
  • The overloads of CashFlows::zSpread and BondFunctions::zSpread taking a day-count convention; use the overload without a day counter.
  • The DefaultLogCubic and LogMixedLinearCubic interpolators; use KrugerLog and KrugerLogMixedLinearCubic instead.
  • The NeumannBC, DirichletBC, CrankNicolson, DMinus, DPlus, DPlusDMinus, DZero, ExplicitEuler, ImplicitEuler and MixedScheme classes; use the new finite-difference framework instead.
  • The ForwardRateStructure adapter class; inherit from ZeroYieldStructure instead (you should implement zeroYieldImpl anyway).
  • The ql/experimental/volatility/zabr.hpp header; include <ql/termstructures/volatility/zabr.hpp> instead.
  • The ql/experimental/volatility/zabrinterpolatedsmilesection.hpp header; include <ql/termstructures/volatility/zabrinterpolatedsmilesection.hpp> instead.
  • The ql/experimental/volatility/zabrinterpolation.hpp header; include <ql/math/interpolations/zabrinterpolation.hpp> instead.
  • The ql/experimental/volatility/zabrsmilesection.hpp header; include <ql/termstructures/volatility/zabrsmilesection.hpp> instead.
  • The now empty ql/experimental/exoticoptions/kirkspreadoptionengine.hpp, ql/experimental/exoticoptions/spreadoption.hpp, ql/grid.hpp, ql/math/transformedgrid.hpp, ql/methods/finitedifferences/bsmoperator.hpp, ql/methods/finitedifferences/pde.hpp and ql/methods/finitedifferences/pdebsm.hpp headers.

What's Changed

  • Set version to 1.42-dev by @lballabio-bot in #2423
  • Remove features deprecated in version 1.37 by @lballabio in #2424
  • Deprecate a last few unused parts of the old finite-difference framework by @lballabio in #2425
  • Avoid storing references in GSR and Markov-functional state processes by @pcaspers in #2418
  • Fix accrued amount calculation for simple-averaging overnight indexed coupon by @thrasibule in #2427
  • Add constructor validation in OvernightIndexedCoupon to prevent paymentDate < accrualEndDate by @jay-jain in #2421
  • Faster skipTo() implementation in Burley's scrambled Sobol RNG by @pcaspers in #2431
  • Fix testCachedHullWhite failure with -O3 optimization by @Vatsalpatni73 in #2435
  • Avoid warning when copying a partially initialized struct by @lballabio in #2437
  • Remove code duplication in FuturesConvAdjustmentQuote by @eltoder in #2436
  • Add FX Forward instrument, engine, and tests by @chiragpdesai77 in #2414
  • Update generated headers by @lballabio-bot in #2440
  • Update copyright list in license by @github-actions[bot] in #2439
  • Make all interpolation implementations final by @eltoder in #2438
  • Adjust Bessel K tolerance for catastrophic cancellation by @pandashark in #2445
  • Avoid underflow and out-of-bounds access in SmileSectionUtils by @pandashark in #2444
  • Added Chinese holidays for the year 2026 by @wegamekinglc in #2446
  • Add fixingConvention parameter to FloatingRateCoupon by @pandashark in #2442
  • Add ZabrSwaptionVolatilityCube for ZABR-based swaption volatility cubes by @aaditya-panik in #2434
  • Automated fixes by clang-tidy by @lballabio-bot in #2452
  • Fix calculate() implementation in FlatExtrapolator2D by @eltoder in #2448
  • Respect AmericanExercise earliest date in FD engines by @alienbrett in #2449
  • Support matching first derivatives in MixedLinearCubicInterpolation by @eltoder in #2450
  • Use contract dates for fixed-leg year fraction in ZeroCouponInflationSwap by @pandashark in #2451
  • Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #2464
  • Add 2025 and 2026 TWSE holidays to Taiwan calendar by @zippyg in #2462
  • Fix pillar assignment in inflation-curve bootstrap for CPI::Linear by @pandashark in #2456
  • Deprecate classes using Kruger with monotonic=true by @eltoder in #2457
  • Deprecate day-counter argument in z-spread functions by @zippyg in #2465
  • Remove virtual destructor from Extrapolator by @eltoder in #2466
  • Fix address sanitizer failure by @eltoder in #2467
  • Add Singapore (SGX) trading holidays for 2026 by @GuillermoPL in #2468
  • Fix call price accrued during ex-coupon period by @pandashark in #2455
  • Add PiecewiseBlackVarianceSurface for ragged vol grids by @pandashark in #2443
  • Update copyright list in license by @github-actions[bot] in #2470
  • Automated fixes by clang-tidy by @lballabio-bot in #2461
  • Bump docker/login-action from 3 to 4 by @dependabot[bot] in #2477
  • Fix MakeOIS and MakeVanillaSwap end-of-month handling by @pcaspers in #2459
  • Add operator== to FdmLinearOpIterator by @quantales in #2472
  • Add single-section constructor and tests to PiecewiseBlackVarianceSurface by @quantales in #2478
  • Bring MakeCreditDefaultSwap up to date with CDS instrument by @lballabio in #2479
  • Add MultipleResetsSwap instrument and rate helper by @zippyg in #2474
  • Add BlackVolatilitySurfaceDelta class for FX options by @paolodelia99 in #2368
  • Fix MakeVanillaSwap fixed-tenor inference with explicit termination date by @pandashark in #2480
  • Update copyright list in license by @github-actions[bot] in #2482
  • Automated fixes by clang-tidy by @lballabio-bot in #2486
  • Add withExerciseCalendar to MakeSwaption by @pandashark in #2484
  • Throw when both effective date and settlement days are set in MakeVanillaSwap/MakeOIS by @pandashark in #2481
  • Use log interpolation for discount curves by @eltoder in #2491
  • Avoid 0.0 in Burley2020SobolRsg output by @zippyg in #2494
  • Remove special initial guess for spread discount curves by @eltoder in #2495
  • Support custom pillar date in interest-rate futures helpers by @Krishn1412 in #2415
  • Deprecate ForwardRateStructure in favor of ZeroYieldStructure by @eltoder in #2261
  • Use variant to reduce duplication in SofrFutureRateHelper constructors by @lballabio in #2501
  • Cache derived and composite quotes by @eltoder in #2499
  • Add MultiCompositeQuote by @eltoder in #2500
  • Use custom type aliases instead of raw double by @wegamekinglc in #2503
  • Update copyright list in license by @github-actions[bot] in #2502
  • Replace Boost macros that might not work with AAD types by @lballabio-bot in #2508
  • Check for negative rates in Barone-Adesi-Whaley engine by @pandashark in #2505
  • Support OIS underlyings in FdmAffineModelSwapInnerValue by @pandashark in #2488
  • Forward notifications after failed calculations in LazyObject by @pandashark in #2504
  • Support separate exercise date in MC arithmetic average-strike Asian engine by @pandashark in #2506
  • Fix f...
Read more

1.41

13 Jan 08:19
v1.41

Choose a tag to compare

Downloads:

Changes for QuantLib 1.41

Removals and deprecations

Features deprecated in release 1.36 were removed in this release; see #2348 for a full list.

A number of features were deprecated in this release and will be removed in a future release:

  • The ZeroInflationTermStructure::zeroRate and YoYInflationTermStructure::yoyRate overloads taking an observation lag; if needed, use the other overloads instead (but you should go through the corresponding indexes anyway).
  • The constructors of InterpolatedPiecewiseForwardSpreadedTermStructure, InterpolatedPiecewiseZeroSpreadedTermStructure and ZeroSpreadedTermStructure taking a day counter; use another constructor instead.
  • The ContinuousArithmeticAsianLevyEngine constructor taking a start date; use the other constructor and pass the start date to the option instead.
  • The ql/functional.hpp header; use #include <functional> instead.
  • The ql/tuple.hpp header; use #include <tuple> instead.
  • The now empty ql/experimental/averageois/arithmeticaverageois.hpp, ql/experimental/averageois/arithmeticoisratehelper.hpp, ql/experimental/averageois/makearithmeticaverageois.hpp, ql/experimental/risk/creditriskplus.hpp and ql/experimental/risk/sensitivityanalysis.hpp headers.

What's Changed

New Contributors

Full Changelog: v1.40...v1.41

1.40

14 Oct 06:47
v1.40

Choose a tag to compare

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 RangeAccrualFloatersCoupon constructor taking a shared_ptr to a schedule; use the other overload instead.
  • The method observationsSchedule of the same class; use observationSchedule instead.
  • The <ql/experimental/fx/blackdeltacalculator.hpp> and ql/experimental/fx/deltavolquote.hpp headers; use <ql/pricingengines/blackdeltacalculator.hpp> and <ql/quotes/deltavolquote.hpp> instead.
  • The overload of the CPIBond and CPIBondHelper constructors taking the growthOnly parameter; use the other overload instead.
  • The methods cumD1, cumD2, nD1 and nD2 of the BlackDeltaCalculator class; they are internal methods and will be moved to the private section.
  • The BlackDeltaPremiumAdjustedSolverClass and BlackDeltaPremiumAdjustedMaxStrikeClass; they were used in the implementation of BlackDeltaCalculator but are now obsolete.
  • The BootstrapError class template; use a lambda instead (see #2263 for an example).
  • The PenaltyFunction class; use SimpleCostFunction instead.
  • The Tona index was renamed to Tonar; use the latter instead.

What's Changed

New Contributors

Full Changelog: v1.39...v1.40

1.39

23 Jul 08:51
v1.39
a91b757

Choose a tag to compare

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::any and ext::optional from the Boost implementation to the standard one. Using boost::any and boost::optional is still possible for the time being but deprecated.

Dates, calendars and day-count conventions

  • Fixed a corner case of Calendar::advance when 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 CustomIborIndex class 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 MakeOIS class now knows the default number of settlement days for a few currencies; thanks to Zak Kraehling (@7astro7).

Interest rates

  • The FxSwapRateHelper class 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 of std::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 OISRateHelper class can now specify a calendar for the overnight leg; thanks to Eugene Toder (@eltoder).
  • The ZeroCouponInflationSwapHelper class 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::yield and BondFunctions::zSpread taking a price as a Real instead of a Bond::Price instance;
    • the Swaption::underlyingSwap and SwaptionHelper::underlyingSwap methods;
    • the constructors of InflationTermStructure, ZeroInflationTermStructure, YoYInflationTermStructure, InterpolatedZeroInflationCurve, InterpolatedYoYInflationCurve, PiecewiseZeroInflationCurve and PiecewiseYoYInflationCurve taking an observation lag;
    • the overload of InflationTermStructure::setSeasonality taking no arguments;
    • the InflationTermStructure::setBaseRate method;
    • the fixedRateBond method and fixedRateBond_ data member of the FixedRateBondHelper class, and the cpiBond method and cpiBond_ data member of the CPIBondHelper class.
  • Deprecated the observationLag and hasExplicitBaseDate methods and the observationLag_ data member of the InflationTermStructure class; inflation term structures always have an explicit base date now.
  • Deprecated the usage of boost::any and boost::optional; their standard counterparts are used by default now.
  • Deprecated the constructor of ZeroCouponInflationSwapHelper taking 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

1.38

23 Apr 07:50
v1.38
0eef52e

Choose a tag to compare

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::any and ext::optional from the Boost implementation to the standard one. Using boost::any and boost::optional is still possible for the time being but deprecated.
  • Possible future breaking change: in the next release, the SimpleQuote class might be made final. If you're inheriting from it, drop us a line.

Dates and calendars

  • The Schedule class 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 interpolated flag (@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 OvernightIndexFuture class would not receive notifications when the convexity quote or the evaluation date changed; this is now fixed. Thanks to Eugene Toder (@eltoder).
  • The experimental BlackCallableFixedRateBondEngine wouldn'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):
    • HolderExtensibleOption and AnalyticHolderExtensibleOptionEngine;
    • WriterExtensibleOption and AnalyticWriterExtensibleOptionEngine;
    • PartialTimeBarrierOption and AnalyticPartialTimeBarrierOptionEngine;
    • TwoAssetBarrierOption and AnalyticTwoAssetBarrierEngine;
    • TwoAssetCorrelationOption and ``AnalyticTwoAssetCorrelationEngine`;
    • ContinuousArithmeticAsianLevyEngine;
    • AnalyticPDFHestonEngine.

Term structures

  • The DepositRateHelper and FraRateHelper classes 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 GlobalBootstrap class 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 Currency and Currency::Data taking a format string, the format method of the Currency class and the formatString data member of Currency::Data.
  • Deprecated the constructors of year-on-year inflation indexes taking an interpolated argument; use the other constructors instead.
  • Deprecated the header files in ql/experimental/exoticoptions for some classes moved to the core library (see above); use the corresponding new headers in ql/instruments and ql/pricingengines instead.

Thanks go also to Eugene Toder (@eltoder), Konstantin Novitsky (@novitk), Tomas Kalibera (@kalibera) and @raneamri for miscellaneous smaller fixes, improvements or reports.

New Contributors

Full Changelog: v1.37...v1.38

1.37

21 Jan 08:49
v1.37
75e2fb7

Choose a tag to compare

Downloads:

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::any and ext::optional from 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 addFixing and addFixings method in the Index class; 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 transformDirect and transformInverse methods for them to work with the GlobalBootstrap class.
  • 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 DatedOISRateHelper class unnecessary; thanks to Eugene Toder (@eltoder).

Cash flows

  • Added new MultipleResetsCoupon and MultipleResetsLeg classes to manage coupons with multiple resets (@lballabio). They fix and replace SubPeriodsCoupon and SubPeriodsLeg.

Deprecated features

  • Removed features deprecated in version 1.32:
    • the FixedRateBondForward class;
    • the SampledCurve and SampledCurveSet classes;
    • the StepConditionSet and BoundaryConditionSet classes;
    • the ParallelEvolver and ParallelEvolverTraits classes;
    • the FDVanillaEngine and FDMultiPeriodEngine classes;
    • the BSMTermOperator, StandardFiniteDifferenceModel, StandardSystemFiniteDifferenceModel and StandardStepCondition typedefs;
    • the QL_NULL_FUNCTION macro;
    • the overloads of DigitalCmsLeg::withReplication , DigitalCmsSpreadLeg::withReplication and DigitalIborLeg::withReplication taking no arguments;
    • the empty headers analyticamericanmargrabeengine.hpp, analyticcomplexchooserengine.hpp, analyticcomplexchooserengine.hpp, analyticcompoundoptionengine.hpp, analyticeuropeanmargrabeengine.hpp, analyticsimplechooserengine.hpp, complexchooseroption.hpp, compoundoption.hpp, margrabeoption.hpp and simplechooseroption.hpp in the ql/experimental/exoticoptions folder;
    • the empty header ql/experimental/termstructures/multicurvesensitivities.hpp;
    • the empty headers pdeshortrate.hpp and shoutcondition.hpp in the ql/methods/finitedifferences folder;
    • the empty header ql/models/marketmodels/duffsdeviceinnerproduct.hpp;
    • the empty headers fdconditions.hpp, fddividendengine.hpp and fdstepconditionengine.hpp in the ql/pricingengines/vanilla folder.
  • Deprecated the SubPeriodsCoupon, SubPeriodsPricer, AveragingRatePricer and CompoundingRatePricer classes; renamed to MultipleResetsCoupon, MultipleResetsPricer, AveragingMultipleResetsPricer and CompoundingMultipleResetsPricer, respectively.
  • Deprecated the SubPeriodsLeg class; use MultipleResetsLeg instead.
  • Deprecated the MultipleResetsCoupon constructor without a reset schedule; use the other constructor.
  • Deprecated the calendar, price, addQuote, addQuotes, clearQuotes, isValidQuoteDate and quotes methods in the CommodityIndex class; use fixingCalendar, fixing, addFixing, addFixings, clearFixings, isValidFixingDate and timeSeries instead.
  • Deprecated the experimental SpreadOption and KirkSpreadOptionEngine classes; use BasketOption and KirkEngine instead.
  • Deprecated the TransformedGrid and LogGrid classes and the CenteredGrid, BoundedGrid and BoundedLogGrid functions; use the new FD framework instead.
  • Deprecated the PdeOperator and BSMOperator classes; use the new FD framework instead.
  • Deprecated the PdeSecondOrderParabolic, PdeConstantCoeff, PdeBSM and GenericTimeSetter classes; use the new FD framework instead.
  • Deprecated the hasHistory, getHistory, clearHistory, hasHistoricalFixing and setHistory in the IndexManager class; use Index::hasHistoricalFixing, Index::timeSeries, Index::clearFixings, Index::hasHistoricalFixing and Index::addFixings instead.
  • Deprecated the notifier method in the IndexManager class; register with the relevant index instead.
  • Deprecated one of the AssetSwap constructors; use the other overload.
  • Deprecated the fcn and jacFcn methods in the LevenbergMarquardt class; they are for internal use only.
  • Deprecated the indexIsInterpolated parameter 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 indexIsInterpolated method and the indexIsInterpolated_ data member in the YoYInflationTermStructure class.
  • Deprecated the DatedOISRateHelper class; use OISRateHelper instead.

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

Full Changelog: v1.36...v1.37

1.36

14 Oct 07:14
v1.36
66a8487

Choose a tag to compare

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 to configure now causes std::any and std::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 and boost::bind instead of their std counterparts; the std classes were already the default since release 1.32. The corresponding classes in the ext namespace are now deprecated.
  • Future change of default: in a couple of releases, we're going to switch the default for ext::any and ext::optional from the Boost implementation to the standard one.

Dates and calendars

  • Added startOfMonth and isStartOfMonth methods to both Date and Calendar; 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 to CompoundingOvernightIndexedCouponPricer, and moved ArithmeticAveragedOvernightIndexedCouponPricer from experimental to core library; thanks to Ralf Konrad Eckel (@ralfkonrad).

Indexes

  • Possibly breaking: inherited the Index class from Observer and added a virtual pastFixing method. If you inherited a class from both Index and Observer, change your code to avoid inheriting twice from Observer. 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 experimental YoYCapFloorTermPriceSurface and InterpolatedYoYCapFloorTermPriceSurface can now take an explicit CPI::InterpolationType parameter instead of relying on the index being defined as interpolated or not (@lballabio). This is a first step in removing interpolation from YoYInflationIndex 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 and DatedOISRateHelper 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 a spread parameter, its spread method, and its protected spread_ data member;
    • the withSpreads method of CPILeg;
    • the protected adjustedFixing method and spread_ data member of CPICouponPricer;
    • the YYAUCPIr, YYEUHICPr, YYFRHICPr, YYUKRPIr, YYUSCPIr and YYZACPIr indexes and the experimental YYGenericCPIr class;
    • the constructor of YoYInflationIndex taking a ratio parameter;
    • a couple of constructors of ForwardRateAgreement;
    • the empty files ql/math/curve.hpp, ql/math/lexicographicalview.hpp, ql/termstructures/yield/drifttermstructure.hpp and ql/patterns/composite.hpp;
    • the const_iterator and const_value_iterator typedefs in the Garch11 class;
    • the const_time_iterator, const_value_iterator, const_reverse_time_iterator and const_reverse_value_iterator typedefs and the cbegin_values, cend_values, crbegin_values, crend_values, cbegin_time, cend_time, crbegin_time and crend_time methods of the TimeSeries class;
    • the base, increment, decrement, advance and distance_to method of the step_iterator class.
  • Deprecated ext::function, ext::bind, ext::ref, ext::cref, ext::placeholders, ext::tuple, ext::make_tuple, ext::get and ext::tie; use the corresponding std:: classes and functions instead.
  • Deprecated the ArithmeticAverageOIS, MakeArithmeticAverageOIS and ArithmeticOISRateHelper classes; use OvernightIndexedSwap, MakeOIS and OISRateHelper instead.
  • Deprecated the YoYInflationCoupon, yoyInflationLeg, CappedFlooredYoYInflationCoupon, YearOnYearInflationSwap, MakeYoYInflationCapFloor, YearOnYearInflationSwapHelper, YoYOptionletHelper, YoYCapFloorTermPriceSurface and InterpolatedYoYCapFloorTermPriceSurface constructors that don't take an explicit CPI interpolation type.
  • Deprecated the getInfo method of LevenbergMarquardt; inspect the result of minimize instead.
  • Deprecated the ql/experimental/averageois/averageoiscouponpricer.hpp file; include ql/cashflows/overnightindexedcouponpricer.hpp instead.
  • Deprecated the somewhat out-of-scope and experimental CreditRiskPlus, SensitivityAnalysis, aggregateNPV, parallelAnalysis and bucketAnalysis.

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

Full Changelog: v1.35...v1.36

1.35

23 Jul 07:00
v1.35
8e1f4ac

Choose a tag to compare

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 and boost::bind instead of their std counterparts; the std 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 in static_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 and RelinkableHandle 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

Deprecated features

  • Removed features deprecated in version 1.30:
    • the DividendVanillaOption and DividendBarrierOption classes;
    • the constructor of AnalyticDividendEuropeanEngine taking only a process and no dividends;
    • the SwaptionVolCube1, SwaptionVolCube1a, SwaptionVolCube1x and SwaptionVolCube2 typedefs and the empty headers ql/experimental/volatility/swaptionvolcube1.hpp, ql/experimental/volatility/swaptionvolcube1a.hpp and ql/experimental/volatility/swaptionvolcube2.hpp;
    • the setCommon method of CappedFlooredYoYInflationCoupon.
  • 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 to Euribor1W 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

Full Changelog: v1.34...v1.35

1.34

24 Apr 08:07
v1.34
35fba52

Choose a tag to compare

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 and boost::bind instead of their std counterparts; the std 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) when endOfMonth is true and convention is Unadjusted; 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 and MakeVanillaSwap; 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 and yieldValueBasisPoint methods in BondFunctions didn't always manage the settlement date correctly; this is now fixed (thanks to GitHub user @jez6).
  • Add Custom to Futures::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 and result_type typedefs in several classes;
    • The overloads of zero-rate inflation index constructors taking an interpolated argument;
    • The interpolated method and the protected interpolated_ data member in InflationIndex;
    • The overload of CashFlows::npvbps taking the result by reference;
    • The protected rateCurve_ method in InflationCouponPricer;
    • The ThreadKey typedef;
    • The empty header ql/experimental/credit/riskybond.hpp.
  • Deprecated the constructors of InflationTermStructure, ZeroInflationTermStructure, YoYInflationTermStructure, InterpolatedZeroInflationCurve, InterpolatedYoYInflationCurve, PiecewiseZeroInflationCurve and PiecewiseYoYInflationCurve taking an observation lag; use the overloads taking an explicit base date instead.
  • Deprecated the Bond::yield, BondFunctions::atmRate, BondFunctions::yield and BondFunctions::zSpread overloads taking a clean price as a number; use the overloads taking a Bond::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; set baseRate_ directly if needed.
  • Deprecated the Swaption::underlyingSwap and SwaptionHelper::underlyingSwap methods; use underlying instead.
  • Deprecated the broken FixedRateBondHelper::fixedRateBond and CPIBondHelper::cpiBond methods and the corresponding fixedRateBond_ and cpiBond_ 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

Full Changelog: v1.33...v1.34