commit b92bce3e2866e7f3f07969c6a438ed1113ecc1ea
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Fri, 2 Oct 2026 10:38:15 +0000

    Set version to 1.44-rc

 CMakeLists.txt | 4 ++--
 configure.ac   | 2 +-
 ql/version.hpp | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

commit db8beb5a39ede6fa8b78f5cddd72b6769c83138c
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 2 Oct 2026 12:35:36 +0200

    Update news and contributors

 Contributors.txt | 18 ++++++++++++++++++
 News.md          | 26 ++++++++++++++++++--------
 2 files changed, 36 insertions(+), 8 deletions(-)

commit 2dca7d18c8ad46be2519e2d86eea7937ae06171a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 2 Oct 2026 10:58:57 +0200

    Tweak parameters in optimization example

 Examples/GlobalOptimizer/GlobalOptimizer.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

commit a933b870bf8727e84ea29b12777d1447f103f748
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 1 Oct 2026 18:01:50 +0200

    Fix test-case message

 test-suite/sofrfutures.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 62cbcf038b612ba51c3abe62c438612fecc38d40
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 1 Oct 2026 10:14:42 +0200

    Add Clang 22 to CI builds

 .github/workflows/devenv-images.yml    | 4 ++--
 .github/workflows/linux-full-tests.yml | 5 +++++
 .github/workflows/linux-nondefault.yml | 5 +++++
 .github/workflows/linux.yml            | 6 ++++++
 4 files changed, 18 insertions(+), 2 deletions(-)

commit a0a8202964901390175f28572cc9d288c47665d9
Merge: fd7155965 61cf97827
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 1 Oct 2026 16:43:32 +0200

    Return a zero implied standard deviation from Li-RS at intrinsic (#2838)

commit fd7155965610519b7be7c210fd51ee99620c7b30
Merge: 822644bd2 73cd61477
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 1 Oct 2026 10:38:06 +0200

    Keep the RS implied-standard-deviation approximation finite (#2835)

commit 73cd6147711c7d242bf528d18b74e4f635626f2d
Author: Abhayindia <abhaychaudharydps@gmail.com>
Date:   Thu, 1 Oct 2026 07:52:52 +0900

    Return the limiting standard deviation where the RS gamma is not finite

 ql/pricingengines/blackformula.cpp | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

commit fa313c178b4ff7566e12f47d1a2d9de7b9984dd8
Author: Abhayindia <abhaychaudharydps@gmail.com>
Date:   Wed, 30 Sep 2026 03:42:13 +0900

    Return a zero implied standard deviation from Li-RS at intrinsic

 ql/pricingengines/blackformula.cpp |  3 +++
 test-suite/blackformula.cpp        | 43 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+)

commit 4b2e92da1bdf4f79943d07bb87d2856dba940917
Author: Abhayindia <abhaychaudharydps@gmail.com>
Date:   Wed, 30 Sep 2026 02:31:23 +0900

    Drop the explanatory comments

 ql/pricingengines/blackformula.cpp |  8 --------
 test-suite/blackformula.cpp        | 13 -------------
 2 files changed, 21 deletions(-)

commit 3c7b1a340b5c35beb5e5e93ee1784a388ee6988d
Author: Abhayindia <abhaychaudharydps@gmail.com>
Date:   Mon, 28 Sep 2026 20:39:10 +0900

    Keep the RS implied-standard-deviation approximation finite

 ql/pricingengines/blackformula.cpp | 20 ++++++++++++---
 test-suite/blackformula.cpp        | 51 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 68 insertions(+), 3 deletions(-)

commit 822644bd268d67089fa9b50dd8015ec62789831d
Merge: 0291fa137 e8f198cd0
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 29 Sep 2026 15:59:43 +0200

    Give Bjerksund-Stensland a value where beta is one (#2814)

commit 0291fa13722cea77134b8b8112981b351d16470e
Merge: aaf51ca29 faacf6b9a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 29 Sep 2026 15:40:28 +0200

    Expand calendar test coverage (#2832)

commit faacf6b9a1709fd40d53e0f64c53eefa360d87a7
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 29 Sep 2026 11:32:00 +0200

    Moved a few tests around, avoided deprecation warning

 test-suite/calendars.cpp | 121 ++++++++++++++++++++++-------------------------
 1 file changed, 57 insertions(+), 64 deletions(-)

commit aaf51ca29c47566601e211db473f11c13ca3afb5
Merge: 43f1bff99 94ba36fab
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 29 Sep 2026 11:12:57 +0200

    Fix asset ITM probabilities at zero standard deviation (#2829)

commit 43f1bff992338e62e1336bbb5c20d58a13bcbde3
Merge: cdaaaee30 83c54d0be
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 29 Sep 2026 11:12:26 +0200

    Keep Period comparison consistent for negative months and years (#2830)

commit cdaaaee30b9e92ab9c8198c9663718e50e1565c7
Merge: 424b30aa8 4965224f0
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 28 Sep 2026 17:21:53 +0200

    Add new Italian holiday (#2836)

commit 4965224f02fd1f8da4ca19a02af04ce1d2d9461c
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 28 Sep 2026 14:26:40 +0200

    Add new Italian holiday

 ql/time/calendars/italy.cpp |  4 ++
 ql/time/calendars/italy.hpp | 27 +++++--------
 test-suite/calendars.cpp    | 92 +++++++++++++++++++++++++++++----------------
 3 files changed, 74 insertions(+), 49 deletions(-)

commit 424b30aa8fe59c0422214928ad7bf58b95610589
Merge: 489bf0989 2227d83e1
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 28 Sep 2026 12:20:24 +0200

    Fix multiple-resets swap schedules and helper pillar (#2833)

commit 489bf098915bc8786f626f43d864f1f88e6cf76a
Merge: 292825c34 4b2555615
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 28 Sep 2026 10:09:06 +0200

    Cms market calibration coverage (#2828)

commit 292825c34984c44c6e0c468df50d6c028c1287f5
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Sun, 27 Sep 2026 02:07:24 +0000

    Automated fixes by clang-tidy

 ql/experimental/barrieroption/perturbativebarrieroptionengine.cpp | 4 ++--
 ql/time/daycounters/yearfractiontodate.cpp                        | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

commit 9773e0fa1b4f2da7df29b3b0f2eb99b2f0371505
Merge: 0191ca7cc ddad9e4d6
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 28 Sep 2026 08:59:26 +0200

    Added tanh-sinh Fourier integration (#2823)

commit 2227d83e1836776b62f3beac65391ba314846d41
Author: Amit Kumar Jha <77675138+AIM-IT4@users.noreply.github.com>
Date:   Sun, 27 Sep 2026 11:10:55 +0000

    Fix multiple-resets swap schedules and helper pillar
    
    MakeMultipleResetsSwap adjusted the end date before generating the
    schedules backwards from it.  When the maturity fell on a holiday, all
    dates were shifted and a short stub was added at the start; with more
    than one reset per coupon this made construction fail, otherwise it
    silently mispriced the swap.  The end date is now left unadjusted, as in
    MakeVanillaSwap, and the schedules adjust it.
    
    MultipleResetsSwapRateHelper also ignored that the last fixing forecasts
    the index until its own maturity, which can be after the end of the
    swap; the bootstrap then required the curve to extrapolate past the
    helper pillar.  The latest relevant date now includes it, as in
    SwapRateHelper.

 ql/instruments/makemultipleresetsswap.cpp          |  7 ++-
 .../yield/multipleresetsswaphelper.cpp             | 16 +++++-
 test-suite/multipleresetsswap.cpp                  | 60 ++++++++++++++++++++++
 3 files changed, 80 insertions(+), 3 deletions(-)

commit f1a8d0591fa404ba5dfa6d89cf292ba94a3413a4
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sun, 27 Sep 2026 09:56:03 +0100

    Expand calendar test coverage

 test-suite/calendars.cpp | 208 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 204 insertions(+), 4 deletions(-)

commit 83c54d0be4bce0f2f8871dd7c1cf5f94daf5b9cd
Author: WatchTree-19 <119982314+WatchTree-19@users.noreply.github.com>
Date:   Sun, 27 Sep 2026 01:46:11 +0000

    Keep Period comparison consistent for negative months and years
    
    daysMinMax returned (28n, 31n) and (365n, 366n) for n months or years,
    which puts the larger value first when n is negative. The undecidable
    check then never fired, so -1M < -30D and -30D < -1M were both true and
    equality built on operator< was wrong. Swap the bounds for negative
    lengths so negative periods behave like positive ones.

 ql/time/period.cpp    |  7 +++++--
 test-suite/period.cpp | 37 +++++++++++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 2 deletions(-)

commit 94ba36fab3c49034b65655db30c2b6bd6ed73482
Author: WatchTree-19 <119982314+WatchTree-19@users.noreply.github.com>
Date:   Sun, 27 Sep 2026 01:46:10 +0000

    Fix asset ITM probabilities at zero standard deviation
    
    blackFormulaAssetItmProbability compared forward and strike the wrong
    way round when stdDev is zero, so an in-the-money call returned 0 and an
    out-of-the-money one returned 1 (the cash version uses the right
    comparison). bachelierBlackFormulaAssetItmProbability returned the
    intrinsic value max(F - K, 0) instead of a probability.
    
    Both now return 1 or 0, the limit of the formulas as stdDev goes to
    zero. This also fixes optionletsDelta in the Black and Bachelier cap/floor
    engines at zero volatility.

 ql/pricingengines/blackformula.cpp |  8 +++----
 test-suite/blackformula.cpp        | 44 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 4 deletions(-)

commit 4b25556156bdb0363379d83e371f28914e2a29bf
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 26 Sep 2026 21:55:05 +0100

    Improve CMS market calibration coverage

 .../volatility/swaption/cmsmarketcalibration.cpp   |  75 +++++++------
 test-suite/cms.cpp                                 | 119 +++++++++++++++++++++
 2 files changed, 160 insertions(+), 34 deletions(-)

commit 9fb7bedf8778639fcad0fb8af7d3345b386e95f8
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 26 Sep 2026 21:13:52 +0100

    Fix lazy SABR cube recalibration

 .../volatility/swaption/sabrswaptionvolatilitycube.hpp       |  2 ++
 test-suite/cms.cpp                                           | 12 ++++++++++++
 2 files changed, 14 insertions(+)

commit ddad9e4d6bd5d763e9398c8972343707f594b772
Author: Klaus Spanderen <klaus@spanderen.de>
Date:   Fri, 25 Sep 2026 19:05:42 +0200

    removed boilerplate code

 ql/math/integrals/fourierintegration.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

commit 0191ca7cccbb62e538fd10f5c88f640594d4eaed
Merge: 2021745ec 195ac3afe
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 25 Sep 2026 17:02:14 +0200

    Expose the instruments underlying three more rate helpers (#2824)

commit 2021745ec80af92807a4581aa524b21fb48efd1f
Merge: 3929b7581 aaed737ba
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 25 Sep 2026 14:52:05 +0200

    Check the payoff type in the FD vanilla engines (#2825)

commit 3929b7581c28b2732d90505a3844748eb73ee252
Merge: 0da955c14 4cf3a2ce9
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 25 Sep 2026 10:04:54 +0200

    Allow specifying fixedDayCount in OISRateHelper (#2821)

commit 0da955c148e37dfcc323727d965db78c6365cec1
Merge: 65a571aef d20d44074
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 25 Sep 2026 10:01:48 +0200

    yearfractiontodate: intraday support for "invertible" day counter (#2818)

commit aaed737ba0d11a95b1df4c97c256c500275884df
Author: Sergei Khorev <sergey.khorev@gmail.com>
Date:   Fri, 25 Sep 2026 10:01:07 +0200

    Check the payoff type in the FD vanilla engines
    
    FdBlackScholesVanillaEngine, FdHestonVanillaEngine and FdCIRVanillaEngine
    cast the payoff to StrikedTypePayoff and call strike() on the result
    without checking it. A OneAssetOption with any other payoff dereferences
    a null pointer: with boost::shared_ptr and the assertion handler this
    throws "Boost assertion failed: px != 0", and with std::shared_ptr it is
    undefined behaviour. Require a striked payoff, as the analytic engines
    already do.
    
    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

 .../vanilla/fdblackscholesvanillaengine.cpp        |  1 +
 ql/pricingengines/vanilla/fdcirvanillaengine.cpp   |  2 ++
 .../vanilla/fdhestonvanillaengine.cpp              |  1 +
 test-suite/europeanoption.cpp                      | 42 ++++++++++++++++++++++
 4 files changed, 46 insertions(+)

commit 195ac3afedd46b5c938b839b72bbcf5fe733a781
Author: Sergei Khorev <sergey.khorev@gmail.com>
Date:   Fri, 25 Sep 2026 09:59:18 +0200

    Expose the instruments underlying three more rate helpers
    
    SwapRateHelper, OISRateHelper, the basis-swap helpers and the
    cross-currency helpers already expose the instrument they reprice.
    BMASwapRateHelper and MultipleResetsSwapRateHelper keep their swap
    protected, and OvernightIndexFutureRateHelper keeps its future private,
    so client code cannot inspect the coupons or the averaging period the
    helper depends on, for example to find which past fixings a bootstrapped
    curve reads.
    
    Add swap() to the first two and future() to the latter, which also
    covers SofrFutureRateHelper.
    
    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

 .../yield/multipleresetsswaphelper.hpp             |  2 ++
 .../yield/overnightindexfutureratehelper.hpp       |  1 +
 ql/termstructures/yield/ratehelpers.hpp            |  5 +++++
 test-suite/multipleresetsswap.cpp                  | 19 ++++++++++++++++
 test-suite/piecewiseyieldcurve.cpp                 | 25 ++++++++++++++++++++++
 test-suite/sofrfutures.cpp                         | 17 +++++++++++++++
 6 files changed, 69 insertions(+)

commit 65a571aef543483691f5d2ab14dd0df8a211aade
Merge: c3fa9ec6c 6f1b14736
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 25 Sep 2026 09:57:15 +0200

    Keep Gauss-Hermite and hyperbolic quadrature weights finite at high orders (#2819)

commit c3fa9ec6c86666abd06fbc62cc1cc56bbf93a2d4
Merge: 302d025f2 83cb8932d
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 25 Sep 2026 09:05:22 +0200

    Codacy review (#2782)

commit 83cb8932d0e92e8f4cc4f156321892ac9e5ae70e
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Thu, 24 Sep 2026 20:02:18 +0100

    Clean LatentModel alignment whitespace

 ql/experimental/math/latentmodel.hpp | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

commit e9eed39a1ba29b5c14f3f1672faf3f851fd80e5b
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Thu, 24 Sep 2026 19:58:18 +0100

    Align LatentModel default arguments

 ql/experimental/math/latentmodel.hpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit 5d311d3461365af6ed3c625374171ca1eaed6f7d
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Thu, 24 Sep 2026 19:56:22 +0100

    Finish constructor argument alignment

 ql/experimental/math/latentmodel.hpp               | 17 +++++++++--------
 ql/pricingengines/barrier/fdhestonrebateengine.hpp |  4 ++--
 2 files changed, 11 insertions(+), 10 deletions(-)

commit 16e8c9bb86e19362dff9fabcbef8cada21dd3dca
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Thu, 24 Sep 2026 19:45:16 +0100

    Align multiline constructor arguments

 ql/cashflows/overnightindexedcoupon.hpp            |  8 +--
 ql/experimental/math/latentmodel.hpp               | 12 ++--
 ql/indexes/ibor/audlibor.hpp                       |  2 +-
 ql/indexes/ibor/bibor.cpp                          |  2 +-
 ql/indexes/ibor/chflibor.hpp                       |  4 +-
 ql/indexes/ibor/euribor.hpp                        |  4 +-
 ql/indexes/ibor/jpylibor.hpp                       |  4 +-
 ql/indexes/ibor/mosprime.hpp                       |  2 +-
 ql/indexes/ibor/pribor.hpp                         |  2 +-
 ql/indexes/ibor/seklibor.hpp                       |  2 +-
 ql/indexes/ibor/thbfix.hpp                         |  2 +-
 ql/indexes/ibor/tibor.hpp                          |  2 +-
 ql/indexes/ibor/usdlibor.hpp                       |  4 +-
 ql/indexes/ibor/wibor.hpp                          |  2 +-
 ql/indexes/swap/gbpliborswap.hpp                   |  2 +-
 ql/instruments/perpetualfutures.hpp                |  8 +--
 ql/math/interpolations/loginterpolation.hpp        | 14 ++---
 .../pathwisegreeks/vegabumpcluster.hpp             |  2 +-
 .../shortrate/onefactormodels/coxingersollross.hpp |  8 +--
 ql/models/shortrate/onefactormodels/hullwhite.hpp  |  2 +-
 ql/models/shortrate/onefactormodels/vasicek.hpp    |  4 +-
 ql/pricingengines/vanilla/jumpdiffusionengine.hpp  |  4 +-
 ql/termstructures/globalbootstrap.hpp              |  2 +-
 ql/termstructures/volatility/abcd.hpp              |  6 +-
 .../volatility/equityfx/blackvoltermstructure.hpp  | 24 ++++----
 .../yield/nonlinearfittingmethods.hpp              | 64 +++++++++++-----------
 26 files changed, 96 insertions(+), 96 deletions(-)

commit ea1ca12e7311813abc42353ab88e127b60ee9848
Author: Klaus Spanderen <klaus@spanderen.de>
Date:   Thu, 24 Sep 2026 20:36:23 +0200

    removed redundant code in hestonprocess.cpp
    added tanhsinh Fourier integration

 ql/math/integrals/fourierintegration.cpp           | 13 ++++-
 ql/math/integrals/fourierintegration.hpp           |  3 +-
 .../integrals/gausslaguerrecosinepolynomial.hpp    |  2 +-
 .../integrals/momentbasedgaussianpolynomial.hpp    |  2 +-
 ql/processes/hestonprocess.cpp                     | 66 +---------------------
 test-suite/hestonmodel.cpp                         | 52 ++++++++++++-----
 6 files changed, 56 insertions(+), 82 deletions(-)

commit 4cf3a2ce9484d7e95134fe0e0a4b6d831e4bdcab
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Thu, 24 Sep 2026 11:44:27 -0400

    Allow specifying fixedDayCount in OISRateHelper

 ql/termstructures/yield/oisratehelper.cpp | 13 +++++++++----
 ql/termstructures/yield/oisratehelper.hpp |  7 +++++--
 2 files changed, 14 insertions(+), 6 deletions(-)

commit 302d025f29155e060c74c708d173c49bedcb8ccc
Merge: 54aba84fa c01e07c02
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 24 Sep 2026 13:19:45 +0200

    Floor the QD+ and QD fixed-point American engines at the exercise value (#2813)

commit 54aba84faf59ca8ca3162ae65e71ec112092fffa
Merge: a4f435eb2 6efc1ed09
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 24 Sep 2026 13:18:48 +0200

    Keep the binary barrier price finite at low volatility (#2816)

commit a4f435eb23e67ec38416a8660ab950452c235a75
Merge: a57397f6d 9f041831b
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 24 Sep 2026 13:17:53 +0200

    Keep the digital American at-hit price finite and accurate at low volatility (#2815)

commit a57397f6d962ea2e1a34fbaedb75e53b2780fe7b
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 24 Sep 2026 13:16:23 +0200

    Suggest modernizations to agents

 AGENTS.md | 7 +++++++
 1 file changed, 7 insertions(+)

commit 608aea210bbf9e38f5ec2c507bace2da8bace8b9
Author: Klaus Spanderen <klaus@spanderen.de>
Date:   Thu, 24 Sep 2026 12:20:38 +0200

    fixed visual studio warning

 ql/time/daycounters/yearfractiontodate.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

commit dc8360a33f35a624a12802ee778d827b342f5709
Merge: 20f6557f0 97414971a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 24 Sep 2026 09:40:41 +0200

    Feature/improve perturbative barrier (#2807)

commit 6f1b14736aec9369a61cf13c86b7a9320a51d221
Author: Abhayindia <abhaychaudharydps@gmail.com>
Date:   Thu, 24 Sep 2026 13:06:37 +0900

    Keep Gauss-Hermite and hyperbolic quadrature weights finite at high orders

 ql/math/integrals/gaussianorthogonalpolynomial.cpp |  8 +++++
 ql/math/integrals/gaussianorthogonalpolynomial.hpp |  1 +
 ql/math/integrals/gaussianquadratures.cpp          | 18 ++++++++++
 test-suite/gaussianquadratures.cpp                 | 42 ++++++++++++++++++++++
 4 files changed, 69 insertions(+)

commit 0ab3f766f5d92fdd7350e22e6482ac7f2e21b146
Merge: 3a1830ec2 c0c60a47e
Author: Klaus Spanderen <klaus@spanderen.de>
Date:   Wed, 23 Sep 2026 22:30:59 +0200

    Merge pull request #71 from klausspanderen/update-copyright-list-intraday_year_fraction_to_date
    
    Update copyright list in license

commit c0c60a47ef595cb629b849c17e7df493faa00ef6
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Wed, 23 Sep 2026 20:27:53 +0000

    Update copyright list in license

 LICENSE.TXT | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 3a1830ec2bac2e59ff8d3a65eac08ef08eb07320
Author: Klaus Spanderen <klaus@spanderen.de>
Date:   Wed, 23 Sep 2026 22:27:05 +0200

    avoid unnecessary includes

 ql/time/daycounters/yearfractiontodate.cpp | 3 +++
 test-suite/daycounters.cpp                 | 3 +--
 2 files changed, 4 insertions(+), 2 deletions(-)

commit d404c6df72d404fbac2aecf1c5b75c2aec477482
Author: Klaus Spanderen <klaus@spanderen.de>
Date:   Wed, 23 Sep 2026 22:20:25 +0200

    yearfractiontodate: intraday support for "invertible" day counter

 ql/time/daycounters/yearfractiontodate.cpp | 59 ++++++++++++++++++++++++----
 ql/time/daycounters/yearfractiontodate.hpp |  1 +
 test-suite/basketoption.cpp                |  6 +--
 test-suite/daycounters.cpp                 | 63 +++++++++++++++++++++++++++++-
 4 files changed, 118 insertions(+), 11 deletions(-)

commit b461ec323dd1e82032e4fd03bdbb78ebc542d537
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Wed, 23 Sep 2026 20:03:24 +0100

    Remove added explicit-constructor suppressions

 ql/exercise.hpp                                         | 3 ---
 ql/experimental/credit/loss.hpp                         | 1 -
 ql/experimental/math/levyflightdistribution.hpp         | 1 -
 ql/instruments/bonds/btp.hpp                            | 2 --
 ql/legacy/libormarketmodels/lmconstwrappercorrmodel.hpp | 1 -
 ql/math/abcdmathfunction.hpp                            | 1 -
 ql/math/copulas/alimikhailhaqcopula.hpp                 | 1 -
 ql/math/copulas/farliegumbelmorgensterncopula.hpp       | 1 -
 ql/math/copulas/gumbelcopula.hpp                        | 1 -
 ql/math/copulas/plackettcopula.hpp                      | 1 -
 ql/math/distributions/bivariatenormaldistribution.hpp   | 2 --
 ql/math/distributions/gammadistribution.hpp             | 1 -
 ql/math/distributions/normaldistribution.hpp            | 6 ------
 ql/math/distributions/poissondistribution.hpp           | 3 ---
 ql/math/interpolations/flatextrapolation2d.hpp          | 1 -
 ql/math/matrixutilities/getcovariance.hpp               | 1 -
 ql/math/optimization/leastsquare.hpp                    | 1 -
 ql/math/randomnumbers/randomizedlds.hpp                 | 1 -
 ql/methods/montecarlo/multipath.hpp                     | 1 -
 ql/methods/montecarlo/path.hpp                          | 1 -
 ql/models/marketmodels/correlations/expcorrelations.hpp | 1 -
 ql/models/marketmodels/models/fwdtocotswapadapter.hpp   | 2 --
 ql/models/marketmodels/models/pseudorootfacade.hpp      | 1 -
 ql/termstructures/volatility/smilesectionutils.hpp      | 1 -
 ql/time/calendars/israel.hpp                            | 1 -
 25 files changed, 37 deletions(-)

commit 54c6d1119a6a127fcc090c0697f1551abe2ff7e6
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Wed, 23 Sep 2026 19:58:39 +0100

    Align explicit constructor parameters

 ql/exercise.hpp                         | 2 +-
 ql/experimental/credit/defaultevent.hpp | 4 ++--
 ql/math/abcdmathfunction.hpp            | 9 +++++----
 ql/math/optimization/leastsquare.hpp    | 4 ++--
 ql/math/randomnumbers/randomizedlds.hpp | 4 ++--
 5 files changed, 12 insertions(+), 11 deletions(-)

commit 97414971ae6b48d10f47e88a45ffa8f7aa55498a
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Wed, 23 Sep 2026 19:45:40 +0100

    Run full-resolution barrier test

 test-suite/barrieroption.cpp | 3 ---
 1 file changed, 3 deletions(-)

commit 20f6557f09796b905c0281ed569967da292edd01
Merge: 261d556ab 1548c79a3
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 23 Sep 2026 16:51:55 +0200

    Remove code duplication in Null<T> (#2810)

commit e8f198cd01dd9e6f45965ea51e4cebbee42b2092
Author: mkzung <103102868+mkzung@users.noreply.github.com>
Date:   Tue, 22 Sep 2026 22:41:37 +0100

    Give Bjerksund-Stensland a value where beta is one
    
    For a call with q = 0 and -sigma^2/2 <= r < 0, or a put with r = 0 and
    -sigma^2/2 <= q < 0, beta is exactly 1 and BInfinity = beta/(beta-1)*X is
    infinite, so I = B0 + (BInfinity - B0)*(1 - exp(ht)) is inf times zero and
    the value and every greek came back NaN. As beta tends to 1 that product
    tends to a = (bT + 2 sqrt(v)) B0, and the derivatives of I to the matching
    limits, which are used within 1e-8 of beta = 1. Where r = -sigma^2/2
    exactly, rounding could also take beta's radicand below zero, so it is
    floored there.
    
    Values and greeks at beta = 1 now agree with those for a carry 1e-6 away.

 .../vanilla/bjerksundstenslandengine.cpp           | 34 +++++++---
 test-suite/americanoption.cpp                      | 74 ++++++++++++++++++++++
 2 files changed, 99 insertions(+), 9 deletions(-)

commit 6efc1ed096bae6d18814309a11441f13d5e97cba
Author: mkzung <103102868+mkzung@users.noreply.github.com>
Date:   Tue, 22 Sep 2026 23:16:34 +0100

    Keep the binary barrier price finite at low volatility
    
    In AnalyticBinaryBarrierEngine, (H/S)^(2 mu) overflows at small variance
    while the N(y) it multiplies underflows, and the product came out NaN. It is
    finite, so it is now formed in logs, with the asymptotic tail of log N
    where N underflows.
    
    Over 2688 options with volatility from 10% down to 1e-6, master gives 364
    NaN; with this change none, and every value is within 4e-12 relative of the
    same formula evaluated in 50-digit arithmetic.

 .../barrier/analyticbinarybarrierengine.cpp        | 23 +++++++++
 test-suite/binaryoption.cpp                        | 58 ++++++++++++++++++++++
 2 files changed, 81 insertions(+)

commit 9f041831ba0eb8fd42390b35989e4906c3fb8af4
Author: mkzung <103102868+mkzung@users.noreply.github.com>
Date:   Tue, 22 Sep 2026 23:10:59 +0100

    Keep the digital American at-hit price finite and accurate at low volatility
    
    For an out-of-the-money call, AmericanPayoffAtHit took N(-d) as 1 - N(d),
    which cancels to zero once d is above about 8. That probability multiplies
    (H/S)^(mu+lambda), which is large at low volatility, so the lost term is
    not small: at 1% volatility, r 8%, q 3% and a barrier 5% above spot the
    value came out 5.1103 against 5.4765. N(-d) is now computed directly.
    
    At lower volatility the power overflows while the probability underflows,
    and the value and greeks were NaN. Where the power is not finite, the
    product is formed in logs, with the asymptotic tail of log N where N
    underflows.
    
    Over 1152 options with volatility from 10% down to 1e-6, values agree with
    the closed form evaluated in 50-digit arithmetic to 2.5e-7 relative, where
    master had 192 NaN and 10 values off by more than 1e-6.

 ql/pricingengines/americanpayoffathit.cpp | 41 +++++++++++++--
 test-suite/digitaloption.cpp              | 87 +++++++++++++++++++++++++++++++
 2 files changed, 125 insertions(+), 3 deletions(-)

commit c01e07c0230563cde46f641c2c13ad4f20dcd718
Author: mkzung <103102868+mkzung@users.noreply.github.com>
Date:   Tue, 22 Sep 2026 22:13:43 +0100

    Floor the QD+ and QD fixed-point American engines at the exercise value
    
    Both engines price through QdPutCallParityEngine, which adds an approximated
    early-exercise premium to the European value. Deep in the money that sum can
    fall below intrinsic: over a grid of 9800 options, QD+ lands below it on 80
    points, by up to 0.0195 on a ten-year call struck at 60, and the fixed-point
    engine on 181, by up to 0.00015. The holder can always exercise, so the value
    is now floored at the payoff.

 ql/pricingengines/vanilla/qdplusamericanengine.cpp |  3 ++
 test-suite/americanoption.cpp                      | 53 ++++++++++++++++++++++
 2 files changed, 56 insertions(+)

commit 261d556ab9eba9a968e2561212b893f6b1ab5c73
Merge: 12f80f371 f5b6d2123
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 23 Sep 2026 14:45:03 +0200

    Floor the Ju approximation at the exercise value (#2812)

commit 12f80f37181a4dc281865cac10bdc4ba087a49a5
Merge: 7cb155d6e f2071d436
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 23 Sep 2026 14:44:35 +0200

    Report binomial greeks as not provided when a tree collapses to one price (#2811)

commit 7cb155d6e4d1300b97a5221d00cfe40242b5e7c9
Merge: a9d0d36e1 dbee28eb1
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 23 Sep 2026 10:39:45 +0200

    Feature/improve distribution coverage (#2805)

commit a9d0d36e1188a48f6e047fb454b8ff171818cf32
Merge: 04e2e7d2a 21fb9e8fa
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 23 Sep 2026 10:37:15 +0200

    Feature/improve calendar coverage (#2806)

commit 21fb9e8fab099cc255aba774da3b2b5b1ee379a0
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 19 Sep 2026 22:41:31 +0100

    Clean up calendar documentation

 ql/time/calendars/thailand.cpp | 2 +-
 ql/time/calendars/turkey.cpp   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

commit 2233ca9d938e65e6f49f4dac0c47fdcb41bf412b
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 19 Sep 2026 22:37:01 +0100

    Expand calendar coverage tests

 test-suite/calendars.cpp | 221 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 221 insertions(+)

commit f5b6d2123f05eeb07b956d3fa9fcd3a24a4f3952
Author: mkzung <103102868+mkzung@users.noreply.github.com>
Date:   Tue, 22 Sep 2026 21:14:26 +0100

    Floor the Ju approximation at the exercise value
    
    Deep in the money at ordinary positive rates, the Ju-Zhong correction term
    can put the price below what immediate exercise pays. Over a grid of 6953
    priced points, 9 fall below intrinsic, the widest by 0.1425 on a put struck
    at 140 with spot 100, r 3%, q 4%, vol 3% and ten years to expiry; Barone-
    Adesi-Whaley stays above intrinsic on the same grid. The engine now takes the
    exercise value there, with the delta and gamma of the exercise region, as it
    already does above the critical price.

 ql/pricingengines/vanilla/juquadraticengine.cpp |  8 ++++
 test-suite/americanoption.cpp                   | 52 +++++++++++++++++++++++++
 2 files changed, 60 insertions(+)

commit 3340b2b91721a303e18514840be3823ab750742b
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Tue, 22 Sep 2026 21:03:08 +0100

    Use double for normal distribution constant

 ql/math/distributions/normaldistribution.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 04cd237ad064203ad0aaa33e5fc03e757dad5692
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Tue, 22 Sep 2026 20:51:17 +0100

    Optimize perturbative barrier calculations

 .../perturbativebarrieroptionengine.cpp            | 34 +++++++++++++---------
 1 file changed, 20 insertions(+), 14 deletions(-)

commit 44b9abe9eb3eff0cbb16b989101665a359539106
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Tue, 22 Sep 2026 20:45:07 +0100

    Use double for perturbative barrier constants

 .../barrieroption/perturbativebarrieroptionengine.cpp      | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

commit f2071d4367793ee0d3f15f0dff689196eeb1d7fa
Author: mkzung <103102868+mkzung@users.noreply.github.com>
Date:   Sat, 15 Aug 2026 23:42:00 +0500

    Report binomial greeks as absent when the tree collapses to one price
    
    Leisen-Reimer deep in the money at low volatility gives a valid up probability
    but up and down factors that round to the same double, so every node of a step
    sits at one price and the greeks divide by zero. The rolled back value is
    unaffected. Set delta and gamma to Null<Real>() instead, which is what
    AnalyticEuropeanEngine already does for a theta it cannot compute, and theta
    with them, since blackScholesTheta would turn a null delta into a finite number.
    OneAssetOption then reports "delta not provided" rather than returning nan.

 ql/pricingengines/vanilla/binomialengine.hpp | 28 ++++++++++++-------
 test-suite/europeanoption.cpp                | 40 ++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+), 9 deletions(-)

commit 1548c79a38a8ab1285a30627b53331865b3d9281
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Tue, 22 Sep 2026 15:04:29 -0400

    Remove code duplication in Null<T>

 ql/utilities/null.hpp | 44 +++++++++++++++++---------------------------
 1 file changed, 17 insertions(+), 27 deletions(-)

commit 04e2e7d2adabc04c673f9b429a85f24cc43e05d0
Merge: d7498465f 4602d8c80
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 22 Sep 2026 18:17:20 +0200

    Narrow the C++17 deprecation silencing to the macros boost needs (#2809)

commit d7498465ffab6dbef1ee20ddb803f9db26b3932c
Merge: cb8894faa 460090d45
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 22 Sep 2026 11:05:42 +0200

    Fix NaN in GaussLaguerreIntegration for large orders (#2779)

commit 9d2830e7a63ce3678980912466dd8b7736e2a3c4
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sun, 20 Sep 2026 20:54:42 +0100

    Narrow second barrier probability scope

 ql/experimental/barrieroption/perturbativebarrieroptionengine.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

commit 512241666b8c9ea74abd15b49e24bd710ffa506c
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sun, 20 Sep 2026 20:52:45 +0100

    Narrow barrier probability variable scope

 ql/experimental/barrieroption/perturbativebarrieroptionengine.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit 0eeeebb54c65f670f4b32be350ff06c7dcc39625
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sun, 20 Sep 2026 20:48:27 +0100

    Address Codacy warnings

 .../barrieroption/perturbativebarrieroptionengine.cpp          | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

commit cfe3d7e551740e8d9e316352069dc5883d43409b
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sun, 20 Sep 2026 20:45:44 +0100

    Fix sanitizer build warnings

 .../barrieroption/perturbativebarrieroptionengine.cpp            | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

commit d7144a57536033bd20d76ae6db72c0c74c6915cf
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sun, 20 Sep 2026 19:29:18 +0100

    Guard slow perturbative barrier test

 test-suite/barrieroption.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

commit 73751e34b60ef8a1a175d2908fb9bb57bbfe0fdf
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sun, 20 Sep 2026 19:17:45 +0100

    Document distribution helper review

 .../barrieroption/perturbativebarrieroptionengine.cpp   | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

commit b01a02d41b8638a80bf44c7d483a22aa12843b6f
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sun, 20 Sep 2026 17:56:26 +0100

    Split perturbative barrier tests

 test-suite/barrieroption.cpp | 83 +++++++++++++-------------------------------
 1 file changed, 25 insertions(+), 58 deletions(-)

commit 09fd29a58d9bf4b6b8ef0f7b62ff26cf4061d239
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sun, 20 Sep 2026 17:49:03 +0100

    Add fast perturbative order-2 smoke test

 test-suite/barrieroption.cpp | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

commit 02d0855b0e23004e4ef7d0e0574db3a39621133f
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sun, 20 Sep 2026 17:48:59 +0100

    Make perturbative integration resolution configurable

 .../barrieroption/perturbativebarrieroptionengine.cpp    | 16 +++++++++-------
 .../barrieroption/perturbativebarrieroptionengine.hpp    |  6 +++++-
 2 files changed, 14 insertions(+), 8 deletions(-)

commit 174d0636113e5ae522250131034f39bdd74972b5
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sun, 20 Sep 2026 17:35:33 +0100

    Optimize perturbative barrier calculations

 .../perturbativebarrieroptionengine.cpp            | 75 ++++++++++++----------
 1 file changed, 41 insertions(+), 34 deletions(-)

commit fd40e8b2f684eecdb0d7d23f49db40abde0d22c1
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sun, 20 Sep 2026 17:23:54 +0100

    Optimize perturbative barrier engine

 .../perturbativebarrieroptionengine.cpp            | 550 ++++++++++-----------
 test-suite/barrieroption.cpp                       |   2 +-
 2 files changed, 258 insertions(+), 294 deletions(-)

commit cb8894faa0eba62416e6549c80dfc68f3ace871a
Merge: a972b7478 94820b373
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 21 Sep 2026 11:00:05 +0200

    Fix convexity term in CashFlows::basisPointValue (#2769)

commit a972b7478c54b6bfe631fb5054c3c9929338e75a
Merge: 1fefeb12a e342e7286
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 21 Sep 2026 08:41:24 +0200

    Replace CMA-ES Eigendecomposition With a Cholesky Factorization (#2756)

commit 1fefeb12a5c83b93dc816d4272e0f9f22fdaccdf
Merge: 2ed185d34 15d946462
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 21 Sep 2026 08:40:11 +0200

    Move the C26812 suppression into the analysis ruleset (#2804)

commit 94820b3730300942b4dd5d971a835173a845de71
Author: uppalbh <uppalb2@gmail.com>
Date:   Sun, 20 Sep 2026 21:36:57 -0400

    Fix BPV tolerance variable name

 test-suite/bonds.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit dbee28eb18255b8abc1780607d0e308ac59c62fc
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 19 Sep 2026 22:52:14 +0100

    Make Student boundary test portable

 test-suite/distributions.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

commit b9136c15c1e65b994b8a2d644374e2f62fc74c2e
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 19 Sep 2026 21:13:29 +0100

    Clean up distribution header includes

 ql/math/distributions/bivariatenormaldistribution.hpp   | 2 +-
 ql/math/distributions/bivariatestudenttdistribution.hpp | 1 -
 ql/math/distributions/chisquaredistribution.hpp         | 1 -
 ql/math/distributions/gammadistribution.hpp             | 1 -
 ql/math/distributions/studenttdistribution.hpp          | 1 -
 5 files changed, 1 insertion(+), 5 deletions(-)

commit 304f7481539f8d12f04716056dee5f4a9da47efc
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 19 Sep 2026 21:08:39 +0100

    Add chi-square distribution coverage tests

 test-suite/distributions.cpp | 12 ++++++++++++
 1 file changed, 12 insertions(+)

commit 46e8e691a0980000c77ebadf2e8584b72bf851de
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 19 Sep 2026 18:39:46 +0100

    Add Student distribution coverage tests

 test-suite/distributions.cpp | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

commit 4b9bcd349920e5c8917b334e1ee170df974a5161
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 19 Sep 2026 18:33:45 +0100

    Add cumulative gamma distribution tests

 test-suite/functions.cpp | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

commit 245e530f0d0cfc29648ce0d4bb0dece03218e81e
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 19 Sep 2026 18:28:09 +0100

    Add binomial distribution coverage tests

 test-suite/distributions.cpp | 52 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

commit 02e8826163329c418fbfc232db5ac52080dc0e4f
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 19 Sep 2026 17:31:09 +0100

    Fix Poisson inverse CDF at zero

 ql/math/distributions/poissondistribution.hpp |  2 ++
 test-suite/distributions.cpp                  | 37 +++++++++++++++++++++++++++
 2 files changed, 39 insertions(+)

commit 26f6c8b27d564f3e750b5ca7680dc2320984dfce
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 19 Sep 2026 16:34:18 +0100

    Expand bivariate Student distribution tests

 test-suite/distributions.cpp | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

commit c715c2f15cf135f6e1d9c043d078042e11e05be7
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 19 Sep 2026 15:39:24 +0100

    Validate bivariate Student distribution parameters

 ql/math/distributions/bivariatestudenttdistribution.cpp |  6 +++++-
 test-suite/distributions.cpp                            | 12 ++++++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

commit 2ed185d34e7547098d29f675243cc29e8bc940c1
Merge: 24fe67ee0 8378bafac
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 18 Sep 2026 16:59:44 +0200

    Compile the sources as UTF-8 instead of suppressing C4819 (#2803)

commit 24fe67ee07927ff320e5cb1c318429c74e5d2578
Merge: b8744affb 428f70f5a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 18 Sep 2026 16:05:02 +0200

    Pin ccache-action to v1.2.24 to stop the Node 20 deprecation warning (#2802)

commit 428f70f5ae37b70808dabe915d2dccb1445d6204
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Fri, 18 Sep 2026 14:53:45 +0200

    Pin ccache-action to v1.2.24 to stop the Node 20 deprecation warning
    
    The floating v1.2 tag still points at a commit whose action.yml declares
    `runs.using: "node20"`, so every job using it ends with
    
      ##[warning]Node.js 20 is deprecated. The following actions target
      Node.js 20 but are being forced to run on Node.js 24:
      hendrikmuhs/ccache-action@v1.2
    
    v1.2.24 declares node24. Pinning the patch level also restores Dependabot
    coverage, which never offered this bump because v1.2 and v1.2.24 share the
    same major.minor.
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 .github/workflows/cmake-latest-runners.yml |  2 +-
 .github/workflows/cmake.yml                | 12 ++++++------
 .github/workflows/headers.yml              |  2 +-
 .github/workflows/linux.yml                |  2 +-
 .github/workflows/macos.yml                |  2 +-
 .github/workflows/test-times.yml           |  2 +-
 6 files changed, 11 insertions(+), 11 deletions(-)

commit b8744affb015a5286136e5df2042d75a2f4f8d86
Merge: 72810e63d 978056222
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 17 Sep 2026 18:29:57 +0200

    Fix the unsafe CRT call sites and stop suppressing C4996 (#2801)

commit 97805622266f60a252103a126398f6954a3e059d
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Thu, 17 Sep 2026 17:01:53 +0200

    Retry across midnight instead of relaxing the todaysDate check
    
    The +/-1 day slack made the cross-check against
    boost::gregorian::day_clock nearly vacuous: it would also pass if
    Date::todaysDate() were genuinely off by a day. Re-read both clocks
    once on mismatch and then compare strictly, as suggested in review.
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 test-suite/dates.cpp | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

commit 8827f2dd1113bb4282673e43e4c075c6d65257e6
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Wed, 16 Sep 2026 19:32:47 +0200

    Also silence the deprecated std::allocator members
    
    Narrowing the C++17 deprecation silencing uncovered a second thing boost
    needs it for: older boost::unordered reads std::allocator<T>::is_always_equal,
    deprecated in C++17.  The Windows build against boost 1.77 reported it from
    test-suite/timeseries.cpp, which instantiates TimeSeries with a
    boost::unordered_map to exercise the custom-container support.
    
    Name that deprecation as well.  Both suppressions stay targeted, so a
    deprecated construct introduced in QuantLib itself would still be reported.
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 .ci/VS2019.alt.props                                  |  2 +-
 .ci/VS2022.alt.props                                  |  2 +-
 .ci/VS2026.alt.props                                  |  2 +-
 Examples/AsianOption/AsianOption.vcxproj              | 16 ++++++++--------
 Examples/BasketLosses/BasketLosses.vcxproj            | 16 ++++++++--------
 Examples/BermudanSwaption/BermudanSwaption.vcxproj    | 16 ++++++++--------
 Examples/Bonds/Bonds.vcxproj                          | 16 ++++++++--------
 Examples/CDS/CDS.vcxproj                              | 16 ++++++++--------
 Examples/CVAIRS/CVAIRS.vcxproj                        | 16 ++++++++--------
 Examples/CallableBonds/CallableBonds.vcxproj          | 16 ++++++++--------
 Examples/ConvertibleBonds/ConvertibleBonds.vcxproj    | 16 ++++++++--------
 Examples/DiscreteHedging/DiscreteHedging.vcxproj      | 16 ++++++++--------
 Examples/EquityOption/EquityOption.vcxproj            | 16 ++++++++--------
 Examples/FRA/FRA.vcxproj                              | 16 ++++++++--------
 Examples/FittedBondCurve/FittedBondCurve.vcxproj      | 16 ++++++++--------
 Examples/Gaussian1dModels/Gaussian1dModels.vcxproj    | 16 ++++++++--------
 Examples/GlobalOptimizer/GlobalOptimizer.vcxproj      | 16 ++++++++--------
 Examples/LatentModel/LatentModel.vcxproj              | 16 ++++++++--------
 Examples/MarketModels/MarketModels.vcxproj            | 16 ++++++++--------
 .../MulticurveBootstrapping.vcxproj                   | 16 ++++++++--------
 Examples/MultidimIntegral/MultidimIntegral.vcxproj    | 16 ++++++++--------
 Examples/Replication/Replication.vcxproj              | 16 ++++++++--------
 Examples/Repo/Repo.vcxproj                            | 16 ++++++++--------
 QuantLib.vcxproj                                      | 16 ++++++++--------
 cmake/Platform.cmake                                  | 19 ++++++++++++-------
 test-suite/testsuite.vcxproj                          | 16 ++++++++--------
 26 files changed, 191 insertions(+), 186 deletions(-)

commit 5f138f37fb4f61b00cf9e80a41df12d037ed8cb5
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Wed, 16 Sep 2026 18:59:42 +0200

    Remove the obsolete C4819 pragmas from the currency headers
    
    These six headers each wrapped their whole body in a C4819 suppression.  They
    were inert in the cmake build to begin with -- QL_PATCH_MSVC is defined only
    in ql/config.msvc.hpp, which a cmake build never includes -- and four of the
    six files contain no non-ASCII characters at all.  With /utf-8 now set in
    both build systems the remaining two are redundant as well.
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 ql/currencies/africa.hpp  | 9 ---------
 ql/currencies/america.hpp | 9 ---------
 ql/currencies/asia.hpp    | 9 ---------
 ql/currencies/crypto.hpp  | 9 ---------
 ql/currencies/europe.hpp  | 9 ---------
 ql/currencies/oceania.hpp | 9 ---------
 6 files changed, 54 deletions(-)

commit f523a21d62e87850f8a06a9836d74b827dc5002c
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Wed, 16 Sep 2026 19:00:18 +0200

    Move the C26812 suppression into the analysis ruleset
    
    C26812 ("Prefer 'enum class' over 'enum'") is a code-analysis diagnostic: cl
    never emits it without /analyze, and the only build that runs /analyze is the
    scheduled Microsoft C++ Code Analysis workflow, which already passes
    .msvc-analysis.ruleset.  Suppressing it through the ordinary compile options
    and through an installed public header meant every MSVC build -- and every
    downstream translation unit including <ql/quantlib.hpp> -- carried a
    suppression for a diagnostic it would never see.
    
    Put it where the other two suppressed analysis rules already live.  The rule
    itself stays suppressed: the 167 unscoped enums are public API, and several
    of them rely on the implicit conversion to int, so changing them is not an
    option.
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 .msvc-analysis.ruleset | 1 +
 cmake/Platform.cmake   | 5 +----
 ql/config.msvc.hpp     | 5 -----
 3 files changed, 2 insertions(+), 9 deletions(-)

commit 642637e667a03a4580c02c1e627a77a2b9f04995
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Wed, 16 Sep 2026 19:00:58 +0200

    Narrow the C++17 deprecation silencing to std::iterator
    
    _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS was introduced for one concrete
    reason -- older boost::ublas derives its iterators from the deprecated
    std::iterator -- and was widened to the blanket form only for parity with the
    vcxproj files.  The blanket version also hides any deprecated construct we
    introduce ourselves, of which there are currently none.
    
    Go back to the targeted macro in both build systems.  It stays unconditional:
    the supported boost versions start at 1.58, and the Visual Studio matrix
    still builds against 1.77, where ublas has not yet been fixed.
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 .ci/VS2019.alt.props                                     |  2 +-
 .ci/VS2022.alt.props                                     |  2 +-
 .ci/VS2026.alt.props                                     |  2 +-
 Examples/AsianOption/AsianOption.vcxproj                 | 16 ++++++++--------
 Examples/BasketLosses/BasketLosses.vcxproj               | 16 ++++++++--------
 Examples/BermudanSwaption/BermudanSwaption.vcxproj       | 16 ++++++++--------
 Examples/Bonds/Bonds.vcxproj                             | 16 ++++++++--------
 Examples/CDS/CDS.vcxproj                                 | 16 ++++++++--------
 Examples/CVAIRS/CVAIRS.vcxproj                           | 16 ++++++++--------
 Examples/CallableBonds/CallableBonds.vcxproj             | 16 ++++++++--------
 Examples/ConvertibleBonds/ConvertibleBonds.vcxproj       | 16 ++++++++--------
 Examples/DiscreteHedging/DiscreteHedging.vcxproj         | 16 ++++++++--------
 Examples/EquityOption/EquityOption.vcxproj               | 16 ++++++++--------
 Examples/FRA/FRA.vcxproj                                 | 16 ++++++++--------
 Examples/FittedBondCurve/FittedBondCurve.vcxproj         | 16 ++++++++--------
 Examples/Gaussian1dModels/Gaussian1dModels.vcxproj       | 16 ++++++++--------
 Examples/GlobalOptimizer/GlobalOptimizer.vcxproj         | 16 ++++++++--------
 Examples/LatentModel/LatentModel.vcxproj                 | 16 ++++++++--------
 Examples/MarketModels/MarketModels.vcxproj               | 16 ++++++++--------
 .../MulticurveBootstrapping.vcxproj                      | 16 ++++++++--------
 Examples/MultidimIntegral/MultidimIntegral.vcxproj       | 16 ++++++++--------
 Examples/Replication/Replication.vcxproj                 | 16 ++++++++--------
 Examples/Repo/Repo.vcxproj                               | 16 ++++++++--------
 QuantLib.vcxproj                                         | 16 ++++++++--------
 cmake/Platform.cmake                                     |  9 +++++++--
 test-suite/testsuite.vcxproj                             | 16 ++++++++--------
 26 files changed, 186 insertions(+), 181 deletions(-)

commit 1582b9b007a73a6dcfcf10b6a321e4ff20905d7d
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Wed, 16 Sep 2026 18:58:21 +0200

    Compile the sources as UTF-8 instead of suppressing C4819
    
    The sources are UTF-8: author names in the licence headers, mathematical
    symbols in the documentation.  42 files use characters outside Latin-1, so
    C4819 is reachable even on a Western code page, and /wd4819 was hiding it
    rather than resolving it.
    
    Tell the compiler the source encoding instead -- /utf-8 in the cmake build,
    and the same option in QuantLib.props, which all 22 Visual Studio projects
    already import, so it takes one entry rather than one per configuration.
    
    The preceding commit removed the last non-ASCII narrow string literals, so
    setting the execution character set alongside the source one does not change
    the generated code.
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 QuantLib.props       |  7 +++++++
 cmake/Platform.cmake | 11 ++++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

commit f90b482816b0e3e6dd0bce058701c3612ab3f2e1
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Wed, 16 Sep 2026 18:57:43 +0200

    Write the remaining non-ASCII string literals in ASCII
    
    Three messages held non-ASCII characters.  MSVC decodes the UTF-8 source
    bytes as the active ANSI code page, so "Pade" already reached Error::what()
    mangled; the accent was a misspelling in any case (the name is Pade, with an
    acute accent, not a grave one).
    
    With these gone the library has no non-ASCII narrow string literals at all,
    which makes the execution-charset half of the /utf-8 flag added next a
    provable no-op.
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 ql/pricingengines/vanilla/analyticroughhestonengine.cpp | 4 ++--
 test-suite/piecewiseblackvariancesurface.cpp            | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

commit 72810e63dfc158cfd5d5a8220052db0d950538ae
Merge: 60b41ace7 dabb7b914
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 17 Sep 2026 12:49:35 +0200

    Rework check in fitted bond curve tests (#2778)

commit 75df20a7f12a4230ae91ec4c66be9a1535f0c4dc
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Wed, 16 Sep 2026 18:57:07 +0200

    Stop silencing the CRT deprecation warnings
    
    With Date::todaysDate() and the parallel test runner fixed, nothing in the
    tree calls a CRT function that MSVC considers unsafe, so the blanket
    suppression is no longer needed: drop _CRT_SECURE_NO_WARNINGS from the cmake
    build and _CRT_SECURE_NO_DEPRECATE from the Visual Studio projects.
    
    _SCL_SECURE_NO_DEPRECATE is a different warning family (unchecked iterators)
    and is left alone.
    
    Both CI paths compile with warnings as errors, so a missed call site fails
    the build rather than passing quietly.
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 Examples/AsianOption/AsianOption.vcxproj                 | 16 ++++++++--------
 Examples/BasketLosses/BasketLosses.vcxproj               | 16 ++++++++--------
 Examples/BermudanSwaption/BermudanSwaption.vcxproj       | 16 ++++++++--------
 Examples/Bonds/Bonds.vcxproj                             | 16 ++++++++--------
 Examples/CDS/CDS.vcxproj                                 | 16 ++++++++--------
 Examples/CVAIRS/CVAIRS.vcxproj                           | 16 ++++++++--------
 Examples/CallableBonds/CallableBonds.vcxproj             | 16 ++++++++--------
 Examples/ConvertibleBonds/ConvertibleBonds.vcxproj       | 16 ++++++++--------
 Examples/DiscreteHedging/DiscreteHedging.vcxproj         | 16 ++++++++--------
 Examples/EquityOption/EquityOption.vcxproj               | 16 ++++++++--------
 Examples/FRA/FRA.vcxproj                                 | 16 ++++++++--------
 Examples/FittedBondCurve/FittedBondCurve.vcxproj         | 16 ++++++++--------
 Examples/Gaussian1dModels/Gaussian1dModels.vcxproj       | 16 ++++++++--------
 Examples/GlobalOptimizer/GlobalOptimizer.vcxproj         | 16 ++++++++--------
 Examples/LatentModel/LatentModel.vcxproj                 | 16 ++++++++--------
 Examples/MarketModels/MarketModels.vcxproj               | 16 ++++++++--------
 .../MulticurveBootstrapping.vcxproj                      | 16 ++++++++--------
 Examples/MultidimIntegral/MultidimIntegral.vcxproj       | 16 ++++++++--------
 Examples/Replication/Replication.vcxproj                 | 16 ++++++++--------
 Examples/Repo/Repo.vcxproj                               | 16 ++++++++--------
 QuantLib.vcxproj                                         | 16 ++++++++--------
 cmake/Platform.cmake                                     |  3 ---
 test-suite/testsuite.vcxproj                             | 16 ++++++++--------
 23 files changed, 176 insertions(+), 179 deletions(-)

commit 7df1ec75c927d6c3fcb4edc33b3c36e06ac977f4
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Wed, 16 Sep 2026 18:56:58 +0200

    Avoid std::strncpy in the parallel unit test runner
    
    std::strncpy is the second and last thing in the tree that makes MSVC emit
    C4996.  std::string::copy does the same job, needs no <cstring>, and is not
    deprecated anywhere.
    
    While here, zero-initialize RuntimeLog: the whole struct is sent over an
    interprocess message queue, so the unused tail of testCaseName was shipping
    stack garbage.  The explicit terminator is still needed because the struct is
    reused across iterations.
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 test-suite/paralleltestrunner.hpp | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

commit 983cfd244b5ad68fae2fa7b4a6de2679b7947a24
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Wed, 16 Sep 2026 18:52:34 +0200

    Use a reentrant localtime in Date::todaysDate()
    
    std::localtime returns a pointer into a shared static buffer, so it is
    neither reentrant nor safe to call from more than one thread, and MSVC flags
    it as deprecated (C4996) -- which is the only reason the cmake build defines
    _CRT_SECURE_NO_WARNINGS.
    
    Route the conversion through a helper that uses localtime_s on MSVC and
    localtime_r where Boost reports the reentrant POSIX functions to be
    available, and keeps std::localtime, with the warning locally suppressed,
    for the remaining platforms (MinGW among them).  No new dependency: the
    detection macro comes from boost/date_time, already included here.
    
    This also removes a latent null-pointer dereference: the return value of
    std::localtime was used unchecked.  Both failure paths now return a null
    Date, as the failing-std::time path already did.
    
    Add a test case for Date::todaysDate(), which had none.
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 ql/time/date.cpp     | 38 ++++++++++++++++++++++++++++++++++++--
 test-suite/dates.cpp | 20 ++++++++++++++++++++
 2 files changed, 56 insertions(+), 2 deletions(-)

commit e189b5b5c13a6196690a4bbc549014322d67b556
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Wed, 16 Sep 2026 18:47:50 +0200

    Document why C4267 is suppressed in two places
    
    /wd4267 in cmake/Platform.cmake and the #pragma in ql/config.msvc.hpp look
    like a duplication, but they cover disjoint build systems: a cmake build sets
    QL_HAVE_CONFIG_H and therefore includes the generated ql/config.hpp, never
    config.msvc.hpp.  Say so in both files, and note that the missing push/pop
    around the pragma is deliberate.
    
    No functional change.
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 cmake/Platform.cmake | 9 ++++++++-
 ql/config.msvc.hpp   | 9 +++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

commit 60b41ace76cbf5d5309a6d819030da13d644c4cd
Merge: 8fe6cfc7e f05b0587e
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 17 Sep 2026 09:07:50 +0200

    Fix modifiedBesselFunction_k at integer order and large argument (#2800)

commit f05b0587e161881d11cb2800e7e5a41aed4f8c2f
Author: Abhayindia <abhaychaudharydps@gmail.com>
Date:   Thu, 17 Sep 2026 08:11:58 +0800

    Fix modifiedBesselFunction_k at integer order and large argument

 ql/math/modifiedbessel.cpp | 109 +++++++++++++++++++++++++++++++++++++++++++++
 test-suite/functions.cpp   |  71 ++++++++++++++++++++++++++---
 2 files changed, 173 insertions(+), 7 deletions(-)

commit 34324c84fcbac2b07a04dffd25f7db1714ef3c22
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Wed, 16 Sep 2026 20:47:47 +0100

    Review implicit constructor annotations

 ql/exercise.hpp                                    | 10 ++++++---
 ql/experimental/credit/loss.hpp                    |  4 +++-
 ql/experimental/math/levyflightdistribution.hpp    |  5 +++--
 ql/instruments/bonds/btp.hpp                       |  8 ++++++--
 .../libormarketmodels/lmconstwrappercorrmodel.hpp  |  4 +++-
 ql/math/abcdmathfunction.hpp                       |  4 +++-
 ql/math/copulas/alimikhailhaqcopula.hpp            |  4 +++-
 ql/math/copulas/farliegumbelmorgensterncopula.hpp  |  4 +++-
 ql/math/copulas/gumbelcopula.hpp                   |  4 +++-
 ql/math/copulas/plackettcopula.hpp                 |  4 +++-
 .../distributions/bivariatenormaldistribution.hpp  |  8 ++++++--
 ql/math/distributions/gammadistribution.hpp        |  4 +++-
 ql/math/distributions/normaldistribution.hpp       | 24 ++++++++++++++++------
 ql/math/distributions/poissondistribution.hpp      | 12 ++++++++---
 ql/math/interpolations/flatextrapolation2d.hpp     |  4 +++-
 ql/math/matrixutilities/getcovariance.hpp          |  4 +++-
 ql/math/optimization/leastsquare.hpp               |  4 +++-
 ql/math/randomnumbers/randomizedlds.hpp            |  4 +++-
 ql/methods/montecarlo/multipath.hpp                |  3 ++-
 ql/methods/montecarlo/path.hpp                     |  3 ++-
 .../marketmodels/correlations/expcorrelations.hpp  |  4 +++-
 .../marketmodels/models/fwdtocotswapadapter.hpp    |  7 +++++--
 ql/models/marketmodels/models/pseudorootfacade.hpp |  4 +++-
 ql/pricingengines/vanilla/mcdigitalengine.hpp      |  2 +-
 .../credit/interpolatedhazardratecurve.hpp         |  4 ++--
 ql/termstructures/volatility/smilesectionutils.hpp |  4 +++-
 ql/time/calendars/israel.hpp                       |  3 ++-
 27 files changed, 108 insertions(+), 41 deletions(-)

commit 8fe6cfc7ec7b7a7fa767fa6ad16f0888c796f101
Merge: ef7143566 b1eca5dca
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 16 Sep 2026 13:53:47 +0200

    Funding helper (#2746)

commit b1eca5dca39bb79865c4f89395d1491ed99967b8
Author: kp9991 <kp9991@gmail.com>
Date:   Wed, 16 Sep 2026 20:14:22 +1000

    Removing SavedSettings

 test-suite/overnightindexedfundingratehelper.cpp | 3 ---
 1 file changed, 3 deletions(-)

commit ef7143566b584c45f62c16fde5318d33a863cc9b
Merge: 858d12aa8 2f7c4e331
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 16 Sep 2026 12:00:53 +0200

    Saturate ErrorFunction to exactly 1 for |x| >= 6 (#2799)

commit 858d12aa8f0727dcc3a7e0b9f7a8bcdb031505ed
Merge: 3d2144280 2ffade2fc
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 16 Sep 2026 10:26:34 +0200

    Add Philippines calendar (#2789)

commit 3d21442800d0ab8675de3550afe2e4eddbd0c869
Merge: 87cdeef7f ecef10a40
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 16 Sep 2026 10:15:58 +0200

    Fix `SmileSectionRNDCalculator` tail quantiles for smiles with fat wings (#2772)

commit 87cdeef7fd029fc13c801ebaa84d36b553c42651
Merge: e34c461de e94f4bbcf
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 16 Sep 2026 09:50:06 +0200

    Improve test coverage for normal distribution + minor edge-case fix (#2781)

commit 2f7c4e3315cd4b5098e62ce63ec7e1009d6a37a8
Author: sizzywizzy <swati.kumari7205@gmail.com>
Date:   Tue, 15 Sep 2026 19:41:35 +0000

    Saturate ErrorFunction to exactly 1 for |x| >= 6
    
    The fdlibm port defined tiny = QL_EPSILON instead of 1e-300, so erf(x) returned 1 - QL_EPSILON for |x| >= 6 while erf(5.99) was already 1. CumulativeNormalDistribution therefore decreased at z = 6*sqrt(2) and stayed one ulp below 1 beyond it, and deep in-the-money Black and Bachelier prices came out one ulp below their intrinsic value (see #2798).

 ql/math/errorfunction.cpp    |  4 +++-
 test-suite/blackformula.cpp  | 41 ++++++++++++++++++++++++++++++++++++
 test-suite/distributions.cpp | 49 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 93 insertions(+), 1 deletion(-)

commit e34c461de96e1f3afe55b8d94f2e0d6fc418a399
Merge: 790a3b6bc 7e3bc70c3
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 15 Sep 2026 17:20:49 +0200

    Accept Bachelier prices that round to intrinsic in the implied-vol inversion (#2792)

commit 2ffade2fca2b806fff83e07c340bc529bc9b955a
Author: LZ1153 <lawrenzlaw40@gmail.com>
Date:   Tue, 15 Sep 2026 18:28:39 +0800

    Fixed autotools unity builds

 ql/time/calendars/philippines.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

commit 790a3b6bce08313da951d1a712042077fb9873e5
Merge: 6ff9aefd0 9bfad368a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 15 Sep 2026 12:20:57 +0200

    Modernize python tools (#2784)

commit 6ff9aefd0879cf81924925889328697542701203
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Tue, 15 Sep 2026 08:25:48 +0000

    Update copyright list in license

 LICENSE.TXT | 1 +
 1 file changed, 1 insertion(+)

commit 7ea2f719485fdc46f20dbe0e6d9a933274fadbfe
Merge: c240a6092 6a6e79188
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 15 Sep 2026 10:25:14 +0200

    Fix out-of-bounds accesses in ExtendedBlackVarianceSurface::setVariances (#2793)

commit c240a609284b59bb19653d6b9220ff507af93035
Merge: 73c6e18ae a6b169ebf
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 15 Sep 2026 10:16:16 +0200

    fix: initialize nominal in fixingDate-based MakeSwaption constructor (#2790)

commit 7e3bc70c353abbfb7a140412cc1d6202751d7b67
Author: Abhayindia <abhaychaudharydps@gmail.com>
Date:   Tue, 15 Sep 2026 00:16:03 +0900

    Initialize impliedVol in the new test for -Werror=maybe-uninitialized

 test-suite/blackformula.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 4fd711d01d4ecc6c789ed80143d116aad2571606
Author: Abhayindia <abhaychaudharydps@gmail.com>
Date:   Mon, 14 Sep 2026 23:49:00 +0900

    Accept Bachelier prices that round to intrinsic in the implied-vol inversion

 ql/pricingengines/blackformula.cpp |  8 ++++++--
 test-suite/blackformula.cpp        | 29 +++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+), 2 deletions(-)

commit 6a6e79188a1312783d8dec3239b7e6482a2c7f64
Author: Abhayindia <abhaychaudharydps@gmail.com>
Date:   Tue, 15 Sep 2026 06:47:37 +0900

    Seed the t=0 variance column for every strike, not row 0 across times

 ql/experimental/volatility/extendedblackvariancesurface.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

commit 9bfad368aebb884c002c89430441b65bc9e316f3
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Mon, 14 Sep 2026 21:14:36 +0100

    Restore generic Makefile diagnostic

 tools/check_filelists_diffs.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 2db43fca7fabe28fd9bc7849f33aa1dbab408573
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Mon, 14 Sep 2026 21:14:21 +0100

    Ignore Python bytecode caches

 .gitignore | 1 +
 1 file changed, 1 insertion(+)

commit 23b76cf39cb4ad43b7de6a2f45f30f3a9a1fd733
Merge: a8473224f 881972884
Author: LWO <46852948+losterbr@users.noreply.github.com>
Date:   Mon, 14 Sep 2026 18:26:33 +0100

    Merge pull request #2 from losterbr/sync-qldefine-codacy-review

commit 9e83a836fef302a62588a1a42465496ca8131e23
Author: Abhayindia <abhaychaudharydps@gmail.com>
Date:   Tue, 15 Sep 2026 00:37:11 +0900

    Register the new test in the Visual Studio project

 test-suite/testsuite.vcxproj         | 1 +
 test-suite/testsuite.vcxproj.filters | 3 +++
 2 files changed, 4 insertions(+)

commit 13381bd902f60d4f045e3ea94ba1b58b4dfbd363
Author: Abhayindia <abhaychaudharydps@gmail.com>
Date:   Tue, 15 Sep 2026 00:31:01 +0900

    Fix out-of-bounds accesses in ExtendedBlackVarianceSurface::setVariances

 .../volatility/extendedblackvariancesurface.cpp    | 10 ++-
 test-suite/CMakeLists.txt                          |  1 +
 test-suite/Makefile.am                             |  1 +
 test-suite/extendedblackvariancesurface.cpp        | 76 ++++++++++++++++++++++
 4 files changed, 85 insertions(+), 3 deletions(-)

commit 73c6e18aeefe880c9238393fd9d6e584089ba29a
Merge: e67be8899 9268b697f
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 14 Sep 2026 16:51:50 +0200

    Fix hybrid annealing temperature termination (#2783)

commit e67be889909d10ace43f24dff30180c6fa23d5d2
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Sun, 13 Sep 2026 01:51:16 +0000

    Automated fixes by clang-tidy

 ql/cashflows/stubiborcoupon.cpp | 2 +-
 ql/cashflows/stubiborcoupon.hpp | 2 +-
 test-suite/bonds.cpp            | 4 ++--
 test-suite/interestrates.cpp    | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

commit 90199bc48bc5212db8ab9dc513a8a63e0578c7e1
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 14 Sep 2026 08:35:46 +0200

    Avoid warnings on some versions of gcc and clang

 ql/cashflows/cashflows.cpp | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

commit a6b169ebf8cf672c3c221544c0260a223bfc6c3c
Author: Toprak Başlılar <toprakbaslilar@icloud.com>
Date:   Mon, 14 Sep 2026 12:24:25 +0300

    fix: initialize nominal in fixingDate-based MakeSwaption constructor
    
    The fixingDate-based MakeSwaption constructor never initialized
    nominal_, unlike the optionTenor-based constructor which sets it to
    1.0. Since Real has no default member initializer, the resulting
    Swaption's underlying nominal was left uninitialized, which is
    reachable from Gaussian1dSmileSection::optionPrice.
    
    Both constructors now default the nominal to 1.0.
    
    Fixes #2788
    
    Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

 ql/instruments/makeswaption.cpp |  3 ++-
 test-suite/swaption.cpp         | 23 +++++++++++++++++++++++
 2 files changed, 25 insertions(+), 1 deletion(-)

commit 9b8efe3d4c735d42902b787dc6e4548344dc4370
Author: LZ1153 <lawrenzlaw40@gmail.com>
Date:   Mon, 14 Sep 2026 15:27:21 +0800

    Add Philippines calendar

 QuantLib.vcxproj                  |   2 +
 QuantLib.vcxproj.filters          |   6 ++
 ql/CMakeLists.txt                 |   2 +
 ql/time/calendars/Makefile.am     |   2 +
 ql/time/calendars/all.hpp         |   1 +
 ql/time/calendars/philippines.cpp | 164 ++++++++++++++++++++++++++++++++++++++
 ql/time/calendars/philippines.hpp | 128 +++++++++++++++++++++++++++++
 test-suite/calendars.cpp          | 142 +++++++++++++++++++++++++++++++++
 8 files changed, 447 insertions(+)

commit ef5ca744a9b6ea05328ebf1249ae94dd64da367a
Author: uppalbh <uppalb2@gmail.com>
Date:   Sun, 13 Sep 2026 11:50:07 -0400

    Fix basis point value convexity term

 test-suite/bonds.cpp | 6 ++++++
 1 file changed, 6 insertions(+)

commit 460090d45d7973fd00d4523bbacb9adbbe774cda
Author: Krishna Anubhav <heykavofficial@gmail.com>
Date:   Sun, 13 Sep 2026 02:32:06 +0530

    Widen testLaguerreLargeOrder to n=400 per PR review
    
    Azra Bano (#2779 review) independently verified the fix holds well past
    the originally-tested range: bit-identical below the underflow threshold,
    correct moments of x^k*exp(-x) for k=0..8 at n=256, and ~1e-14 accuracy
    from n=184 through 400 in steps of 8 (also checked the analogous Hermite
    case separately). The underlying failure is unbounded in n, so there's
    no principled reason to stop testing at 232.
    
    Rebuilt via the apple-arm64-ninja-release preset and re-ran both the
    full GaussianQuadraturesTests suite (11/11 passing, including the
    widened testLaguerreLargeOrder) and HestonModelTests (38/38, the
    real-world consumer via AnalyticHestonEngine) before pushing.

 test-suite/gaussianquadratures.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

commit 9268b697f7e916565fa218d5afd9af94d105a125
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 16:26:56 +0100

    Expand hybrid annealing termination tests

 test-suite/optimizers.cpp | 71 ++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 58 insertions(+), 13 deletions(-)

commit 8df5e8d4295418b1ce5933a9e07c04c8469d3238
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 15:59:09 +0100

    Document header checker subprocess usage

 tools/check_header.py | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

commit a7fc2f99e71d60ee056de4ba32544a84f51106cd
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 15:42:37 +0100

    Harden copyright notice collection

 tools/collect_copyrights.py | 36 +++++++++++++++++-------------------
 1 file changed, 17 insertions(+), 19 deletions(-)

commit 08e485ef29940d5c198ae1b0f67b1a935477ac32
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 15:42:28 +0100

    Modernize file-list difference reporting

 tools/check_filelists_diffs.py | 57 ++++++++++++++++++++++++------------------
 1 file changed, 33 insertions(+), 24 deletions(-)

commit d218f3fa87efff68122b3e17f5434d3f7a58c489
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 15:42:18 +0100

    Modernize test timing analysis script

 tools/check_test_times.py | 98 +++++++++++++++++++++++++++++++----------------
 1 file changed, 65 insertions(+), 33 deletions(-)

commit 16ee6faf3b5e1763dc1fb68db7a7853793e91c00
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 15:42:05 +0100

    Modernize Python header validation tools

 tools/check_header.py      | 40 +++++++++++++++++++++++++++++-----------
 tools/check_header_docs.py | 34 ++++++++++++++++++----------------
 2 files changed, 47 insertions(+), 27 deletions(-)

commit 881972884967f70dbaf4ea047e26e1c88d7e5d92
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 14:11:09 +0000

    Sync qldefines.hpp.cfg with original header

 ql/qldefines.hpp.cfg | 2 ++
 1 file changed, 2 insertions(+)

commit 5f31dbc1a08d15cf3337f82f35dd004443546f31
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 15:09:23 +0100

    Fix hybrid annealing temperature termination

 ql/experimental/math/hybridsimulatedannealing.hpp |  6 ++-
 test-suite/optimizers.cpp                         | 46 +++++++++++++++++++++++
 2 files changed, 50 insertions(+), 2 deletions(-)

commit a8473224f5a11c99ba94073f2255de21ef6a0567
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 14:48:13 +0100

    Revert "Add hybrid annealing termination regression test"
    
    This reverts commit aa4efdb2937b023d35b7974740ddc28aa9a0df8a.

 test-suite/optimizers.cpp | 38 --------------------------------------
 1 file changed, 38 deletions(-)

commit aa4efdb2937b023d35b7974740ddc28aa9a0df8a
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 14:31:24 +0100

    Add hybrid annealing termination regression test

 test-suite/optimizers.cpp | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

commit 1e87c1cb64152db99d22cda935c84f71f66228b6
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 14:29:11 +0100

    Document LSM tuple allocation reuse

 ql/methods/montecarlo/lsmbasissystem.cpp | 2 ++
 1 file changed, 2 insertions(+)

commit db5e7fcc3ca564e3da70df061326de5aee9923c6
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 14:27:04 +0100

    Replace C-style null pointer cast

 ql/methods/finitedifferences/finitedifferencemodel.hpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

commit 7342382dc4f34ef273fe838b887064cbef6066cd
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 14:26:01 +0100

    Document intentional MINPACK pivot condition

 ql/math/optimization/lmdif.cpp | 3 +++
 1 file changed, 3 insertions(+)

commit 77f0592973f2dae97a6b7eaf31fb90fef423cf40
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 12:53:23 +0100

    Document intentional Codacy exceptions

 dockerfiles/ci.Dockerfile                                      | 2 ++
 ql/indexes/swapindex.hpp                                       | 2 ++
 ql/methods/finitedifferences/meshers/concentrating1dmesher.cpp | 3 +++
 ql/qldefines.hpp                                               | 2 ++
 4 files changed, 9 insertions(+)

commit 8421cbfe213f1f8633b57a8ff0d3e9fd55471138
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 12:19:43 +0100

    Address explicit constructor warnings

 ql/cashflows/couponpricer.hpp                                |  2 +-
 ql/exercise.hpp                                              |  8 ++++----
 ql/experimental/credit/defaultevent.hpp                      |  2 +-
 ql/experimental/credit/loss.hpp                              |  2 +-
 ql/experimental/math/levyflightdistribution.hpp              |  4 ++--
 ql/experimental/math/particleswarmoptimization.hpp           |  6 +++---
 ql/indexes/ibor/audlibor.hpp                                 |  2 +-
 ql/indexes/ibor/chflibor.hpp                                 |  4 ++--
 ql/indexes/ibor/euribor.hpp                                  |  4 ++--
 ql/indexes/ibor/jpylibor.hpp                                 |  4 ++--
 ql/indexes/ibor/mosprime.hpp                                 |  2 +-
 ql/indexes/ibor/pribor.hpp                                   |  2 +-
 ql/indexes/ibor/seklibor.hpp                                 |  2 +-
 ql/indexes/ibor/thbfix.hpp                                   |  2 +-
 ql/indexes/ibor/tibor.hpp                                    |  2 +-
 ql/indexes/ibor/usdlibor.hpp                                 |  4 ++--
 ql/indexes/ibor/wibor.hpp                                    |  2 +-
 ql/indexes/swap/gbpliborswap.hpp                             |  2 +-
 ql/instruments/bonds/btp.hpp                                 |  4 ++--
 ql/instruments/swap.hpp                                      |  2 +-
 ql/legacy/libormarketmodels/lmconstwrappercorrmodel.hpp      |  2 +-
 ql/math/abcdmathfunction.hpp                                 |  4 ++--
 ql/math/copulas/alimikhailhaqcopula.hpp                      |  2 +-
 ql/math/copulas/farliegumbelmorgensterncopula.hpp            |  2 +-
 ql/math/copulas/gumbelcopula.hpp                             |  2 +-
 ql/math/copulas/plackettcopula.hpp                           |  2 +-
 ql/math/distributions/bivariatenormaldistribution.hpp        |  4 ++--
 ql/math/distributions/gammadistribution.hpp                  |  2 +-
 ql/math/distributions/normaldistribution.hpp                 | 12 ++++++------
 ql/math/distributions/poissondistribution.hpp                |  6 +++---
 ql/math/integrals/tanhsinhintegral.hpp                       |  2 +-
 ql/math/interpolations/flatextrapolation2d.hpp               |  4 ++--
 ql/math/interpolations/loginterpolation.hpp                  |  2 +-
 ql/math/matrixutilities/getcovariance.hpp                    |  2 +-
 ql/math/optimization/bfgs.hpp                                |  2 +-
 ql/math/optimization/leastsquare.hpp                         |  4 ++--
 ql/math/optimization/simplex.hpp                             |  2 +-
 ql/math/randomnumbers/randomizedlds.hpp                      |  4 ++--
 ql/math/statistics/discrepancystatistics.hpp                 |  2 +-
 ql/math/statistics/sequencestatistics.hpp                    |  2 +-
 ql/methods/montecarlo/multipath.hpp                          |  2 +-
 ql/methods/montecarlo/path.hpp                               |  2 +-
 ql/models/marketmodels/correlations/expcorrelations.hpp      |  2 +-
 ql/models/marketmodels/models/fwdtocotswapadapter.hpp        |  4 ++--
 ql/models/marketmodels/models/pseudorootfacade.hpp           |  2 +-
 ql/models/marketmodels/pathwisegreeks/vegabumpcluster.hpp    |  2 +-
 ql/models/model.hpp                                          |  4 ++--
 ql/models/shortrate/onefactormodels/coxingersollross.hpp     |  2 +-
 ql/models/shortrate/onefactormodels/hullwhite.hpp            |  2 +-
 ql/models/shortrate/onefactormodels/vasicek.hpp              |  2 +-
 ql/models/volatility/garmanklass.hpp                         |  8 ++++----
 ql/pricingengines/asian/analytic_discr_geom_av_price.hpp     |  2 +-
 ql/pricingengines/asian/analytic_discr_geom_av_strike.hpp    |  2 +-
 ql/pricingengines/bond/discountingbondengine.hpp             |  2 +-
 ql/pricingengines/capfloor/analyticcapfloorengine.hpp        |  2 +-
 ql/pricingengines/cliquet/mcperformanceengine.hpp            |  4 +++-
 ql/pricingengines/forward/forwardperformanceengine.hpp       |  2 +-
 ql/pricingengines/forward/mcvarianceswapengine.hpp           |  6 ++++--
 ql/pricingengines/swap/discountingswapengine.hpp             |  2 +-
 .../swaption/gaussian1djamshidianswaptionengine.hpp          |  2 +-
 ql/pricingengines/swaption/gaussian1dswaptionengine.hpp      |  4 ++--
 ql/pricingengines/swaption/jamshidianswaptionengine.hpp      |  2 +-
 ql/pricingengines/vanilla/analyticdigitalamericanengine.hpp  |  4 ++--
 ql/pricingengines/vanilla/bjerksundstenslandengine.hpp       |  2 +-
 ql/pricingengines/vanilla/integralengine.hpp                 |  2 +-
 ql/pricingengines/vanilla/jumpdiffusionengine.hpp            |  2 +-
 ql/pricingengines/vanilla/mcdigitalengine.hpp                |  4 +++-
 ql/termstructures/credit/hazardratestructure.hpp             |  4 ++--
 ql/termstructures/credit/interpolatedhazardratecurve.hpp     |  2 +-
 ql/termstructures/volatility/abcd.hpp                        |  2 +-
 .../volatility/equityfx/blackvoltermstructure.hpp            | 12 ++++++------
 ql/termstructures/volatility/smilesectionutils.hpp           |  2 +-
 ql/termstructures/yield/nonlinearfittingmethods.hpp          | 10 +++++-----
 ql/time/calendars/bespokecalendar.hpp                        |  2 +-
 ql/time/calendars/israel.hpp                                 |  2 +-
 75 files changed, 122 insertions(+), 116 deletions(-)

commit e94f4bbcfdd2ee280fea0ed2921c85e7754d0094
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Sat, 12 Sep 2026 10:10:55 +0100

    Fixing Doxygen.

 ql/math/distributions/normaldistribution.hpp | 30 ++++++++++++++--------------
 1 file changed, 15 insertions(+), 15 deletions(-)

commit 2c2d0dc0fe9eb1cb93e31e71893b29b36f1d416e
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Fri, 11 Sep 2026 20:43:43 +0100

    Improve normal distribution test clarity
    
    Document endpoint recovery, reference comparisons, branch boundaries, tolerances, and parameterized Maddock checks.

 test-suite/distributions.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

commit 4dd22752336a90872a1e990b54471011253c6b52
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Fri, 11 Sep 2026 20:37:08 +0100

    Document normal distribution edge-case tests
    
    Clarify Moro branch boundaries, reference implementations, tolerances, and Boost endpoint behavior.

 test-suite/distributions.cpp | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

commit 0a29babc703408014dc0061ce45401627c148093
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Fri, 11 Sep 2026 20:33:54 +0100

    Expand normal distribution test coverage
    
    Separate inverse, Moro, Maddock, and cumulative tests and cover tails, endpoints, invalid parameters, accuracy, monotonicity, and range behavior.

 test-suite/distributions.cpp | 66 ++++++++++++++++++++++++++++++++++++--------
 1 file changed, 55 insertions(+), 11 deletions(-)

commit 36099cd1094a0497dfb9da6fa985ad99741390cf
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Fri, 11 Sep 2026 20:28:43 +0100

    Improve normal distribution documentation
    
    Document density and cumulative formulas, clarify inverse-CDF notation, and describe the Moro approximation regions.

 ql/math/distributions/normaldistribution.hpp | 50 +++++++++++++++++++---------
 1 file changed, 35 insertions(+), 15 deletions(-)

commit 1464b8c8e3dd4d73ff67f80b39b643c5fea00f99
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Fri, 11 Sep 2026 20:19:17 +0100

    Clarify normal distribution implementation
    
    Name the Moro approximation threshold and align derivative formatting with the surrounding header style.

 ql/math/distributions/normaldistribution.cpp | 5 ++++-
 ql/math/distributions/normaldistribution.hpp | 6 +++---
 2 files changed, 7 insertions(+), 4 deletions(-)

commit e587e97038fc9e21bc995552c029bb63739106f8
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Fri, 11 Sep 2026 20:18:52 +0100

    Test Moro inverse normal branch continuity
    
    Compare both approximation branches with the Acklam inverse and check continuity around the 0.08 and 0.92 switch points.

 test-suite/distributions.cpp | 11 +++++++++++
 1 file changed, 11 insertions(+)

commit 924e9fac3c4929b9e704ab2c08cebedd4232abfb
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Fri, 11 Sep 2026 20:08:27 +0100

    Expand normal distribution edge-case coverage
    
    Test inverse-CDF branch boundaries, monotonicity, affine scaling, and cumulative-normal tail behavior.

 test-suite/distributions.cpp | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

commit fcede2e01aa969a1164ca92a8318e1e77ff3f91c
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Fri, 11 Sep 2026 20:00:18 +0100

    Harden normal distribution edge cases
    
    Return zero for derivatives with underflowed density and infinity inputs. Add coverage for inverse-CDF tails, invalid parameters, symmetry, and normal-distribution boundary behavior.

 ql/math/distributions/normaldistribution.hpp |  4 ++-
 test-suite/distributions.cpp                 | 53 ++++++++++++++++++++++++++++
 2 files changed, 56 insertions(+), 1 deletion(-)

commit 64f9cbe44ee39483b59c041f25319ef64491ebbc
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Fri, 11 Sep 2026 19:57:33 +0100

    Align sigma validation across normal distribution constructors
    
    Add explicit positive-sigma checks to the Maddock normal distribution constructors so they match the behavior of the other normal distribution implementations and fail consistently at construction time.

 ql/math/distributions/normaldistribution.cpp | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

commit 22adea9a370bc5f415cfdf0a050ea85f7a83e2ab
Author: Krishna Anubhav <heykavofficial@gmail.com>
Date:   Fri, 11 Sep 2026 22:37:00 +0530

    Fix NaN in GaussLaguerreIntegration for large orders
    
    GaussianQuadrature::GaussianQuadrature() computed each weight as
    mu_0*ev[0][i]^2 / orthPoly.w(x_[i]). For Gauss-Laguerre with n >= 200
    the weight function w(x) = x^s*exp(-x) underflows to zero at the
    largest node while the true weight stays representable, turning the
    division into inf, and the subsequent f(x)*w(x) sum into inf*0 = NaN.
    
    Add a logW() method to GaussianOrthogonalPolynomial (default: log(w(x)),
    overridden with closed-form, underflow-safe expressions for Laguerre
    and Hermite) and use it to form the weight in log-space whenever w(x)
    has underflowed to zero. Below the threshold the fast path is
    unchanged, so existing results are unaffected; this was checked by
    running GaussianQuadraturesTests, HestonModelTests (the real-world
    consumer of GaussLaguerreIntegration(192) in AnalyticHestonEngine),
    and IntegralTests with no differences.
    
    Adds a regression test spanning orders 184-232 that fails on the
    unmodified code with 5 NaN results (n=200,208,216,224,232) and passes
    after the fix.
    
    Fixes #2776.

 ql/math/integrals/gaussianorthogonalpolynomial.cpp | 12 +++++++++++
 ql/math/integrals/gaussianorthogonalpolynomial.hpp |  7 +++++++
 ql/math/integrals/gaussianquadratures.cpp          | 12 ++++++++++-
 test-suite/gaussianquadratures.cpp                 | 23 ++++++++++++++++++++++
 4 files changed, 53 insertions(+), 1 deletion(-)

commit dabb7b9144ca8e1bbdf376c6f5bb23272f19489a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 11 Sep 2026 10:09:25 +0200

    Rework check in fitted bond curve tests

 test-suite/fittedbonddiscountcurve.cpp | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

commit ca953b7ebdb400f2839d86f18eeb0d4a2a4a30a4
Merge: e06326c4e 21092c511
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 11 Sep 2026 09:11:50 +0200

    Avoid test-setup antipatterns no longer needed (#2777)

commit 21092c511c12a846287e51f8527f753e171daa5e
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 10 Sep 2026 18:19:58 +0200

    Avoid test-setup antipatterns no longer needed
    
    Before version 1.34, inflation indexes always needed an inflation
    term structure, even if they weren't used for forecasting.
    
    In some of our tests, this forced us to use a setup in which a
    circular reference was created: an index would be given a handle,
    a piecewise inflation curve would be given the index, and the
    curve would be linked to the handle so that the index would have
    a curve available during bootstrapping.  At the end of the test,
    the cycle would be broken by linking the handle to a null pointer
    so that the objects could be destroyed.
    
    This is no longer necessary. The index required by the curve can
    now be created with an empty handle.
    
    This commit reworks the setup of the affected tests so that the
    obsolete patterns is no longer copied.

 test-suite/inflation.cpp                 | 70 +++++++++++---------------------
 test-suite/inflationcapfloor.cpp         | 27 ++++--------
 test-suite/inflationcapflooredcoupon.cpp | 21 ++++------
 test-suite/inflationcpibond.cpp          | 17 ++++----
 test-suite/inflationcpicapfloor.cpp      | 22 ++++------
 test-suite/inflationcpiswap.cpp          | 19 ++++-----
 6 files changed, 61 insertions(+), 115 deletions(-)

commit e06326c4ec955421fc58fbd6b6e33a332535ad80
Merge: 1b31e24e7 d8fe96875
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 10 Sep 2026 10:54:17 +0200

    Fuse Predictor And Corrector Reduction Loops In `FractionalAdams::solve` (#2761)

commit 1b31e24e7b482fccd9c4e1a8c5211cf843087038
Merge: f9dbcda2a 817967cf9
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 10 Sep 2026 10:52:53 +0200

    Cache the Riemann-Liouville quadrature weights in the rough Heston engine (#2758)

commit f9dbcda2add68c47681e4327ca8db4f381b9d3f5
Merge: f27af2453 593133472
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 9 Sep 2026 15:06:32 +0200

    Avoid iterating over all entries on observable disconnect (#2765)

commit f27af24532be55cae77f97ca3105801b7cb3a541
Merge: 38baab923 80e149760
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 9 Sep 2026 12:15:00 +0200

    Fix duplicated words in documentation comments (#2773)

commit 38baab9238d0159dc3d48593debb6eb1841b65ed
Merge: d58e69d70 5d033c6d6
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 9 Sep 2026 12:13:49 +0200

    Align credit-curve jump handling with the yield-curve implementation (#2771)

commit d58e69d70a5e891d7fe288a858b1c6211046a189
Merge: ee21581b0 f26af6063
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 9 Sep 2026 12:06:28 +0200

    gh-2172 fix compounding (#2667)

commit f26af60639040d0a222cec193b24d7fc1515377f
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 9 Sep 2026 10:14:19 +0200

    Avoid warning from gcc

 ql/interestrate.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit bbe47d64bf19761ca993d7de79df541cb60b958d
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 9 Sep 2026 09:49:11 +0200

    Disable direct calculations for SimpleThenCompounded and CompoundedThenSimple

 ql/interestrate.cpp          | 27 ++++-----------------------
 test-suite/interestrates.cpp | 31 ++++++++++++-------------------
 2 files changed, 16 insertions(+), 42 deletions(-)

commit 80e1497608a4150d2e2cf574f3bdcad82075bc49
Author: geographybuff <joshuaj1729@gmail.com>
Date:   Wed, 9 Sep 2026 01:18:46 +0000

    Fix duplicated words in documentation comments
    
    Removes eight accidentally doubled words across six files: "for the the
    call/put option" in DigitalCoupon, "with digital digital call/put
    option" in the Ibor, CMS and CMS-spread digital coupons, "overwrite the
    the swap rate" in YoYCapFloorTermPriceSurface, and "see if if ok" twice
    in alphafinder.cpp. Comment text only, with no code changes.
    
    Six of the eight are Doxygen //! comments on public classes and data
    members, so they appear in the generated reference documentation.
    
    The misspell-fixer workflow does not catch these: it matches misspelled
    words and a correctly spelled word repeated twice is not a misspelling.
    
    Deliberately left alone: "float float swap" in floatfloatswap.hpp and
    gaussian1dfloatfloatswaptionengine.hpp, which names the FloatFloatSwap
    instrument, and the "barrier barrier type" column headings in the
    barrieroption test tables.
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 ql/cashflows/digitalcmscoupon.hpp                         | 2 +-
 ql/cashflows/digitalcoupon.hpp                            | 4 ++--
 ql/cashflows/digitaliborcoupon.hpp                        | 2 +-
 ql/experimental/coupons/digitalcmsspreadcoupon.hpp        | 2 +-
 ql/experimental/inflation/yoycapfloortermpricesurface.hpp | 2 +-
 ql/models/marketmodels/models/alphafinder.cpp             | 4 ++--
 6 files changed, 8 insertions(+), 8 deletions(-)

commit ecef10a409015454de618ef8e9cd1ba5fee816ef
Author: Yassine Idyiahia <yassine.id@gmail.com>
Date:   Sun, 30 Aug 2026 00:08:59 +0100

    Fix `SmileSectionRNDCalculator` tail quantiles for smiles with fat wings

 .../utilities/smilesectionrndcalculator.cpp        | 216 +++++++++++++++++----
 .../utilities/smilesectionrndcalculator.hpp        |  12 +-
 test-suite/basketoption.cpp                        |  75 +++++++
 test-suite/riskneutraldensitycalculator.cpp        | 194 ++++++++++++++++++
 4 files changed, 456 insertions(+), 41 deletions(-)

commit 7eea91f85b35bd6eeadd9e986cbf1773eb9422d5
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 8 Sep 2026 16:24:42 +0200

    Restore original behavior of composite compoundings when on their own

 ql/compounding.hpp           |  20 ++++----
 ql/interestrate.cpp          | 109 +++++++++++++++++++++++++++++--------------
 test-suite/interestrates.cpp |  21 ++++++++-
 3 files changed, 105 insertions(+), 45 deletions(-)

commit 245133b77e392bec2860361f2a9447a38310b3ca
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 8 Sep 2026 15:45:22 +0200

    Avoid extending signatures of InterestRate methods

 ql/interestrate.cpp | 18 ++++++++----------
 ql/interestrate.hpp | 21 +++++++--------------
 2 files changed, 15 insertions(+), 24 deletions(-)

commit 76d7f0888ddec8017e33e799769deac5a9d9ae9e
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 8 Sep 2026 15:28:51 +0200

    Refactor the choice of stepwise compounding

 ql/cashflows/cashflows.cpp | 82 +++++++++++++++++++++++++++++++---------------
 1 file changed, 56 insertions(+), 26 deletions(-)

commit 5d033c6d6e49c597815689341b15b2fa84ba4a0f
Author: Abhayindia <abhaychaudharydps@gmail.com>
Date:   Tue, 8 Sep 2026 10:13:54 +0900

    align credit-curve jump handling with the yield-curve implementation

 ql/termstructures/defaulttermstructure.cpp | 18 +++++-----
 test-suite/defaultprobabilitycurves.cpp    | 54 ++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+), 8 deletions(-)

commit ee21581b0350e71f297d8d59bcaccb8a5705049b
Merge: 02205d993 35e274bc2
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 7 Sep 2026 17:07:44 +0200

    Scale the differencing gap in `SmileSection::density` and `digitalOptionPrice` with the strike (#2768)

commit 02205d9935a62ed47b39686d384ca9ea2459b988
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Mon, 7 Sep 2026 14:17:28 +0000

    Update copyright list in license

 LICENSE.TXT | 1 +
 1 file changed, 1 insertion(+)

commit fbf8ec22ab4694c87f1212e02e9f0d14b2cea5e7
Merge: 12dcf95ee 9b1dcaff1
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 7 Sep 2026 16:16:05 +0200

    FGM Copula bug fix (#2767)

commit 12dcf95ee65c31b03abe871f107821ceb01ddf4d
Merge: 30a523339 5e447e194
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 7 Sep 2026 14:32:13 +0200

    Fix binomial trees silently returning zero or NaN prices (#2729)

commit 30a52333969c04af17e8fad4fce5d5943ad6a856
Merge: 4f48e95b0 2bea76d08
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 7 Sep 2026 12:46:08 +0200

    Handle vanishing volatility in the Barone-Adesi-Whaley and Ju American engines (#2755)

commit 4f48e95b03969d7b0d231b88350bcc22c761f934
Merge: c5e433cd3 5807f44ff
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 7 Sep 2026 12:43:56 +0200

    Return the European value for an American put when early exercise is never optimal (#2754)

commit c5e433cd31eb1aea1189ffbad7cc50ea9c2f66b0
Merge: 79f08f66b ef1c3b40d
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 7 Sep 2026 12:08:12 +0200

    Stub helpers (#2730)

commit ef1c3b40da97a527557d0deffa32ec1152c2ed1c
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 7 Sep 2026 10:41:24 +0200

    Move enum in class scope

 ql/cashflows/stubiborcoupon.cpp         | 65 ++++++++++++++++++---------------
 ql/cashflows/stubiborcoupon.hpp         | 18 ++++-----
 test-suite/basisswapratehelpers.cpp     |  4 +-
 test-suite/cashflows.cpp                | 20 +++++-----
 test-suite/crosscurrencyratehelpers.cpp |  8 ++--
 5 files changed, 60 insertions(+), 55 deletions(-)

commit de93cbfee5701291acb5a96cb4fbbe3933e765d1
Author: uppalbh <uppalb2@gmail.com>
Date:   Sun, 6 Sep 2026 23:12:17 -0400

    Fix convexity term in cash flow basis point value

 ql/cashflows/cashflows.cpp | 2 +-
 test-suite/bonds.cpp       | 7 +++----
 2 files changed, 4 insertions(+), 5 deletions(-)

commit e018a40588f1dbe08b177f97377d679f2dc29254
Author: kp9991 <kp9991@gmail.com>
Date:   Fri, 4 Sep 2026 16:36:14 +1000

    Renaming StubIndexConfig, stub stuff moving to a separate file

 QuantLib.vcxproj                                   |   4 +-
 QuantLib.vcxproj.filters                           |  12 +-
 ql/CMakeLists.txt                                  |   4 +-
 ql/cashflows/Makefile.am                           |   2 +
 ql/cashflows/all.hpp                               |   1 +
 ql/cashflows/iborcoupon.cpp                        | 178 +------------
 ql/cashflows/iborcoupon.hpp                        | 117 +-------
 ql/cashflows/stubiborcoupon.cpp                    | 293 +++++++++++++++++++++
 ql/cashflows/stubiborcoupon.hpp                    | 168 ++++++++++++
 ql/experimental/fx/mtmcrosscurrencybasisswap.cpp   |  10 +-
 ql/experimental/fx/mtmcrosscurrencybasisswap.hpp   |  23 +-
 .../termstructures/basisswapratehelpers.cpp        |  30 +--
 .../termstructures/basisswapratehelpers.hpp        |  15 +-
 .../termstructures/crosscurrencyratehelpers.cpp    |  50 ++--
 .../termstructures/crosscurrencyratehelpers.hpp    |  41 +--
 ql/indexes/Makefile.am                             |   6 +-
 ql/indexes/all.hpp                                 |   1 -
 ql/indexes/weightediborindex.cpp                   | 118 ---------
 ql/indexes/weightediborindex.hpp                   |  80 ------
 .../constnotionalcrosscurrencybasisswap.cpp        |  12 +-
 .../constnotionalcrosscurrencybasisswap.hpp        |  19 +-
 ...nstnotionalcrosscurrencyfixedvsfloatingswap.cpp |   6 +-
 ...nstnotionalcrosscurrencyfixedvsfloatingswap.hpp |  11 +-
 test-suite/basisswapratehelpers.cpp                |  24 +-
 test-suite/cashflows.cpp                           |  45 ++--
 test-suite/crosscurrencyratehelpers.cpp            |  36 +--
 26 files changed, 650 insertions(+), 656 deletions(-)

commit 35e274bc23dbc7fb83bec1a3a0bf999c29935eac
Author: Yassine Idyiahia <yassine.id@gmail.com>
Date:   Sun, 30 Aug 2026 00:11:54 +0100

    Fix `SmileSection::digitalOptionPrice` and `density` losing precision at large strikes

 ql/termstructures/volatility/smilesection.cpp |  26 ++++--
 test-suite/interpolatedsmilesection.cpp       | 123 ++++++++++++++++++++++++++
 2 files changed, 142 insertions(+), 7 deletions(-)

commit 79f08f66bc7f42ab228f37d15ee0cb4f2d920e0c
Merge: 5a5df520b e5cc00011
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 3 Sep 2026 10:27:57 +0200

    Fix lost coupon when a callability falls on a coupon date (#2748)

commit 9b1dcaff1040a18c60badc45063247c20b021ea9
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Wed, 2 Sep 2026 20:45:47 +0100

    Fix warning -Wreorder.

 ql/experimental/math/claytoncopularng.hpp | 2 +-
 ql/experimental/math/frankcopularng.hpp   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

commit a2c3eddc2e1ddbeb493027add40964c0473b2221
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Wed, 2 Sep 2026 20:38:17 +0100

    Fixed bug in FGM copula.

 ql/experimental/math/farliegumbelmorgensterncopularng.hpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

commit 76077390e21f118bac4bfdf15914f70d149dc9af
Author: LO <46852948+losterbr@users.noreply.github.com>
Date:   Wed, 2 Sep 2026 20:29:52 +0100

    Adde basic test for copulas.

 test-suite/CMakeLists.txt            |   1 +
 test-suite/Makefile.am               |   1 +
 test-suite/copulas.cpp               | 144 +++++++++++++++++++++++++++++++++++
 test-suite/testsuite.vcxproj         |   3 +-
 test-suite/testsuite.vcxproj.filters |   9 ++-
 5 files changed, 154 insertions(+), 4 deletions(-)

commit 5931334725e43b7809355ad3c49e41b9acbedb57
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 3 Sep 2026 06:27:44 +1000

    copyright

 ql/patterns/observable.cpp | 1 +
 test-suite/observable.cpp  | 1 +
 2 files changed, 2 insertions(+)

commit b6cf499cf9aa7dbc64d91c6e38499cea8665c220
Author: kp9991 <kp9991@gmail.com>
Date:   Wed, 2 Sep 2026 21:29:10 +1000

    Using a map to avoid iterating over all entries on disconnect

 ql/patterns/observable.cpp | 48 ++++++++++++++++++++++++++++++----------------
 test-suite/observable.cpp  | 30 +++++++++++++++++++++++++++++
 2 files changed, 61 insertions(+), 17 deletions(-)

commit 5a5df520bc77fe4b344bffeff86501307c0ba5bc
Merge: cd646ecf6 c66213998
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 1 Sep 2026 21:29:37 +0200

    Deprecate most optional arguments in `MakeVanillaSwap` constructor and similar (#2763)

commit c66213998f2894c2e5ec044217ab9a31dde82454
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 1 Sep 2026 17:21:34 +0200

    Remove optional arguments from MakeOIS constructor

 ql/indexes/swapindex.cpp                  |  3 ++-
 ql/instruments/makeois.cpp                | 26 +++++++++++++++++-----
 ql/instruments/makeois.hpp                | 16 ++++++++++---
 ql/instruments/makeswaption.cpp           |  3 ++-
 ql/termstructures/yield/oisratehelper.cpp |  4 +++-
 test-suite/overnightindexedswap.cpp       | 37 +++++++++++++++++++------------
 test-suite/swaption.cpp                   |  6 +++--
 7 files changed, 68 insertions(+), 27 deletions(-)

commit bc391949114c0a007d1e79273efcd677b9b8bc1f
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 1 Sep 2026 16:49:19 +0200

    Remove most optional arguments from MakeCms constructor

 ql/instruments/makecms.cpp                         | 67 +++++++++++-----------
 ql/instruments/makecms.hpp                         | 42 +++++++++-----
 .../volatility/swaption/cmsmarket.cpp              | 11 ++--
 test-suite/cms.cpp                                 |  5 +-
 test-suite/cms_normal.cpp                          |  3 +-
 5 files changed, 70 insertions(+), 58 deletions(-)

commit cd646ecf64071579ef0cc9444182581f6940189a
Merge: 645f5e3c6 2492aaa7e
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 1 Sep 2026 16:29:58 +0200

    Use `enum` instead of `enum class` for a couple of inner enumerations (#2762)

commit 9f6b51fd44f68014964c09a3143ba227d8955d3e
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 1 Sep 2026 16:02:05 +0200

    Remove optional arguments from MakeCapFloor constructor

 ql/instruments/makecapfloor.cpp                    | 28 +++++++++--
 ql/instruments/makecapfloor.hpp                    | 18 +++++--
 .../volatility/gaussian1dsmilesection.cpp          |  5 +-
 test-suite/markovfunctional.cpp                    | 56 +++++++++++-----------
 test-suite/optionletstripper.cpp                   | 31 ++++++------
 5 files changed, 84 insertions(+), 54 deletions(-)

commit ac93aa2d6db9c7e4f9fdd3056fbc341224955be9
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 1 Sep 2026 15:11:31 +0200

    Remove optional arguments from MakeVanillaSwap constructor

 Examples/CVAIRS/CVAIRS.cpp                         |  5 +--
 .../swaptions/haganirregularswaptionengine.cpp     |  3 +-
 ql/indexes/swapindex.cpp                           |  6 ++-
 ql/instruments/bonds/btp.cpp                       |  7 +--
 ql/instruments/makecapfloor.cpp                    |  4 +-
 ql/instruments/makeswaption.cpp                    |  3 +-
 ql/instruments/makevanillaswap.cpp                 | 26 ++++++++---
 ql/instruments/makevanillaswap.hpp                 | 20 ++++++---
 ql/pricingengines/swap/cvaswapengine.cpp           | 10 ++---
 ql/termstructures/yield/ratehelpers.cpp            |  4 +-
 test-suite/bermudanswaption.cpp                    |  3 +-
 test-suite/gsr.cpp                                 |  6 ++-
 test-suite/markovfunctional.cpp                    | 19 ++++----
 test-suite/piecewiseyieldcurve.cpp                 | 31 ++++++++-----
 test-suite/swap.cpp                                | 52 +++++++++++++++-------
 test-suite/swaption.cpp                            | 27 +++++++----
 16 files changed, 150 insertions(+), 76 deletions(-)

commit 546bcc9b43adae299d0a75319ebee938660d22c5
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Tue, 1 Sep 2026 06:55:37 -0500

    Fuse Fractional Adams Predictor-Corrector Loops

 ql/math/ode/fractionaladams.hpp | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

commit 2492aaa7e00b3e568f64d9d956e49c6dad9e8333
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 1 Sep 2026 12:53:59 +0200

    Use enum instead of enum class for a couple of inner enumerations
    
    They are already scoped, and using enum class with SWIG results in
    Python pseudo-enums that are too verbose.

 ql/experimental/fx/mtmcrosscurrencybasisswap.hpp   |  4 +--
 .../termstructures/crosscurrencyratehelpers.cpp    |  2 +-
 .../vanilla/analyticroughhestonengine.cpp          | 16 ++++++----
 .../vanilla/analyticroughhestonengine.hpp          |  8 ++---
 test-suite/crosscurrencyratehelpers.cpp            |  4 +--
 test-suite/mtmcrosscurrencybasisswap.cpp           | 26 ++++++++---------
 test-suite/roughhestonmodel.cpp                    | 34 +++++++++++-----------
 7 files changed, 48 insertions(+), 46 deletions(-)

commit 645f5e3c6bf976a0dfd087851bcdbd1d3e76b94c
Merge: 204e7ad8f 5ae77fb87
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 1 Sep 2026 12:05:46 +0200

    Avoid spurious OIS future helper notifications (#2759)

commit 5ae77fb87aaec169f01ff1a946d9106358268e72
Author: Steve Dacek <2327718+sdacek@users.noreply.github.com>
Date:   Mon, 31 Aug 2026 09:18:36 -0400

    Avoid spurious OIS future helper notifications
    
    unregister termStructureHandle_ from index in OvernightIndexFutureRateHelper
    
    add test coverage

 .../yield/overnightindexfutureratehelper.cpp             |  1 +
 test-suite/sofrfutures.cpp                               | 16 ++++++++++++++++
 2 files changed, 17 insertions(+)

commit 204e7ad8f40d74f731cf8e3021ff5c32b0a53c05
Merge: e0ff5e6b2 8861a0c91
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 31 Aug 2026 12:21:38 +0200

    Fix null-deref crash in `XabrSwaptionVolatilityCube::fillVolatilityCube()` (#2753)

commit 4068e508ca5d19260351cfa4779884b74ed27bc0
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sun, 30 Aug 2026 11:54:22 -0500

    Adding fractional weight updates for integration scheme.

 .../vanilla/analyticroughhestonengine.cpp          | 33 ++++++++++++++++++----
 1 file changed, 28 insertions(+), 5 deletions(-)

commit 81451b33a55649ffbb2d1d8eea08c8999c6180d1
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sun, 30 Aug 2026 11:52:55 -0500

    Adding fractional adams cached weights.

 ql/math/ode/fractionaladams.hpp | 89 ++++++++++++++++++++++++++++++++---------
 1 file changed, 71 insertions(+), 18 deletions(-)

commit cb0ff2ee14413fd7dbac84b0826165dbdb6d78db
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sun, 30 Aug 2026 11:44:40 -0500

    minor changes.

 test-suite/roughhestonmodel.cpp | 52 +++++++++++++++++++----------------------
 1 file changed, 24 insertions(+), 28 deletions(-)

commit 95683ad023df22a9de594cb2971dc43e89f47881
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sun, 30 Aug 2026 11:38:30 -0500

    Adding tests for Riemann Liouville cache functions.

 test-suite/roughhestonmodel.cpp | 144 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 144 insertions(+)

commit 3bc93233a9e0825aa22c54d2d2a334271e10c317
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sun, 30 Aug 2026 11:32:42 -0500

    Forward declare unit and fractional weights.

 ql/pricingengines/vanilla/analyticroughhestonengine.hpp | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

commit e342e7286639adba29bb0987fa35c2233c89058d
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sun, 30 Aug 2026 09:05:39 -0500

    Adding diag pivot floor.

 ql/math/optimization/cmaes.cpp | 11 +++++++++++
 1 file changed, 11 insertions(+)

commit ce4cbab818c7b7019610c0c650c01b17f82562bb
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sun, 30 Aug 2026 09:05:14 -0500

    Adding ill conditioned quadratic matrix.

 test-suite/optimizers.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)

commit 9ac46a47f434c57d13da2c5b40ff1ba691f8ec59
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sat, 29 Aug 2026 17:37:31 -0500

    Updating CMAES to Cholesky decomposition for compute efficiency.

 ql/math/optimization/cmaes.cpp | 68 +++++++++++++++++++++++++-----------------
 1 file changed, 40 insertions(+), 28 deletions(-)

commit 451a204e6eb75460363437c562e6faba73daefaf
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sat, 29 Aug 2026 17:17:57 -0500

    Adding ill conditioned and rank-deficient objectives to prod Cholesky decomp.

 test-suite/optimizers.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

commit 5807f44ff5e26197c1bcc8c32e52f5e2f03e0091
Author: mkzung <103102868+mkzung@users.noreply.github.com>
Date:   Thu, 27 Aug 2026 22:30:25 +0100

    Extend the Barone-Adesi-Whaley shortcut to puts at non-positive rates

 .../vanilla/baroneadesiwhaleyengine.cpp            | 12 +++-
 test-suite/americanoption.cpp                      | 76 +++++++++++++++++++++-
 2 files changed, 83 insertions(+), 5 deletions(-)

commit 8861a0c9133207d8e7c08b52f445f4ebd19f67c5
Author: Yassine Idyiahia <yassine.id@gmail.com>
Date:   Sat, 29 Aug 2026 13:18:35 +0100

    Fix null-deref crash in XabrSwaptionVolatilityCube::fillVolatilityCube()

 ql/termstructures/volatility/swaption/sabrswaptionvolatilitycube.hpp | 5 +++++
 1 file changed, 5 insertions(+)

commit 2bea76d0875239965029b13097b14bdc9fb2f16b
Author: Abhayindia <abhaychaudharydps@gmail.com>
Date:   Sat, 29 Aug 2026 13:24:41 +0900

    handle vanishing volatility in the Barone-Adesi-Whaley and Ju American engines

 .../vanilla/baroneadesiwhaleyengine.cpp            | 10 ++++
 ql/pricingengines/vanilla/juquadraticengine.cpp    |  5 ++
 test-suite/americanoption.cpp                      | 70 ++++++++++++++++++++++
 3 files changed, 85 insertions(+)

commit e0ff5e6b2006a5f59d2008ab56ff1090658ee172
Merge: c7a515afc 42a0c323e
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 28 Aug 2026 19:49:30 +0200

    Fix AD type compatibility issues (#2750)

commit 42a0c323e2709c71f43543f426189fb37fa9088c
Author: auto-differentiation-dev <107129969+auto-differentiation-dev@users.noreply.github.com>
Date:   Fri, 28 Aug 2026 12:43:37 +0100

    Avoid list-initialization from solver result in rough Heston test

 test-suite/roughhestonmodel.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit f8230521ffe24e1caf71a6ac1e57ec32b3ddab7a
Author: auto-differentiation-dev <107129969+auto-differentiation-dev@users.noreply.github.com>
Date:   Fri, 28 Aug 2026 11:35:57 +0100

    Use AD-compatible check macros in recently added tests

 test-suite/basisswapratehelpers.cpp      |  6 ++---
 test-suite/crosscurrencyratehelpers.cpp  | 10 ++++----
 test-suite/gsr.cpp                       | 10 ++++----
 test-suite/mtmcrosscurrencybasisswap.cpp | 40 ++++++++++++++++----------------
 test-suite/optionletstripper.cpp         |  8 +++----
 test-suite/overnightindexedswap.cpp      |  4 ++--
 test-suite/swaptionvolatilitycube.cpp    | 16 ++++++-------
 7 files changed, 47 insertions(+), 47 deletions(-)

commit d0a3885a3ebae1df00cf3cfb4ed44aa39ca5b843
Author: auto-differentiation-dev <107129969+auto-differentiation-dev@users.noreply.github.com>
Date:   Fri, 28 Aug 2026 10:38:54 +0100

    Fix AD type compatibility in SabrSwaptionVolatilityCube

 .../volatility/swaption/sabrswaptionvolatilitycube.hpp            | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

commit 6178f8d866122b8db50fea73cd67015874bff862
Author: auto-differentiation-dev <107129969+auto-differentiation-dev@users.noreply.github.com>
Date:   Fri, 28 Aug 2026 09:47:25 +0100

    Fix AD type compatibility in rough Heston engine

 ql/math/ode/fractionalkernelapproximation.hpp           | 8 ++++++--
 ql/pricingengines/vanilla/analyticroughhestonengine.cpp | 2 +-
 2 files changed, 7 insertions(+), 3 deletions(-)

commit 9634b272af6c5eeed6be4bd88868fe30a41ee939
Author: auto-differentiation-dev <107129969+auto-differentiation-dev@users.noreply.github.com>
Date:   Fri, 28 Aug 2026 08:57:00 +0100

    Specify std::max template type for AD compatibility in distributions test

 test-suite/distributions.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit a717f57c59c0492da43fffbf633295c77f288988
Author: auto-differentiation-dev <107129969+auto-differentiation-dev@users.noreply.github.com>
Date:   Fri, 28 Aug 2026 08:57:00 +0100

    Use Real instead of auto in TripleBandLinearOp::solve_splitting

 ql/methods/finitedifferences/operators/triplebandlinearop.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit c7a515afcbd0561553ca4796ada70061c278e20e
Merge: 9a71406d4 cbc5cdc25
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 28 Aug 2026 10:58:14 +0200

    Remove 2026-09-28 from the South Korean calendar (#2741)

commit 9a71406d4c164e8d57e47102d8ee98bbf928a164
Merge: 557cf6dbf b2ba23493
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 28 Aug 2026 09:47:17 +0200

    Guard TreeLattice::stepback OpenMP parallel-for for small tree steps (#2745)

commit 557cf6dbfbe2577bafb08a01a430f3e90646f625
Merge: 8174e99cc 4f9239da7
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 27 Aug 2026 22:57:33 +0200

    Notify observers when an inflation volatility quote changes (#2747)

commit 8174e99cc753033e22df5093482ab7bbe6a83dce
Merge: 3550f84be 07c3aadf6
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 27 Aug 2026 22:52:36 +0200

    Fix NaN from JuQuadraticApproximationEngine at zero risk-free rate (#2739)

commit e5cc000113dc12430f4e6ea4b119f6fdd7c8569c
Author: Advit Arora <advitarora2@gmail.com>
Date:   Thu, 27 Aug 2026 23:01:47 +0530

    Stop dropping a coupon when a callability falls on a coupon date

 .../discretizedcallablefixedratebond.cpp           |  9 +++
 test-suite/callablebonds.cpp                       | 64 ++++++++++++++++++++++
 2 files changed, 73 insertions(+)

commit 4f9239da7cbde0af83e7c5240e87c28a6d1df512
Author: mkzung <103102868+mkzung@users.noreply.github.com>
Date:   Thu, 27 Aug 2026 11:49:14 +0100

    Notify observers when an inflation volatility quote changes

 .../volatility/inflation/constantcpivolatility.cpp |  4 +-
 .../yoyinflationoptionletvolatilitystructure.cpp   |  4 +-
 test-suite/inflationcapfloor.cpp                   | 43 ++++++++++++++++++++++
 test-suite/inflationvolatility.cpp                 | 35 ++++++++++++++++++
 4 files changed, 84 insertions(+), 2 deletions(-)

commit b2ba234934bb7c12bf84a9c2dbaa0885640bed21
Author: Abhayindia <abhaychaudharydps@gmail.com>
Date:   Thu, 27 Aug 2026 20:12:38 +0900

    Guard TreeLattice::stepback OpenMP parallel-for behind a work-size threshold

 ql/methods/lattices/lattice.hpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

commit 3550f84beafc055ffcf115dcd2f6078ddaa8a3fc
Merge: 29707ccfe 2ff28a7ad
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 27 Aug 2026 12:33:11 +0200

    Fix CommodityType parameter order (#2742)

commit 07c3aadf6cad75dfd88b8ac51e4c328eb6a9d922
Author: Chanitha Abeygunawardena <chanitha.abey22@gmail.com>
Date:   Thu, 27 Aug 2026 14:12:38 +0530

    Restore the risk-free rate check lost in the merge
    
    Merging master brought in #2728, which had added
    dividendDiscount >= riskFreeDiscount to the call shortcut so that a call
    with r < q <= 0 reaches the critical-price calculation and its
    negative-rate check. Resolving the conflict kept this branch's rewritten
    condition, which dropped that clause, so the shortcut fired again and
    testBaroneAdesiWhaleyNegativeRates no longer saw the expected exception.
    
    Restore the clause and make the put condition its exact mirror:
    riskFreeDiscount >= dividendDiscount rather than dividendDiscount <= 1.0.
    Both are correct for the null-rate case this branch fixes, but the mirrored
    form matches the reasoning in #2728 and is symmetric with the call.
    
    No test change is needed; the test was right.

 ql/pricingengines/vanilla/juquadraticengine.cpp | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

commit 29707ccfe7adc10d70ac75cf0878d1376845d605
Merge: 7cafe5e4b f1229ae5d
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 27 Aug 2026 10:41:19 +0200

    Add initial `AGENTS.md` and some additional Markdown files (#2498)

commit 79a3004d3cfbd7a163f36cb1434974e71c3fe193
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 27 Aug 2026 10:31:18 +1000

    OvernightIndexedFundingRateHelper

 QuantLib.vcxproj                                   |  12 +-
 QuantLib.vcxproj.filters                           |  18 ++-
 ql/CMakeLists.txt                                  |   2 +
 ql/experimental/termstructures/Makefile.am         |   6 +-
 ql/experimental/termstructures/all.hpp             |   1 +
 .../overnightindexedfundingratehelper.cpp          | 179 +++++++++++++++++++++
 .../overnightindexedfundingratehelper.hpp          | 107 ++++++++++++
 test-suite/CMakeLists.txt                          |   1 +
 test-suite/Makefile.am                             |   1 +
 test-suite/overnightindexedfundingratehelper.cpp   | 171 ++++++++++++++++++++
 test-suite/testsuite.vcxproj                       |   7 +-
 test-suite/testsuite.vcxproj.filters               |  11 +-
 12 files changed, 496 insertions(+), 20 deletions(-)

commit 7cafe5e4b84b3a72a3f6c2f9530ecfb8ca89606a
Merge: 096fcf3d3 e6f6a6cbd
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 26 Aug 2026 22:32:14 +0200

    Fix American call approximations with negative risk-free rates (#2728)

commit 096fcf3d36627700121ad75e6f665d9f5308c91c
Merge: 2a13d4550 16c57eb8f
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 26 Aug 2026 21:46:27 +0200

    Use HTTPS for external links in example and test-suite READMEs (#2744)

commit 16c57eb8f823d87b7c6e8471a0d207e256c988c3
Author: Hei-MaoM <2847944739@qq.com>
Date:   Wed, 26 Aug 2026 22:53:45 +0800

    Fix obsolete discrete hedging paper link

 Examples/DiscreteHedging/DiscreteHedging.cpp | 2 +-
 Examples/README.txt                          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

commit 718d7337bc4294dce43c05248fb1ba8baf5b3dfd
Author: Hei-MaoM <2847944739@qq.com>
Date:   Tue, 25 Aug 2026 21:18:04 +0800

    Use HTTPS for external documentation links

 Examples/README.txt   | 2 +-
 test-suite/README.txt | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

commit 2ff28a7ad4393fa646a34e973ec1123e4ff86d67
Author: mameikagou <mrlonely1226@163.com>
Date:   Mon, 24 Aug 2026 00:00:12 +0800

    Fix CommodityType parameter order
    
    Align the public declaration with the established name-then-code implementation and pin that behavior with a focused test.
    
    Fixes #2740

 ql/experimental/commodities/commoditytype.hpp | 2 +-
 test-suite/commodityunitofmeasure.cpp         | 9 +++++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

commit 8b67dcef9681da995b385e7170a97983b218679f
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 23 Aug 2026 11:42:26 +0200

    reinstate basis point factor

 ql/cashflows/cashflows.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 497668da929ecc5007dfee5187c748ed327d88bb
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 23 Aug 2026 11:20:57 +0200

    add an explanation

 ql/compounding.hpp | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

commit effc98c939efe91d47df86cefb13ad0d04743413
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 23 Aug 2026 11:09:44 +0200

    avoid dynamic casts in visitor

 ql/cashflows/cashflows.cpp | 35 ++++++++++++++---------------------
 1 file changed, 14 insertions(+), 21 deletions(-)

commit 903bdf505b51f92ce95f8fbaaecda689892893bf
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 23 Aug 2026 11:09:25 +0200

    avoid compiler warnings

 ql/cashflows/cashflows.cpp | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

commit 1771f77fe56e77659c32f3af058f32de99b3d399
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 23 Aug 2026 10:51:34 +0200

    fix bps()

 ql/cashflows/cashflows.cpp | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)

commit 0f06e26f96345fe30be90de79f3533b2b65f19d6
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 23 Aug 2026 10:51:09 +0200

    only compute required results

 ql/cashflows/cashflows.cpp | 85 ++++++++++++++++++++++++++--------------------
 1 file changed, 49 insertions(+), 36 deletions(-)

commit cbc5cdc259b30142bbf6010d49ff6e51047f0871
Author: gs-scott-kim <scottkim9909@gmail.com>
Date:   Sun, 23 Aug 2026 06:08:52 +0900

    Remove 2026-09-28 from the South Korean calendar
    
    Chuseok 2026 falls on Friday 25 September, so the holiday runs 24-26
    September and only the last day lands on a weekend, a Saturday. Under
    the Korean holiday decree a substitute day is granted for Seollal and
    Chuseok only when the holiday overlaps a Sunday or another public
    holiday; a Saturday overlap does not create one. The other public
    holidays do get a Saturday substitute, which is why this file already
    carries `w == Monday` rules for Samiljeol, Children's Day, Liberation
    Day, National Foundation Day, Hangeul Day and Christmas, but none for
    Seollal or Chuseok.
    
    That matches the other years widened here: 2018 and 2029 overlap a
    Sunday, 2017 and 2028 overlap National Foundation Day. 2026 was the
    only year widened for a bare Saturday.
    
    KRX published seventeen non-trading days for 2026 and 28 September is
    not among them.

 ql/time/calendars/southkorea.cpp | 2 +-
 test-suite/calendars.cpp         | 2 --
 2 files changed, 1 insertion(+), 3 deletions(-)

commit 034611f788a942eb38c83f6828d5d7c8a2cd6fb9
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sat, 22 Aug 2026 18:35:06 +0200

    some refactoring

 ql/cashflows/cashflows.cpp | 98 +++++++++++-----------------------------------
 ql/interestrate.cpp        | 85 ++++++++++++++++++++++------------------
 ql/interestrate.hpp        | 19 +++++++--
 3 files changed, 85 insertions(+), 117 deletions(-)

commit fd150d06430b5888f36269676670a6a7099cb197
Merge: 726977889 8efe6fb84
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sat, 22 Aug 2026 17:28:14 +0200

    Merge pull request #10 from rich-amaya/gh-2172-yield-fractional-periods
    
    gh-2172 fix bond yield over partial coupon periods

commit 1b04d4bed5d15d4038de639fa52f2fc134ccfccb
Author: Chanitha Abeygunawardena <chanitha.abey22@gmail.com>
Date:   Thu, 20 Aug 2026 23:11:26 +0530

    Fix NaN from JuQuadraticApproximationEngine at zero risk-free rate
    
    When the risk-free rate is exactly 0, the discount factor is 1.0 and both
    alpha and h vanish, so the four quotients that divide by them evaluated to
    0/0 and the engine returned NaN.
    
    Their ratio alpha/h has the finite limit 2/variance -- the same limit that
    BaroneAdesiWhaleyApproximationEngine::criticalPrice already special-cases.
    Each of the other divergent quantities only ever enters the formulas
    multiplied by alpha, so the block is rewritten in terms of alpha/h,
    alpha*lambda_prime and alpha*V_E_h, none of which diverge. In part2,
    alpha/log(riskFreeDiscount) simplifies exactly to -2/variance. The results
    are algebraically unchanged for a non-null rate.
    
    Puts hit a second, unrelated failure at a null rate: early exercise is
    never optimal there, so the critical price is 0, which makes hA vanish and
    log(forwardSk/strike) undefined. The existing "early exercise never
    optimal" branch is extended with the symmetric condition for puts.
    
    Fixes #2737.

 ql/pricingengines/vanilla/juquadraticengine.cpp | 60 ++++++++++++++++++------
 test-suite/americanoption.cpp                   | 62 +++++++++++++++++++++++++
 2 files changed, 107 insertions(+), 15 deletions(-)

commit 2a13d455048c748b9fb5c2ff3bb4f4cf56dfb9a9
Merge: 74f64ce5b e9b55ad88
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 20 Aug 2026 19:04:30 +0200

    Ibor-Overnight margin leg choice (#2735)

commit e9b55ad88e890c23747d2f93c30fbdd0ca51de2a
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 20 Aug 2026 21:47:47 +1000

    Fixing up a unit test

 test-suite/basisswapratehelpers.cpp | 134 ++++++++++++------------------------
 1 file changed, 45 insertions(+), 89 deletions(-)

commit dfe1caf284397d5a4a173438cdcde9ca6aea46de
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 20 Aug 2026 17:46:33 +1000

    Including in the project file

 QuantLib.vcxproj         | 2 ++
 QuantLib.vcxproj.filters | 6 ++++++
 2 files changed, 8 insertions(+)

commit 81f3194f33ca8d9fdfe41e5be4db0cfe7264cf87
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 20 Aug 2026 16:57:52 +1000

    weightediborindex

 ql/CMakeLists.txt                |   2 +
 ql/cashflows/iborcoupon.cpp      |  98 ++++++++++++++++++++++----------
 ql/cashflows/iborcoupon.hpp      |  76 +++++++++++++++----------
 ql/indexes/Makefile.am           |   6 +-
 ql/indexes/all.hpp               |   1 +
 ql/indexes/weightediborindex.cpp | 118 +++++++++++++++++++++++++++++++++++++++
 ql/indexes/weightediborindex.hpp |  80 ++++++++++++++++++++++++++
 7 files changed, 320 insertions(+), 61 deletions(-)

commit 74f64ce5b2493803798565724a71ead8c2aaf51d
Merge: 661619d4c 193cfa203
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 20 Aug 2026 08:37:44 +0200

    Document the meaning of seed = 0 in `SobolRsg`, `HaltonRsg` and `RandomSequenceGenerator` (#2738)

commit 193cfa2030e6d70c967e3b11f507b866e2dc7d06
Author: Advit Arora <advitarora2@gmail.com>
Date:   Thu, 20 Aug 2026 02:53:23 +0530

    Document what seed 0 means for SobolRsg, HaltonRsg and RandomSequenceGenerator

 ql/math/randomnumbers/haltonrsg.hpp               | 3 +++
 ql/math/randomnumbers/randomsequencegenerator.hpp | 2 ++
 ql/math/randomnumbers/sobolrsg.hpp                | 4 ++++
 3 files changed, 9 insertions(+)

commit 8efe6fb844628f21947f88af6485c2472774ce1d
Author: rich-amaya <richard.amaya@mac.com>
Date:   Tue, 18 Aug 2026 19:34:42 -0500

    gh-2172 fix bond yield over partial coupon periods
    
    Use the right compounding over short first and final periods, and make
    duration and convexity match the price they come from. Adds tests for
    long first coupons, quasi-periods, and late redemption.

 ql/cashflows/cashflows.cpp | 307 ++++++++++++++++++++++++---------------------
 test-suite/bonds.cpp       | 289 +++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 451 insertions(+), 145 deletions(-)

commit 661619d4cf2b01f1c825996278d6f97d2752787d
Merge: d6304a857 8d68e3011
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 18 Aug 2026 20:13:04 +0200

    Remove misleading comment (#2734)

commit a6a71fe2526ba506894876ffc5f505923ce6f6f1
Author: kp9991 <kp9991@gmail.com>
Date:   Tue, 18 Aug 2026 16:17:30 +1000

    Bool constructor argument basisOnIborLeg

 .../termstructures/basisswapratehelpers.cpp        |   8 +-
 .../termstructures/basisswapratehelpers.hpp        |   7 +-
 test-suite/basisswapratehelpers.cpp                | 116 +++++++++++++++++++++
 3 files changed, 127 insertions(+), 4 deletions(-)

commit 8d68e3011f5d514ec3008cc04b020f1f2a322a92
Author: cuiyeshuai <cuiyeshuai@gmail.com>
Date:   Mon, 17 Aug 2026 21:09:26 +0100

    Remove redundant swap leg-order comment

 ql/pricingengines/swap/cvaswapengine.cpp | 2 --
 1 file changed, 2 deletions(-)

commit d6304a8571653a6ef7eaae0eec73830f6bd02625
Merge: 36614fc49 8000ea6b1
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 17 Aug 2026 15:24:45 +0200

    OvernightOvernightBasisSwapRateHelper  (#2700)

commit 36614fc496e69547636ee43d657d3e717df88fc4
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Sun, 16 Aug 2026 01:51:55 +0000

    Automated fixes by clang-tidy

 ql/math/randomnumbers/zigguratgaussianrng.hpp    | 5 +++--
 ql/termstructures/yield/impliedtermstructure.hpp | 6 +++---
 2 files changed, 6 insertions(+), 5 deletions(-)

commit 0e2f9c314a3cffdce3c5fe34a672a7b1e7bab556
Author: Yeshuai Cui <cuiyeshuai@gmail.com>
Date:   Sun, 16 Aug 2026 14:26:52 +0100

    Fix CVA swap leg-order comment

 ql/pricingengines/swap/cvaswapengine.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit f0521d3df88fc19344650437bee8c455626eddcc
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 16 Aug 2026 15:04:19 +1000

    Fix for GitHub actions failure

 test-suite/basisswapratehelpers.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit 0ece3f8e76be146bd79694fdf57f66491814d328
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 16 Aug 2026 13:16:50 +1000

    Fix for mac os build failure

 test-suite/cashflows.cpp | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

commit fa770645bbdbec1b1e344821ab6a089cbe59103b
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 16 Aug 2026 12:51:14 +1000

    Removing stale comment

 ql/experimental/termstructures/crosscurrencyratehelpers.hpp | 2 --
 1 file changed, 2 deletions(-)

commit 430fc2417b8555a0a25eed489dca6b6a451ba77b
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 16 Aug 2026 10:51:44 +1000

    Extending to all floating legs

 ql/experimental/fx/mtmcrosscurrencybasisswap.cpp   |   6 +-
 ql/experimental/fx/mtmcrosscurrencybasisswap.hpp   |   9 +-
 .../termstructures/basisswapratehelpers.cpp        |  25 +++-
 .../termstructures/basisswapratehelpers.hpp        |   9 +-
 .../termstructures/crosscurrencyratehelpers.cpp    |  39 ++++--
 .../termstructures/crosscurrencyratehelpers.hpp    |  23 ++-
 .../constnotionalcrosscurrencybasisswap.cpp        |   7 +-
 .../constnotionalcrosscurrencybasisswap.hpp        |   6 +-
 ...nstnotionalcrosscurrencyfixedvsfloatingswap.cpp |   8 +-
 ...nstnotionalcrosscurrencyfixedvsfloatingswap.hpp |  10 +-
 test-suite/basisswapratehelpers.cpp                |  62 ++++++++
 test-suite/crosscurrencyratehelpers.cpp            | 156 +++++++++++++++++++++
 12 files changed, 329 insertions(+), 31 deletions(-)

commit 2fff3b1b6eec0e9fa320c5d29db15e71b578ade8
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 16 Aug 2026 08:18:35 +1000

    Refactor StubIborCoupon constructor

 ql/cashflows/iborcoupon.cpp | 113 ++++++++++++++++++++++++--------------------
 ql/cashflows/iborcoupon.hpp |   1 +
 test-suite/cashflows.cpp    |   1 +
 3 files changed, 63 insertions(+), 52 deletions(-)

commit d11f91c92172f8d195cc6d485b10f8d5007f5eb8
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 16 Aug 2026 08:06:33 +1000

    StubIndexConfig is now a class

 ql/cashflows/iborcoupon.cpp                        | 28 ++++++++++--------
 ql/cashflows/iborcoupon.hpp                        | 33 ++++++++++++++++------
 ql/experimental/fx/mtmcrosscurrencybasisswap.cpp   |  2 --
 .../termstructures/basisswapratehelpers.cpp        |  5 ++--
 .../termstructures/crosscurrencyratehelpers.cpp    |  4 +--
 .../constnotionalcrosscurrencybasisswap.cpp        |  2 --
 test-suite/cashflows.cpp                           | 13 +++++++++
 7 files changed, 57 insertions(+), 30 deletions(-)

commit 1f5732b6712e22d53fb8ea7d390f230d853fbb2e
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 16 Aug 2026 06:52:07 +1000

    Renaming, extending to ConstNotionalCrossCurrencyBasisSwap

 ql/cashflows/iborcoupon.cpp                        | 82 +++++++++---------
 ql/cashflows/iborcoupon.hpp                        | 55 +++++++-----
 ql/experimental/fx/mtmcrosscurrencybasisswap.cpp   | 10 +--
 ql/experimental/fx/mtmcrosscurrencybasisswap.hpp   | 12 +--
 .../termstructures/basisswapratehelpers.cpp        | 18 +++-
 .../termstructures/basisswapratehelpers.hpp        | 12 ++-
 .../termstructures/crosscurrencyratehelpers.cpp    | 40 +++++----
 .../termstructures/crosscurrencyratehelpers.hpp    | 22 +++--
 .../constnotionalcrosscurrencybasisswap.cpp        |  9 +-
 .../constnotionalcrosscurrencybasisswap.hpp        | 10 ++-
 test-suite/basisswapratehelpers.cpp                | 66 +++++++++++++++
 test-suite/cashflows.cpp                           | 59 ++++++++-----
 test-suite/crosscurrencyratehelpers.cpp            | 97 ++++++++++++++++++++--
 13 files changed, 362 insertions(+), 130 deletions(-)

commit 5e447e194540b661f725c77fdd25d4926fe4f3c8
Author: mkzung <103102868+mkzung@users.noreply.github.com>
Date:   Sat, 15 Aug 2026 04:00:31 +0500

    Fix binomial trees silently returning zero or NaN prices
    
    Four of the seven trees in binomialtree.cpp built themselves from
    parameters they never checked.
    
    AdditiveEQPBinomialTree takes the square root of 4*variance - 3*drift^2
    per step. When the drift dominates, the radicand is negative and every
    node of the tree is NaN, which rolls back to a price of zero.
    
    LeisenReimer divides by the Peizer-Pratt inversion of d2. That inversion
    computed 0.5 - sqrt(0.25*(1-exp(-x))), which cancels to exactly zero once
    exp(-x) falls below machine epsilon, so the up and down steps became
    0.0/0.0. Writing the small branch as 0.5*exp(-x)/(1+sqrt(1-exp(-x)))
    keeps its relative accuracy and extends the usable range of the tree by
    several hundred standard deviations.
    
    Joshi4 computes its up probability from a truncated asymptotic expansion
    that is unbounded in d2, and can return values of order 1e6.
    
    Check the radicand and the up probability in the same way that
    CoxRossRubinstein, Trigeorgis and Tian already check theirs. The trees in
    ql/experimental/lattices carry the same code and get the same checks.

 ql/experimental/lattices/extendedbinomialtree.cpp |  11 ++-
 ql/math/distributions/binomialdistribution.hpp    |   8 +-
 ql/methods/lattices/binomialtree.cpp              |  11 ++-
 test-suite/europeanoption.cpp                     | 103 ++++++++++++++++++++++
 4 files changed, 125 insertions(+), 8 deletions(-)

commit e6f6a6cbdbc4fba5f2c3f066467d8a814e50dc0a
Author: mkzung <103102868+mkzung@users.noreply.github.com>
Date:   Sat, 15 Aug 2026 03:48:11 +0500

    Check the risk-free rate before skipping early exercise
    
    The Barone-Adesi-Whaley and Ju quadratic engines returned the European
    value for any call with a non-positive dividend yield. With a negative
    risk-free rate below that yield, early exercise of the call is optimal
    and the returned value falls below intrinsic. Require the dividend
    discount factor to be at least the risk-free one, as the
    Bjerksund-Stensland engine already does, so that these inputs reach the
    critical-price calculation and its negative-rate check.

 .../vanilla/baroneadesiwhaleyengine.cpp             |  3 ++-
 ql/pricingengines/vanilla/juquadraticengine.cpp     |  3 ++-
 test-suite/americanoption.cpp                       | 21 +++++++++++++++++++++
 3 files changed, 25 insertions(+), 2 deletions(-)

commit 9384002c7ac1bb41c8293ef1b37996ce0a958c86
Author: kp9991 <kp9991@gmail.com>
Date:   Sat, 15 Aug 2026 17:24:59 +1000

    Simplification

 ql/cashflows/iborcoupon.cpp | 62 ++++++++++++++++++++-------------------------
 1 file changed, 28 insertions(+), 34 deletions(-)

commit d9fd0d9b19ce0cd21198cbb17bb298f28a20403f
Author: kp9991 <kp9991@gmail.com>
Date:   Sat, 15 Aug 2026 16:57:29 +1000

    Overriding hasFixed

 ql/cashflows/iborcoupon.cpp | 34 +++++++++++++++++++++++++++------
 ql/cashflows/iborcoupon.hpp |  9 ++++++++-
 test-suite/cashflows.cpp    | 46 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 82 insertions(+), 7 deletions(-)

commit 40d209ec39505377d0dc829f02cf5528df7f33c2
Author: kp9991 <kp9991@gmail.com>
Date:   Sat, 15 Aug 2026 11:33:28 +1000

    Restoring userconfig

 ql/userconfig.hpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit bb0509e7805d5fd4ccfa4d0dccde7812a254c4a7
Author: kp9991 <kp9991@gmail.com>
Date:   Fri, 14 Aug 2026 22:49:25 +1000

    Broken index config

 ql/experimental/fx/mtmcrosscurrencybasisswap.cpp   |  9 +-
 ql/experimental/fx/mtmcrosscurrencybasisswap.hpp   | 12 ++-
 .../termstructures/crosscurrencyratehelpers.cpp    | 11 ++-
 .../termstructures/crosscurrencyratehelpers.hpp    |  8 +-
 ql/userconfig.hpp                                  |  2 +-
 test-suite/crosscurrencyratehelpers.cpp            | 96 ++++++++++++++++++++++
 6 files changed, 130 insertions(+), 8 deletions(-)

commit 8000ea6b113551f6ad4551602ea1eae175210958
Author: kp9991 <kp9991@gmail.com>
Date:   Fri, 14 Aug 2026 21:03:48 +1000

    Alignment to other XCCY helpers

 .../termstructures/basisswapratehelpers.cpp        |  63 ++++---
 .../termstructures/basisswapratehelpers.hpp        |  32 +++-
 test-suite/basisswapratehelpers.cpp                | 201 ++++++++++++++++++++-
 3 files changed, 257 insertions(+), 39 deletions(-)

commit d81cfa91a2ecde5b334421d800bb2f293d5bcd73
Merge: 23de595d2 b9a397931
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 14 Aug 2026 10:47:47 +0200

    Stop overnight-index future accrual at holiday maturity (#2726)

commit 23de595d24a34fe2db2302ae1be2ba2e4ea6a485
Merge: db577851d 7a641b8a2
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 14 Aug 2026 10:41:30 +0200

    More conventions for const-notional XCCY swap and helper (#2723)

commit db577851da914b51c2cfe04ee0699f61ea37cb82
Merge: 666edd6a9 625dabbf4
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 14 Aug 2026 09:54:10 +0200

    OvernightIborBasisSwapRateHelper (#2696)

commit 666edd6a94a26f377b046aecb28c8ce51713b112
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Thu, 13 Aug 2026 14:24:47 +0000

    Sync qldefines.hpp.cfg with original header

 ql/qldefines.hpp.cfg | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

commit 080eb6924638fe232ee152fb6e4a1c094aa0f343
Merge: e6c0b3e91 14e297c50
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 13 Aug 2026 16:02:07 +0200

    Pseudo-deprecate `QL_DEPRECATED` (#2725)

commit f1229ae5df27fae0a6111527810040734d1220ea
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Thu, 13 Aug 2026 15:56:46 +0200

    Keep only instructions in AGENTS.md, drop the repository overviews
    
    Follow-up to @lballabio's pointer to Gloaguen et al., "Evaluating AGENTS.md"
    (arXiv:2602.11988). Across SWE-bench and a benchmark built from repositories
    carrying developer-written context files, agents reliably followed the
    instructions in those files, but repository overviews did not improve their
    results — while the files raised inference cost by over 20%. Since AGENTS.md
    is loaded on every session, its overview-shaped content was paying that cost
    for no measurable benefit.
    
    Removed:
    
    - the ql/ module map from .agents/architecture.md
    - the "Quick Reference" file list from AGENTS.md; every entry was either
      discoverable by name or already cited where it mattered
    - the project snapshot, in favour of the two constraints a change can
      actually get wrong: the C++17 baseline and the three build systems in CI
    
    Reshaped:
    
    - "Core Abstractions" dissolved into the lazy-evaluation pitfalls, which
      already covered the same ground; the rules that survive are the ones that
      fail silently, and the rest moved to .agents/architecture.md
    - maintenance guidance moved to .agents/maintaining-agent-docs.md, together
      with the reasoning above. It is only needed when editing the guides, and
      leaving its citation in AGENTS.md invited an agent to fetch a paper in the
      middle of an unrelated task. AGENTS.md now has no external links at all.
    
    AGENTS.md drops from 193 to 169 lines.
    
    Also corrects the SavedSettings advice: TopLevelFixture already holds one,
    so test cases do not need their own.
    
    Addresses https://github.com/lballabio/QuantLib/pull/2498#issuecomment-5278190716
    and https://github.com/lballabio/QuantLib/pull/2498#discussion_r3775676090
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 .agents/README.md                 |   8 ++-
 .agents/architecture.md           |  37 +----------
 .agents/maintaining-agent-docs.md |  57 ++++++++++++++++
 AGENTS.md                         | 134 ++++++++++++++++----------------------
 4 files changed, 121 insertions(+), 115 deletions(-)

commit b9a397931c5f1c70a0055ef72bd0c86ce835e1a5
Author: Amit Jha <jha.8@iitj.ac.in>
Date:   Thu, 13 Aug 2026 19:21:12 +0530

    Stop overnight-future accrual at maturity

 ql/instruments/overnightindexfuture.cpp |  5 +++--
 test-suite/sofrfutures.cpp              | 34 +++++++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+), 2 deletions(-)

commit e6c0b3e91c9f0306f8d5f54c9e0f477aae35c858
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 13 Aug 2026 09:31:24 +0200

    Upgrade CI builds to Boost 1.92

 .github/workflows/cmake-latest-runners.yml |  4 ++--
 .github/workflows/cmake.yml                | 12 ++++++------
 .github/workflows/msvc-all-configs.yml     |  4 ++--
 .github/workflows/msvc-analysis.yml        |  4 ++--
 .github/workflows/msvc-nondefault.yml      |  4 ++--
 .github/workflows/msvc.yml                 |  4 ++--
 6 files changed, 16 insertions(+), 16 deletions(-)

commit 7a641b8a27088fc6e4c66ae812a62829b2229acd
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 13 Aug 2026 10:46:26 +1000

    paymentLagOnNotionalExchanges

 .../termstructures/crosscurrencyratehelpers.cpp    | 34 +++++++++++++++-------
 .../termstructures/crosscurrencyratehelpers.hpp    | 18 +++++++++---
 .../constnotionalcrosscurrencybasisswap.cpp        | 10 +++++--
 .../constnotionalcrosscurrencybasisswap.hpp        | 12 ++++++--
 ql/instruments/crosscurrencyswap.cpp               | 17 +++++++----
 ql/instruments/crosscurrencyswap.hpp               |  3 +-
 6 files changed, 66 insertions(+), 28 deletions(-)

commit aa5c5bd19cefda192f4f778e7b4c8b9d708d6269
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Wed, 12 Aug 2026 20:20:38 +0200

    Note that agents can dispatch the non-PR CI matrices themselves
    
    Correct the CI section of `.agents/build-and-test.md`: it claimed an agent
    cannot run `linux-nondefault`, `linux-full-tests`, `msvc-nondefault` and
    `cmake-latest-runners` and must ask the maintainer. All four accept
    `workflow_dispatch`, so an agent can trigger them with `gh` in the
    contributor's fork — sparingly, since they are long running, and only after
    explicit approval rather than on its own initiative.
    
    Also remark that the non-default settings can be exercised locally instead,
    via the `./configure` flags, the matching `QL_*` CMake variables, or the
    `.ci/*.props` files for MSVC.
    
    Addresses https://github.com/lballabio/QuantLib/pull/2498#discussion_r3767455985
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 .agents/build-and-test.md | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

commit 14e297c5063aeb0990e073fbdac60f2da3136ea0
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 12 Aug 2026 15:44:54 +0200

    Pseudo-deprecate QL_DEPRECATED
    
    It's not possible to deprecate a macro; the deprecation is
    only documented in Doxygen.

 ql/qldefines.hpp | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

commit 66bc24435ce0d6e56d44d907abb18aad17648448
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 12 Aug 2026 16:33:56 +0200

    Update Doxygen configuration

 Docs/quantlib.doxy       | 12 ++++++++++--
 Docs/quantlibextra.css   |  6 +++---
 Docs/quantlibfooter.html | 10 ++++------
 Docs/quantlibheader.html | 40 ++++++++++++++++++++++++++++++++--------
 4 files changed, 49 insertions(+), 19 deletions(-)

commit 9f3483bd4859d42c697b48b3b9a5a1a53e0f6073
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Wed, 12 Aug 2026 16:08:51 +0200

    Address review feedback on AGENTS.md / .agents guides
    
    Follow-up to @lballabio's review on #2498:
    
    - Drop the "Header Metadata" block from AGENTS.md; it would not stay
      up to date.
    - Drop the per-file listing under ql/cashflows/ in the module map,
      matching how the other directories are described.
    - Use [[deprecated("message")]] everywhere and mark QL_DEPRECATED as
      legacy: the VC++2015 constructor workaround is obsolete since the
      move to C++17.
    - Prefer moving to the replacement API over suppressing deprecation
      warnings, and only suppress where that is not possible.
    - Document that deprecating a data member can trigger a deprecation
      warning for the (even implicit) destructor, and how to work around
      it with an explicit defaulted destructor.
    - Clarify that CMake is recommended for agents, not the project's
      preferred build system; all three build systems run in CI.
    - Spell out that the non-default CI matrices never run on pull
      requests and have to be triggered on GitHub.

 .agents/architecture.md   |  9 ---------
 .agents/build-and-test.md | 14 ++++++++++++--
 .agents/deprecation.md    | 34 ++++++++++++++++++++++++++--------
 AGENTS.md                 | 10 ++--------
 4 files changed, 40 insertions(+), 27 deletions(-)

commit be40637de595351dbecb1ad1e81253c6a97142a7
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Wed, 12 Aug 2026 14:54:35 +0200

    Split task-specific guidance out of AGENTS.md into .agents/
    
    AGENTS.md is loaded into an agent's context at the start of every session,
    so it should hold only what is needed every time. Move the material that is
    task-specific into .agents/, and leave references in AGENTS.md so agents
    load a guide on demand.
    
    Moved out:
    
      .agents/architecture.md          instrument/engine lifecycle, cash-flow
                                       hierarchy, design patterns, module map
      .agents/build-and-test.md        build options, configure flags, test
                                       invocations, CI workflow map
      .agents/registering-new-files.md CMake/Autotools/VS file lists
      .agents/extending-quantlib.md    new instrument/term structure/calendar
      .agents/deprecation.md           deprecation mechanics and checklist
    
    AGENTS.md keeps the project snapshot, core abstractions, coding conventions,
    a build/test quick start, the pitfalls, the validation checklist, and a
    table pointing at the guides. It drops from 470 to 199 lines.
    
    .agents/README.md records why a plain directory of Markdown was chosen over
    a vendor-specific mechanism.
    
    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

 .agents/README.md                |  40 ++++
 .agents/architecture.md          | 135 ++++++++++++
 .agents/build-and-test.md        | 105 ++++++++++
 .agents/deprecation.md           |  36 ++++
 .agents/extending-quantlib.md    |  38 ++++
 .agents/registering-new-files.md |  66 ++++++
 AGENTS.md                        | 434 ++++++++-------------------------------
 7 files changed, 502 insertions(+), 352 deletions(-)

commit 75eb30af911829d1f6dfbbf14bfa65a514a8faed
Merge: a6e82a92b 744329456
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 12 Aug 2026 12:50:19 +0200

    Add DerivedYieldTermStructure helper classes (#2715)

commit a6e82a92bab014a8bb1e5eba1fe548d8b07aef96
Merge: e72566914 98396d65f
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 12 Aug 2026 12:43:19 +0200

    Fix wedge acceptance test in ZigguratGaussianRng (#2722)

commit e7256691449114083e03c488e12bea498500a1cd
Merge: 7396185b8 6cb2ec6b2
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 12 Aug 2026 12:42:09 +0200

    Rfr caplet vol bootstrapping (#2705)

commit 6ba56d11f54e9556133a22f047702f2edd4a600e
Author: kp9991 <kp9991@gmail.com>
Date:   Wed, 12 Aug 2026 08:22:08 +1000

    Exposing floatPaymentFrequency

 .../termstructures/crosscurrencyratehelpers.cpp    | 23 ++++------
 .../termstructures/crosscurrencyratehelpers.hpp    | 10 ++++-
 test-suite/crosscurrencyratehelpers.cpp            | 50 +++++++++++++++++++++-
 3 files changed, 66 insertions(+), 17 deletions(-)

commit 98b73c4e03b329932c68f454c28d330f32308135
Author: kp9991 <kp9991@gmail.com>
Date:   Wed, 12 Aug 2026 07:17:35 +1000

    comment

 ql/experimental/termstructures/crosscurrencyratehelpers.hpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

commit 45c0a6c429f43335716c3d8e26531a66c706fa8b
Author: kp9991 <kp9991@gmail.com>
Date:   Wed, 12 Aug 2026 07:16:49 +1000

    Using a single convention

 .../termstructures/crosscurrencyratehelpers.cpp    | 48 ++++--------
 .../termstructures/crosscurrencyratehelpers.hpp    | 43 +----------
 test-suite/crosscurrencyratehelpers.cpp            | 89 ++--------------------
 3 files changed, 27 insertions(+), 153 deletions(-)

commit 0e408067f4fecf3919d7164af73840ecc4b70f3d
Author: kp9991 <kp9991@gmail.com>
Date:   Wed, 12 Aug 2026 06:42:37 +1000

    floatingLegConvention driving both legs

 .../termstructures/crosscurrencyratehelpers.cpp    |  40 ++++--
 .../termstructures/crosscurrencyratehelpers.hpp    |  44 ++++++-
 test-suite/crosscurrencyratehelpers.cpp            | 136 +++++++++++++++++++--
 3 files changed, 192 insertions(+), 28 deletions(-)

commit 7443294569d44c1fa87a8703cbcff1f93f822f73
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Wed, 5 Aug 2026 15:43:52 -0400

    Add DerivedYieldTermStructure helper classes
    
    Factor out common code from multiple derived term structure classes
    (mostly spreaded curves) into two common classes:
    
    * DerivedYieldTermStructure for term structures that have their own
      referenceDate
    * RelativeDerivedYieldTermStructure for term structures that forward
      referenceDate from the underlying term structure

 QuantLib.vcxproj                                   |   1 +
 QuantLib.vcxproj.filters                           |   3 +
 ql/CMakeLists.txt                                  |   1 +
 ql/termstructures/yield/Makefile.am                |   1 +
 ql/termstructures/yield/all.hpp                    |   1 +
 ql/termstructures/yield/derivedtermstructure.hpp   | 120 +++++++++++++++++++++
 .../yield/forwardspreadedtermstructure.hpp         |  61 +----------
 ql/termstructures/yield/impliedtermstructure.hpp   |  42 ++------
 .../piecewiseforwardspreadedtermstructure.hpp      |  48 ++-------
 .../yield/piecewisezerospreadedtermstructure.hpp   |  49 ++-------
 ql/termstructures/yield/spreaddiscountcurve.hpp    |  65 +++--------
 .../yield/ultimateforwardtermstructure.hpp         |  48 +--------
 .../yield/zerospreadedtermstructure.hpp            |  62 +----------
 ql/termstructures/yieldtermstructure.cpp           |  24 ++---
 14 files changed, 190 insertions(+), 336 deletions(-)

commit 7396185b83e7c5860c03953ce9cdd0175df6a9aa
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 11 Aug 2026 15:13:45 +0200

    Move cleaning of exchange rates in the common test fixture

 test-suite/crosscurrencyratehelpers.cpp  |  7 +------
 test-suite/exchangerate.cpp              |  3 ---
 test-suite/money.cpp                     |  2 --
 test-suite/mtmcrosscurrencybasisswap.cpp | 13 -------------
 test-suite/toplevelfixture.hpp           |  2 ++
 5 files changed, 3 insertions(+), 24 deletions(-)

commit 98396d65f654eb0e59df09231d04ec42a5319bc6
Author: Jose Moya <jlmoya@gmail.com>
Date:   Tue, 11 Aug 2026 06:01:12 -0600

    Harden the wedge test helper and name the acceptance-test locals
    
    Both points from review.
    
    drawFor() silently produced the wrong encoding for out-of-range inputs.
    A layer of 256 or more aliases through `r & 0xff` -- 256 decodes as
    layer 0, which is the tail case, not a wedge -- and u = 1 rounds the
    bucket up to 2^53, whose shift by 11 overflows to zero and decodes back
    as u = -1. Both call sites are in range, so no behaviour changes here,
    but a test helper that silently encodes a different draw than the one
    requested is the wrong thing to leave lying around. Preconditions now
    reject both cases, the 2^53 constant comes from std::ldexp rather than
    a conversion from 1ULL << 53, and a post-check guards the shift.
    
    In nextReal(), the acceptance test evaluated normF(i + 1) twice inside
    a dense inequality. normF and normX are pure and nextReal() is called
    once either way, so lifting the three values into named locals is
    behaviour-preserving; it drops the redundant lookup and makes the
    inequality read as the formula does, in the one expression that
    harboured the precedence bug.
    
    Verified: testWedgeDrawIsAccepted still fails when the original
    parenthesis placement is reintroduced, so hardening the helper has not
    weakened what the test detects. testStatisticsOfNextReal still passes.
    
    Signed-off-by: Jose Moya <jlmoya@gmail.com>

 ql/math/randomnumbers/zigguratgaussianrng.hpp |  9 ++++++++-
 test-suite/zigguratgaussian.cpp               | 18 +++++++++++++++---
 2 files changed, 23 insertions(+), 4 deletions(-)

commit 625dabbf43252fee25a79cafbd75b697d50e7b53
Author: kp9991 <kp9991@gmail.com>
Date:   Tue, 11 Aug 2026 21:41:10 +1000

    Removing iborPaymentFrequency

 ql/experimental/termstructures/basisswapratehelpers.cpp |  8 +++-----
 ql/experimental/termstructures/basisswapratehelpers.hpp |  8 +++-----
 test-suite/basisswapratehelpers.cpp                     | 16 +++++++++-------
 3 files changed, 15 insertions(+), 17 deletions(-)

commit 6cb2ec6b2ce2ee551e9ec008294fe24cb7e40604
Author: kp9991 <kp9991@gmail.com>
Date:   Tue, 11 Aug 2026 21:23:00 +1000

    Post-code review

 .../volatility/optionlet/optionletstripper.cpp     | 18 ++++--
 .../volatility/optionlet/optionletstripper1.cpp    | 10 ++--
 .../volatility/optionlet/optionletstripper2.cpp    | 69 +++++++++-------------
 .../volatility/optionlet/optionletstripper2.hpp    | 13 ----
 test-suite/optionletstripper.cpp                   | 17 +++++-
 5 files changed, 60 insertions(+), 67 deletions(-)

commit 20f3989747ea2b073d5b68da3b6138f9ca6491a5
Author: Jose Moya <jlmoya@gmail.com>
Date:   Tue, 11 Aug 2026 05:08:35 -0600

    Fix wedge acceptance test in ZigguratGaussianRng
    
    The Marsaglia-Tsang wedge acceptance test in nextReal() has a misplaced
    closing parenthesis:
    
        normF(i + 1) + (normF(i) - normF(i + 1) * u) < pdf(x)
    
    so the uniform draw scales only normF(i + 1) instead of the whole
    difference normF(i) - normF(i + 1). It should read
    
        normF(i + 1) + (normF(i) - normF(i + 1)) * u < pdf(x)
    
    Effect: the wedge is accepted far too rarely. Over 2,000,000 draws that
    actually reach the wedge test -- Monte Carlo over the generator's own
    sampling measure -- acceptance is 1.79% where the correct test gives
    54.52%, roughly a 30x deficit. Rejected draws are re-drawn, so the
    generated stream under-weights the wedge region between normX(i + 1) and
    normX(i) at every layer.
    
    The aggregate distortion is small. A Kolmogorov-Smirnov test against the
    standard normal CDF at n = 1,000,000 fails to reject in both cases
    (D = 0.00164 before, 0.00135 after, 99.9% critical value 0.00195), and
    the existing moment-based test passes either way. That is why this was
    not caught.
    
    The regression test added here is therefore deterministic rather than
    statistical. ZigguratGaussianRng is a template over its uniform source,
    so a scripted RNG can drive one exact draw: layer 1 with x = 3.5, inside
    the wedge spanning normX(2) = 3.449278 to normX(1) = 3.654153, and
    u = 0.5. The correct test accepts that draw by a margin of 2.5e-04; the
    shipped test rejects it by 3.8e-04 and falls through to the following
    draw, which the test distinguishes by value.
    
    Signed-off-by: Jose Moya <jlmoya@gmail.com>

 ql/math/randomnumbers/zigguratgaussianrng.hpp |  2 +-
 test-suite/zigguratgaussian.cpp               | 95 +++++++++++++++++++++++++++
 2 files changed, 96 insertions(+), 1 deletion(-)

commit 701f177487ee8a1c269a57a1e1465f616d39a341
Merge: fad176cb3 3e6d7fe67
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 11 Aug 2026 13:04:07 +0200

    Adds Lifted (Multi-Factor Markovian) Approximation Route for the Rough Heston Riccati Equation (#2709)

commit 3e6d7fe6738c80ed4653feeec98c91f91635f094
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 11 Aug 2026 11:41:56 +0200

    No need to break lines at 80 characters, 100 or even 120 is ok.

 test-suite/roughhestonmodel.cpp | 60 ++++++++++++++---------------------------
 1 file changed, 20 insertions(+), 40 deletions(-)

commit bb6cfb1d87afcb34979036c05ae3dd75579cb633
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 11 Aug 2026 11:39:29 +0200

    Hide from Doxygen internal functions and docs in cpp files

 ql/math/ode/fractionalkernelapproximation.hpp           | 2 +-
 ql/pricingengines/vanilla/analyticroughhestonengine.cpp | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

commit fad176cb3e4f19b58a84bdb7ef89097f9f40f837
Merge: a289c645d 9461a059f
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 10 Aug 2026 16:06:41 +0200

    Guard zero leg BPS in FixedVsFloatingSwap fair rate and spread (#2690)

commit a289c645d334e1e21528f4e0db816cc443a285eb
Merge: 3cf1a861a 4d482c395
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 10 Aug 2026 16:04:02 +0200

    Guard zero leg BPS in CPI and YoY inflation swap fair values (#2692)

commit 3cf1a861abddf69fc3df595ef5ee89e27a1d84f7
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 10 Aug 2026 13:07:41 +0200

    Fix or silence a few warnings clang-tidy can't autofix

 ql/time/calendars/southafrica.cpp        | 2 --
 ql/utilities/clone.hpp                   | 3 ++-
 test-suite/array.cpp                     | 4 ++--
 test-suite/crosscurrencyratehelpers.cpp  | 4 ++--
 test-suite/mtmcrosscurrencybasisswap.cpp | 9 +++++----
 5 files changed, 11 insertions(+), 11 deletions(-)

commit deaf4f9e885579358ec2afa65217b697b61dcd2b
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 10 Aug 2026 09:50:48 +0200

    Fix double move added by clang-tidy

 ql/experimental/termstructures/crosscurrencyratehelpers.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit bb9042a11ae1445055aeb52213150a7ab8bcac99
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Sun, 9 Aug 2026 01:34:15 +0000

    Automated fixes by clang-tidy

 ql/experimental/fx/fxresetcashflows.cpp                     | 4 ++--
 ql/experimental/fx/fxresetcashflows.hpp                     | 2 +-
 ql/experimental/fx/mtmcrosscurrencybasisswap.cpp            | 2 +-
 ql/experimental/fx/mtmcrosscurrencybasisswap.hpp            | 4 ++--
 ql/experimental/termstructures/crosscurrencyratehelpers.cpp | 2 +-
 ql/pricingengines/bond/discretizedconvertible.cpp           | 2 +-
 ql/pricingengines/bond/discretizedconvertible.hpp           | 2 +-
 7 files changed, 9 insertions(+), 9 deletions(-)

commit bd25397b6bbd799d4353344bbd50e7bd65e340b7
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 9 Aug 2026 07:51:11 +1000

    Supplying conventions for both legs

 .../termstructures/crosscurrencyratehelpers.cpp    | 14 ++++++----
 .../termstructures/crosscurrencyratehelpers.hpp    |  9 ++++++-
 test-suite/crosscurrencyratehelpers.cpp            | 31 ++++++++++++++++++++++
 3 files changed, 48 insertions(+), 6 deletions(-)

commit 4d482c395e093548e28957cb0d170a7d39b8225d
Author: PureSaber <Topquack@protonmail.com>
Date:   Fri, 7 Aug 2026 09:37:42 +0800

    Fix CPI and YoY zero-BPS tests for CI
    
    Use single-date CPISwap setup without float fixings; link YoY inflation term structure in YoY swap tests.
    
    Co-authored-by: Cursor <cursoragent@cursor.com>

 test-suite/inflation.cpp        |  15 ++++++
 test-suite/inflationcpiswap.cpp | 102 +++++++++++++---------------------------
 2 files changed, 47 insertions(+), 70 deletions(-)

commit 78b7a5b79d86172e348f950e538260f77162e100
Author: PureSaber <Topquack@protonmail.com>
Date:   Thu, 6 Aug 2026 23:10:57 +0800

    Add zero-BPS and expired fair value tests for CPI and YoY swaps
    
    Follow the BOOST_CHECK_EXCEPTION pattern from #2678/#2690: testZeroBpsFairRateAndSpread and testExpiredSwapFairRateAndSpread for CPISwap, and matching YoY inflation swap tests in inflation.cpp.
    
    Co-authored-by: Cursor <cursoragent@cursor.com>

 test-suite/inflation.cpp        | 132 ++++++++++++++++++++++++++++++++++++++++
 test-suite/inflationcpiswap.cpp | 126 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 258 insertions(+)

commit 6cbe5bb0cfb2e415626e38ad99366b18d8fe30cb
Author: PureSaber <Topquack@protonmail.com>
Date:   Tue, 28 Jul 2026 09:48:23 +0800

    Guard zero leg BPS in CPI and YoY inflation swap fair values.
    
    Co-authored-by: Cursor <cursoragent@cursor.com>

 ql/instruments/cpiswap.cpp                 | 4 ++--
 ql/instruments/yearonyearinflationswap.cpp | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

commit 9461a059f19c9e7b33bc28482596712f10089f62
Author: PureSaber <Topquack@protonmail.com>
Date:   Thu, 6 Aug 2026 19:49:11 +0800

    Align vanilla swap fair rate/spread tests with #2678
    
    Add testZeroBpsFairRateAndSpread and use BOOST_CHECK_EXCEPTION with ExpectedErrorMessage in the expired-swap test, following the pattern from floatfloatswap.cpp in PR #2678.
    
    Co-authored-by: Cursor <cursoragent@cursor.com>

 test-suite/swap.cpp | 30 ++++++++++++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)

commit 6155c3ac47760ab60ad88b2ae27e193e6f52c947
Author: PureSaber <Topquack@protonmail.com>
Date:   Tue, 28 Jul 2026 09:46:52 +0800

    Guard zero leg BPS in FixedVsFloatingSwap fair rate and spread.
    
    Co-authored-by: Cursor <cursoragent@cursor.com>

 ql/instruments/fixedvsfloatingswap.cpp |  4 ++--
 test-suite/swap.cpp                    | 14 ++++++++++++++
 2 files changed, 16 insertions(+), 2 deletions(-)

commit 5608e3543690a97cc30047d8d1a4683791ac32c2
Merge: 660142d98 c64b8cee9
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 6 Aug 2026 13:13:01 +0200

    Update Saudi Arabia calendar: Founding Day and Eid Al-Adha through 2029 (#2688)

commit 660142d9832be5c6172d29dec73e5860ead7d850
Merge: 67c4b848a e11ab4f72
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 6 Aug 2026 10:51:53 +0200

    Allow defining globalGuess() in bootstrap traits (#2714)

commit c64b8cee9529c8e0b1cda11aad0f2e4cf7be6ad6
Author: PureSaber <Topquack@protonmail.com>
Date:   Thu, 6 Aug 2026 16:50:15 +0800

    Refactor Eid al-Fitr to explicit windows per review
    
    Apply the same std::pair<Date,Date> representation to isEidAlFitr. Use the exchange-documented holiday ranges from the in-file table for both Eids in 2012-2015 instead of the default Eid-1..Eid+4 offsets. Extend Saudi calendar tests to cover Eid al-Fitr and the documented 2015 windows.
    
    Co-authored-by: Cursor <cursoragent@cursor.com>

 ql/time/calendars/saudiarabia.cpp | 103 ++++++++++++++++++--------------------
 ql/time/calendars/saudiarabia.hpp |   7 +--
 test-suite/calendars.cpp          |  19 ++++++-
 3 files changed, 69 insertions(+), 60 deletions(-)

commit 3456a09718df24af462ddf793d9d2099e12b9a67
Author: PureSaber <Topquack@protonmail.com>
Date:   Thu, 6 Aug 2026 10:36:19 +0800

    Address review: explicit Eid Al-Adha windows and Founding Day rule
    
    Refactor isEidAlAdha to use explicit date pairs instead of approximate Eid centers with offsets. Historical windows through 2022 keep the Eid-1..Eid+4 convention; 2023-2029 windows follow the Saudi Exchange holiday calendar. Replace the 2025 Founding Day exception with a generic February 22 rule that rolls to the following Sunday when the 22nd falls on Friday or Saturday. Add calendar tests for Founding Day and Eid Al-Adha.
    
    Co-authored-by: Cursor <cursoragent@cursor.com>

 ql/time/calendars/saudiarabia.cpp | 85 ++++++++++++++++++++-------------------
 ql/time/calendars/saudiarabia.hpp |  5 ++-
 test-suite/calendars.cpp          | 25 ++++++++++++
 3 files changed, 72 insertions(+), 43 deletions(-)

commit 008c5e3eba6a5a0ededa8db0158e797a4eb2b563
Author: PureSaber <Topquack@protonmail.com>
Date:   Tue, 28 Jul 2026 08:47:18 +0800

    Update Saudi Arabia calendar: Founding Day and Eid Al-Adha through 2029.
    
    Co-authored-by: Cursor <cursoragent@cursor.com>

 ql/time/calendars/saudiarabia.cpp | 15 ++++++++++++++-
 ql/time/calendars/saudiarabia.hpp | 10 ++++++----
 2 files changed, 20 insertions(+), 5 deletions(-)

commit 74282fcbcff5b79792116abd2eb35de11979a53b
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 6 Aug 2026 08:11:05 +1000

    Avoid future merge conflicts

 test-suite/basisswapratehelpers.cpp | 68 ++++++++++++++++++-------------------
 1 file changed, 34 insertions(+), 34 deletions(-)

commit 67c4b848a2ec549e1e2ed14d3bf22e5f03ff7a2e
Merge: 4a993152d 7a7898a94
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 5 Aug 2026 15:48:44 +0200

    Add November 4, 2026 election day to South Africa calendar and group all election days together (#2697)

commit 4a993152d8d3229e417e4b1fe1ea26874b2f8666
Merge: 5af7618f2 24ee7516a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 5 Aug 2026 11:45:07 +0200

    RFR swaption support in Gsr (#2655)

commit 24ee7516a2975ba6622df7efa8d43920ab269c85
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 5 Aug 2026 10:32:02 +0200

    Expanded comment to spell out calculation

 .../gaussian1djamshidianswaptionengine.cpp         | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

commit e11ab4f72310a0195e9fc274e98bbe3668cd4993
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Wed, 25 Mar 2026 19:53:15 -0400

    Allow defining globalGuess() in bootstrap traits
    
    Currently, GlobalBootstrap uses the regular Traits::guess() method. This
    method was designed for IterativeBootstrap and usually uses previous
    points to make the guess for the next point. In some traits (ZeroYield,
    ForwardRate, SimpleZeroYield) it also uses methods that rely on curve's
    interpolation (zeroRate(), forwardRate()). However, GlobalBootstrap does
    NOT update interpolation while computing initial guess, so the result is
    not well defined. We could update interpolation before calling guess()
    but:
    
    1. This would add significant overhead.
    
    2. Since GlobalBootstrap doesn't run optimizations until it got initial
       guesses for all points, the guesses are basically constant, so this
       seems excessive.
    
    Instead, add a new method, globalGuess(), which returns the whole array
    of guesses in one call without using interpolation or data in the curve.
    It also returns a flag: whether the guesses need to be transformed. This
    allows skipping exp() in guesses for Discount, because transformInverse
    is log(). So we avoid one pair of exp()/log calls per pillar.
    
    For traits that don't define globalGuess(), we keep using the old logic.
    
    Also, allow passing a custom function to generate the initial guess.
    This is mostly useful in SWIG bindings where you cannot define new
    traits.
    
    Also, make Traits::transformDirect()/transformInverse() methods optional
    so we don't have to define them for traits that don't need them.

 ql/termstructures/globalbootstrap.hpp           | 114 ++++++++++++++++++------
 ql/termstructures/inflation/inflationtraits.hpp |  40 +++++----
 ql/termstructures/yield/bootstraptraits.hpp     |  71 ++++++++++-----
 test-suite/piecewiseyieldcurve.cpp              |  71 +++++++++++++++
 4 files changed, 229 insertions(+), 67 deletions(-)

commit 5af7618f2169c746a09d2e8da869cb757676a389
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 4 Aug 2026 18:29:14 +0200

    Modernize calendar test fixtures

 test-suite/calendars.cpp | 5967 +++++++++++++++++++++++-----------------------
 1 file changed, 2918 insertions(+), 3049 deletions(-)

commit 0b885a5dcefb31c89641fd16e2ea3b8500610958
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Tue, 4 Aug 2026 17:17:48 +0000

    Update copyright list in license

 LICENSE.TXT | 1 +
 1 file changed, 1 insertion(+)

commit f4e97a9c041c6ef65322813c9efa7548dbea2930
Merge: 93d2f2201 ce7509ec0
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 4 Aug 2026 19:00:37 +0200

    MTM Cross Currency Basis Swap instruments (#2642)

commit 93d2f2201c189c7c8dd4d19df3ac70cb5f801fc8
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Tue, 4 Aug 2026 16:12:51 +0000

    Update copyright list in license

 LICENSE.TXT | 1 +
 1 file changed, 1 insertion(+)

commit 408a896c07e446c2946330dbb8c0adda8ad5f20a
Merge: 32a14f043 7d05dcf75
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 4 Aug 2026 17:51:15 +0200

    Add Malaysia calendar (#2704)

commit 7d05dcf75ab6ce32fa1c1ae150f8cc5b840db257
Author: Lawrenz Law <lawrenzlaw40@gmail.com>
Date:   Tue, 4 Aug 2026 20:06:04 +0800

    Fix Malaysia holiday table and update tests

 ql/time/calendars/malaysia.cpp |   2 +-
 test-suite/calendars.cpp       | 145 +++++++++++++++++++++++++----------------
 2 files changed, 90 insertions(+), 57 deletions(-)

commit ce7509ec0ba441a6438a313870bccc0c6a48adb8
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 4 Aug 2026 12:45:38 +0200

    Use basic input parameters in public interfaces, avoid struct

 .../fx/discountingmtmcrosscurrencybasisswapengine.cpp |  5 +++--
 ql/experimental/fx/mtmcrosscurrencybasisswap.cpp      | 11 ++++++-----
 ql/experimental/fx/mtmcrosscurrencybasisswap.hpp      | 19 ++++++++++++-------
 .../termstructures/crosscurrencyratehelpers.cpp       |  7 +++----
 .../termstructures/crosscurrencyratehelpers.hpp       |  9 ++++-----
 test-suite/crosscurrencyratehelpers.cpp               |  4 ++--
 test-suite/mtmcrosscurrencybasisswap.cpp              | 15 +++++++--------
 7 files changed, 37 insertions(+), 33 deletions(-)

commit 32a14f0438b36b4b2bc8a077af80f734b320c288
Merge: a5b1dbaae 21f9f4e9a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 4 Aug 2026 10:13:57 +0200

    Optimize Jamshidian root finding (#2664)

commit a5b1dbaae38c9d9e3901e081b8113e0b54f08621
Merge: f11850971 cb88846d3
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 4 Aug 2026 09:42:45 +0200

    Fix convertible dividend indexing after settlement (#2702)

commit f118509716a2b2fed8e0b51e090617fcb1288074
Merge: dcf4beadc f42913470
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 4 Aug 2026 09:41:48 +0200

    Return handles by reference from accessors (#2703)

commit 21f9f4e9a3b6359138f0537ff8099b49077014ee
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 4 Aug 2026 09:24:31 +0200

    Add explanatory comment to optimized code

 .../swaption/jamshidianswaptionengine.cpp          | 27 ++++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

commit 9814992d32e7f049a789f20ef800045ebc260871
Author: Your Name <lawrenzlaw40@gmail.com>
Date:   Tue, 4 Aug 2026 09:08:07 +0800

    Revised Malaysia holiday list to match with Bursa Malaysia

 ql/time/calendars/malaysia.cpp | 44 +++++++++++++++++++++++-------------------
 1 file changed, 24 insertions(+), 20 deletions(-)

commit f2611cf775f7e95afeb92fa458daa8f26967f068
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Mon, 3 Aug 2026 15:34:59 -0500

    Make shared on model

 test-suite/roughhestonmodel.cpp | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

commit e0d056c719197c601bd7c38cc86856a1a41d7a4b
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 3 Aug 2026 15:01:02 -0500

    Comment update.

 ql/math/ode/fractionalkernelapproximation.hpp | 42 +++++++++++----------------
 1 file changed, 17 insertions(+), 25 deletions(-)

commit fa2b9a91f58e14a1094082bdb15a9474690b3366
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 3 Aug 2026 14:55:02 -0500

    Update test comments.

 test-suite/roughhestonmodel.cpp | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

commit f957c5a6679e4023d756298ad23de44181cd008c
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 3 Aug 2026 14:49:17 -0500

    Comment update.

 ql/math/ode/fractionalkernelapproximation.hpp           | 12 ++++++------
 ql/pricingengines/vanilla/analyticroughhestonengine.cpp | 12 ++++++------
 ql/pricingengines/vanilla/analyticroughhestonengine.hpp | 12 ++++++------
 3 files changed, 18 insertions(+), 18 deletions(-)

commit 4a606bb797c710f56b1ddc3b3727314c0ee2b825
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 3 Aug 2026 14:43:35 -0500

    Minor comment.

 ql/pricingengines/vanilla/analyticroughhestonengine.hpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit 64a3c4a848b0fc1bce219f07631c9a4346120fa7
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 3 Aug 2026 14:42:16 -0500

    Minor explanation + cleanup.

 ql/pricingengines/vanilla/analyticroughhestonengine.cpp | 2 ++
 1 file changed, 2 insertions(+)

commit fc959f540d6822e0df90d57baff6ab0af2590028
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 3 Aug 2026 14:34:11 -0500

    Comment on safety cap.

 ql/pricingengines/vanilla/analyticroughhestonengine.cpp | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

commit dcf4beadc92f9308ca202d051f2a7344f04fdd9e
Merge: c9ec91e8d 05a7d1307
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 3 Aug 2026 17:19:17 +0200

    Use a consistent interface for Heston and rough Heston models (#2708)

commit c9ec91e8d74f3c0a6727d0389ea223167c380a03
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon, 3 Aug 2026 11:23:44 +0000

    Bump actions/stale from 10 to 11
    
    Bumps [actions/stale](https://github.com/actions/stale) from 10 to 11.
    - [Release notes](https://github.com/actions/stale/releases)
    - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
    - [Commits](https://github.com/actions/stale/compare/v10...v11)
    
    ---
    updated-dependencies:
    - dependency-name: actions/stale
      dependency-version: '11'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>

 .github/workflows/stale.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 05a7d1307d58b84aef00596d7930d0672ce58ea7
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 3 Aug 2026 12:28:35 +0200

    Uniform interface for Heston and rought Heston models

 ql/models/equity/roughhestonmodel.cpp              | 38 +++++++-------
 ql/models/equity/roughhestonmodel.hpp              | 26 +++-------
 .../vanilla/analyticroughhestonengine.cpp          | 18 +++----
 test-suite/roughhestonmodel.cpp                    | 59 ++++++++++++++--------
 4 files changed, 73 insertions(+), 68 deletions(-)

commit c745015f2ce94d8f72c1ad3baf9c08d55634f5b9
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Sun, 2 Aug 2026 02:10:05 +0000

    Automated fixes by clang-tidy

 ql/math/randomnumbers/inversecumulativersg.hpp     |  2 +-
 .../operators/triplebandlinearop.cpp               | 22 +++++++++++-----------
 .../finitedifferences/schemes/craigsneydscheme.cpp |  4 ++--
 .../finitedifferences/schemes/douglasscheme.cpp    |  2 +-
 .../schemes/hundsdorferscheme.cpp                  |  4 ++--
 .../schemes/modifiedcraigsneydscheme.cpp           |  4 ++--
 ql/methods/montecarlo/multipathgenerator.hpp       |  6 +++---
 ql/methods/montecarlo/pathgenerator.hpp            |  2 +-
 .../vanilla/analyticroughhestonengine.cpp          |  5 +++--
 .../vanilla/analyticroughhestonengine.hpp          |  2 +-
 ql/termstructures/inflation/inflationhelpers.cpp   |  4 ++--
 ql/termstructures/inflation/inflationhelpers.hpp   |  2 +-
 test-suite/dates.cpp                               |  2 +-
 test-suite/roughhestonmodel.cpp                    |  6 ++++--
 14 files changed, 35 insertions(+), 32 deletions(-)

commit 10275255b9b776c5a377c6f225316b2e5bc85ce3
Author: kp9991 <kp9991@gmail.com>
Date:   Mon, 3 Aug 2026 14:05:38 +1000

    copyright

 ql/termstructures/volatility/optionlet/optionletstripper.cpp  | 1 +
 ql/termstructures/volatility/optionlet/optionletstripper.hpp  | 1 +
 ql/termstructures/volatility/optionlet/optionletstripper1.cpp | 1 +
 ql/termstructures/volatility/optionlet/optionletstripper1.hpp | 1 +
 ql/termstructures/volatility/optionlet/optionletstripper2.cpp | 1 +
 ql/termstructures/volatility/optionlet/optionletstripper2.hpp | 1 +
 test-suite/optionletstripper.cpp                              | 1 +
 7 files changed, 7 insertions(+)

commit 8448724c060807f67e703a658f5b1dcae84df3c0
Author: kp9991 <kp9991@gmail.com>
Date:   Mon, 3 Aug 2026 14:03:00 +1000

    Restoring some of the old checks

 .../volatility/optionlet/optionletstripper2.cpp    | 39 ++++++++++------------
 test-suite/optionletstripper.cpp                   | 17 ++++++----
 2 files changed, 29 insertions(+), 27 deletions(-)

commit 9f6677090d1760844e309cb0c7e9dfd8a2a4c21c
Author: Your Name <lawrenzlaw40@gmail.com>
Date:   Sun, 2 Aug 2026 10:48:50 +0800

    Add Malaysia calendar

 QuantLib.vcxproj               |   2 +
 QuantLib.vcxproj.filters       |   6 +
 ql/CMakeLists.txt              |   2 +
 ql/time/calendars/Makefile.am  |   2 +
 ql/time/calendars/all.hpp      |   1 +
 ql/time/calendars/malaysia.cpp | 282 +++++++++++++++++++++++++++++++++++++++++
 ql/time/calendars/malaysia.hpp |  99 +++++++++++++++
 test-suite/calendars.cpp       |  67 ++++++++++
 8 files changed, 461 insertions(+)

commit 0774dd37d15fed3a4f12e76a1f9876c3bda6d207
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sat, 1 Aug 2026 13:08:14 -0500

    Test update.

 test-suite/roughhestonmodel.cpp | 46 ++++++++++++++++-------------------------
 1 file changed, 18 insertions(+), 28 deletions(-)

commit 0dbdd8dacbb8fbc57da0a116d9dff1436cbd4b1b
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sat, 1 Aug 2026 12:59:39 -0500

    Init Lifted Heston implementation.

 .../vanilla/analyticroughhestonengine.cpp          | 200 +++++++++++++++++++--
 1 file changed, 190 insertions(+), 10 deletions(-)

commit ae430cacf7af5992b5ba4cd94a4ce5d4e3dd494f
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sat, 1 Aug 2026 12:59:10 -0500

    Fractional kernel approximation init commit.

 ql/math/ode/fractionalkernelapproximation.hpp | 195 ++++++++++++++++++++++++++
 1 file changed, 195 insertions(+)

commit c7e38fd1ded1c42f4130f6153bccaf9217a689d1
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sat, 1 Aug 2026 12:58:21 -0500

    Minor comment update.

 ql/pricingengines/vanilla/analyticroughhestonengine.hpp | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

commit 75f2b7bbaed2d22c12965c511775e9d99313cc2b
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sat, 1 Aug 2026 12:56:54 -0500

    Trimming comments.

 test-suite/roughhestonmodel.cpp | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

commit c82d9e1921b7e06ace53d6d111865b3f3755cd85
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sat, 1 Aug 2026 12:55:55 -0500

    Adding Lifted Grid and support for Lifted Ricatti equation.

 .../vanilla/analyticroughhestonengine.hpp          | 71 ++++++++++++++++++----
 1 file changed, 59 insertions(+), 12 deletions(-)

commit e6873ccb8fd3a2fc63222f1bc724d94ea547bf4d
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sat, 1 Aug 2026 12:53:51 -0500

    Minor test removal.

 test-suite/roughhestonmodel.cpp | 141 ++++++++++++----------------------------
 1 file changed, 41 insertions(+), 100 deletions(-)

commit 93d517953e1b8760f2ab6f354abea62c7b36d58f
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sat, 1 Aug 2026 12:51:45 -0500

    Tests for Lifted Heston model.

 test-suite/roughhestonmodel.cpp | 481 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 481 insertions(+)

commit 08597271437cadd233198796a23b22ca8c14d54a
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Sat, 1 Aug 2026 12:47:01 -0500

    Add fractional kernel approximation.

 QuantLib.vcxproj         | 1 +
 QuantLib.vcxproj.filters | 3 +++
 ql/CMakeLists.txt        | 1 +
 ql/math/ode/Makefile.am  | 3 ++-
 ql/math/ode/all.hpp      | 1 +
 5 files changed, 8 insertions(+), 1 deletion(-)

commit f91a337b1870649c4e9f747e73c3f62fcd305c38
Author: kp9991 <kp9991@gmail.com>
Date:   Sat, 1 Aug 2026 12:15:39 +1000

    Post-review changes

 QuantLib.vcxproj                                   | 28 +++++-----
 QuantLib.vcxproj.filters                           | 60 +++++++++++-----------
 ql/CMakeLists.txt                                  | 12 ++---
 ql/cashflows/Makefile.am                           |  2 -
 ql/cashflows/all.hpp                               |  1 -
 ql/experimental/Makefile.am                        |  1 +
 ql/experimental/fx/Makefile.am                     | 32 +++++++++++-
 ql/experimental/fx/all.hpp                         |  3 ++
 .../discountingmtmcrosscurrencybasisswapengine.cpp |  4 +-
 .../discountingmtmcrosscurrencybasisswapengine.hpp |  2 +-
 .../fx}/fxresetcashflows.cpp                       |  2 +-
 .../fx}/fxresetcashflows.hpp                       |  0
 .../fx}/mtmcrosscurrencybasisswap.cpp              |  4 +-
 .../fx}/mtmcrosscurrencybasisswap.hpp              | 13 ++---
 .../termstructures/crosscurrencyratehelpers.cpp    |  2 +-
 .../termstructures/crosscurrencyratehelpers.hpp    | 16 ++++--
 ql/instruments/Makefile.am                         |  2 -
 ql/instruments/all.hpp                             |  1 -
 .../constnotionalcrosscurrencybasisswap.hpp        |  3 ++
 ...nstnotionalcrosscurrencyfixedvsfloatingswap.hpp |  4 ++
 ql/pricingengines/swap/Makefile.am                 |  2 -
 ql/pricingengines/swap/all.hpp                     |  1 -
 test-suite/crosscurrencyratehelpers.cpp            |  4 +-
 test-suite/mtmcrosscurrencybasisswap.cpp           | 10 ++--
 24 files changed, 125 insertions(+), 84 deletions(-)

commit f429134709f78dd69e6d710fb54fdbad93ef3e45
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Fri, 31 Jul 2026 17:11:48 -0400

    Return handles by reference from accessors

 ql/cashflows/couponpricer.hpp                                     | 4 ++--
 ql/cashflows/overnightindexedcouponpricer.hpp                     | 2 +-
 ql/experimental/catbonds/montecarlocatbondengine.hpp              | 2 +-
 ql/experimental/coupons/cmsspreadcoupon.hpp                       | 2 +-
 ql/indexes/bmaindex.cpp                                           | 2 +-
 ql/indexes/bmaindex.hpp                                           | 2 +-
 ql/indexes/equityindex.hpp                                        | 6 +++---
 ql/indexes/iborindex.hpp                                          | 4 ++--
 ql/indexes/inflationindex.hpp                                     | 8 ++++----
 ql/indexes/swapindex.cpp                                          | 4 ++--
 ql/indexes/swapindex.hpp                                          | 4 ++--
 ql/instruments/forward.hpp                                        | 8 ++++----
 ql/instruments/forwardrateagreement.hpp                           | 4 ++--
 ql/models/calibrationhelper.hpp                                   | 2 +-
 ql/pricingengines/bond/discountingbondengine.hpp                  | 2 +-
 ql/pricingengines/bond/riskybondengine.hpp                        | 8 ++++----
 ql/pricingengines/credit/isdacdsengine.hpp                        | 4 ++--
 ql/pricingengines/futures/discountingperpetualfuturesengine.hpp   | 6 +++---
 ql/pricingengines/inflation/inflationcapfloorengines.hpp          | 4 ++--
 ql/pricingengines/swap/discountingswapengine.hpp                  | 2 +-
 ql/pricingengines/swaption/gaussian1dfloatfloatswaptionengine.hpp | 2 +-
 ql/termstructures/volatility/swaption/swaptionvolcube.hpp         | 2 +-
 22 files changed, 42 insertions(+), 42 deletions(-)

commit cb88846d3f579410020c98a99bba5c08298b4012
Author: Alwan Juliawan <alwanjuliawan02@gmail.com>
Date:   Fri, 31 Jul 2026 23:39:20 +0700

    Fix convertible dividend indexing after settlement

 ql/pricingengines/bond/discretizedconvertible.cpp | 12 +++-----
 test-suite/convertiblebonds.cpp                   | 36 +++++++++++++++++++++++
 2 files changed, 40 insertions(+), 8 deletions(-)

commit 60be62969d6585ce223fd37d61c7a74a1acf6917
Merge: 7547e67f6 8d19886a7
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 31 Jul 2026 09:12:20 +0200

    Padé Approximation Route for the Rough Heston Riccati Equation (#2682)

commit 0642642d03bc843905abfae91a68c2b9981b2513
Author: kp9991 <kp9991@gmail.com>
Date:   Fri, 31 Jul 2026 10:28:38 +1000

    Using the same relinking logic as in oisratehelper.cpp

 .../termstructures/basisswapratehelpers.cpp        | 24 +++++--
 .../termstructures/basisswapratehelpers.hpp        |  6 +-
 test-suite/basisswapratehelpers.cpp                | 73 ++++++++++++++++++++--
 3 files changed, 92 insertions(+), 11 deletions(-)

commit 7547e67f6a1e9dec738b5ee9212606518065f6ee
Merge: c8017878c a7e763032
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 30 Jul 2026 22:12:21 +0200

    Fix calendar and day-count documentation typos (#2689)

commit c8017878cacb43bdd4c5d2cf82a26dcbd7527f18
Merge: 32ab91f0b 77b4683a1
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 30 Jul 2026 22:11:59 +0200

    Add Singapore exchange holidays for 2027 (#2687)

commit 8d19886a7dfeb2f0231a0ed2bccd9e9ba98aae74
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Thu, 30 Jul 2026 13:05:40 -0500

    Changing approximation scheme name.

 .../vanilla/analyticroughhestonengine.cpp            |  8 ++++----
 .../vanilla/analyticroughhestonengine.hpp            | 12 ++++++------
 test-suite/roughhestonmodel.cpp                      | 20 ++++++++++----------
 3 files changed, 20 insertions(+), 20 deletions(-)

commit e1876723371e79d06c487cbd23837e4fede9fff4
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 30 Jul 2026 21:02:09 +1000

    OvernightOvernightBasisSwapRateHelper

 .../termstructures/basisswapratehelpers.cpp        | 128 +++++++++++++++++++++
 .../termstructures/basisswapratehelpers.hpp        |  64 ++++++++++-
 test-suite/basisswapratehelpers.cpp                | 120 +++++++++++++++++++
 3 files changed, 311 insertions(+), 1 deletion(-)

commit 5eb9a6b02e4c46b66ba855feb6e89e60a393c029
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 30 Jul 2026 19:07:26 +1000

    copyright string (apparently good to have)

 ql/instruments/fixedvsfloatingswap.cpp                             | 1 +
 ql/instruments/fixedvsfloatingswap.hpp                             | 1 +
 ql/instruments/nonstandardswap.cpp                                 | 1 +
 ql/instruments/nonstandardswap.hpp                                 | 1 +
 ql/models/shortrate/onefactormodels/gaussian1dmodel.cpp            | 1 +
 ql/models/shortrate/onefactormodels/gaussian1dmodel.hpp            | 1 +
 ql/pricingengines/swaption/gaussian1djamshidianswaptionengine.cpp  | 1 +
 ql/pricingengines/swaption/gaussian1dnonstandardswaptionengine.cpp | 1 +
 ql/pricingengines/swaption/gaussian1dswaptionengine.cpp            | 1 +
 ql/pricingengines/swaption/gaussian1dswaptionengine.hpp            | 1 +
 test-suite/gsr.cpp                                                 | 1 +
 test-suite/multipleresetsswap.cpp                                  | 1 +
 test-suite/overnightindexedswap.cpp                                | 1 +
 13 files changed, 13 insertions(+)

commit 0b1d609b47b14e18bfbceede748b30b9e78c8d64
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 30 Jul 2026 19:04:27 +1000

    Remove old Jamshidian from scope

 .../swaption/gaussian1dswaptionengine.hpp          |  6 +--
 .../swaption/jamshidianswaptionengine.cpp          | 50 ++++------------------
 test-suite/gsr.cpp                                 |  7 +--
 3 files changed, 12 insertions(+), 51 deletions(-)

commit dec2eae21d2afeb167c80b2cc555cc7412dc43f5
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 30 Jul 2026 19:00:20 +1000

    Simplification

 ql/cashflows/overnightindexedcoupon.cpp            |  10 -
 ql/cashflows/overnightindexedcoupon.hpp            |  10 -
 ql/instruments/floatfloatswap.cpp                  |  45 +---
 .../shortrate/onefactormodels/gaussian1dmodel.cpp  |  13 +-
 .../shortrate/onefactormodels/gaussian1dmodel.hpp  |   6 +-
 .../gaussian1dfloatfloatswaptionengine.cpp         |  36 +--
 .../gaussian1dnonstandardswaptionengine.cpp        |  10 +-
 .../swaption/gaussian1dswaptionengine.cpp          |  13 +-
 .../swaption/gaussian1dswaptionengine.hpp          |  11 +-
 .../swaption/jamshidianswaptionengine.cpp          |  42 ++--
 test-suite/gsr.cpp                                 | 250 +--------------------
 11 files changed, 58 insertions(+), 388 deletions(-)

commit 954b4988b748c5ce49f21ac894456dc87e1f62d3
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 30 Jul 2026 16:44:56 +1000

    MC unit tests

 test-suite/gsr.cpp | 338 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 338 insertions(+)

commit 8c99e350fa333441c9b73a171e4b6545ebb7d879
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 30 Jul 2026 15:26:46 +1000

    Fixing NonstandardSwap(const FixedVsFloatingSwap&)

 ql/instruments/nonstandardswap.cpp  | 15 ++++++++-
 ql/instruments/nonstandardswap.hpp  |  7 +++++
 test-suite/overnightindexedswap.cpp | 63 +++++++++++++++++++++++++++++++++++++
 3 files changed, 84 insertions(+), 1 deletion(-)

commit 5f93a94eefbe1582c640465972b345e1f907e12a
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 30 Jul 2026 15:06:29 +1000

    post-review

 ql/cashflows/overnightindexedcoupon.cpp            |  10 +
 ql/cashflows/overnightindexedcoupon.hpp            |  10 +
 ql/instruments/floatfloatswap.cpp                  |  18 +-
 .../shortrate/onefactormodels/gaussian1dmodel.cpp  |  21 ++
 .../shortrate/onefactormodels/gaussian1dmodel.hpp  |   8 +
 .../gaussian1dfloatfloatswaptionengine.cpp         |  67 +++----
 .../gaussian1dnonstandardswaptionengine.cpp        |  87 ++++-----
 .../swaption/gaussian1dswaptionengine.cpp          |  88 +++------
 .../swaption/gaussian1dswaptionengine.hpp          |  15 ++
 test-suite/gsr.cpp                                 | 215 +++++++++++++++++----
 10 files changed, 346 insertions(+), 193 deletions(-)

commit 32ab91f0b8c66971513ee9d2e0ae55b492cf1ca3
Merge: d81c51119 1ddacb85a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 29 Jul 2026 15:55:33 +0200

    fix: check for non-zero leg BPS in FloatFloatSwap fairSpread calculations (#2678)

commit d81c51119f6ba4cf2d32d813d91756cbeee36a33
Merge: 415a073ff d27edd42d
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 29 Jul 2026 15:54:44 +0200

    Use the default calculation of the trade date in CDS helpers (#2698)

commit 415a073ffe02be1e136077d1c995ed9995b9acf1
Merge: 373b7c071 c18a5005f
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 29 Jul 2026 13:12:06 +0200

    Reduce temporary allocations in numerical methods (#2677)

commit 7def65cd798b2ca99fc87a21772d33a145247f9e
Author: kp9991 <kp9991@gmail.com>
Date:   Wed, 29 Jul 2026 21:12:04 +1000

    Broken Period stubs

 ql/cashflows/iborcoupon.cpp | 131 ++++++++++++++++++++++++++
 ql/cashflows/iborcoupon.hpp |  60 ++++++++++++
 test-suite/cashflows.cpp    | 223 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 414 insertions(+)

commit d27edd42df5848fce39accf2c980210a3c4033b2
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 29 Jul 2026 12:15:04 +0200

    Allow overriding trade date in CDS helpers

 .../credit/defaultprobabilityhelpers.cpp              | 19 +++++++++++--------
 .../credit/defaultprobabilityhelpers.hpp              | 10 +++++++---
 2 files changed, 18 insertions(+), 11 deletions(-)

commit 7a7898a940e40d577eda0f8412ac6f778994c127
Author: Francois Botha <igitur@gmail.com>
Date:   Wed, 29 Jul 2026 11:19:42 +0200

    Add November 4, 2026 election day to South Africa calendar and group all election days together

 ql/time/calendars/southafrica.cpp | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

commit e44079a6ce9fa98a15e19b10293d0e655c88bab9
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 29 Jul 2026 11:24:02 +0200

    Use the default calculation of the trade date in CDS helpers.
    
    They were setting it explicitly, but this caused CDS using the defaults
    to be off-par when repriced on the resulting curve.

 ql/termstructures/credit/defaultprobabilityhelpers.cpp | 5 ++---
 test-suite/defaultprobabilitycurves.cpp                | 2 +-
 2 files changed, 3 insertions(+), 4 deletions(-)

commit 1be08984f023cdca5eb79ac4699caac60e4be2ff
Author: kp9991 <kp9991@gmail.com>
Date:   Tue, 28 Jul 2026 21:35:00 +1000

    Copyright

 ql/experimental/termstructures/basisswapratehelpers.cpp | 1 +
 ql/experimental/termstructures/basisswapratehelpers.hpp | 1 +
 test-suite/basisswapratehelpers.cpp                     | 1 +
 3 files changed, 3 insertions(+)

commit 572006298459db23907561e15dfec884f2768105
Author: kp9991 <kp9991@gmail.com>
Date:   Tue, 28 Jul 2026 21:25:04 +1000

    Removing ql_require

 ql/experimental/termstructures/basisswapratehelpers.cpp | 6 ------
 ql/experimental/termstructures/basisswapratehelpers.hpp | 3 +--
 2 files changed, 1 insertion(+), 8 deletions(-)

commit 490f0fb771ab3f6f4f24ed60d15653d65d874c36
Author: kp9991 <kp9991@gmail.com>
Date:   Tue, 28 Jul 2026 20:52:21 +1000

    Using DateGeneration::Rule rather than everything backwards

 .../termstructures/basisswapratehelpers.cpp        | 32 ++++++++++-----
 .../termstructures/basisswapratehelpers.hpp        | 25 ++++++------
 test-suite/basisswapratehelpers.cpp                | 47 ++++++++++++++++++++++
 3 files changed, 81 insertions(+), 23 deletions(-)

commit 1ddacb85a16a70d5ee9243c1c0e77f377bb1148e
Author: Amit Jha <jha.8@iitj.ac.in>
Date:   Tue, 28 Jul 2026 16:14:25 +0530

    Restore expired FloatFloatSwap fair-spread test

 test-suite/floatfloatswap.cpp | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

commit b8fd1610020b7db7e72f58d7943bb26db4afe8a5
Author: kp9991 <kp9991@gmail.com>
Date:   Tue, 28 Jul 2026 20:16:27 +1000

    Comment

 ql/experimental/termstructures/basisswapratehelpers.hpp | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

commit ae7a92aefd27bceb7cd368434ef6ff63af90c132
Author: Amit Jha <jha.8@iitj.ac.in>
Date:   Tue, 28 Jul 2026 14:53:19 +0530

    Test zero-BPS FloatFloatSwap fair spreads

 test-suite/floatfloatswap.cpp | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

commit 373b7c071d00f87ca9b5dd15763427d24cb39222
Merge: 9395f8316 244b66b00
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 28 Jul 2026 10:33:19 +0200

    fix: add September 28 2026 Chuseok substitute holiday to SouthKorea calendar (#2680)

commit c18a5005f8799d94d9acbe34fabef25aa1f20d37
Author: JewonJeon <jewon.j0620@gmail.com>
Date:   Tue, 28 Jul 2026 16:04:57 +0900

    Fix signedness of auto loop indices

 ql/math/randomnumbers/inversecumulativersg.hpp     |  4 ++--
 .../operators/triplebandlinearop.cpp               | 22 +++++++++++-----------
 .../finitedifferences/schemes/craigsneydscheme.cpp |  4 ++--
 .../finitedifferences/schemes/douglasscheme.cpp    |  2 +-
 .../schemes/hundsdorferscheme.cpp                  |  4 ++--
 .../schemes/modifiedcraigsneydscheme.cpp           |  4 ++--
 ql/methods/montecarlo/multipathgenerator.hpp       |  6 +++---
 ql/methods/montecarlo/pathgenerator.hpp            |  2 +-
 8 files changed, 24 insertions(+), 24 deletions(-)

commit 5dbcdffd49003b548bdf61f7204cc7e6b5148912
Author: kp9991 <kp9991@gmail.com>
Date:   Tue, 28 Jul 2026 13:43:20 +1000

    Schedule generation backwards

 .../termstructures/basisswapratehelpers.cpp        | 22 ++++++++++++----------
 test-suite/basisswapratehelpers.cpp                | 10 +++++-----
 2 files changed, 17 insertions(+), 15 deletions(-)

commit a7e7630323df8e8c6094d144ae048fa68343a192
Author: PureSaber <Topquack@protonmail.com>
Date:   Tue, 28 Jul 2026 08:47:55 +0800

    Fix calendar and day-count documentation typos (31st, Pandemic).
    
    Co-authored-by: Cursor <cursoragent@cursor.com>

 ql/time/calendars/argentina.hpp   | 2 +-
 ql/time/calendars/sweden.hpp      | 2 +-
 ql/time/calendars/thailand.cpp    | 4 ++--
 ql/time/calendars/thailand.hpp    | 4 ++--
 ql/time/daycounters/thirty360.hpp | 4 ++--
 5 files changed, 8 insertions(+), 8 deletions(-)

commit 77b4683a12e12eb7efd063c50038f55b7cabdda5
Author: PureSaber <Topquack@protonmail.com>
Date:   Tue, 28 Jul 2026 08:46:13 +0800

    Add Singapore exchange holidays for 2027.
    
    Co-authored-by: Cursor <cursoragent@cursor.com>

 ql/time/calendars/singapore.cpp | 16 ++++++++++++++++
 ql/time/calendars/singapore.hpp |  2 +-
 2 files changed, 17 insertions(+), 1 deletion(-)

commit 82ef7f9dd1d231a4c6aba4bd575648ac94cdb1ce
Author: kp9991 <kp9991@gmail.com>
Date:   Mon, 27 Jul 2026 22:15:48 +1000

    Fix intermediate notional exchange date and expose MtM FX resets

 ql/instruments/mtmcrosscurrencybasisswap.cpp       | 21 ++++++++----
 ql/instruments/mtmcrosscurrencybasisswap.hpp       | 22 ++++++++++++
 .../discountingmtmcrosscurrencybasisswapengine.cpp | 13 +++++++
 test-suite/mtmcrosscurrencybasisswap.cpp           | 40 +++++++++++++++++++---
 4 files changed, 84 insertions(+), 12 deletions(-)

commit 9395f831636db756f256e99a134e71a3f316b9f1
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 27 Jul 2026 09:48:31 +0200

    Upgrade to clang-tidy 20

 .github/workflows/tidy.yml | 2 +-
 CMakePresets.json          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

commit 28a3a8577287335d6dcd96767237c67aaa31e865
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 27 Jul 2026 10:08:52 +0200

    Avoid deprecated Ubuntu runner

 .github/workflows/coveralls.yml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

commit 244b66b00d7d10e54562f9d5492921bac9e4fd6b
Author: AIM-IT4 <77675138+AIM-IT4@users.noreply.github.com>
Date:   Mon, 27 Jul 2026 09:20:25 +0000

    Update KRX holiday test for 2026 Chuseok

 test-suite/calendars.cpp | 1 +
 1 file changed, 1 insertion(+)

commit 5cd442f189eae94e8f070c9719b44898cf22225e
Author: Amit Kumar Jha <77675138+AIM-IT4@users.noreply.github.com>
Date:   Mon, 27 Jul 2026 13:43:45 +0530

    Fix South Korea Chuseok substitute holiday for 2026

 ql/time/calendars/southkorea.cpp | 2 +-
 test-suite/calendars.cpp         | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

commit 13df54812f460bf8e5362471ceb961bee40e5f65
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 27 Jul 2026 08:43:11 +0200

    Prevent a clang-tidy fix from causing a compilation error

 ql/math/optimization/cmaes.hpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

commit 0c4a719cfee74b2305d7bae0ab245f202c97befb
Author: kp9991 <kp9991@gmail.com>
Date:   Mon, 27 Jul 2026 07:24:42 +1000

    Proper FX fixing convention

 ql/cashflows/fxresetcashflows.cpp                  |  8 ++++++
 ql/cashflows/fxresetcashflows.hpp                  |  3 ++
 .../termstructures/crosscurrencyratehelpers.cpp    |  4 +--
 .../termstructures/crosscurrencyratehelpers.hpp    |  3 +-
 ql/instruments/mtmcrosscurrencybasisswap.cpp       |  3 +-
 ql/instruments/mtmcrosscurrencybasisswap.hpp       |  8 ++++--
 .../discountingmtmcrosscurrencybasisswapengine.cpp |  9 ++++--
 .../discountingmtmcrosscurrencybasisswapengine.hpp | 11 ++++++--
 test-suite/mtmcrosscurrencybasisswap.cpp           | 32 ++++++++++++++++++----
 9 files changed, 63 insertions(+), 18 deletions(-)

commit 2b2868dc22c42130565382a4954f10d562254d3e
Author: kp9991 <kp9991@gmail.com>
Date:   Mon, 27 Jul 2026 05:51:10 +1000

    Simplifying

 ql/instruments/crosscurrencyswap.cpp         | 9 +++++----
 ql/instruments/crosscurrencyswap.hpp         | 1 +
 ql/instruments/mtmcrosscurrencybasisswap.cpp | 7 +------
 3 files changed, 7 insertions(+), 10 deletions(-)

commit ddc14f457972e7f5f186716064eb3c9d51f84c61
Author: kp9991 <kp9991@gmail.com>
Date:   Mon, 27 Jul 2026 05:32:43 +1000

    Copyright

 ql/cashflows/fxresetcashflows.cpp                                     | 2 ++
 ql/cashflows/fxresetcashflows.hpp                                     | 2 ++
 ql/experimental/termstructures/crosscurrencyratehelpers.cpp           | 1 +
 ql/experimental/termstructures/crosscurrencyratehelpers.hpp           | 1 +
 ql/instruments/constnotionalcrosscurrencyswap.hpp                     | 1 +
 ql/instruments/crosscurrencyswap.cpp                                  | 1 +
 ql/instruments/crosscurrencyswap.hpp                                  | 1 +
 ql/instruments/mtmcrosscurrencybasisswap.cpp                          | 2 ++
 ql/instruments/mtmcrosscurrencybasisswap.hpp                          | 2 ++
 ql/pricingengines/swap/discountingmtmcrosscurrencybasisswapengine.cpp | 2 ++
 ql/pricingengines/swap/discountingmtmcrosscurrencybasisswapengine.hpp | 2 ++
 test-suite/crosscurrencyratehelpers.cpp                               | 1 +
 test-suite/mtmcrosscurrencybasisswap.cpp                              | 2 ++
 13 files changed, 20 insertions(+)

commit fbd5c55e62be3f7fb3905c559974a9f747a88f72
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Sun, 26 Jul 2026 09:37:12 -0500

    Update enum class in test suite.

 test-suite/roughhestonmodel.cpp | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

commit 35d8318fbda1ca196a0dd236b2c6ce59a72b3ed8
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Sun, 26 Jul 2026 09:35:30 -0500

    Change enum to enum class for approximation methods.

 ql/pricingengines/vanilla/analyticroughhestonengine.cpp | 5 +++--
 ql/pricingengines/vanilla/analyticroughhestonengine.hpp | 8 +++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

commit ed69be01ce599a6f2ca36305774498cca6d6057a
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Sun, 26 Jul 2026 08:53:14 -0500

    Code cleanup.

 .../vanilla/analyticroughhestonengine.cpp          | 26 +++++++++++++---------
 1 file changed, 16 insertions(+), 10 deletions(-)

commit f472647a5bcd88a1ae22da520994ae02de4017be
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 26 Jul 2026 19:52:01 +1000

    useIndexedCoupons for xccy swaps

 .../termstructures/crosscurrencyratehelpers.cpp    | 50 +++++++++----
 .../termstructures/crosscurrencyratehelpers.hpp    | 21 ++++--
 .../constnotionalcrosscurrencybasisswap.cpp        | 10 ++-
 .../constnotionalcrosscurrencybasisswap.hpp        |  6 +-
 ...nstnotionalcrosscurrencyfixedvsfloatingswap.cpp |  9 ++-
 ...nstnotionalcrosscurrencyfixedvsfloatingswap.hpp |  6 +-
 ql/instruments/mtmcrosscurrencybasisswap.cpp       | 10 ++-
 ql/instruments/mtmcrosscurrencybasisswap.hpp       |  7 +-
 test-suite/crosscurrencyratehelpers.cpp            | 83 ++++++++++++++++++++++
 9 files changed, 171 insertions(+), 31 deletions(-)

commit 7a701be3febb90087948d5d9e5141e5eb9e0eac6
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 26 Jul 2026 09:54:00 +1000

    Reset cash flows object

 ql/cashflows/fxresetcashflows.cpp                  | 167 ++++++++++---
 ql/cashflows/fxresetcashflows.hpp                  | 126 +++++++---
 .../termstructures/crosscurrencyratehelpers.cpp    | 122 +---------
 .../termstructures/crosscurrencyratehelpers.hpp    |  13 +-
 ql/instruments/mtmcrosscurrencybasisswap.cpp       |  53 ++++-
 ql/instruments/mtmcrosscurrencybasisswap.hpp       |  55 ++++-
 .../discountingmtmcrosscurrencybasisswapengine.cpp |  50 +++-
 .../discountingmtmcrosscurrencybasisswapengine.hpp |  14 +-
 test-suite/crosscurrencyratehelpers.cpp            | 134 +++++++++++
 test-suite/mtmcrosscurrencybasisswap.cpp           | 261 ++++++++++++++++++++-
 10 files changed, 754 insertions(+), 241 deletions(-)

commit 85540e6e34f3aca010929984c30b43fef27f6757
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 26 Jul 2026 05:04:50 +1000

    Added useIndexedCoupons to IborIborBasisSwapRateHelper

 .../termstructures/basisswapratehelpers.cpp        | 14 +++++---
 .../termstructures/basisswapratehelpers.hpp        |  7 +++-
 test-suite/basisswapratehelpers.cpp                | 39 ++++++++++++++++++++++
 3 files changed, 55 insertions(+), 5 deletions(-)

commit d92f1fa71e5ba88fd88bf92cd0960d3af49f1f0f
Author: kp9991 <kp9991@gmail.com>
Date:   Sat, 25 Jul 2026 15:58:26 +1000

    Separating freqs on the two legs

 .../termstructures/basisswapratehelpers.cpp        | 32 ++++++++++---
 .../termstructures/basisswapratehelpers.hpp        | 18 +++++--
 test-suite/basisswapratehelpers.cpp                | 56 ++++++++++++++++++++++
 3 files changed, 96 insertions(+), 10 deletions(-)

commit 51b56a7edc63f2ad24e3d394d61374160443c3fb
Author: Amit Jha <jha.8@iitj.ac.in>
Date:   Sat, 25 Jul 2026 07:34:23 +0530

    fix: check for non-zero leg BPS in FloatFloatSwap fairSpread calculations

 ql/instruments/floatfloatswap.cpp |  4 ++--
 test-suite/floatfloatswap.cpp     | 16 ++++++++++++++++
 2 files changed, 18 insertions(+), 2 deletions(-)

commit c356fbd1cdaf005afb50eb065ce84fb090f1838d
Author: JewonJeon <jewon.j0620@gmail.com>
Date:   Sat, 25 Jul 2026 10:23:16 +0900

    Reduce temporary allocations in numerical methods

 ql/math/randomnumbers/inversecumulativersg.hpp     |   4 +-
 .../operators/triplebandlinearop.cpp               | 146 +++++++++++----------
 .../operators/triplebandlinearop.hpp               |   1 +
 .../finitedifferences/schemes/craigsneydscheme.cpp |  14 +-
 .../finitedifferences/schemes/douglasscheme.cpp    |   6 +-
 .../schemes/hundsdorferscheme.cpp                  |  16 +--
 .../schemes/methodoflinesscheme.cpp                |   8 +-
 .../schemes/modifiedcraigsneydscheme.cpp           |  16 +--
 ql/methods/montecarlo/multipathgenerator.hpp       |  21 ++-
 ql/methods/montecarlo/pathgenerator.hpp            |  19 ++-
 10 files changed, 130 insertions(+), 121 deletions(-)

commit c6c1d2097c510cf114fae69037271550ea96ff11
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Fri, 24 Jul 2026 14:15:26 -0500

    Transfer Pade approximation code to new branch.

 .../vanilla/analyticroughhestonengine.cpp          | 215 +++++++++++++++++++--
 1 file changed, 200 insertions(+), 15 deletions(-)

commit b8b55faa300c6e06ef729067c6bbe4df8f6997dc
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Fri, 24 Jul 2026 14:07:09 -0500

    Adding tests for Rough Heston Pade approximation.

 test-suite/roughhestonmodel.cpp | 449 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 449 insertions(+)

commit 26c576cb26496e84a09cfa0e6172fe04602f4e2d
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Fri, 24 Jul 2026 14:04:51 -0500

    Update description.

 ql/pricingengines/vanilla/analyticroughhestonengine.hpp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

commit 05b0efd84685c939a9854d8a10362798368c246c
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Fri, 24 Jul 2026 13:58:26 -0500

    Adding Ricatti coefficients.

 ql/pricingengines/vanilla/analyticroughhestonengine.hpp | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

commit 9f96ac4ae2aaf69c4e590e757ec8d5cf9ff9b2ec
Author: Colin Alberts <colin.albs@gmail.com>
Date:   Fri, 24 Jul 2026 13:55:17 -0500

    Adding support for rational Pade approximations.

 .../vanilla/analyticroughhestonengine.hpp          | 54 ++++++++++++++++++----
 1 file changed, 44 insertions(+), 10 deletions(-)

commit d8fa390c62ee13b4642395b2cfd0ad0f624e41cc
Author: kp9991 <kp9991@gmail.com>
Date:   Sat, 25 Jul 2026 04:45:43 +1000

    Restore the usage of the old ref date for Ibor

 .../volatility/optionlet/optionletstripper.cpp     | 16 +++++++
 .../volatility/optionlet/optionletstripper.hpp     |  3 ++
 .../volatility/optionlet/optionletstripper1.cpp    |  2 +-
 .../volatility/optionlet/optionletstripper2.cpp    |  3 +-
 test-suite/optionletstripper.cpp                   | 55 ++++++++++++++++++++++
 5 files changed, 76 insertions(+), 3 deletions(-)

commit ecf01b5989f69a8381e656d95c35a1454540085b
Merge: d51150bbf b4b29f31e
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 24 Jul 2026 18:44:45 +0200

    Rough Heston Model with Semi-Analytic Fourier Pricing Engine and Fractional ODE Solver (#2648)

commit d51150bbf115fafc97aabb83074471dfabe07c71
Merge: b56b4b2af 3da3c5526
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 24 Jul 2026 17:47:23 +0200

    fix: use dirty price in CallableBond effective duration and convexity (#2671)

commit b56b4b2af0ba994d676bcfcf852711e537f985cc
Merge: 3a4fb5ea6 936ceaf01
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 24 Jul 2026 17:46:51 +0200

    Add Indonesia holidays for 2015-2026 (#2676)

commit b4b29f31ee136bb423fa3201dd5f6b83c5e43751
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 24 Jul 2026 17:11:38 +0200

    Turn some comments into Doxygen docs

 ql/math/integrals/fourierintegration.hpp           | 27 ++++++++++++++++------
 ql/models/equity/roughhestonmodel.hpp              | 12 +++++-----
 .../vanilla/analyticroughhestonengine.hpp          | 14 ++++++-----
 3 files changed, 34 insertions(+), 19 deletions(-)

commit 3a4fb5ea6ba0059f962d69704cd3146b98c5561e
Merge: 7d7c1ded0 b2cd65148
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 24 Jul 2026 16:39:21 +0200

    Add CMA-ES Optimizer (#2654)

commit 7d7c1ded010623a46870219a10eb0a9f2f64b9ab
Merge: c4a2d93f3 d34ea2648
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 24 Jul 2026 16:27:34 +0200

    Agent/clarify expected tranche loss units (#2672)

commit c4a2d93f339bcf199e9066cb9f9caa10fad1b2ba
Merge: 9d551ef02 712017322
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 24 Jul 2026 14:55:58 +0200

    OIS-Ibor basis bootstrap (#2674)

commit d34ea2648e395f55554f27c69a9253bcf19c6e74
Author: Amit Jha <jha.8@iitj.ac.in>
Date:   Fri, 24 Jul 2026 17:45:43 +0530

    docs: update Doxygen comments for expectedTrancheLoss

 ql/experimental/credit/defaultlossmodel.hpp | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

commit 3da3c5526d4be8cd65f0f8fe40bb267df2050706
Author: Amit Jha <jha.8@iitj.ac.in>
Date:   Fri, 24 Jul 2026 17:41:11 +0530

    test: update callable bond effective duration test with issue #1882 case

 test-suite/callablebonds.cpp | 91 +++++++++++++++++++++++++++++---------------
 1 file changed, 61 insertions(+), 30 deletions(-)

commit 5c76256c784af77b8fd5362f49a27d2e4aa43581
Author: kp9991 <kp9991@gmail.com>
Date:   Fri, 24 Jul 2026 20:57:46 +1000

    Payment lag should only apply to coupons

 .../termstructures/crosscurrencyratehelpers.cpp    | 81 +++++++++++-----------
 .../termstructures/crosscurrencyratehelpers.hpp    |  6 +-
 .../constnotionalcrosscurrencybasisswap.cpp        |  8 +--
 .../constnotionalcrosscurrencybasisswap.hpp        |  4 +-
 ...nstnotionalcrosscurrencyfixedvsfloatingswap.cpp | 10 +--
 ...nstnotionalcrosscurrencyfixedvsfloatingswap.hpp |  4 +-
 ql/instruments/crosscurrencyswap.cpp               | 19 +++--
 ql/instruments/crosscurrencyswap.hpp               |  2 -
 ql/instruments/mtmcrosscurrencybasisswap.cpp       | 28 ++++----
 ql/instruments/mtmcrosscurrencybasisswap.hpp       |  5 ++
 test-suite/crosscurrencyratehelpers.cpp            | 67 +++++++++++++++++-
 test-suite/mtmcrosscurrencybasisswap.cpp           | 43 ++++++++----
 12 files changed, 186 insertions(+), 91 deletions(-)

commit 71201732257876c077f880cda852d31e5c6816a6
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 24 Jul 2026 12:39:25 +0200

    Improve commit.
    
    For the ON-IBOR helper, we can refer to "overnight" and "ibor" instead
    of "base" and "other", which makes it more clear.  Also, the default
    case is described first.

 .../termstructures/basisswapratehelpers.hpp          | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

commit 936ceaf01dba3ce86e401b4e342bae22d2c3b394
Author: DMZ22 <devashishmoghe@gmail.com>
Date:   Fri, 24 Jul 2026 14:09:28 +0530

    Move Labour Day and Pancasila Day to the rule-based section
    
    Both are fixed-date holidays, but neither applies to the whole range the
    calendar covers: 1 May became a national holiday in 2014 and 1 June in
    2017, so each rule carries a year guard.
    
    Verified behaviour-preserving over 2005-2026 (every day compared against
    the previous revision, no differences) and still an exact match against
    the IDX session list for 2015-2026.

 ql/time/calendars/indonesia.cpp | 38 ++++----------------------------------
 1 file changed, 4 insertions(+), 34 deletions(-)

commit 9d551ef02761c9fcd1051a2e64ce70b18a17957c
Merge: 2570781f1 3c3dddf64
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 24 Jul 2026 10:16:00 +0200

    Add Hong Kong holidays for 2026 (#2673)

commit f5976470483f6e6bbefa9a8b79f48455c7fd71d3
Author: kp9991 <kp9991@gmail.com>
Date:   Fri, 24 Jul 2026 14:29:54 +1000

    Exposing swap() for helpers

 .../termstructures/crosscurrencyratehelpers.cpp    | 92 +++++++++++++++++-----
 .../termstructures/crosscurrencyratehelpers.hpp    | 28 +++++++
 test-suite/mtmcrosscurrencybasisswap.cpp           | 25 ++++++
 3 files changed, 125 insertions(+), 20 deletions(-)

commit 99cc8ca48316a7957fbd6dfa0f6910f588f2b935
Author: kp9991 <kp9991@gmail.com>
Date:   Fri, 24 Jul 2026 14:05:06 +1000

    comment

 ql/instruments/constnotionalcrosscurrencyswap.hpp | 2 ++
 1 file changed, 2 insertions(+)

commit 6e5dcb4412ba87d95c63a19ecd0a0aec010313d2
Author: kp9991 <kp9991@gmail.com>
Date:   Fri, 24 Jul 2026 14:02:23 +1000

    FX Reset notional exchange cashflows

 QuantLib.vcxproj                                   |   3 +-
 QuantLib.vcxproj.filters                           |   9 +-
 ql/CMakeLists.txt                                  |   3 +-
 ql/cashflows/Makefile.am                           |   2 +
 ql/cashflows/all.hpp                               |   1 +
 ql/cashflows/fxresetcashflows.cpp                  | 149 +++++++++++++++++
 ql/cashflows/fxresetcashflows.hpp                  | 131 +++++++++++++++
 ql/instruments/Makefile.am                         |   1 -
 ql/instruments/constnotionalcrosscurrencyswap.hpp  |  43 +----
 ql/instruments/mtmcrosscurrencybasisswap.cpp       | 106 ++++++------
 ql/instruments/mtmcrosscurrencybasisswap.hpp       |  58 +++----
 .../discountingmtmcrosscurrencybasisswapengine.cpp | 180 +++------------------
 .../discountingmtmcrosscurrencybasisswapengine.hpp |  14 +-
 test-suite/mtmcrosscurrencybasisswap.cpp           | 180 +++++++++++++++++++++
 14 files changed, 578 insertions(+), 302 deletions(-)

commit 7b439edfa5bac89f5bdb1dbad49c37dae9f02f04
Author: kp9991 <kp9991@gmail.com>
Date:   Fri, 24 Jul 2026 14:02:04 +1000

    FX Reset notional exchange cashflows

 ql/instruments/constnotionalcrosscurrencyswap.cpp | 36 -----------------------
 1 file changed, 36 deletions(-)

commit f47635819a9e86c0e98a83dbab15b50e6bf6ede5
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Thu, 23 Jul 2026 15:34:57 -0500

    Extracting integration as its own class.

 ql/math/integrals/fourierintegration.cpp | 278 +++++++++++++++++++++++++++++++
 ql/math/integrals/fourierintegration.hpp | 101 +++++++++++
 2 files changed, 379 insertions(+)

commit 26c55f0719e79a5b334e64d1d936613c0e053edb
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Thu, 23 Jul 2026 15:32:09 -0500

    Using Integration typedef instead of class.

 ql/pricingengines/vanilla/analyticptdhestonengine.hpp   | 2 +-
 ql/pricingengines/vanilla/analyticroughhestonengine.hpp | 7 ++++---
 2 files changed, 5 insertions(+), 4 deletions(-)

commit 09f88711b4eb3292fcfbf1157e9c477adeaa8c17
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Thu, 23 Jul 2026 15:31:11 -0500

    Removing integration methods from Analytic Heston Engines.

 ql/pricingengines/vanilla/analytichestonengine.cpp | 260 ---------------------
 ql/pricingengines/vanilla/analytichestonengine.hpp |  63 +----
 2 files changed, 3 insertions(+), 320 deletions(-)

commit e7e467fafe76c14467863594d7f519d025cf1d9b
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Thu, 23 Jul 2026 15:29:35 -0500

    Adding Fourier Integration standalone engine.

 QuantLib.vcxproj              | 2 ++
 QuantLib.vcxproj.filters      | 6 ++++++
 ql/CMakeLists.txt             | 2 ++
 ql/math/integrals/Makefile.am | 2 ++
 ql/math/integrals/all.hpp     | 1 +
 5 files changed, 13 insertions(+)

commit cd8a3b4cb77fd3c6e78aeb49d41ffc1c4fcf0bfc
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Thu, 23 Jul 2026 15:26:40 -0500

    Change from shared pointer to copy as shared pointer is overengineering in this scenario.

 ql/pricingengines/vanilla/analyticroughhestonengine.cpp | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

commit e412db880d4177b563cc5a461ae1c9ef0a34b62b
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Thu, 23 Jul 2026 15:25:30 -0500

    Changing to BOOST_CHECK_EXCEPTION for tighter fails.

 test-suite/roughhestonmodel.cpp | 39 ++++++++++++++++++++++++---------------
 1 file changed, 24 insertions(+), 15 deletions(-)

commit d310c8191f61e8eda7954ec47ad3b484ba0aeccc
Author: DMZ22 <devashishmoghe@gmail.com>
Date:   Fri, 24 Jul 2026 00:25:22 +0530

    Add Indonesia holidays for 2015-2026

 ql/time/calendars/indonesia.cpp | 337 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 337 insertions(+)

commit 44861bb2a2af06e231e8b0d6770ce5b855d51216
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Thu, 23 Jul 2026 10:24:44 -0500

    Add CMAES.

 ql/math/optimization/all.hpp | 1 +
 1 file changed, 1 insertion(+)

commit 7be9364773454ba764b78a1b0b3da6812c043458
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Thu, 23 Jul 2026 10:24:27 -0500

    Put CMAES in optimization Makefile.

 ql/math/optimization/Makefile.am | 2 ++
 1 file changed, 2 insertions(+)

commit 87430c5338349cfa35566fbc7a9e7f0f911b572b
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Thu, 23 Jul 2026 10:24:07 -0500

    Change import from experimental to optimization.

 ql/math/optimization/cmaes.cpp | 2 +-
 ql/math/optimization/cmaes.hpp | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

commit 8770dcedbebadc25cda3c4e632791418f8558a1c
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Thu, 23 Jul 2026 10:23:18 -0500

    Change CMAES import path to new optimization path.

 test-suite/optimizers.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 468937a4acec402d0d4414e383633bf7d4627a29
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Thu, 23 Jul 2026 10:22:44 -0500

    Moving CMAES function from experimental to optimization folder.

 QuantLib.vcxproj         |  4 ++--
 QuantLib.vcxproj.filters | 12 ++++++------
 2 files changed, 8 insertions(+), 8 deletions(-)

commit 26122f8bfb8af4f12b3b0abfe9bb89e9ed0a7d66
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Thu, 23 Jul 2026 10:22:03 -0500

    Removing CMAES method from experimental.

 ql/CMakeLists.txt                                     | 4 ++--
 ql/experimental/math/Makefile.am                      | 2 --
 ql/experimental/math/all.hpp                          | 1 -
 ql/{experimental/math => math/optimization}/cmaes.cpp | 0
 ql/{experimental/math => math/optimization}/cmaes.hpp | 0
 5 files changed, 2 insertions(+), 5 deletions(-)

commit 2570781f1c69552a40ebcce4f4013cc21ed32e0a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 23 Jul 2026 15:11:25 +0200

    Remove workflow replacing maybe-not-AAD-compatible macros
    
    The ratio of true positives to false was not worth the additional PRs
    and CI builds

 .github/workflows/test-macros.yml | 24 ------------------------
 1 file changed, 24 deletions(-)

commit 65d42bb994b4c484c20de9cbe2c0d97ba6eccbdc
Merge: 6fd9bbad7 c2d1f44c7
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 23 Jul 2026 15:03:44 +0200

    Preserve ATM vols in SABR swaption-cube calibration (#2656)

commit 3c2076ec132d905127943a29af2eb3dbe18e3d10
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 23 Jul 2026 11:48:11 +1000

    Reverting unintended change

 ql/userconfig.hpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit c2d1f44c73fffe36b9d48e8a272131bbde4f5833
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 23 Jul 2026 08:47:15 +1000

    Refact

 .../swaption/sabrswaptionvolatilitycube.hpp        | 201 +++++++++++++--------
 1 file changed, 130 insertions(+), 71 deletions(-)

commit 802cc1f3ab043e8864bacb1589c1d2818bbe38f3
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 23 Jul 2026 08:36:54 +1000

    Using a single spreadVolInterpolationMethod

 .../swaption/sabrswaptionvolatilitycube.hpp        | 206 +++++----------------
 1 file changed, 44 insertions(+), 162 deletions(-)

commit 3c3dddf646d49966c7a4bfe19504060cd6c4f109
Author: DMZ22 <devashishmoghe@gmail.com>
Date:   Wed, 22 Jul 2026 22:37:48 +0530

    Add Hong Kong holidays for 2026

 ql/time/calendars/hongkong.cpp | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

commit 26e93ba94c3197d998e1c400715bbb27097b9978
Merge: 603882111 e5c21db13
Author: Amit Kumar Jha <77675138+AIM-IT4@users.noreply.github.com>
Date:   Wed, 22 Jul 2026 22:09:08 +0530

    Merge pull request #1 from AIM-IT4/agent/clarify-expected-tranche-loss-units
    
    Clarify expected tranche loss units

commit e5c21db135341b069718618fc397cb6487f8e8f2
Author: Amit Kumar Jha <77675138+AIM-IT4@users.noreply.github.com>
Date:   Wed, 22 Jul 2026 22:07:44 +0530

    Clarify expected tranche loss units

 ql/experimental/credit/defaultlossmodel.hpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

commit 6fd9bbad77e1e9d58af44450aed2b833d649a85b
Merge: 603882111 30f43c4ec
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 22 Jul 2026 11:58:38 +0200

    docs: add explanatory comment to defaultProbability overloads (#2670)

commit 828c0333803a978cc3e63f315e85264f3a68cb4b
Author: Amit Jha <jha.8@iitj.ac.in>
Date:   Tue, 21 Jul 2026 19:04:06 +0530

    fix: use dirty price in CallableBond effective duration and convexity

 ql/experimental/callablebonds/callablebond.cpp | 14 +++++---
 test-suite/callablebonds.cpp                   | 48 ++++++++++++++++++++++++++
 2 files changed, 58 insertions(+), 4 deletions(-)

commit 30f43c4ecaa403c9cf6f353a35b63b8c183661d8
Author: Amit Jha <jha.8@iitj.ac.in>
Date:   Tue, 21 Jul 2026 18:45:28 +0530

    docs: add explanatory comment to defaultProbability overloads

 ql/termstructures/defaulttermstructure.cpp | 10 ++++++++++
 1 file changed, 10 insertions(+)

commit 60388211166928e4367c800a972508bdc71d6cd7
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Tue, 21 Jul 2026 09:58:12 +0000

    Update copyright list in license

 LICENSE.TXT | 1 +
 1 file changed, 1 insertion(+)

commit f7d606cf067e27c4eb0d1010b3fa50b348797f3d
Merge: 7b7c5775b 415d35a94
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 21 Jul 2026 11:57:07 +0200

    Add optional rounding precision to OvernightIndexedSwap and MakeOIS (#2666)

commit 7b7c5775bfc9b543f02b92505d8d7c8aadc83fcf
Merge: 57a35f9c7 19a9848e4
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 21 Jul 2026 09:24:14 +0200

    QL_REQUIRE_EXPLICIT_EVALUATION_DATE (#2644)

commit 57a35f9c79a807d9e5990c3335d73ce145c9947b
Merge: 07f8fd052 f5aba9a74
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 21 Jul 2026 09:22:56 +0200

    Vanilla swaps should calculate the spot date from the actual evaluation date, even if it's a holiday (#2653)

commit d2f2002ebf3845946c19dc1ac0de4f85bc2cb2a0
Author: kp9991 <kp9991@gmail.com>
Date:   Tue, 21 Jul 2026 07:56:05 +1000

    Fixing build failure

 ql/pricingengines/swaption/gaussian1dfloatfloatswaptionengine.cpp  | 6 +++---
 ql/pricingengines/swaption/gaussian1dnonstandardswaptionengine.cpp | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

commit 8638590b068aa3e19afa72c1ac8a4cf24345e179
Author: kp9991 <kp9991@gmail.com>
Date:   Tue, 21 Jul 2026 07:38:05 +1000

    Replacing ext:: with std:: and adding comments

 ql/instruments/nonstandardswap.cpp                               | 4 ++--
 ql/instruments/nonstandardswap.hpp                               | 4 ++--
 .../swaption/gaussian1djamshidianswaptionengine.cpp              | 9 ++++++---
 ql/pricingengines/swaption/gaussian1dswaptionengine.cpp          | 9 +--------
 ql/pricingengines/swaption/jamshidianswaptionengine.cpp          | 9 ++++++---
 test-suite/gsr.cpp                                               | 4 ++--
 test-suite/multipleresetsswap.cpp                                | 2 +-
 7 files changed, 20 insertions(+), 21 deletions(-)

commit ec0919bcaa8521bdaa28b113364accfdc09e55db
Author: kp9991 <kp9991@gmail.com>
Date:   Tue, 21 Jul 2026 07:12:13 +1000

    Following code review

 .../gaussian1dfloatfloatswaptionengine.cpp         |  60 ++++++----
 .../gaussian1dnonstandardswaptionengine.cpp        |  32 ++++--
 .../swaption/gaussian1dswaptionengine.cpp          |  71 +++++++++---
 test-suite/gsr.cpp                                 | 121 +++++++++++++++++++++
 4 files changed, 237 insertions(+), 47 deletions(-)

commit 07f8fd052dc1835b7151e76b8fd8853df26dabe4
Merge: 7493db907 499585069
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 20 Jul 2026 15:58:33 +0200

    Observe term structure in extended CIR model (#2663)

commit 7493db907f00b3ed855c88518b2fbf70e7a1bfe0
Merge: a0c3847a3 7862be6b8
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 20 Jul 2026 15:57:15 +0200

    Use make_shared in pricing engines (#2636)

commit 3272ceaf159784cdc7680af029ad13afe3f4bb09
Author: kp9991 <kp9991@gmail.com>
Date:   Mon, 20 Jul 2026 23:14:03 +1000

    Adding paymentLag

 .../termstructures/basisswapratehelpers.cpp         | 21 ++++++++++++++++-----
 .../termstructures/basisswapratehelpers.hpp         |  6 +++++-
 test-suite/basisswapratehelpers.cpp                 | 21 +++++++++++++++++----
 3 files changed, 38 insertions(+), 10 deletions(-)

commit 8eaf8dd981a4b0fe4b8ce28a0652822836188c03
Author: kp9991 <kp9991@gmail.com>
Date:   Mon, 20 Jul 2026 21:41:13 +1000

    Initial commit

 .../termstructures/basisswapratehelpers.cpp        | 20 +++++++++---
 .../termstructures/basisswapratehelpers.hpp        | 18 ++++++++---
 ql/userconfig.hpp                                  |  2 +-
 test-suite/basisswapratehelpers.cpp                | 37 +++++++++++++++++++---
 4 files changed, 61 insertions(+), 16 deletions(-)

commit a0c3847a36f245a83c723618769bc6a56ecbf579
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Sun, 19 Jul 2026 02:25:46 +0000

    Automated fixes by clang-tidy

 ql/termstructures/inflation/inflationhelpers.cpp | 2 +-
 test-suite/distributions.cpp                     | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

commit 19a9848e42fcdd45924b1f5322c16f0b5ae8117e
Author: kp9991 <kp9991@gmail.com>
Date:   Mon, 20 Jul 2026 14:38:04 +1000

    Retrigger GitHub workflow

 test-suite/settings.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 547b045e6e9aa4f5f44a3a1541fad764d465e1b9
Author: kp9991 <kp9991@gmail.com>
Date:   Mon, 20 Jul 2026 13:41:30 +1000

    unit test

 test-suite/settings.cpp | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

commit 1935ff637328bd7beea62ba34e425c3c1ef195e7
Author: kp9991 <kp9991@gmail.com>
Date:   Mon, 20 Jul 2026 13:35:01 +1000

    Moving QL_REQUIRE_EXPLICIT_EVALUATION_DATE to settings

 CMakeLists.txt    |  1 -
 ql/config.hpp.cfg |  1 -
 ql/settings.cpp   | 15 +++++++++++++++
 ql/settings.hpp   | 21 ++++-----------------
 ql/userconfig.hpp |  9 ---------
 5 files changed, 19 insertions(+), 28 deletions(-)

commit 726977889416d0fd26258a53a3edcf6f188765a2
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 19 Jul 2026 18:05:53 +0200

    gh-2172 fix criterion

 ql/cashflows/cashflows.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 309a8d49b504c11175901728a879e724d3d988f1
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sat, 18 Jul 2026 18:59:30 +0200

    gh-2172 remove unit tests that do no apply anymroe

 test-suite/interestrates.cpp | 21 +--------------------
 1 file changed, 1 insertion(+), 20 deletions(-)

commit cb2ce14fe46a1ccc2962e45540b592decf8ab95f
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sat, 18 Jul 2026 18:18:55 +0200

    gh-2172 fix

 ql/cashflows/cashflows.cpp | 1 -
 1 file changed, 1 deletion(-)

commit 7b18419305e66482cfa941201281dc39ec42b785
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sat, 18 Jul 2026 18:12:00 +0200

    gh-2172 fix compounding

 ql/cashflows/cashflows.cpp | 28 +++++++++++++++++++++-------
 ql/compounding.hpp         | 10 +++++-----
 ql/interestrate.cpp        | 12 ++----------
 3 files changed, 28 insertions(+), 22 deletions(-)

commit 96f331e7e43c8847054997ea758a4bbdef7aa626
Author: Sergio Araujo <sergiozaraujoz98@gmail.com>
Date:   Fri, 17 Jul 2026 11:35:26 +0100

    Add optional rounding precision to OvernightIndexedSwap and MakeOIS
    
    Follow-up to #2624, which introduced an optional rounding precision
    for the compounded rate on OvernightIndexedCoupon and OvernightLeg
    (per the ISDA Compounding/Averaging Matrix, e.g. SONIA rounds to
    4 decimal places in percent). This exposes the same parameter on the
    OvernightIndexedSwap constructors and as MakeOIS::withRoundingPrecision,
    so a rounded OIS can be priced without assembling a generic Swap from
    hand-built legs.

 ql/instruments/makeois.cpp              | 16 ++++--
 ql/instruments/makeois.hpp              |  4 ++
 ql/instruments/overnightindexedswap.cpp | 42 ++++++++++-----
 ql/instruments/overnightindexedswap.hpp | 16 ++++--
 test-suite/overnightindexedswap.cpp     | 96 ++++++++++++++++++++++++++++++++-
 5 files changed, 152 insertions(+), 22 deletions(-)

commit 3baff1f70186d427d18fc1d9781c5ec38427be2a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 17 Jul 2026 09:02:21 +0200

    Don't document a couple of obsolete files

 ql/any.hpp      | 4 ----
 ql/optional.hpp | 4 ----
 2 files changed, 8 deletions(-)

commit 24d3030030f604e3ce2e0ef4a66519f2fe2837f4
Author: kp9991 <kp9991@gmail.com>
Date:   Fri, 17 Jul 2026 12:50:13 +1000

    Some refact + addressing Mac OS compile problem

 ql/instruments/constnotionalcrosscurrencyswap.cpp  |  29 ----
 ql/instruments/constnotionalcrosscurrencyswap.hpp  |  35 +----
 .../discountingmtmcrosscurrencybasisswapengine.cpp | 172 ++++++++-------------
 .../discountingmtmcrosscurrencybasisswapengine.hpp |  17 +-
 test-suite/mtmcrosscurrencybasisswap.cpp           |  92 +++++++++++
 5 files changed, 171 insertions(+), 174 deletions(-)

commit 7862be6b8a1d3ece071f3a7aefa91c6f79ba051e
Author: JewonJeon <jewon.j0620@gmail.com>
Date:   Fri, 17 Jul 2026 11:35:52 +0900

    Use make_shared for boundary conditions

 ql/pricingengines/barrier/fdblackscholesrebateengine.cpp  | 10 ++++------
 ql/pricingengines/barrier/fdhestondoublebarrierengine.cpp | 10 ++++------
 ql/pricingengines/barrier/fdhestonrebateengine.cpp        | 10 ++++------
 3 files changed, 12 insertions(+), 18 deletions(-)

commit b83913d1d94796bc631ffa218a42ec79b68de9af
Author: kp9991 <kp9991@gmail.com>
Date:   Fri, 17 Jul 2026 11:46:01 +1000

    Using ExchangeRateManager

 QuantLib.vcxproj                                   |  2 -
 QuantLib.vcxproj.filters                           |  6 --
 ql/CMakeLists.txt                                  |  2 -
 ql/indexes/Makefile.am                             |  2 -
 ql/indexes/all.hpp                                 |  1 -
 ql/indexes/fxindex.cpp                             | 64 ----------------
 ql/indexes/fxindex.hpp                             | 85 ----------------------
 ql/instruments/mtmcrosscurrencybasisswap.cpp       | 32 ++------
 ql/instruments/mtmcrosscurrencybasisswap.hpp       | 13 ++--
 .../discountingmtmcrosscurrencybasisswapengine.cpp | 75 +++++++------------
 test-suite/mtmcrosscurrencybasisswap.cpp           | 69 ++++++++++--------
 11 files changed, 80 insertions(+), 271 deletions(-)

commit c401179e0530be2cec1e1adaf489ecc2cc8a59da
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 16 Jul 2026 17:57:03 +0200

    Update workflow to check for deprecated ext:: classes

 .github/workflows/namespaces.yml | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

commit 4350e524644349a7b63e2e78202d7ce2e773136b
Merge: c7169ee26 887fd8bb7
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 16 Jul 2026 17:55:58 +0200

    Deprecate `ext::any`, `ext::optional` and friends (#2660)

commit c4967ec2a6864482a14c8fb4799217bce1b71754
Author: JewonJeon <jewon.j0620@gmail.com>
Date:   Fri, 17 Jul 2026 00:49:36 +0900

    Optimize Jamshidian root finding

 .../swaption/jamshidianswaptionengine.cpp          | 45 +++++++++++++---------
 1 file changed, 26 insertions(+), 19 deletions(-)

commit 499585069e50be683a0b4060b57165783041210d
Author: JewonJeon <jewon.j0620@gmail.com>
Date:   Fri, 17 Jul 2026 00:25:35 +0900

    Observe term structure in extended CIR model

 .../onefactormodels/extendedcoxingersollross.cpp   |  4 +++-
 test-suite/shortratemodels.cpp                     | 22 ++++++++++++++++++++++
 2 files changed, 25 insertions(+), 1 deletion(-)

commit c7169ee26804f3dc1fdc80b1e2288738420094df
Merge: 775c143eb 141fd0048
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 16 Jul 2026 12:26:45 +0200

    Add `vector` header to `time/calendars/islamicholidays.cpp` (#2662)

commit be8970b11268cef48839afc4084d54ca602771b0
Author: JewonJeon <jewon.j0620@gmail.com>
Date:   Thu, 16 Jul 2026 19:04:43 +0900

    comment applied for auto declaration

 .../asian/fdblackscholesasianengine.cpp            | 12 +++++------
 .../barrier/analyticbinarybarrierengine.cpp        |  7 +++---
 .../barrier/binomialbarrierengine.hpp              |  4 ++--
 .../barrier/fdblackscholesbarrierengine.cpp        | 23 ++++++++------------
 .../barrier/fdblackscholesrebateengine.cpp         | 10 ++++-----
 .../barrier/fdhestonbarrierengine.cpp              | 25 +++++++++-------------
 .../barrier/fdhestondoublebarrierengine.cpp        | 11 +++++-----
 ql/pricingengines/barrier/fdhestonrebateengine.cpp | 13 ++++++-----
 .../basket/fd2dblackscholesvanillaengine.cpp       | 12 +++++------
 ql/pricingengines/basket/stulzengine.cpp           |  3 +--
 .../bond/binomialconvertibleengine.hpp             |  4 ++--
 .../cliquet/analyticcliquetengine.cpp              |  3 +--
 .../cliquet/analyticperformanceengine.cpp          |  3 +--
 .../exotic/analyticamericanmargrabeengine.cpp      | 10 ++++-----
 ql/pricingengines/forward/forwardengine.hpp        |  4 ++--
 .../forward/mcforwardvanillaengine.hpp             |  2 +-
 .../forward/replicatingvarianceswapengine.hpp      |  6 +++---
 ql/pricingengines/mclongstaffschwartzengine.hpp    |  4 +---
 ql/pricingengines/swaption/fdg2swaptionengine.cpp  | 10 ++++-----
 ql/pricingengines/vanilla/binomialengine.hpp       |  4 ++--
 ql/pricingengines/vanilla/fdcirvanillaengine.cpp   | 10 ++++-----
 .../vanilla/fdhestonhullwhitevanillaengine.cpp     | 12 +++++------
 .../vanilla/fdhestonvanillaengine.cpp              |  7 +++---
 .../vanilla/fdsimplebsswingengine.cpp              | 14 ++++++------
 ql/pricingengines/vanilla/qdfpamericanengine.cpp   |  4 +---
 25 files changed, 98 insertions(+), 119 deletions(-)

commit 141fd0048c2295f213f3631665e89c291edbb713
Author: Dirk Eddelbuettel <edd@debian.org>
Date:   Wed, 15 Jul 2026 10:32:35 -0500

    Add vector header

 ql/time/calendars/islamicholidays.cpp | 1 +
 1 file changed, 1 insertion(+)

commit 775c143eb45fe7a45edfffc188eb80a26c02df32
Merge: 353fef70e 70e5bdac1
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 15 Jul 2026 17:20:32 +0200

    Use Boost for inverse cumulative Student t distribution (#2650)

commit 353fef70ebcbe83fbd4ca243b32a3a8dffbd0a71
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 14 Apr 2026 10:30:58 +0200

    Increase version number automatically after release

 .github/workflows/increase-version-number.yml | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

commit d1e0e670eb9f9c6fa1e81c15ee7a11ac2d4b7e75
Merge: d9287199b 02be39c74
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 15 Jul 2026 16:53:22 +0200

    Deprecated unused data member in zero-coupon inflation helper (#2661)

commit 70e5bdac1966a2750923797a8560ca1e8d3f8b44
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 15 Jul 2026 16:28:47 +0200

    Deprecate unused arguments

 ql/math/distributions/studenttdistribution.hpp | 12 +++++++++---
 test-suite/distributions.cpp                   |  8 ++++----
 2 files changed, 13 insertions(+), 7 deletions(-)

commit d9287199b7baa6c7ac4d886451b33117eade9268
Merge: b8ecea369 3b4d5c3ba
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 15 Jul 2026 15:15:19 +0200

    use paymentAdjustment in the fixed leg (#2649)

commit b8ecea3694202c7d5d0ae4e72a8e508d61790b35
Merge: d2b57b56b 1d1718774
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 14 Jul 2026 15:01:33 +0200

    Remove features deprecated in version 1.39 (#2659)

commit d2b57b56b939ad5d5ba0448268cb22c7f0774555
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Tue, 14 Jul 2026 09:36:49 +0000

    Set version to 1.44-dev

 CMakeLists.txt | 6 +++---
 configure.ac   | 2 +-
 ql/version.hpp | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

commit e10d38e2ebf0ec339352b3dc50c62279bfa60c35
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 14 Jul 2026 11:28:28 +0200

    Revert "Increase version number automatically after release"
    
    This reverts commit fce61e4b3753c01240b387f7c9f4a44d5035bdb1.

 .github/workflows/increase-version-number.yml | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

commit d922e3c309b7e2f404f566edbb0323a10139db80
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Sun, 12 Jul 2026 07:26:30 -0700

    Adding CMAES to vsxproj.

 QuantLib.vcxproj         | 2 ++
 QuantLib.vcxproj.filters | 6 ++++++
 2 files changed, 8 insertions(+)

commit 17d6eff3b89085c1d0f58f40ba2cca9fdeb85c60
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Sun, 12 Jul 2026 07:25:54 -0700

    Formatting.

 ql/experimental/math/cmaes.hpp | 29 ++++++++++++-----------------
 1 file changed, 12 insertions(+), 17 deletions(-)

commit 981666a95afdb14fcf097d038bf5fd70f6d7177f
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 12 Jul 2026 12:31:00 +1000

    Initial commit

 .../swaption/sabrswaptionvolatilitycube.hpp        | 274 +++++++++++++++---
 test-suite/swaptionvolatilitycube.cpp              | 310 +++++++++++++++++++++
 2 files changed, 553 insertions(+), 31 deletions(-)

commit dfb8e8baaf2787d1b9bd105ddbc12655109cb917
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 12 Jul 2026 07:05:10 +1000

    Handling paymentLag

 ql/instruments/fixedvsfloatingswap.cpp             |  3 +-
 ql/instruments/fixedvsfloatingswap.hpp             | 12 ++++
 ql/instruments/nonstandardswap.cpp                 | 25 +++++++--
 ql/instruments/nonstandardswap.hpp                 | 18 +++++-
 .../gaussian1djamshidianswaptionengine.cpp         | 10 ++--
 .../swaption/jamshidianswaptionengine.cpp          |  5 +-
 test-suite/gsr.cpp                                 | 64 ++++++++++++++++++++++
 test-suite/multipleresetsswap.cpp                  | 28 ++++++++++
 8 files changed, 151 insertions(+), 14 deletions(-)

commit 8d7933173a4d62a98b502c31cf19458b1bab6921
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Sat, 11 Jul 2026 13:26:16 -0700

    Bool var.

 ql/experimental/math/cmaes.cpp | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

commit 55c14ba165a5e65686a05a226865ad8be3ee8dcf
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Sat, 11 Jul 2026 13:24:40 -0700

    Diagonal D.

 ql/experimental/math/cmaes.cpp | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

commit d4c0484660b2809ccafc233fbd464f41a617817c
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Sat, 11 Jul 2026 13:22:29 -0700

    Removing unnecessary comments.

 ql/experimental/math/cmaes.cpp | 51 +++++++++++++-----------------------------
 1 file changed, 15 insertions(+), 36 deletions(-)

commit f93d7f41b8ae99b794a5075f8d4e7369c46fc1ba
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Sat, 11 Jul 2026 13:17:21 -0700

    Comment and const cleanup.

 ql/experimental/math/cmaes.cpp | 105 ++++++++++++++++++-----------------------
 1 file changed, 47 insertions(+), 58 deletions(-)

commit 515dee7da64e5e5ca86aaabf6a3820c535a26f55
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Sat, 11 Jul 2026 09:31:41 -0700

    Inlining and using built-in functions.

 ql/experimental/math/cmaes.cpp | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

commit 116f5a42289d87d9c2e5650e1fdcd9cffad98f81
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Sat, 11 Jul 2026 09:20:15 -0700

    Init CMAES algorithm. Need to clean up comments and performance-optimize at low level.

 ql/experimental/math/cmaes.cpp | 261 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 261 insertions(+)

commit 480364a5fa04dccd626c055d2996a8729e9d1407
Author: kp9991 <kp9991@gmail.com>
Date:   Sat, 11 Jul 2026 17:12:20 +1000

    More unit tests

 test-suite/gsr.cpp | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 126 insertions(+)

commit f537259348d3c81c56bfdfaa034ea82cc2f1a75a
Author: kp9991 <kp9991@gmail.com>
Date:   Sat, 11 Jul 2026 09:29:24 +1000

    Jamshidian

 .../gaussian1djamshidianswaptionengine.cpp         | 49 +++++++++++++++++-----
 .../swaption/jamshidianswaptionengine.cpp          | 42 +++++++++++++++----
 test-suite/gsr.cpp                                 | 41 ++++++++++++++++++
 3 files changed, 114 insertions(+), 18 deletions(-)

commit f058c87325ba9da0572e7bb88e12fee964ab5e00
Author: kp9991 <kp9991@gmail.com>
Date:   Sat, 11 Jul 2026 07:34:59 +1000

    Handling compounded SOFR periods in GSR

 ql/instruments/floatfloatswap.cpp                  |  51 ++++++-
 ql/instruments/nonstandardswap.cpp                 |  30 ++--
 .../gaussian1dfloatfloatswaptionengine.cpp         |  33 ++++-
 .../gaussian1dnonstandardswaptionengine.cpp        |  40 +++++-
 .../swaption/gaussian1dswaptionengine.cpp          |  34 ++++-
 test-suite/gsr.cpp                                 | 152 +++++++++++++++++++++
 6 files changed, 313 insertions(+), 27 deletions(-)

commit 59558d94c6a92ef990dc28eba30b0162063a8925
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Fri, 10 Jul 2026 09:37:39 -0700

    Removing redundant check.

 test-suite/optimizers.cpp | 23 ++++-------------------
 1 file changed, 4 insertions(+), 19 deletions(-)

commit eb88e49c7d7fbe049bfade941f47443ce1863518
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Fri, 10 Jul 2026 09:37:24 -0700

    Adding CMAES header.

 ql/experimental/math/cmaes.hpp | 99 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 99 insertions(+)

commit 0da4e4900dbe47aaae4963fe2efa7775dd03929a
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Fri, 10 Jul 2026 09:32:41 -0700

    CMAES optimizer tests: convex convergence on ill-conditioned separable quadratics, non-convex convergence, multimodal global search, rotational invariant, determinism check.

 test-suite/optimizers.cpp | 212 +++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 211 insertions(+), 1 deletion(-)

commit 5df1dac4ac163541e8733499e74bbcd3acbe985a
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Fri, 10 Jul 2026 09:21:07 -0700

    Adding CMAES to all.hpp experimental math file.

 ql/experimental/math/all.hpp | 1 +
 1 file changed, 1 insertion(+)

commit 139d240df96b69f66886f62b3857d49f03ab2e54
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Fri, 10 Jul 2026 09:13:38 -0700

    Adding CMAES to experimental math makefile.

 ql/experimental/math/Makefile.am | 2 ++
 1 file changed, 2 insertions(+)

commit d017e2586bf7feb383d729b943fe3feec8d7101c
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Fri, 10 Jul 2026 09:13:11 -0700

    Adding CMAES to cmake build.

 ql/CMakeLists.txt | 2 ++
 1 file changed, 2 insertions(+)

commit b02a9fe2ce633766cf3b3343a7338f238ead0a0f
Author: kp9991 <kp9991@gmail.com>
Date:   Fri, 10 Jul 2026 17:13:06 +1000

    Reworking OptionletStripper1

 .../volatility/optionlet/optionletstripper.cpp     |  85 ++++++-
 .../volatility/optionlet/optionletstripper.hpp     |  19 +-
 .../volatility/optionlet/optionletstripper1.cpp    |  94 ++------
 .../volatility/optionlet/optionletstripper1.hpp    |   1 -
 .../volatility/optionlet/optionletstripper2.cpp    | 183 +++++++++------
 .../volatility/optionlet/optionletstripper2.hpp    |   5 +-
 test-suite/optionletstripper.cpp                   | 251 +++++++++++++++++++++
 7 files changed, 486 insertions(+), 152 deletions(-)

commit f5aba9a74fe7ac61c3c1ecdce7e3ed70743b417c
Author: excal.rs <excal.rs@protonmail.com>
Date:   Thu, 9 Jul 2026 23:21:35 +0100

    Calculate spot dates from the actual evaluation date
    
    Settlement and fixing days are counted from the actual evaluation date,
    without first rolling it to a business day: Calendar::advance already
    skips non-business days, so the pre-adjustment added an extra business
    day whenever the evaluation date was a holiday or weekend.
    
    The adjustment is removed from MakeVanillaSwap and MakeOIS (when
    explicit settlement days are given) and from DepositRateHelper,
    FraRateHelper and BMASwapRateHelper.  MakeVanillaSwap and MakeOIS also
    gain an optional settlement calendar, defaulting to the float and
    overnight calendar respectively, since the calendar used for the
    settlement-day advance is not always the index calendar (e.g. USD SOFR
    swaps).

 ql/instruments/makeois.cpp              | 14 +++++--
 ql/instruments/makeois.hpp              |  2 +
 ql/instruments/makevanillaswap.cpp      | 14 +++++--
 ql/instruments/makevanillaswap.hpp      |  2 +
 ql/termstructures/yield/ratehelpers.cpp | 26 +++++--------
 test-suite/overnightindexedswap.cpp     | 65 ++++++++++++++++++++++++++++++++-
 test-suite/piecewiseyieldcurve.cpp      | 51 ++++++++++++++++++++++++++
 test-suite/swap.cpp                     | 61 +++++++++++++++++++++++++++++++
 8 files changed, 209 insertions(+), 26 deletions(-)

commit f82294bcdc76832ec6d527137b611de4412a5a24
Author: kp9991 <kp9991@gmail.com>
Date:   Thu, 9 Jul 2026 07:21:24 +1000

    Excluding first caplet + unit tests

 .../volatility/optionlet/optionletstripper1.cpp    |   3 +
 test-suite/optionletstripper.cpp                   | 265 ++++++++++++++++-----
 2 files changed, 207 insertions(+), 61 deletions(-)

commit c09e3f38f3e9843f5dbd1a80e7cb95c8a6505914
Author: mpwaser <47316116+mpwaser@users.noreply.github.com>
Date:   Wed, 8 Jul 2026 19:24:39 +0200

    Use Boost for inverse cumulative Student t distribution

 ql/math/distributions/studenttdistribution.cpp |  33 ++++----
 ql/math/distributions/studenttdistribution.hpp |  19 ++---
 test-suite/distributions.cpp                   | 113 +++++++++++++++++++++++++
 3 files changed, 137 insertions(+), 28 deletions(-)

commit 3b4d5c3ba3b68028b53773eaee9fc7f6fb887da4
Author: Evgeny Mishin <jmishin@gmail.com>
Date:   Wed, 8 Jul 2026 00:18:35 +0300

    use paymentAdjustment in the fixed leg

 ql/instruments/overnightindexedswap.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit deea883c55b4c525466d48d5ff6c55eb2c60db6a
Author: kp9991 <kp9991@gmail.com>
Date:   Wed, 8 Jul 2026 07:21:06 +1000

    paymentLag for caplet vol bootstrapping

 .../volatility/optionlet/optionletstripper1.cpp    | 27 +++++++++++++++++-----
 .../volatility/optionlet/optionletstripper1.hpp    |  4 +++-
 2 files changed, 24 insertions(+), 7 deletions(-)

commit 344b3d65e90686529e1a22bf395ffbf687f1997b
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 6 Jul 2026 18:33:53 -0500

    Formatting.

 test-suite/roughhestonmodel.cpp | 345 +++++++++++++++++++++-------------------
 1 file changed, 177 insertions(+), 168 deletions(-)

commit 448c8cd88ffe0ee029e3a59ce71010b66b37ae8b
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 6 Jul 2026 18:27:40 -0500

    Formatting changes.

 ql/math/ode/fractionaladams.hpp                    | 12 ++--
 .../vanilla/analyticroughhestonengine.cpp          | 75 +++++++++++-----------
 .../vanilla/analyticroughhestonengine.hpp          |  2 +-
 3 files changed, 46 insertions(+), 43 deletions(-)

commit e1c853b34ea21f732df2203bec2a17294d6dcd95
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 6 Jul 2026 18:18:53 -0500

    Style formatting and math correctness check.

 ql/pricingengines/vanilla/analyticroughhestonengine.cpp | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

commit 3a0c09e607fe8aa9237cf33efc86887ffb0cb528
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 6 Jul 2026 18:17:09 -0500

    Style formatting and math correctness check.

 .../vanilla/analyticroughhestonengine.cpp          | 77 +++++++++++-----------
 1 file changed, 38 insertions(+), 39 deletions(-)

commit 12174455d07c3ba4614bbb89b6fc53e9c090e85e
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 6 Jul 2026 17:52:33 -0500

    Cleanup.

 .../vanilla/analyticroughhestonengine.hpp          | 26 +++++++---------------
 1 file changed, 8 insertions(+), 18 deletions(-)

commit 4558c56c5003679c9b9c22e3454a7e07a48cbe9e
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 6 Jul 2026 17:47:03 -0500

    Code cleanup.

 ql/math/ode/fractionaladams.hpp | 105 +++++++++++++++++++---------------------
 1 file changed, 49 insertions(+), 56 deletions(-)

commit 94dee78611c0313124ff351ec6b8d12e4791acdd
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 6 Jul 2026 16:38:38 -0500

    Removing redundant tests

 test-suite/roughhestonmodel.cpp | 107 ----------------------------------------
 1 file changed, 107 deletions(-)

commit f1776663c8c8c66dde2ae23876ffbfda3a58061f
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 6 Jul 2026 16:36:34 -0500

    Adding tests for gaps.

 test-suite/roughhestonmodel.cpp | 525 ++++++++++++++++++++++++++++++++++------
 1 file changed, 445 insertions(+), 80 deletions(-)

commit e52a47d9277f8d92ee67683c326ecc6970895002
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 6 Jul 2026 16:20:56 -0500

    Comment tightening.

 ql/math/ode/fractionaladams.hpp                    | 34 ++++--------------
 .../vanilla/analyticroughhestonengine.cpp          | 24 ++++++-------
 .../vanilla/analyticroughhestonengine.hpp          | 32 +++++------------
 test-suite/roughhestonmodel.cpp                    | 41 +++++++---------------
 4 files changed, 39 insertions(+), 92 deletions(-)

commit 2ce53bd29e8a9223f0dca2b64e455d493be6d6f6
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 6 Jul 2026 16:14:26 -0500

    Compress mathematical explanation.

 ql/models/equity/roughhestonmodel.hpp | 26 +-------------------------
 1 file changed, 1 insertion(+), 25 deletions(-)

commit 8b937116cd3393afc6369fa903bb893b4d6ce022
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 6 Jul 2026 16:00:56 -0500

    Restore filters.

 QuantLib.vcxproj                     |  5874 ++++++-------
 QuantLib.vcxproj.filters             | 14956 ++++++++++++++++-----------------
 test-suite/testsuite.vcxproj         |  1708 ++--
 test-suite/testsuite.vcxproj.filters |  1182 +--
 4 files changed, 11860 insertions(+), 11860 deletions(-)

commit f353126f8b8d5184267d3fd0b8fda002fd00b791
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 6 Jul 2026 15:54:51 -0500

    Add tests for the rough Heston model and engine

 test-suite/CMakeLists.txt            |    1 +
 test-suite/Makefile.am               |    1 +
 test-suite/roughhestonmodel.cpp      |  464 +++++++++
 test-suite/testsuite.vcxproj         | 1707 +++++++++++++++++-----------------
 test-suite/testsuite.vcxproj.filters | 1179 +++++++++++------------
 5 files changed, 1911 insertions(+), 1441 deletions(-)

commit 27d2085131c6af1a74793d6d123800e1de5d51c0
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 6 Jul 2026 15:54:31 -0500

    Add rough Heston model and semi-analytic pricing engine

 ql/models/equity/Makefile.am                       |   6 +-
 ql/models/equity/all.hpp                           |   1 +
 ql/models/equity/roughhestonmodel.cpp              |  47 ++++
 ql/models/equity/roughhestonmodel.hpp              | 108 ++++++++
 ql/pricingengines/vanilla/Makefile.am              |   2 +
 ql/pricingengines/vanilla/all.hpp                  |   1 +
 .../vanilla/analyticroughhestonengine.cpp          | 273 +++++++++++++++++++++
 .../vanilla/analyticroughhestonengine.hpp          | 148 +++++++++++
 8 files changed, 584 insertions(+), 2 deletions(-)

commit a25503805aca3d0f356dd93abcf4b54f969e4c4a
Author: Colin <34983726+colalb1@users.noreply.github.com>
Date:   Mon, 6 Jul 2026 15:53:57 -0500

    Add fractional Adams solver for Caputo fractional ODEs. Implement the Diethelm-Ford-Freed predictor-corrector scheme for initial value schemes.

 QuantLib.vcxproj                |  5869 +++++++--------
 QuantLib.vcxproj.filters        | 14941 +++++++++++++++++++-------------------
 ql/CMakeLists.txt               |     5 +
 ql/math/ode/Makefile.am         |     3 +-
 ql/math/ode/all.hpp             |     1 +
 ql/math/ode/fractionaladams.hpp |   188 +
 6 files changed, 10611 insertions(+), 10396 deletions(-)

commit a64753402f293e75a250f55b47a270a59d7b2fbc
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 5 Jul 2026 19:33:36 +1000

    Keep old ref date logic for Ibor

 .../volatility/optionlet/optionletstripper1.cpp    | 33 ++++++++++++++++------
 ql/userconfig.hpp                                  |  2 +-
 2 files changed, 26 insertions(+), 9 deletions(-)

commit 879a3a428fddfcc2de85171a8c934250b5de8cf7
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 5 Jul 2026 18:35:11 +1000

    RFR caplet vol bootstrapping

 .../volatility/optionlet/optionletstripper.cpp     | 35 +++++++----
 .../volatility/optionlet/optionletstripper1.cpp    | 62 ++++++++++++++------
 test-suite/optionletstripper.cpp                   | 67 +++++++++-------------
 3 files changed, 96 insertions(+), 68 deletions(-)

commit 76dcd8db01b22ee642e65ca6df983c0766d61aa4
Author: kp9991 <kp9991@gmail.com>
Date:   Tue, 30 Jun 2026 08:59:52 +1000

    Initial commit

 CMakeLists.txt    |  1 +
 ql/config.hpp.cfg |  1 +
 ql/settings.cpp   |  4 ++--
 ql/settings.hpp   | 12 ++++++++++--
 ql/userconfig.hpp |  9 +++++++++
 5 files changed, 23 insertions(+), 4 deletions(-)

commit 785c517f87f0fb81ff8b4a849027997e64b2528d
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 29 Jun 2026 17:08:43 +0200

    Deprecate ext::any, ext::optional and friends

 ql/any.hpp                                         | 14 +++-
 ql/cashflow.cpp                                    |  4 +-
 ql/cashflow.hpp                                    |  2 +-
 ql/cashflows/cashflows.cpp                         | 88 +++++++++++-----------
 ql/cashflows/cashflows.hpp                         | 86 ++++++++++-----------
 ql/cashflows/couponpricer.cpp                      |  2 +-
 ql/cashflows/couponpricer.hpp                      |  4 +-
 ql/cashflows/iborcoupon.cpp                        |  2 +-
 ql/cashflows/iborcoupon.hpp                        |  4 +-
 ql/cashflows/overnightindexedcoupon.cpp            |  4 +-
 ql/cashflows/overnightindexedcoupon.hpp            | 10 +--
 ql/event.cpp                                       |  2 +-
 ql/event.hpp                                       |  2 +-
 .../catbonds/montecarlocatbondengine.cpp           |  2 +-
 .../catbonds/montecarlocatbondengine.hpp           |  4 +-
 ql/experimental/commodities/commodity.hpp          |  2 +-
 ql/experimental/commodities/energycommodity.cpp    |  8 +-
 .../coupons/lognormalcmsspreadpricer.cpp           |  2 +-
 .../coupons/lognormalcmsspreadpricer.hpp           |  2 +-
 ql/experimental/credit/syntheticcdo.cpp            |  2 +-
 ql/experimental/credit/syntheticcdo.hpp            |  2 +-
 ql/experimental/swaptions/irregularswaption.cpp    |  2 +-
 .../termstructures/crosscurrencyratehelpers.cpp    | 22 +++---
 .../termstructures/crosscurrencyratehelpers.hpp    | 16 ++--
 ql/instrument.hpp                                  | 10 +--
 ql/instruments/bond.cpp                            |  2 +-
 ql/instruments/callabilityschedule.hpp             |  2 +-
 ql/instruments/capfloor.cpp                        |  2 +-
 ql/instruments/creditdefaultswap.cpp               |  8 +-
 ql/instruments/creditdefaultswap.hpp               |  6 +-
 ql/instruments/fixedvsfloatingswap.cpp             |  2 +-
 ql/instruments/fixedvsfloatingswap.hpp             |  2 +-
 ql/instruments/floatfloatswap.cpp                  | 12 +--
 ql/instruments/floatfloatswap.hpp                  | 12 +--
 ql/instruments/makecds.hpp                         |  6 +-
 ql/instruments/makeois.hpp                         |  2 +-
 ql/instruments/makeswaption.cpp                    |  2 +-
 ql/instruments/makeswaption.hpp                    |  4 +-
 ql/instruments/makevanillaswap.cpp                 |  2 +-
 ql/instruments/makevanillaswap.hpp                 |  8 +-
 ql/instruments/multipleresetsswap.cpp              |  2 +-
 ql/instruments/multipleresetsswap.hpp              |  2 +-
 ql/instruments/nonstandardswap.cpp                 |  4 +-
 ql/instruments/nonstandardswap.hpp                 |  4 +-
 ql/instruments/overnightindexedswap.cpp            |  2 +-
 ql/instruments/swaption.cpp                        |  2 +-
 ql/instruments/vanillaswap.cpp                     |  4 +-
 ql/instruments/vanillaswap.hpp                     |  4 +-
 ql/optional.hpp                                    | 16 +++-
 ql/pricingengines/basket/choibasketengine.cpp      |  2 +-
 ql/pricingengines/bond/discountingbondengine.cpp   |  2 +-
 ql/pricingengines/bond/discountingbondengine.hpp   |  4 +-
 .../capfloor/analyticcapfloorengine.cpp            |  2 +-
 ql/pricingengines/credit/integralcdsengine.cpp     |  2 +-
 ql/pricingengines/credit/integralcdsengine.hpp     |  4 +-
 ql/pricingengines/credit/isdacdsengine.cpp         |  2 +-
 ql/pricingengines/credit/isdacdsengine.hpp         |  4 +-
 ql/pricingengines/credit/midpointcdsengine.cpp     |  2 +-
 ql/pricingengines/credit/midpointcdsengine.hpp     |  4 +-
 ql/pricingengines/mclongstaffschwartzengine.hpp    |  8 +-
 ...ountingconstnotionalcrosscurrencyswapengine.cpp |  2 +-
 ...ountingconstnotionalcrosscurrencyswapengine.hpp |  4 +-
 ql/pricingengines/swap/discountingswapengine.cpp   |  2 +-
 ql/pricingengines/swap/discountingswapengine.hpp   |  4 +-
 .../vanilla/bjerksundstenslandengine.cpp           |  2 +-
 ql/pricingengines/vanilla/mcamericanengine.hpp     |  8 +-
 ql/settings.hpp                                    | 12 +--
 .../volatility/equityfx/blackvolsurfacedelta.cpp   |  4 +-
 .../volatility/equityfx/blackvolsurfacedelta.hpp   |  4 +-
 .../volatility/optionlet/optionletstripper.cpp     |  4 +-
 .../volatility/optionlet/optionletstripper.hpp     |  6 +-
 .../volatility/optionlet/optionletstripper1.cpp    |  2 +-
 .../volatility/optionlet/optionletstripper1.hpp    |  2 +-
 ql/termstructures/yield/oisratehelper.cpp          |  8 +-
 ql/termstructures/yield/oisratehelper.hpp          | 12 +--
 ql/termstructures/yield/ratehelpers.cpp            | 12 +--
 ql/termstructures/yield/ratehelpers.hpp            | 18 ++---
 .../yield/ultimateforwardtermstructure.hpp         |  6 +-
 ql/time/schedule.cpp                               |  8 +-
 ql/time/schedule.hpp                               | 22 +++---
 test-suite/americanoption.cpp                      |  4 +-
 test-suite/basketoption.cpp                        |  2 +-
 test-suite/blackvolsurfacedelta.cpp                | 14 ++--
 test-suite/cashflows.cpp                           |  8 +-
 test-suite/creditdefaultswap.cpp                   |  6 +-
 test-suite/crosscurrencyratehelpers.cpp            | 22 +++---
 test-suite/defaultprobabilitycurves.cpp            |  2 +-
 test-suite/fxforward.cpp                           |  6 +-
 test-suite/overnightindexedswap.cpp                | 10 +--
 test-suite/period.cpp                              |  2 +-
 test-suite/piecewiseyieldcurve.cpp                 |  2 +-
 test-suite/quantlibglobalfixture.cpp               |  2 +-
 test-suite/ultimateforwardtermstructure.cpp        |  2 +-
 93 files changed, 342 insertions(+), 328 deletions(-)

commit 02be39c74e0a96ca81646386b833d430c3b05a17
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 29 Jun 2026 16:16:18 +0200

    Deprecated unused data member in zero-inflation helper

 ql/termstructures/inflation/inflationhelpers.cpp | 38 +++++++-----------------
 ql/termstructures/inflation/inflationhelpers.hpp | 24 +++++++--------
 2 files changed, 21 insertions(+), 41 deletions(-)

commit 1d17187745a6670ae214b9ef8f03bb9c688a9252
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 29 Jun 2026 11:30:26 +0200

    Remove deprecated members in InflationTermStructure

 ql/termstructures/inflationtermstructure.cpp |  4 ----
 ql/termstructures/inflationtermstructure.hpp | 36 ----------------------------
 2 files changed, 40 deletions(-)

commit 5c43195b625da31f4b1e2e53006e2f1077b52fc7
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 29 Jun 2026 11:17:48 +0200

    Remove deprecated ZeroCouponInflationSwapHelper constructor

 ql/termstructures/inflation/inflationhelpers.cpp |  15 --
 ql/termstructures/inflation/inflationhelpers.hpp |  15 --
 test-suite/inflation.cpp                         | 172 -----------------------
 3 files changed, 202 deletions(-)

commit 4c2936453683892ec65d441c9839df92a7832efa
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 29 Jun 2026 10:55:34 +0200

    Remove switch between std::optional and boost::optional

 .ci/userconfig2019.alt.hpp |  5 -----
 .ci/userconfig2022.alt.hpp |  5 -----
 .ci/userconfig2026.alt.hpp |  5 -----
 CMakeLists.txt             |  2 --
 CMakePresets.json          |  2 --
 Docs/pages/config.docs     |  9 ---------
 configure.ac               | 21 ---------------------
 ql/config.hpp.cfg          |  1 -
 ql/optional.hpp            | 16 +---------------
 ql/userconfig.hpp          | 10 ----------
 10 files changed, 1 insertion(+), 75 deletions(-)

commit a06d8a7cd88125e5818daf140be1871df550aa61
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 29 Jun 2026 10:31:52 +0200

    Remove switch between std::any and boost::any.

 .ci/userconfig2019.alt.hpp |  5 -----
 .ci/userconfig2022.alt.hpp |  5 -----
 .ci/userconfig2026.alt.hpp |  5 -----
 CMakeLists.txt             |  2 --
 CMakePresets.json          |  2 --
 Docs/pages/config.docs     |  7 -------
 configure.ac               | 20 +-------------------
 ql/any.hpp                 | 13 +------------
 ql/config.hpp.cfg          |  1 -
 ql/userconfig.hpp          |  8 --------
 10 files changed, 2 insertions(+), 66 deletions(-)

commit ce8dcaab2c564f72adef9ff0f8358139e30a5344
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 28 Jun 2026 21:44:42 +1000

    Drop invalid Doxygen \ingroup from FxIndex
    
    The `make docs` CI step failed because fxindex.hpp referenced a Doxygen
    group `indexes` that does not exist, and the configuration treats doc
    warnings as errors (WARN_AS_ERROR=YES):
    
        error: Found non-existing group 'indexes' for the command '@ingroup'
    
    No other header under ql/indexes uses \ingroup (the base Index class has
    none), so remove the tag to match the existing convention and unblock the
    documentation build.

 ql/indexes/fxindex.hpp | 2 --
 1 file changed, 2 deletions(-)

commit 22f6413a70074676bc082a2a4b992dd2c1fd852c
Author: kp9991 <kp9991@gmail.com>
Date:   Sun, 28 Jun 2026 21:32:15 +1000

    Initial commit

 QuantLib.vcxproj                                   |  20 +-
 QuantLib.vcxproj.filters                           |  36 +-
 ql/CMakeLists.txt                                  |   8 +
 ql/indexes/Makefile.am                             |   2 +
 ql/indexes/all.hpp                                 |   1 +
 ql/indexes/fxindex.cpp                             |  64 +++
 ql/indexes/fxindex.hpp                             |  87 ++++
 ql/instruments/Makefile.am                         |   4 +
 ql/instruments/all.hpp                             |   2 +
 ql/instruments/constnotionalcrosscurrencyswap.cpp  |  73 +---
 ql/instruments/constnotionalcrosscurrencyswap.hpp  |  45 +-
 ql/instruments/crosscurrencyswap.cpp               | 132 ++++++
 ql/instruments/crosscurrencyswap.hpp               | 165 ++++++++
 ql/instruments/mtmcrosscurrencybasisswap.cpp       | 254 +++++++++++
 ql/instruments/mtmcrosscurrencybasisswap.hpp       | 276 ++++++++++++
 ql/pricingengines/swap/Makefile.am                 |   2 +
 ql/pricingengines/swap/all.hpp                     |   1 +
 .../discountingmtmcrosscurrencybasisswapengine.cpp | 364 ++++++++++++++++
 .../discountingmtmcrosscurrencybasisswapengine.hpp | 103 +++++
 test-suite/CMakeLists.txt                          |   1 +
 test-suite/Makefile.am                             |   1 +
 test-suite/mtmcrosscurrencybasisswap.cpp           | 462 +++++++++++++++++++++
 test-suite/testsuite.vcxproj                       |   1 +
 test-suite/testsuite.vcxproj.filters               |   3 +
 24 files changed, 1996 insertions(+), 111 deletions(-)

commit 9f56361227f223a2d421bf2347be7fbf1d601eb7
Author: JewonJeon <jewon.j0620@gmail.com>
Date:   Sun, 21 Jun 2026 18:20:58 +0900

    Use make_shared in pricing engines

 .../asian/fdblackscholesasianengine.cpp            | 25 ++++-------
 .../asian/mc_discr_arith_av_price.hpp              | 20 ++++-----
 .../asian/mc_discr_arith_av_price_heston.hpp       | 20 ++++-----
 .../asian/mc_discr_arith_av_strike.hpp             | 11 ++---
 ql/pricingengines/asian/mc_discr_geom_av_price.hpp | 11 ++---
 .../asian/mc_discr_geom_av_price_heston.hpp        | 11 ++---
 .../asian/mcdiscreteasianenginebase.hpp            |  5 +--
 ql/pricingengines/bacheliercalculator.cpp          |  2 +-
 .../barrier/analyticbinarybarrierengine.cpp        |  5 +--
 .../barrier/binomialbarrierengine.hpp              | 19 ++++-----
 .../barrier/fdblackscholesbarrierengine.cpp        |  3 +-
 .../barrier/fdblackscholesrebateengine.cpp         | 17 +++-----
 .../barrier/fdhestonbarrierengine.cpp              |  3 +-
 .../barrier/fdhestondoublebarrierengine.cpp        | 16 +++-----
 ql/pricingengines/barrier/fdhestonrebateengine.cpp | 16 +++-----
 ql/pricingengines/barrier/mcbarrierengine.hpp      | 22 ++++------
 .../basket/fd2dblackscholesvanillaengine.cpp       | 17 +++-----
 .../basket/mcamericanbasketengine.hpp              | 10 ++---
 .../basket/mceuropeanbasketengine.hpp              | 16 +++-----
 ql/pricingengines/basket/stulzengine.cpp           |  3 +-
 ql/pricingengines/blackcalculator.cpp              |  3 +-
 .../bond/binomialconvertibleengine.hpp             | 17 ++++----
 .../capfloor/bacheliercapfloorengine.cpp           |  6 +--
 ql/pricingengines/capfloor/blackcapfloorengine.cpp |  6 +--
 ql/pricingengines/capfloor/mchullwhiteengine.hpp   | 18 ++++----
 .../cliquet/analyticcliquetengine.cpp              |  3 +-
 .../cliquet/analyticperformanceengine.cpp          |  3 +-
 ql/pricingengines/cliquet/mcperformanceengine.hpp  | 16 +++-----
 .../exotic/analyticamericanmargrabeengine.cpp      | 22 ++++------
 .../exotic/analyticcompoundoptionengine.cpp        |  5 +--
 ql/pricingengines/forward/forwardengine.hpp        | 25 +++++------
 .../forward/mcforwardeuropeanbsengine.hpp          | 11 ++---
 .../forward/mcforwardeuropeanhestonengine.hpp      | 22 ++++------
 .../forward/mcforwardvanillaengine.hpp             |  8 ++--
 ql/pricingengines/forward/mcvarianceswapengine.hpp | 14 +++----
 .../forward/replicatingvarianceswapengine.hpp      |  9 ++--
 ql/pricingengines/lookback/mclookbackengine.cpp    | 20 ++++-----
 ql/pricingengines/lookback/mclookbackengine.hpp    | 10 ++---
 ql/pricingengines/mclongstaffschwartzengine.hpp    | 10 ++---
 ql/pricingengines/mcsimulation.hpp                 | 10 ++---
 ql/pricingengines/quanto/quantoengine.hpp          | 12 +++---
 ql/pricingengines/swaption/blackswaptionengine.hpp |  8 ++--
 ql/pricingengines/swaption/fdg2swaptionengine.cpp  | 23 ++++-------
 .../vanilla/analyticbsmhullwhiteengine.cpp         | 13 +++---
 ql/pricingengines/vanilla/analytichestonengine.cpp | 41 +++++++-----------
 ql/pricingengines/vanilla/binomialengine.hpp       | 19 ++++-----
 ql/pricingengines/vanilla/fdbatesvanillaengine.cpp |  5 +--
 ql/pricingengines/vanilla/fdcirvanillaengine.cpp   | 16 +++-----
 .../vanilla/fdhestonhullwhitevanillaengine.cpp     | 48 ++++++++--------------
 .../vanilla/fdhestonvanillaengine.cpp              | 20 ++++-----
 .../vanilla/fdsimplebsswingengine.cpp              | 28 +++++--------
 ql/pricingengines/vanilla/jumpdiffusionengine.cpp  | 11 ++---
 ql/pricingengines/vanilla/mcamericanengine.hpp     | 22 ++++------
 ql/pricingengines/vanilla/mcdigitalengine.hpp      | 11 ++---
 ql/pricingengines/vanilla/mceuropeanengine.hpp     | 11 ++---
 .../vanilla/mceuropeangjrgarchengine.hpp           | 11 ++---
 .../vanilla/mceuropeanhestonengine.hpp             | 11 ++---
 .../vanilla/mchestonhullwhiteengine.hpp            | 34 ++++++---------
 ql/pricingengines/vanilla/mcvanillaengine.hpp      |  5 +--
 ql/pricingengines/vanilla/qdfpamericanengine.cpp   | 15 +++----
 60 files changed, 321 insertions(+), 533 deletions(-)

commit 12fb4657b81bee286bbfaa89594b64a95110e099
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Mon, 11 May 2026 10:30:02 +0200

    Link CLAUDE.md to AGENTS.md

 CLAUDE.md | 1 +
 1 file changed, 1 insertion(+)

commit c27e92b27d3c7277130dc8757156fcce495c1347
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Thu, 2 Apr 2026 13:12:40 +0200

    Fix broken test call

 AGENTS.md | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

commit 2d74a20272cf4b356c18de1f45e767ed59087f41
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Thu, 2 Apr 2026 13:07:02 +0200

    Update .gitignore to help agents to use the clangd language server

 .gitignore | 5 +++++
 1 file changed, 5 insertions(+)

commit b6e2b45b51c97a0a999bf80b285d0f3c2c222a46
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Tue, 24 Mar 2026 16:00:04 +0100

    Add section about 'Deprecation and Backward Compatibility'

 AGENTS.md | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

commit cb6228c3f992153ae4017986d439c1dc64169322
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Fri, 20 Mar 2026 20:47:06 +0100

    Add section 'Registering New Files in the Build Systems'

 AGENTS.md | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 61 insertions(+), 6 deletions(-)

commit 667dc56423aed27856e5b98883b147c0a43c9674
Author: RalfKonrad <github@eckel-consulting.de>
Date:   Fri, 20 Mar 2026 19:14:17 +0100

    Add AGENTS.md

 AGENTS.md | 393 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 393 insertions(+)
