Skip to content

Tags: quantlib/QuantLib

Tags

v1.44

Toggle v1.44's commit message

Verified

This tag was signed with the committer’s verified signature.
lballabio Luigi Ballabio
Changes for QuantLib 1.44

=========================

As announced, it is no longer possible to choose the Boost implementation of `any` and `optional`. Only the `std` implementation can be used.

Features deprecated in release 1.39 were removed in this release; see <lballabio#2659> for a full list.

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

- The `ext::any` and `ext::any_cast` aliases; use `std::any` and `std::any_cast`.
- The `ext::optional` and `ext::nullopt` aliases; use `std::optional` and `std::nullopt`.
- The constructor of `MakeCapFloor` taking a strike and/or a forward start; use the other constructor plus the `withStrike` and/or `withForwardStart` methods.
- The constructors of `MakeCms` taking a spread and/or a forward start; use the other constructor plus the `withIborSpread` and/or `withForwardStart` methods.
- The constructors of `MakeOIS` taking a fixed rate and/or a forward start; use the other constructor plus the `withFixedRate` and/or `withForwardStart` methods.
- The constructors of `MakeVanillaSwap` taking a fixed rate and/or a forward start; use the other constructor plus the `withFixedRate` and/or `withForwardStart` methods.
- The constructors of `InverseCumulativeStudent` taking an accuracy and/or a number of iterations, now unused; use the other constructor.
- The unused `nominalTermStructure_` data member of `ZeroCouponInflationSwapHelper`.
- The `Italy::Exchange` element of the `Italy::Market` enumeration; the exchange follows the TARGET calendar.
- The `QL_DEPRECATED` macro; use `[[deprecated("message")]]` and suggest an alternative in the message.

We were still able to test this release with Visual C++ 2017.  Due to limitations of our available CI environments, this might not be the case for future releases.

Finally, in a couple of release we will be changing the default of the` QL_NULL_AS_FUNCTIONS` macro from undefined to defined.

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.44>.

The list of commits since the previous release is available in `ChangeLog.txt`.

v1.43

Toggle v1.43's commit message

Verified

This tag was signed with the committer’s verified signature.
lballabio Luigi Ballabio
Changes for QuantLib 1.43

=========================

Features deprecated in release 1.38 were removed in this release; see <lballabio#2539> for a full list.

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

- The `AsIndex` element of the `CPI::InterpolationType` enumeration; use either `Linear` or `Flat`.
- The `YoYInflationIndex::interpolated` method and the corresponding `interpolated_` data member; indexes no longer interpolate, coupons do.
- The `Settlement` element of the `Israel::Market` enumeration; use an explicit market (TASE, Shir or Telbor).
- Test selection based on speed (that is, passing `--slow`, `--fast` or `--faster` to the test suite) is no longer supported.

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.43>.

The list of commits since the previous release is available in `ChangeLog.txt`.

v1.42.1

Toggle v1.42.1's commit message

Verified

This tag was signed with the committer’s verified signature.
lballabio Luigi Ballabio
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.

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.42.1>.

The list of commits since the previous release is available in `ChangeLog.txt`.

v1.42

Toggle v1.42's commit message

Verified

This tag was signed with the committer’s verified signature.
lballabio Luigi Ballabio
Changes for QuantLib 1.42

=========================

Removals and deprecations
-------------------------

Features deprecated in release 1.37 were removed in this release; see <lballabio#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.

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.42>.

The list of commits since the previous release is available in `ChangeLog.txt`.

v1.41

Toggle v1.41's commit message

Verified

This tag was signed with the committer’s verified signature.
lballabio Luigi Ballabio
Changes for QuantLib 1.41

=========================

Removals and deprecations
-------------------------

Features deprecated in release 1.36 were removed in this release; see
<lballabio#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.

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.41>.

The list of commits since the previous release is available in `ChangeLog.txt`.

v1.40

Toggle v1.40's commit message

Verified

This tag was signed with the committer’s verified signature.
lballabio Luigi Ballabio
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`.

v1.39

Toggle v1.39's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
lballabio Luigi Ballabio
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.

v1.38

Toggle v1.38's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
lballabio Luigi Ballabio
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.

v1.37

Toggle v1.37's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
lballabio Luigi Ballabio
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.

v1.36

Toggle v1.36's commit message

Verified

This tag was signed with the committer’s verified signature. The key has expired.
lballabio Luigi Ballabio
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.