Skip to content

Tags: lballabio/QuantLib

Tags

v1.36

Toggle v1.36's commit message

Verified

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

v1.35

Toggle v1.35's commit message

Verified

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

v1.34

Toggle v1.34's commit message

Verified

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

v1.33

Toggle v1.33's commit message

Verified

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

v1.32

Toggle v1.32's commit message

Verified

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

v1.31.1

Toggle v1.31.1's commit message

Verified

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

v1.31

Toggle v1.31's commit message

Verified

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

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

QuantLib 1.31 includes a record 68 pull requests from several contributors.

Some of the most notable changes are included below.
A detailed list of changes is available in ChangeLog.txt and at
<https://github.com/lballabio/QuantLib/milestone/28?closed=1>.

Portability
-----------

- **Future end of support:** as announced in the notes for the
  previous release, after this release using `std::tuple`,
  `std::function` and `std::bind` (instead of their `boost`
  counterparts) will become the default.  If you're using `ext::tuple`
  etc. in your code (which is suggested), this should be a transparent
  change.  If not, you'll still be able to choose the `boost` versions
  via a configure switch for a while; but we do suggest you start
  using `ext::tuple` etc. in the meantime.

- The cmake build now creates (but doesn't install) a
  `quantlib-config` script that can be used to retrieve flags for
  compiling QuantLib-dependent projects; thanks to Christian
  Köhnenkamp (@kohnech).

- A number of Boost classes and functions only used internally were
  replaced by their standard-library equivalent; thanks to Jonathan
  Sweemer (@sweemer).

Patterns
--------

- **Optional change of behavior:** by default, the `LazyObject` class
  forwards only one notification after recalculating and silently
  ignores the others.  In some edge cases, this could lead to objects
  not being updated.  It's now possible to enable a different behavior
  where all notifications are forwarded; the new behavior can be
  chosen at compile time via the configure option
  `--disable-faster-lazy-objects` (or disabling
  `QL_FASTER_LAZY_OBJECTS` in cmake or `userconfig.hpp`) or at run
  time by calling
  `LazyObject::Defaults::instance().alwaysForwardNotifications()`.
  This might cause a slow down, so you're invited to try it out and
  report on the mailing list.  If there are no problems, the new
  behavior might become the default in future releases.  Also, a new
  configure option `--enable-throwing-in-cycles` (`QL_THROW_IN_CYCLES`
  in cmake or `userconfig.hpp`) is optionally available; when both
  this option and the new behavior are enabled, notifications cycles
  involving a lazy object will throw an exception.  It is suggested to
  try enabling the option and removing such loops, if any.  Thanks to
  Peter Caspers (@pcaspers) for the change and to Ralf Konrad
  (@ralfkonrad), Jonathan Sweemer (@sweemer) and GitHub user
  @djkrystul for feedback.

Date/time
---------

- **Change of behavior:** when the end-of-month option is true, the
  constructor of a schedule no longer adjust to the end of their month
  the effective date and the termination date if they were passed
  explicitly.  Thanks to Hristo Raykov (@HristoRaykov).

- Added separate US SOFR calendar to manage days that are business
  days for the US government bond market but in which SOFR doesn't
  fix; for instance, Good Friday 2023 (@lballabio).  Thanks to Tom
  Anderson (@tomwhoiscontrary) for reporting the issue.

- Fixed some rolling rules for South Korean calendar; thanks to Jonghee
  Lee (@nistick21).

- Fixed incorrect 2023 holidays for Hong Kong calendar; thanks to
  Fredrik Gerdin Börjesson (@gbfredrik).

- Added Hong Kong holidays for 2021-2024; thanks to Rémy Frèrebeau
  (@rfrerebe-stx) and Binrui Dong (@BrettDong).

- Added Singapore holidays for 2019-2023; thanks to Rémy Frèrebeau
  (@rfrerebe-stx).

- Added Indian holidays for 2021-2025; thanks to Fredrik Gerdin
  Börjesson (@gbfredrik).

- Added Taiwanese holidays for 2020-2023; thanks to @jsmx.

- Added a few election days for South African and South Korean
  calendar; thanks to Fredrik Gerdin Börjesson (@gbfredrik).

- Updated Danish calendar; starting in 2024, General Prayer Day will
  no longer be a holiday.  Thanks to Fredrik Gerdin Börjesson
  (@gbfredrik).

- Fixed a few holidays in Finland and Singapore calendars; Thanks to
  Fredrik Gerdin Börjesson (@gbfredrik).

- More day counters (Act/364, Act/365.25, Act/366) now take into
  account intraday resolution when enabled; thanks to Klaus Spanderen
  (@klausspanderen).

Cash flows
----------

- The accrued amount for CPI coupons is now correctly based on the
  index ratio at settlement date.  An inspector for retrieving the
  index ratio at a given date was also added (@lballabio).

- Enabled the use of normal volatilities in Hagan pricer for CMS
  coupons; thanks to Andre Miemiec (@amiemiec).

- Floating-rate coupons are now lazy; thanks to Peter Caspers
  (@pcaspers).

Indexes
-------

- When passed a tenor of 7 or 14 business days, interest-rate indexes
  would wrongly convert it to 1 or 2 weeks.  This is now fixed
  (@lballabio).  Thanks to Eugene Toder (@eltoder) for reporting the
  issue.

- Added DESTR and SWESTR indexes; thanks to Fredrik Gerdin Börjesson
  (@gbfredrik).

- Added CORRA index; thanks to @AND2797.

- When an YoY inflation index is calculated as a ratio, the underlying
  inflation index is available through an inspector and its fixings
  are used to calculate the fixing of the YoY index (@lballabio).

Instruments
-----------

- Instruments now register automatically with the global evaluation
  date and are notified when it changes.  This makes sense in general
  (if the evaluation date changes, you probably want to recalculate)
  and can also help avoid some edge cases when lazy objects only
  forward their first notification (@lballabio).

- Allowed passing a schedule without a regular tenor to callable
  fixed-rate bonds; thanks to Hristo Raykov (@HristoRaykov) for the
  fix and to @OleBueker for reporting the issue.

- Reorganized the constructors of FRA instruments; thanks to Jake Heke
  (@jakeheke75).

Term structures
---------------

- Ensures that upfront CDS helpers update correctly when the global
  evaluation date changes; thanks to Andrea Pellegatta (@andrea85p)
  for the fix and to @bkhoor for reporting the issue.

- Allow more maturities for SOFR quarterly contract in SOFR futures
  rate helper; thanks to Jake Heke (@jakeheke75).

- Added constructor for date-dependent strikes to StrippedOptionlet;
  thanks to Peter Caspers (@pcaspers).

Test suite
----------

- Global settings (such as the evaluation date) are now restored and
  index fixings are now cleaned automatically at the end of each test
  case, making it unnecessary to clean them up manually.  Thanks to
  Eugene Toder (@eltoder).

- The parallel unit-test runner now passes the `--run_test=<filter>`
  option down to the underlying Boost.Test implementation.  Thanks to
  Eugene Toder (@eltoder).

Deprecated features
-------------------

- **Removed** features deprecated in version 1.26:
  - The `CPICoupon` constructor taking a number of fixing days and its
    `indexObservation`, `adjustedFixing` and `indexFixing(date)` methods.
  - The `CPICashFlow` constructor taking a fixing date.
  - The `withFixingDays` methods of `CPILeg`.
  - The `ZeroInflationCashFlow` constructor taking a calendar and
    business-day convention.
  - The `LsmBasisSystem::PolynomType` typedef and the
    `MakeMCAmericanEngine::withPolynomOrder` method.
  - The `Observer::set_type` and `Observable::set_type` typedefs.
  - The `Curve` class.
  - The `LexicographicalView` class.
  - The `Composite` class.
  - The `DriftTermStructure` class.

- Deprecated the various `time_iterator` and `value_iterator` types in
  `TimeSeries`, as well as methods returning them.  The more general
  `const_iterator` and `const_reverse_iterator` types can be used
  instead.

- Deprecated the constructors of `CPICoupon` taking a spread, as well
  as its `spread` method, its protected `spread_` data member, and the
  `withSpreads` methods of `CPILeg`.

- Deprecated the `adjustedFixing` method and the protected `spread_`
  data member of `CPICouponPricer`.

- Renamed `BlackVanillaOptionPricer` to `MarketQuotedOptionPricer` and
  deprecated the old name.

- Deprecated a couple of constructors of `ForwardRateAgreement`.

- Deprecated the constructor of `YoYInflationIndex` taking a `ratio`.
  Also, deprecated explicit classes for YoY ratio indexes
  `YYGenericCPIr`, `YYAUCPIr`, `YYEUHICPr`, `YYFRHICPr`, `YYUKRPIr`,
  `YYUSCPIr` and `YYZACPIr`.

- Deprecated the `base`, `increment`, `decrement`, `advance` and
  `distance_to` methods of the `step_iterator` class.

**Thanks go also** to Jonathan Sweemer (@sweemer), Jose Garcia
(@j053g), Jake Heke (@jakeheke75), Eugene Toder (@eltoder), Binrui
Dong (@BrettDong), the Xcelerit Dev Team (@xcelerit-dev), Ralf Konrad
(@ralfkonrad), Fredrik Gerdin Börjesson (@gbfredrik) and Tom Anderson
(@tomwhoiscontrary) for a number of smaller fixes and improvements.

QuantLib-v1.30

Toggle QuantLib-v1.30's commit message

Verified

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

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

QuantLib 1.30 includes 34 pull requests from several contributors.

Some of the most notable changes are included below.
A detailed list of changes is available in ChangeLog.txt and at
<https://github.com/lballabio/QuantLib/milestone/27?closed=1>.

Portability
-----------

- **Future end of support:** as announced in the notes for the
  previous release, after this release and the next, using
  `std::tuple`, `std::function` and `std::bind` (instead of their
  `boost` counterparts) will become the default.  If you're using
  `ext::tuple` etc. in your code (which is suggested), this should be
  a transparent change.  If not, you'll still be able to choose the
  `boost` versions via a configure switch for a while; but we do
  suggest you start using `ext::tuple` etc. in the meantime.

- CMake builds now use a stricter warning level by default; thanks to
  Ralf Konrad (@ralfkonrad).

- Is it now possible to use `std::any` and `std::optional` (and the
  related `std::any_cast` and `std::nullopt`) instead of their `boost`
  counterparts by setting new compilation switches; thanks to Jonathan
  Sweemer (@sweemer).  Using the `std` classes requires C  17.  We
  expect the `boost` classes to remain the default for a while, but in
  the meantime we encourage to start using `ext::any` and
  `ext::optional` in preparation for a new default.

Date/time
---------

- Good Friday 2023 is now a business day for the US government bond
  calendar; thanks to Anastasiia Shumyk (@ashumyk).

- Added specialized Australian calendar for ASX; thanks to Trent
  Maetzold (@trentmaetzold).

- Fixed Turkish holidays between 2019 and 2023; thanks to Fredrik
  Gerdin Börjesson (@gbfredrik).

- Added a few missing holidays to Danish calendar; thanks to Fredrik
  Gerdin Börjesson (@gbfredrik).

- Added the Matariki holiday to the New Zealand calendar; thanks to
  Jake Heke (@jakeheke75).

Cashflows
---------

- Added a new equity cash flow class to model equity legs in total
  return swaps; thanks to Marcin Rybacki (@marcin-rybacki).  Quanto
  pricing is also supported.

- Added an overloaded constructor for CPI coupons that allows to
  specify a base date instead of a base CPI value; thanks to Matthias
  Groncki (@mgroncki).

Instruments
-----------

- Added a new total-return swap; thanks to Marcin Rybacki
  (@marcin-rybacki).  An equity-index class was also added to support
  this instrument.

- The analytic engine for barrier options would return NaN for low
  values of volatility; this is now fixed (@lballabio).

- The `VanillaOption` and `BarrierOption` classes can now be used to
  model vanilla and barrier options with discrete dividends; the
  future dividends (not being part of the terms and conditions of the
  contract) should be passed to the pricing engine instead (@lballabio).

- Added analytical Greeks to Bjerksund-Stensland engine; thanks to
  Klaus Spanderen (@klausspanderen).

Indexes
-------

- Added UKHICP inflation index; thanks to Fredrik Gerdin Börjesson
  (@gbfredrik).

Term structures
---------------

- Renamed `SwaptionVolCube1`, `SwaptionVolCube1x`, `SwaptionVolCube1a`
  and `SwaptionVolCube2` to `SabrSwaptionVolatilityCube`,
  `XabrSwaptionVolatilityCube`, `NoArbSabrSwaptionVolatilityCube` and
  `InterpolatedSwaptionVolatilityCube`, respectively; thanks to
  Ignacio Anguita (@IgnacioAnguita).  The old names are deprecated but
  still available for a few releases.

- Ensure that inflation curves are re-bootstrapped correctly when
  seasonality is added (@lballabio).

Models
------

- Moved the Heston SLV model from experimental to main; thanks to
  Klaus Spanderen (@klausspanderen).

Math
----

- Added a few overloads to Array and Matrix operators taking rvalue
  references for increased speed; thanks to Jonathan Sweemer (@sweemer).

Deprecated features
-------------------

- **Removed** features deprecated in version 1.25:
  - the protected `spreadLegValue_` data member of `BlackIborCouponPricer`;
  - the `WulinYongDoubleBarrierEngine` alias for `SuoWangDoubleBarrierEngine`;
  - the `settlementDate`, `incomeDiscountCurve`, `spotIncome`,
    `spotValue`, `impliedYield` and `forwardValue` methods of
    `ForwardRateAgreement`, as well as its protected
    `underlyingIncome_`, `underlyingSpotValue_`, `settlementDays_`,
    `payoff_` and `incomeDiscountCurve_` data members;
  - constructors for `InflationTermStructure`,
    `ZeroInflationTermStructure`, `InterpolatedZeroInflationCurve`,
    `PiecewiseZeroInflationCurve` taking an `indexIsInterpolated`
    parameter;
  - the `indexIsInterpolated` method of `InflationTermStructure` and
    its protected `indexIsInterpolated_` data member;
  - some overloaded constructors of `SofrFutureRateHelper`.

- Deprecated the `DividendVanillaOption` and `DividendBarrierOption`
  classes; use `VanillaOption` and `BarrierOption` instead (see
  above).

- Deprecated the constructor of `AnalyticDividendEuropeanEngine` that
  takes no dividend information; use the other overload instead.

- Deprecated the names `SwaptionVolCube1`, `SwaptionVolCube1x`,
  `SwaptionVolCube1a` and `SwaptionVolCube2` (see above).

- Deprecated the protected `setCommon` method of
  `CappedFlooredYoYInflationCoupon`.

**Thanks go also** to Jonathan Sweemer (@sweemer), the Xcelerit Dev
Team (@xcelerit-dev), Fredrik Gerdin Börjesson (@gbfredrik), Klaus
Spanderen (@klausspanderen) and Peter Caspers (@pcaspers) for a number
of smaller fixes and improvements, and to Matthias Groncki (@mgroncki)
and @lukey8767 for raising issues.

QuantLib-v1.29

Toggle QuantLib-v1.29's commit message

Verified

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

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

QuantLib 1.29 includes 42 pull requests from several contributors.

Some of the most notable changes are included below.
A detailed list of changes is available in ChangeLog.txt and at
<https://github.com/lballabio/QuantLib/milestone/26?closed=1>.

Portability
-----------

- **End of support:** as announced in the notes for the previous
  release, this release no longer manages thread-local singletons via
  a user-provided `sessionId` function, and therefore the latter is no
  longer needed.  Instead, the code now uses the built-in language
  support for thread-local variables.  Thanks go to Peter Caspers
  (@pcaspers).

- **Future end of support:** as announced in the notes for the
  previous release, after the next couple of releases, using
  `std::tuple`, `std::function` and `std::bind` (instead of their
  `boost` counterparts) will become the default.  If you're using
  `ext::tuple` etc. in your code (which is suggested), this should be
  a transparent change.  If not, you'll still be able to choose the
  `boost` versions via a configure switch for a while; but we do
  suggest you start using `ext::tuple` etc. in the meantime.

- Replaced internal usage of `boost::thread` with `std::thread`;
  thanks to Jonathan Sweemer (@sweemer).  This removed our last
  dependency on Boost binaries and makes it possible to compile
  QuantLib using a header-only Boost installation.

- On Windows, it is now possible to use the MSVC dynamic runtime when
  using cmake by passing
  `-DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDLL`
  on the command line; thanks to Jonathan Sweemer (@sweemer).  The
  static runtime remains the default.

- It is now possible to build QuantLib with Intel's `icpx` compiler
  using cmake; thanks to Jonathan Sweemer (@sweemer).  Note that in
  order to get all the unit tests passing, `-fp-model=precise` must be
  added to `CMAKE_CXX_FLAGS`.

Date/time
---------

- Updated Chinese holidays for 2023; thanks to Cheng Li
  (@wegamekinglc).

- Added in-lieu holiday for Christmas 2022 to South-African calendar;
  thanks to Joshua Hayes (@JoshHayes).

- Added King Charles III coronation holiday to UK calendar; thanks to
  Fredrik Gerdin Börjesson (@gbfredrik).

- Added holiday for National Day of Mourning to Australian calendar;
  thanks to Fredrik Gerdin Börjesson (@gbfredrik).

Instruments
-----------

- Added high performance/precision American engine based on
  fixed-point iteration for the exercise boundary; thanks to Klaus
  Spanderen (@klausspanderen).

- Bonds with draw-down (i.e., increasing notionals) are now allowed;
  thanks to Oleg Kulkov (@Borgomi42 ).

- Added `withIndexedCoupons` and `withAtParCoupons` methods to
  `MakeSwaption` for easier initialization; thanks to Ralf Konrad
  (@ralfkonrad).

- It is now possible to use the same pricing engine for vanilla and
  dividend vanilla options, or for barrier and dividend barrier
  options (@lballabio).

Indexes
-------

- Creating a zero inflation index as "interpolated" is now deprecated;
  thanks to Ralf Konrad (@ralfkonrad).  The index should only return
  monthly fixings.  Interpolation is now the responsibility of
  inflation-based coupons.

Term structures
---------------

- The `ConstantCPIVolatility` constructor can now take a handle to a
  volatility quote, instead of just an immutable number (@lballabio).

Deprecated features
-------------------

- **Removed** features deprecated in version 1.24:
  - the `createAtParCoupons`, `createIndexedCoupons` and
    `usingAtParCoupons` methods of `IborCoupon`;
  - the `RiskyBond` class and its subclasses `RiskyFixedBond` and
    `RiskyFloatingBond`;
  - the `CrossCurrencyBasisSwapRateHelper` typedef;
  - the `termStructure_` data member of `BlackCalibrationHelper`;
  - the static `baseCurrency` and `conversionType` data members of `Money`;
  - the `nominalTermStructure` method and the `nominalTermStructure_`
    data member of `InflationTermStructure`;
  - the constructor of the `UnitedStates` calendar not taking an
    explicit market.

- Deprecated the `argument_type`, `first_argument_type`,
  `second_argument_type` and `result_type` typedefs in a number of
  classes; use `auto` or `decltype` instead.

- Deprecated the constructors of `InflationIndex`,
  `ZeroInflationIndex`, `FRHICP`, `ZACPI`, `UKRPI`, `EUHICP`,
  `EUHICPXT`, `USCPI`, `AUCPI` and `GenericCPI` taking an
  `interpolated` parameter; use another constructor.

- Deprecated the `interpolated` method and the `interpolated_` data
  member of `InflationIndex`.

- Deprecated the `ThreadKey` typedef.  It was used in the signature of
  `sessionId`, which is no longer needed after the changes in the
  `Singleton` implementation.

- Deprecated the `rateCurve_` data member of the
  `InflationCouponPricer` base class.  If you need it, provide it in
  your derived class.

- Deprecated the `npvbps` function taking NPV and BPS as references.
  Use the overload returning a pair of `Real`s.

**Thanks go also** to Matthias Groncki (@mgroncki), Jonathan Sweemer
(@sweemer) and Nijaz Kovacevic (@NijazK) for a number of smaller fixes
and improvements, to the Xcelerit Dev Team (@xcelerit-dev) for
improvements to the automated CI builds, and to Vincenzo Ferrazzanno
(@vincferr), @alienbrett, @xuruilong100 and @philippb90 for raising issues.

QuantLib-v1.28

Toggle QuantLib-v1.28's commit message

Verified

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

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

QuantLib 1.28 includes 33 pull requests from several contributors.

Some of the most notable changes are included below.
A detailed list of changes is available in ChangeLog.txt and at
<https://github.com/lballabio/QuantLib/milestone/24?closed=1>.

Portability
-----------

- **New language standard:** as announced in the notes for the
  previous release, this release started using some C  14 syntax.
  This should be supported by most compilers released in the past
  several years.

- **End of support:** as announced in the notes for the previous
  release, this release is the last to manage thread-local singletons
  via a user-provided `sessionId` function.  Future releases will use
  the built-in language support for thread-local variables.

- **Future end of support:** after the next two or three releases,
  using `std::tuple`, `std::function` and `std::bind` (instead of
  their `boost` counterparts) will become the default.  If you're
  using `ext::tuple` etc. in your code (which is suggested), this
  should be a transparent change.  If not, you'll still be able to
  choose the `boost` versions via a configure switch for a while.

Date/time
---------

- Added Act/366 and Act/365.25 day counters; thanks to Ignacio Anguita
  (@IgnacioAnguita).

- Added H.M. the Queen's funeral to the UK calendars; thanks to Tomass
  Wilson (@Wilsontomass).

Instruments
-----------

- Amortizing bonds were moved out of the experimental folder.  Also, a
  couple of utility functions were provided to calculate amortization
  schedules and notionals.

Pricing engines
---------------

- Fixed results from `COSHestonEngine` in the case of an option with
  short time to expiration and deep ITM or deep OTM strike prices;
  thanks to Ignacio Anguita (@IgnacioAnguita).

- The ISDA engine for CDS could calculate the fair upfront with the
  wrong sign; this is now fixed, thanks to Gualtiero Chiaia
  (@gchiaia).

Term structures
---------------

- The constructor for `OISRateHelper` now allows to specify the
  `endOfMonth` parameter; thanks to Guillaume Horel (@thrasibule).

Finite differences
------------------

- Fixed computation of cds boundaries in `LocalVolRNDCalculator`;
  thanks to @mdotlic.

Experimental folder
-------------------

The `ql/experimental` folder contains code whose interface is not
fully stable, but is released in order to get user
feedback. Experimental classes make no guarantees of backward
compatibility; their interfaces might change in future releases.

- **Breaking change**: the constructor of the
  `CPICapFloorTermPriceSurface` class now also takes an explicit
  interpolation type.

- **Possibly breaking**: the protected constructor for `CallableBond`
  changes its arguments.  If you inherited from this class, you'll
  need to update your code.  If you're using the existing derived bond
  classes, the change will be transparent.

- Pricing engines for callable bonds worked incorrectly when the face
  amount was not 100. This is now fixed.

- The `impliedVolatility` method for callable bonds was taking a
  target NPV, not a price. This implementation is now deprecated, and
  a new overload was added taking a price in base 100.

Deprecated features
-------------------

- **Removed** features deprecated in version 1.23:
  - the constructors of `ZeroCouponInflationSwap` and
    `ZeroCouponInflationSwapHelper` missing an explicit CPI
    interpolation type;
  - the constructors of `ActualActual` and `Thirty360` missing an
    explicit choice of convention, and the constructor of `Thirty360`
    passing an `isLastPeriod` boolean flag.

- Deprecated the constructors of `FixedRateBond` taking an
  `InterestRate` instance or not taking a `Schedule` instance.

- Deprecated the constructor of `FloatingRateBond` not taking a
  `Schedule` instance.

- Deprecated the constructors of `AmortizingFixedRateBond` taking a
  sinking frequency or a vector of `InterestRate` instances.

- Deprecated the constructor of `CPICapFloor` taking a `Handle` to an
  inflation index, and its `inflationIndex` method returning a `Handle`.
  New versions of both were added using `shared_ptr` instead.

- Deprecated one of the constructors of `SabrSmileSection`; a new
  version was added also taking an optional reference date.

- Deprecated the old `impliedVolatility` method for callable bonds;
  see above.

**Thanks go also** to Konstantin Novitsky (@novitk), Peter Caspers
(@pcaspers), Klaus Spanderen (@klausspanderen), Fredrik Gerdin
Börjesson (@gbfredrik) and Dirk Eddelbuettel (@eddelbuettel) for a
number of smaller fixes, and to Jonathan Sweemer (@sweemer) for
various improvements to the automated CI builds.