Tags: quantlib/QuantLib
Tags
Changes for QuantLib 1.40 ========================= Removals and deprecations ------------------------- Features deprecated in release 1.35 were removed in this release; see <lballabio#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 <lballabio#2263> for an example). - The `PenaltyFunction` class; use `SimpleCostFunction` instead. - The `Tona` index was renamed to `Tonar`; use the latter instead. Full list of pull requests -------------------------- All the pull requests merged in this release are listed on its release page at <https://github.com/lballabio/QuantLib/releases/tag/v1.40>. The list of commits since the previous release is available in `ChangeLog.txt`.
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 version of the Visual C++ 2022 compiler (from 17.14.2 to 17.14.8) had a known bug that, unfortunately, affected QuantLib heavily and maed 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 stripperes 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.
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.
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.
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.
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 -------- - Reworked bond example (@lballabio). 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.
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.
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` and `boost::bind` instead of their `std` counterparts; the `std` 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` and `OISRateHelper`; 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 of `InterestRate` instances. - The constructor of `FixedRateBond` taking start date, maturity date etc. instead of a schedule. - The constructor of `FixedRateBond` taking a vector of `InterestRate` 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 the `CPICapFloor::arguments` class. - A redundant constructor of `SabrSmileSection`. - The empty headers `ql/experimental/amortizingbonds/amortizingcmsratebond.hpp`, `ql/experimental/amortizingbonds/amortizingfixedratebond.hpp` and `ql/experimental/amortizingbonds/amortizingfloatingratebond.hpp`. - Deprecated the constructor of `Currency` and `Currency::Data` taking a format string, and the `Currency::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.
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 the `SwaptionVolatilityDiscrete` class was renamed to `cachedReferenceDate_`. - **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` and `boost::bind` instead of their `std` counterparts; starting from this release, the `std` 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` and `QL_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` and `compose3` functors. - The `PdeShortRate`, `ShoutCondition`, `FDShoutCondition`, `FDStepConditionEngine` and `FDEngineAdapter` classes from the old finite-differences framework. - The `dsd::inner_product` function. - The `FDDividendEngineBase`, `FDDividendEngineMerton73`, `FDDividendEngineShiftScale` and `FDDividendEngine` 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` and `ql/utilities/disposable.hpp`. - Deprecated the overload of the `withReplication` method in the `DigitalIborLeg`, `DigitalCmsLeg` and `DigitalCmsSpreadLeg` classes that takes no arguments; use the other overload instead. - Deprecated the `StandardFiniteDifferenceModel`, `StandardSystemFiniteDifferenceModel` and `StandardStepCondition` typedefs; define your own typedefs if needed. - Deprecated the `FDVanillaEngine`, `FDMultiPeriodEngine`, `StepConditionSet`, `ParallelEvolverTraits`, `ParallelEvolver` and `SampledCurve`classes and the `BSMTermOperator` and `SampledCurveSet` 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` and `ql/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.
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>.
PreviousNext