commit 87c844203ba1d1587f6328bf385242a1d6dbb58b
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Mon, 13 Apr 2026 06:06:07 +0000

    Set version to 1.42

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

commit 148aff0acbcfc3bbec0a4c200562d4749fcd60e0
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Wed, 1 Apr 2026 08:28:13 +0000

    Update changelog

 ChangeLog.txt | 4003 ++++++++++++++++++++++++++++++---------------------------
 1 file changed, 2124 insertions(+), 1879 deletions(-)

commit 62f9db7020fc36e169e8c1979c5ec384f9f96d58
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Wed, 1 Apr 2026 08:28:13 +0000

    Set version to 1.42-rc

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

commit f2d02cdeec46e7a22ccdee5ad15f0b8dcdbf4ccd
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 1 Apr 2026 10:15:46 +0200

    Update news and contributor list

 Contributors.txt |  9 +++++++++
 News.md          | 44 ++++++++++++++++----------------------------
 2 files changed, 25 insertions(+), 28 deletions(-)

commit 1095cb98d369316772ac6d7257f71afa1d9f47fb
Author: auto-differentiation-dev <107129969+auto-differentiation-dev@users.noreply.github.com>
Date:   Tue, 31 Mar 2026 19:59:31 +0100

    Use Real instead of double as accumulate init value in quotes test

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

commit c05adccf4e024985ae1c64dbcdbe76dcb884fd38
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Tue, 31 Mar 2026 17:52:36 +0000

    Automated fixes by clang-tidy

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

commit 5455a6dbe3fd5529f57f6214328e48194ff05698
Merge: 319084163 5e8bf3ece
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 31 Mar 2026 18:57:22 +0200

    Use Real instead of double in range-for loops in test suite (#2521)

commit 5e8bf3ece5bf942ccdb181308dc1026fb592d670
Author: auto-differentiation-dev <107129969+auto-differentiation-dev@users.noreply.github.com>
Date:   Tue, 31 Mar 2026 16:12:53 +0100

    Use Real instead of double in range-for loops in test suite

 test-suite/piecewiseblackvariancesurface.cpp | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

commit 319084163ed1af752d7902330f43d5984aa5af52
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 31 Mar 2026 16:47:04 +0200

    More consistent test messages

 test-suite/fxforward.cpp                | 24 ++++++++++++------------
 test-suite/interpolatedsmilesection.cpp |  2 +-
 test-suite/lowdiscrepancysequences.cpp  |  2 +-
 test-suite/multipleresetsswap.cpp       |  8 ++++----
 test-suite/overnightindexedswap.cpp     |  6 +++---
 test-suite/schedule.cpp                 |  4 ++--
 test-suite/swap.cpp                     |  6 +++---
 7 files changed, 26 insertions(+), 26 deletions(-)

commit 7f5c4284bec73591d85da9e799ef9c0c87d3da79
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Tue, 31 Mar 2026 08:16:47 +0000

    Update copyright list in license

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

commit bf551fc0228ceefae44edb9d986f582c20f6ba5e
Merge: d9f6ae6e5 52575d0a2
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 31 Mar 2026 10:16:35 +0200

    fuzz: add 3 new fuzzing harnesses (#2514)

commit d9f6ae6e52f1391f29dc60db23831c7a32f011e4
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 30 Mar 2026 17:14:20 +0200

    Use full name

 LICENSE.TXT                   | 2 +-
 test-suite/floatfloatswap.cpp | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

commit f395fcbcc0df6bdc61f63f7a523a22e6b8e6d394
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Mon, 30 Mar 2026 15:10:30 +0000

    Update copyright list in license

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

commit 1b2855c892d84d30b3b08ad8d63a7008705b52d2
Merge: 1dfcba66c 5def66a1a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 30 Mar 2026 17:10:16 +0200

    Implement fair spread for `FloatFloatSwap` (#2411)

commit 1dfcba66c9f339cf0749fe71dd8ec2e5d222804b
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Mon, 30 Mar 2026 13:34:17 +0000

    Automated fixes by clang-tidy

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

commit 5def66a1afd8335e8a25200c1473e1cc3d6c5bae
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 30 Mar 2026 15:38:19 +0200

    Add new file to autotools and VC++ builds

 test-suite/Makefile.am               | 1 +
 test-suite/testsuite.vcxproj         | 1 +
 test-suite/testsuite.vcxproj.filters | 3 +++
 3 files changed, 5 insertions(+)

commit 8678d9e465d2a871afd4d29f938300da6c0a0836
Author: shubhamessier <shubham.gaur7116@gmail.com>
Date:   Mon, 30 Mar 2026 18:44:56 +0530

    Add test cases for fairSpread1() and fairSpread2() verifying correct
    behavior for both Payer and Receiver swap types, including NPV symmetry and fair spread consistency checks.

 ql/instruments/floatfloatswap.cpp |   2 +-
 test-suite/CMakeLists.txt         |   1 +
 test-suite/floatfloatswap.cpp     | 230 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 232 insertions(+), 1 deletion(-)

commit c0e2ef2891b0dda09f6ddade4059cdf50f226315
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 30 Mar 2026 11:00:52 +0200

    Avoid or silence a few clang-tidy warnings

 ql/math/interpolations/abcdinterpolation.hpp                |  1 +
 ql/math/interpolations/chebyshevinterpolation.hpp           |  1 +
 ql/math/interpolations/cubicinterpolation.hpp               |  1 +
 ql/math/interpolations/lagrangeinterpolation.hpp            |  1 +
 ql/math/interpolations/mixedinterpolation.hpp               |  1 +
 ql/termstructures/multicurve.cpp                            |  2 +-
 .../volatility/equityfx/blackvolsurfacedelta.cpp            | 13 ++++---------
 .../volatility/equityfx/blackvolsurfacedelta.hpp            |  4 ++--
 test-suite/creditdefaultswap.cpp                            |  6 ++++--
 test-suite/inflationcpiswap.cpp                             |  2 +-
 test-suite/piecewiseblackvariancesurface.cpp                |  3 ++-
 11 files changed, 19 insertions(+), 16 deletions(-)

commit bd06e41c0d3cfc896921b5ee375de0bd525dec20
Author: shubhamessier <shubham.gaur7116@gmail.com>
Date:   Sat, 28 Mar 2026 18:58:00 +0530

    1. Added a new fairSpread1() method this didn't exist before. It calculates the spread adjustment on leg 1 to make the swap NPV zero, using legBPS_[0].                                                  2. Kept the leg 2 calculation as fairSpread2() (was previously the only fairSpread()).                                               3. Updated all the supporting infrastructure (caching, results class, reset/expired) to handle two fair spread values instead of one.

 ql/instruments/floatfloatswap.cpp | 42 +++++++++++++++++++++++++--------------
 ql/instruments/floatfloatswap.hpp |  8 +++++---
 2 files changed, 32 insertions(+), 18 deletions(-)

commit 52575d0a2207df9d026f1158e1beae6e4e3bd809
Author: David Korczynski <david@adalogics.com>
Date:   Fri, 27 Mar 2026 15:35:49 -0700

    fuzz: add 3 new fuzzing harnesses
    
    The main goal is to increase code coverage covered by fuzzing. The most
    recent coverage report is available at:
    https://storage.googleapis.com/oss-fuzz-coverage/quantlib/reports/20260326/linux/src/report.html
    
    Signed-off-by: David Korczynski <david@adalogics.com>

 fuzz-test-suite/CMakeLists.txt         |  21 ++++
 fuzz-test-suite/fuzzeuropeanoption.cpp |  94 ++++++++++++++++++
 fuzz-test-suite/fuzzinterpolations.cpp | 111 +++++++++++++++++++++
 fuzz-test-suite/fuzztimefunctions.cpp  | 175 +++++++++++++++++++++++++++++++++
 4 files changed, 401 insertions(+)

commit 17534a966693c95419ce123acbac0d93ac14c563
Merge: f14cf3b8b 6ea070d8a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 27 Mar 2026 12:15:23 +0100

    Use `QL_` prefix for `PACKAGE` macros in CMake config template (#2512)

commit f14cf3b8b9772eab652917f30501613ab3620f9d
Merge: 12a3ebc86 b1aafc14c
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 27 Mar 2026 12:14:46 +0100

    Replace dynamic_cast with static_cast in interpolations (#2510)

commit 12a3ebc8698ddb2cecb0f3fb4e35c40d5bae6fea
Merge: 5f6261f90 545cde91c
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 27 Mar 2026 12:11:43 +0100

    Fix first-period regularity check in Schedule date generation (#405) (#2511)

commit 5f6261f90f0ff2e2c32f86f9707e7d1a12b1487a
Merge: 14a3d2a29 56aa2fd72
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 27 Mar 2026 12:05:35 +0100

    Support separate exercise date in MC arithmetic average-strike Asian engine (#2506)

commit 6ea070d8a3ee1b3c9da52e77f885cbc6a7094c6e
Author: pandashark <richard.amaya@mac.com>
Date:   Thu, 26 Mar 2026 21:56:47 -0500

    Use QL_ prefix for PACKAGE macros in CMake config template
    
    The CMake-generated config.hpp defined unprefixed macros (PACKAGE_NAME,
    PACKAGE_VERSION, etc.) while the autotools build rewrites them to
    QL_PACKAGE_NAME, QL_PACKAGE_VERSION, etc. via an install-data-hook.
    Downstream projects like RQuantLib expect the prefixed names.
    
    Change config.hpp.cfg to emit #define QL_PACKAGE_X directly, using
    plain #define instead of #cmakedefine since these variables are always
    set. The CMake variables themselves are unchanged (used by project(),
    CPack, etc.).
    
    Closes #1505.

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

commit 56aa2fd72be6f91504d22853ad64d9c355e6aea4
Author: pandashark <richard.amaya@mac.com>
Date:   Thu, 26 Mar 2026 11:24:52 -0500

    Support separate exercise date in MC arithmetic average-strike Asian engine
    
    The MC arithmetic average-strike Asian engine now includes the exercise
    date as a separate point in the time grid when it falls after the last
    fixing date. The path pricer averages only the fixing points but uses
    the terminal spot at the exercise date for the payoff.
    
    The base class MCDiscreteAveragingAsianEngineBase accepts an
    includeExerciseDate parameter (defaulting to false for backward
    compatibility with user-inherited engines). MCDiscreteArithmeticASEngine
    hardcodes this to true since it supports the correct behavior.

 .../asian/mc_discr_arith_av_strike.cpp             | 29 +++++++---
 .../asian/mc_discr_arith_av_strike.hpp             | 33 ++++++++++-
 .../asian/mcdiscreteasianenginebase.hpp            | 12 +++-
 test-suite/asianoptions.cpp                        | 64 ++++++++++++++++++++++
 4 files changed, 125 insertions(+), 13 deletions(-)

commit 545cde91c3c118fdc5701789514c302b4433cc3f
Author: pandashark <richard.amaya@mac.com>
Date:   Thu, 26 Mar 2026 11:01:48 -0500

    Fix first-period regularity check in Schedule date generation (#405)
    
    When constructing a Schedule with Backward date generation and a
    firstDate parameter, the first period was unconditionally marked as
    irregular. This caused FixedRateLeg to compute a wrong reference
    period for the first coupon under ActualActual day counting.
    
    The fix computes regularity by checking whether the inserted date
    is exactly one tenor from its neighbor, matching the pattern already
    used in the Forward firstDate case. Also fixes the symmetric bug
    in Forward generation where nextToLastDate insertion was
    unconditionally marked irregular.

 ql/time/schedule.cpp    | 15 ++++++++---
 test-suite/schedule.cpp | 66 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 78 insertions(+), 3 deletions(-)

commit 14a3d2a292ae239804698e4c821157495996098b
Merge: 12e6b60ea cb891e13a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 26 Mar 2026 11:47:06 +0100

    Forward notifications after failed calculations in LazyObject (#2504)

commit 12e6b60ea75bd9661136e44bee3ebd9cd759a8fb
Merge: d570a9170 6b352bd97
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 26 Mar 2026 11:36:59 +0100

    Support OIS underlyings in FdmAffineModelSwapInnerValue (#2488)

commit d570a9170894671bfeac9e815977f7e26ad46c05
Merge: e8c66765c 0a693b8cd
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 26 Mar 2026 08:18:55 +0100

    Check for negative rates in BaroneAdesiWhaley engine (#2505)

commit b1aafc14c571dd271e19e05d2396a3857e3cc959
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Tue, 24 Mar 2026 21:29:44 -0400

    Replace dynamic_cast with static_cast in interpolations
    
    dynamic_cast is an expensive operations that involves class hierarchy
    traversal at runtime. On Windows it usually uses strcmp to search for
    the target type_info. On the other hand, static_cast is a pointer shift
    by a compile-time constant, which is usually 0, so it often has 0 cost
    at runtime.

 ql/math/interpolation.hpp                          | 17 +++---
 ql/math/interpolations/abcdinterpolation.hpp       | 38 ++++++------
 .../interpolations/convexmonotoneinterpolation.hpp |  5 +-
 ql/math/interpolations/cubicinterpolation.hpp      | 68 +++++++++++-----------
 ql/math/interpolations/lagrangeinterpolation.hpp   | 18 +++---
 ql/math/interpolations/mixedinterpolation.hpp      |  2 +-
 6 files changed, 74 insertions(+), 74 deletions(-)

commit e8c66765ce5bb062d267cfb8b6b57ca9cba68606
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 25 Mar 2026 15:38:07 +0100

    Fix missing inclusion

 test-suite/blackvolsurfacedelta.cpp | 1 +
 1 file changed, 1 insertion(+)

commit 972805bfb66212dbf2ff117a8fedeba9fdb39e40
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Wed, 25 Mar 2026 14:35:56 +0000

    Replace Boost macros that might not work with AAD types

 test-suite/blackvolsurfacedelta.cpp     | 104 ++++++++++++++++----------------
 test-suite/crosscurrencyratehelpers.cpp |   4 +-
 test-suite/fxforward.cpp                |  14 ++---
 test-suite/interpolatedsmilesection.cpp |  18 +++---
 test-suite/interpolations.cpp           |  66 ++++++++++----------
 test-suite/multipleresetsswap.cpp       |  10 +--
 test-suite/overnightindexedcoupon.cpp   |   8 +--
 test-suite/piecewiseyieldcurve.cpp      |   2 +-
 8 files changed, 113 insertions(+), 113 deletions(-)

commit cb891e13a27fb7750f80a80f15c32f846f4f8d44
Author: pandashark <richard.amaya@mac.com>
Date:   Tue, 24 Mar 2026 18:21:04 -0500

    Forward notifications after failed calculations in LazyObject
    
    When performCalculations() threw an exception, LazyObject::update()
    would silently swallow subsequent notifications because calculated_
    was false and the forwarding condition was not met. This left observers
    unable to retry when inputs changed.
    
    Add a failed_ flag that is set when calculate() catches an exception
    and checked in update() alongside calculated_ and alwaysForward_,
    ensuring the next input change is forwarded to observers.
    
    Closes #395.

 ql/patterns/lazyobject.hpp | 10 +++++--
 test-suite/lazyobject.cpp  | 73 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 80 insertions(+), 3 deletions(-)

commit 5ace099011370d6742e190314e341f3d22e47d1f
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Wed, 25 Mar 2026 13:32:59 +0000

    Update copyright list in license

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

commit 67ab7efd42f9db827addbd6bf874ab7337710a99
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 25 Mar 2026 15:12:29 +0100

    Add action to replace Boost macros that might not work with AAD types

 .github/workflows/test-macros.yml | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

commit e24f4c51de0e02323befbb4d0c4f86d65d524277
Merge: 0f45a501c ec7315f31
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 25 Mar 2026 14:25:44 +0100

    fix: using type alias instead of raw double (#2503)

commit 6b352bd97e39f24419a110c88543a2fd0249b27e
Author: pandashark <richard.amaya@mac.com>
Date:   Wed, 25 Mar 2026 08:21:38 -0500

    Support OIS underlyings in FdmAffineModelSwapInnerValue (#2476)
    
    Add OvernightIndexedSwap detection to FdmAffineModelSwapInnerValue so
    FdHullWhiteSwaptionEngine and FdG2SwaptionEngine preserve averaging
    method, lookback/lockout days, observation shift, payment lag, payment
    calendar, and telescopic value dates when pricing Bermudan swaptions
    on OIS underlyings.
    
    The constructor takes FixedVsFloatingSwap and detects OIS internally
    via dynamic_pointer_cast. Any other FixedVsFloatingSwap subclass
    falls back to a VanillaSwap proxy using the base class interface.
    
    Also adds paymentLag, paymentCalendar, and telescopicValueDates
    inspectors to OvernightIndexedSwap (previously accepted as constructor
    parameters but not stored).

 ql/instruments/overnightindexedswap.cpp            |   5 +-
 ql/instruments/overnightindexedswap.hpp            |   7 +
 ql/instruments/swaption.hpp                        |   9 +-
 .../utilities/fdmaffinemodelswapinnervalue.hpp     |  47 ++-
 test-suite/bermudanswaption.cpp                    | 318 +++++++++++++++++++++
 5 files changed, 371 insertions(+), 15 deletions(-)

commit 0a693b8cd9410a8489b63200ceb181761e5324ae
Author: pandashark <richard.amaya@mac.com>
Date:   Tue, 24 Mar 2026 22:08:37 -0500

    Check for negative rates in BaroneAdesiWhaley engine
    
    The Barone-Adesi-Whaley approximation diverges with negative interest
    rates: the Newton-Raphson seed in criticalPrice() overflows, producing
    a cryptic "forward + displacement must be positive" error from deep in
    the iteration.
    
    Add a QL_REQUIRE check at the top of criticalPrice() so users get a
    clear diagnostic instead.
    
    Closes #1291.

 .../vanilla/baroneadesiwhaleyengine.cpp            |  5 +++
 test-suite/americanoption.cpp                      | 43 ++++++++++++++++++++++
 2 files changed, 48 insertions(+)

commit ec7315f319785c9905db8aceab480be0f274ad6d
Author: wegamekinglc <scrappedprince.li@gmail.com>
Date:   Wed, 25 Mar 2026 01:02:27 +0800

    using type alias instead of raw double

 ql/math/optimization/levenbergmarquardt.cpp                       | 4 ++--
 ql/termstructures/volatility/equityfx/blackvolsurfacedelta.cpp    | 2 +-
 .../volatility/equityfx/blackvoltimeextrapolation.cpp             | 8 ++++----
 3 files changed, 7 insertions(+), 7 deletions(-)

commit 0f45a501cc3183f15b85f047a96aa7772e86df69
Merge: 8cf35c091 a6eba678a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 24 Mar 2026 16:21:07 +0100

    Add MultiCompositeQuote (#2500)

commit a6eba678a98806c35f1dabcad4e2e0721b1b2c99
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Mon, 23 Mar 2026 19:34:47 -0400

    Add MultiCompositeQuote
    
    Similar to CompositeQuote, but accepts an arbitrary number of input
    quotes and calls the function with an Array of input values.

 QuantLib.vcxproj                  |  1 +
 QuantLib.vcxproj.filters          |  3 ++
 ql/CMakeLists.txt                 |  1 +
 ql/quotes/Makefile.am             |  1 +
 ql/quotes/all.hpp                 |  1 +
 ql/quotes/multicompositequote.hpp | 96 +++++++++++++++++++++++++++++++++++++++
 test-suite/quotes.cpp             | 37 +++++++++++++++
 7 files changed, 140 insertions(+)

commit 8cf35c091c62ef12992247d85301aa55c16e8c97
Merge: 3091b288c 935feba5c
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 24 Mar 2026 12:28:25 +0100

    Cache derived and composite quotes (#2499)

commit 3091b288c17c50b32adf6b4ddd76d95b961d37a8
Merge: dbc4c4c7d 4ac6472fc
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 24 Mar 2026 12:27:18 +0100

    Use variant to reduce duplication in `SofrFutureRateHelper` constructors (#2501)

commit dbc4c4c7d889f0ae85d498292beba4df4d6cf5e8
Merge: afe054190 9364ec68c
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 24 Mar 2026 10:59:25 +0100

    Deprecate `ForwardRateStructure` in favor of `ZeroYieldStructure` (#2261)

commit 935feba5cf9a2949559ae570969aa228713bfd8b
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Mon, 23 Mar 2026 16:22:45 -0400

    Cache derived and composite quotes
    
    They are very cheap to cache and this saves repeated calls to the
    function, which is especially expensive when the function is implemented
    in a different language like Python.

 ql/quotes/compositequote.hpp | 25 ++++++++++++++++---------
 ql/quotes/derivedquote.hpp   | 22 ++++++++++++++--------
 test-suite/quotes.cpp        | 35 ++++++++++++++++++++++-------------
 3 files changed, 52 insertions(+), 30 deletions(-)

commit afe0541907bb0a7dcda2e4346f5148808867a1c5
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 23 Mar 2026 15:15:31 +0100

    Remove spurious messages during tests

 test-suite/americanoption.cpp | 33 +++++++++-------------------
 test-suite/fxforward.cpp      | 51 -------------------------------------------
 test-suite/inflation.cpp      | 44 +++----------------------------------
 3 files changed, 13 insertions(+), 115 deletions(-)

commit 4ac6472fc74bc3096238692ad73df7986df748b3
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 23 Mar 2026 15:34:04 +0100

    Use variant to reduce duplication in SofrFutureRateHelper constructors

 .../yield/overnightindexfutureratehelper.cpp       | 26 ++++------------------
 .../yield/overnightindexfutureratehelper.hpp       | 13 +++--------
 2 files changed, 7 insertions(+), 32 deletions(-)

commit 9364ec68c8c8c188ee9d62c6c1fdec76a3655fbf
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 23 Mar 2026 14:49:37 +0100

    Add deprecation to docs

 ql/termstructures/yield/forwardstructure.hpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

commit aab8c3da665aaa2a8a941e5f8a4a238ddec68b4d
Merge: b063fa860 f3090b1e4
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 23 Mar 2026 14:41:16 +0100

    Support custom pillar date in interest-rate futures helpers (#2415)

commit c8b76fa73e81c5141a8fb696357e48c0ba4a4bee
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 23 Mar 2026 12:16:31 +0100

    Check specific error message

 test-suite/sofrfutures.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

commit b063fa860ab2d0f92a982b067a11b9b0f3a9a338
Merge: ad2ca7bd4 e3b3ebdfa
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 23 Mar 2026 12:01:11 +0100

    Remove special initial guess for spread discount curves (#2495)

commit ad2ca7bd4c4e779ce1e67feeae8cebcda0e72db0
Merge: 24ace4295 8ca7eb6e5
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 23 Mar 2026 10:31:37 +0100

    Avoid 0.0 in Burley2020SobolRsg output (#2494)

commit cbb976c7e35e78b7fd4652463bd243aa9ad76113
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Wed, 9 Jul 2025 16:38:10 -0400

    Deprecate ForwardRateStructure in favor of ZeroYieldStructure
    
    ForwardRateStructure uses a highly inefficient and possibly wildly
    inaccurate numerical integration to convert forwardImpl to
    zeroYieldImpl. Users should inherit from ZeroYieldStructure and
    implement zeroYieldImpl directly when possible.
    
    All existing classes in QuantLib that inherit from ForwardRateStructure
    already implement zeroYieldImpl, which means that their forwardImpl is
    not used. Inherit them directly from ZeroTermStructure instead and
    delete unused forwardImpl methods.
    
    Also, inherit ForwardRateStructure from ZeroYieldStructure to reuse its
    implementation of discountImpl instead of duplicating its code.

 ql/termstructures/yield/forwardcurve.hpp           | 37 ++++++++-----------
 .../yield/forwardspreadedtermstructure.hpp         | 13 ++-----
 ql/termstructures/yield/forwardstructure.cpp       |  6 ++--
 ql/termstructures/yield/forwardstructure.hpp       | 41 ++++++++--------------
 .../piecewiseforwardspreadedtermstructure.hpp      | 15 ++------
 .../yield/zerospreadedtermstructure.hpp            |  8 -----
 6 files changed, 37 insertions(+), 83 deletions(-)

commit 1b30074884c52574b80bd9d1de9680dbf5139ae5
Author: Krishn Parasar <f20202093@hyderabad.bits-pilani.ac.in>
Date:   Sat, 17 Jan 2026 14:59:45 +0530

    Removing file

 test-suite/Testing/Temporary/CTestCostData.txt | 1 -
 1 file changed, 1 deletion(-)

commit c81b4b735f86117ee81bdd5b71d8759f7006dbd3
Author: Krishn Parasar <f20202093@hyderabad.bits-pilani.ac.in>
Date:   Sat, 3 Jan 2026 20:52:17 +0530

    Fixing issues

 ql/termstructures/yield/overnightindexfutureratehelper.hpp | 2 --
 1 file changed, 2 deletions(-)

commit 6085b3bf34adeab47babc8e529e30e356e938bcc
Author: Krishn Parasar <f20202093@hyderabad.bits-pilani.ac.in>
Date:   Sat, 3 Jan 2026 18:52:02 +0530

    changes

 test-suite/Testing/Temporary/CTestCostData.txt | 1 +
 1 file changed, 1 insertion(+)

commit 6996b572ae9eda88e4a97e0eb716a0b8c6901a73
Author: Krishn Parasar <f20202093@hyderabad.bits-pilani.ac.in>
Date:   Fri, 2 Jan 2026 23:19:32 +0530

    Support custom pillar date in interest-rate futures helpers

 ql/termstructures/yield/overnightindexfutureratehelper.hpp | 2 ++
 1 file changed, 2 insertions(+)

commit 96afae8692c16661b22f6b0d4c4ea811a464f537
Author: Krishn Parasar <f20202093@hyderabad.bits-pilani.ac.in>
Date:   Sun, 22 Mar 2026 00:30:49 +0530

    Adding tests plus Pillar enum
    
    - added pillar::Choice enum.
    
    - added new tests to check default, maturity, custom pillar and invalid cases.

 .../yield/overnightindexfutureratehelper.cpp       | 37 ++++++++++++++-----
 .../yield/overnightindexfutureratehelper.hpp       |  3 ++
 test-suite/sofrfutures.cpp                         | 43 ++++++++++++++++++++++
 3 files changed, 73 insertions(+), 10 deletions(-)

commit f8cbbf114e118b615a38eb7cb5b009f9de6f6752
Author: Krishn Parasar <f20202093@hyderabad.bits-pilani.ac.in>
Date:   Sat, 17 Jan 2026 14:59:45 +0530

    Removing file

 test-suite/Testing/Temporary/CTestCostData.txt | 1 -
 1 file changed, 1 deletion(-)

commit bd4c60e51d5541820039e9aed54b8e11aefd4c27
Author: Krishn Parasar <f20202093@hyderabad.bits-pilani.ac.in>
Date:   Sat, 3 Jan 2026 20:52:17 +0530

    Fixing issues

 ql/termstructures/yield/overnightindexfutureratehelper.cpp | 5 +----
 ql/termstructures/yield/overnightindexfutureratehelper.hpp | 2 --
 2 files changed, 1 insertion(+), 6 deletions(-)

commit aa1de62787387a6f6ba411a24f7b7f85924276ac
Author: Krishn Parasar <f20202093@hyderabad.bits-pilani.ac.in>
Date:   Sat, 3 Jan 2026 18:52:02 +0530

    changes

 ql/termstructures/yield/overnightindexfutureratehelper.hpp | 6 +++---
 test-suite/Testing/Temporary/CTestCostData.txt             | 1 +
 2 files changed, 4 insertions(+), 3 deletions(-)

commit 85e7ff4ccd29da9fadb41841ed81b30bd149bdb0
Author: Krishn Parasar <f20202093@hyderabad.bits-pilani.ac.in>
Date:   Fri, 2 Jan 2026 23:19:32 +0530

    Support custom pillar date in interest-rate futures helpers

 .../yield/overnightindexfutureratehelper.cpp       | 25 ++++++++++++++++------
 .../yield/overnightindexfutureratehelper.hpp       | 11 +++++++---
 2 files changed, 27 insertions(+), 9 deletions(-)

commit e3b3ebdfa59acc4707da8b0db2cf071c195efd18
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Fri, 20 Mar 2026 21:49:36 -0400

    Remove special initial guess for spread discount curves
    
    The current logic is to use 0 spread as the initial guess. Revert this
    to the logic used for outright curves, which guesses 5% spread. It turns
    out that 0 spread may be very close to the final result, which creates
    issues for the global bootstrap. When the initial guess is too close to
    the final answer, gradients become too small and the LevenbergMarquardt
    algorithm used by the global bootstrap does not have a good direction to
    move into. Counterintuitively, this makes convergence slower than when
    starting from a much further initial guess like 5%. In our production
    setting when starting from 0 spread, we saw curves take multiple seconds
    to build or fail with MaxIterations exceeded, but converge in 100ms when
    starting from 5% spread.

 ql/termstructures/yield/spreadbootstraptraits.hpp | 21 ---------------------
 1 file changed, 21 deletions(-)

commit 8ca7eb6e5409f04fa87409c24d1aebc2c67ee5de
Author: zain <51121726+zippyg@users.noreply.github.com>
Date:   Fri, 20 Mar 2026 19:19:24 +0000

    Use pcaspers' test parameters for Burley2020SobolRsg bounds
    
    Use (1551, 42, JoeKuoD7, 43) as suggested in the review.  With enough
    dimensions the scrambling hits zero naturally within 100K samples,
    removing the need for skipTo at a specific position.

 test-suite/lowdiscrepancysequences.cpp | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

commit cb003179a209f2af138e9f74d4294a541e074e62
Author: zain <51121726+zippyg@users.noreply.github.com>
Date:   Fri, 20 Mar 2026 18:08:15 +0000

    Use a deterministic test case for Burley2020SobolRsg bounds
    
    With parameters (50, 42, Jaeckel, 33), sample 986977 produces a zero
    in the integer sequence at dimension 25.  The test now verifies that
    the zero exists and that nextSequence() maps it to a strictly positive
    value via the +0.5 offset.

 test-suite/lowdiscrepancysequences.cpp | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

commit c34ac0a1009f68e65786577cad237f55ef980903
Author: zain <51121726+zippyg@users.noreply.github.com>
Date:   Fri, 20 Mar 2026 14:43:17 +0000

    Avoid 0.0 in Burley2020SobolRsg output
    
    Apply the same +0.5 offset used by MersenneTwisterUniformRng and
    Xoshiro256StarStarUniformRng so that the output is strictly in (0,1).
    Without this, laine_karras_permutation can produce 0, which maps to 0.0
    and causes InverseCumulativeNormal to return extreme values.

 ql/math/randomnumbers/burley2020sobolrsg.cpp |  2 +-
 test-suite/lowdiscrepancysequences.cpp       | 15 +++++++++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

commit 24ace429520f183f67684f18f6b657321bbd1309
Merge: cdcf45a03 bc8d5ba3f
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 17 Mar 2026 11:26:33 +0100

    Use Log interpolations for discount curves (#2491)

commit bc8d5ba3fc8b1007192a49f43cb3ddc43f8997dc
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Mon, 16 Mar 2026 15:37:16 -0400

    Use Log interpolations for discount curves

 Examples/MulticurveBootstrapping/MulticurveBootstrapping.cpp |  7 +++----
 test-suite/piecewiseyieldcurve.cpp                           | 11 +++++++++--
 2 files changed, 12 insertions(+), 6 deletions(-)

commit cdcf45a0380266932f90ad181af35827abab2b0e
Merge: 68f4edf02 0a53bdb63
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 16 Mar 2026 14:40:12 +0100

    Throw when both effectiveDate and settlementDays are set in MakeVanillaSwap/MakeOIS (#2481)

commit 68f4edf02cded5eb6fb9b046e284430015ebc812
Merge: b41dcfbc1 61c8959b2
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 16 Mar 2026 13:04:26 +0100

    Add `withExerciseCalendar` to `MakeSwaption` (#2484)

commit b41dcfbc17edfbe97ff0024d1dc70db14a7eedea
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Sun, 15 Mar 2026 01:45:10 +0000

    Automated fixes by clang-tidy

 ql/instruments/makecds.cpp                                   |  3 ++-
 ql/instruments/multipleresetsswap.cpp                        |  2 +-
 ql/instruments/multipleresetsswap.hpp                        |  2 +-
 .../volatility/equityfx/blackvolsurfacedelta.hpp             |  8 ++++----
 ql/termstructures/yield/multipleresetsswaphelper.cpp         |  4 ++--
 ql/termstructures/yield/multipleresetsswaphelper.hpp         |  2 +-
 test-suite/interpolatedsmilesection.cpp                      | 12 ++++++------
 7 files changed, 17 insertions(+), 16 deletions(-)

commit 1c3d90857f927462d0468eddbdcbd5af4d452318
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Fri, 13 Mar 2026 16:10:26 +0000

    Update copyright list in license

 LICENSE.TXT | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

commit 0a53bdb63659f61b9f51a25d40b63e59fd88184a
Author: pandashark <richard.amaya@mac.com>
Date:   Thu, 12 Mar 2026 12:54:21 -0500

    Throw when both effectiveDate and settlementDays are set in MakeVanillaSwap/MakeOIS
    
    withSettlementDays() previously cleared effectiveDate_ silently, making
    behavior dependent on call order. Now a QL_REQUIRE in the conversion
    operator throws if both are explicitly set.
    
    Internal callers (SwapRateHelper, OISRateHelper) updated to call
    withSettlementDays() only when no explicit start date is provided,
    preserving behavior for the tenor-based constructor path.

 ql/instruments/makeois.cpp                |  5 +++-
 ql/instruments/makevanillaswap.cpp        |  5 +++-
 ql/termstructures/yield/oisratehelper.cpp |  4 ++-
 ql/termstructures/yield/ratehelpers.cpp   |  4 ++-
 test-suite/overnightindexedswap.cpp       | 50 +++++++++++++++++++++++++++++++
 test-suite/swap.cpp                       | 50 +++++++++++++++++++++++++++++++
 6 files changed, 114 insertions(+), 4 deletions(-)

commit 6650464bb9ea7df82ed4d48e2d9587877ade8ef6
Merge: febed7496 56b183efe
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Mar 2026 17:00:17 +0100

    Fix MakeVanillaSwap fixed tenor inference with explicit termination date (#2480)

commit 61c8959b2bd05008e5916de2fac9bfd2a05fbf24
Author: pandashark <richard.amaya@mac.com>
Date:   Fri, 13 Mar 2026 10:32:31 -0500

    Add withExerciseCalendar to MakeSwaption (#2469)
    
    Allow overriding the calendar used for exercise/fixing date computation
    from a tenor, instead of always using the swap index's fixing calendar.
    This is useful for cross-border swaptions where exercise dates follow a
    different calendar than the underlying rate's fixing calendar.

 ql/instruments/makeswaption.cpp | 15 +++++++++----
 ql/instruments/makeswaption.hpp |  2 ++
 test-suite/swaption.cpp         | 49 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 62 insertions(+), 4 deletions(-)

commit febed7496e1c2df81de37e0f8fbb770934a95a29
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Mar 2026 15:14:36 +0100

    Fix typo, rename a few parameters for clarity

 .../volatility/equityfx/blackvolsurfacedelta.cpp   | 31 ++++++-----
 .../volatility/equityfx/blackvolsurfacedelta.hpp   | 64 +++++++++++-----------
 test-suite/blackvolsurfacedelta.cpp                |  2 +-
 3 files changed, 49 insertions(+), 48 deletions(-)

commit 7f06be1a7c7f2100dc70c6277650260ecf296f94
Merge: 529aef38a d9af61e2b
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Mar 2026 13:10:45 +0100

    Add `BlackVolatilitySurfaceDelta` class for FX options (#2368)

commit 529aef38abbde439ee4909f03b9ac651ec31194a
Merge: 023221580 65a6878ed
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Mar 2026 13:01:00 +0100

    Add MultipleResetsSwap instrument and rate helper (#2474)

commit 023221580a688b9a9bf33c0e5b5c609b4e73cf3c
Merge: 939a491b1 e585cfef3
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Mar 2026 12:53:24 +0100

    Bring `MakeCreditDefaultSwap` up to date with CDS instrument (#2479)

commit 939a491b1d07de11d6ef10aa7d523fe3c458e821
Merge: 0a02cced0 a8aa6e91d
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Mar 2026 12:52:03 +0100

    Add single-section constructor + tests to PiecewiseBlackVarianceSurface (#2478)

commit d9af61e2ba81f3b1f2725e9777f18dc49e084d15
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Mar 2026 12:21:42 +0100

    Clean up test messages

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

commit e344bfcac79fb31cb6746d51d5b5ec137e33c3cb
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Mar 2026 12:09:57 +0100

    Add smile interpolation/extrapolation test

 test-suite/blackvolsurfacedelta.cpp | 91 +++++++++++++++++++++++++++++++++++++
 1 file changed, 91 insertions(+)

commit 569052a70b9fe5768560a95754c9002370e76cdd
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Mar 2026 12:09:26 +0100

    Prevent negative volatility when extrapolating

 ql/termstructures/volatility/interpolatedsmilesection.hpp | 13 ++-----------
 1 file changed, 2 insertions(+), 11 deletions(-)

commit 86a07d8fa80b9f733c61fc7fc9991fbe61fcee3f
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Mar 2026 11:24:49 +0100

    Time extrapolation tests

 test-suite/blackvolsurfacedelta.cpp | 107 +++++++++++++++++++++++++++++-------
 1 file changed, 86 insertions(+), 21 deletions(-)

commit a84e24888ef5a47c6f6f63a4cda009f2ca27e420
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Mar 2026 11:24:29 +0100

    Standard syntax for enum

 ql/termstructures/volatility/equityfx/blackvariancecurve.hpp   | 2 +-
 ql/termstructures/volatility/equityfx/blackvolsurfacedelta.cpp | 2 +-
 ql/termstructures/volatility/equityfx/blackvolsurfacedelta.hpp | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

commit 3881c9c188b5abc3bcb5ae37a121a83b8518db30
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Mar 2026 11:23:34 +0100

    Let the inner interpolator extrapolate when needed

 ql/termstructures/volatility/equityfx/blackvariancecurve.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

commit cd132fcf6e87a0939400b8efefe0aa353fb962dd
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Mar 2026 10:46:14 +0100

    Clean up inclusions

 ql/termstructures/volatility/equityfx/blackvariancecurve.hpp    | 1 +
 ql/termstructures/volatility/equityfx/blackvoltermstructure.cpp | 1 -
 ql/termstructures/volatility/equityfx/blackvoltermstructure.hpp | 3 ---
 3 files changed, 1 insertion(+), 4 deletions(-)

commit 38da6955cf7530d0a275bcdf007c851de92862e2
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Mar 2026 10:19:01 +0100

    Use linear extrapolation in variance

 .../volatility/equityfx/blackvariancecurve.cpp     |  2 +-
 .../equityfx/blackvoltimeextrapolation.cpp         | 50 +++++++++-------------
 .../equityfx/blackvoltimeextrapolation.hpp         | 23 +++++-----
 3 files changed, 32 insertions(+), 43 deletions(-)

commit 19a597aeb83e269e3e716999d674cf38c48ab4d2
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 12 Mar 2026 18:56:01 +0100

    Add missing header

 ql/termstructures/volatility/equityfx/blackvoltimeextrapolation.cpp | 1 +
 1 file changed, 1 insertion(+)

commit 7ac867773ea2647a5fb28fe5f13c6c1cb34f478e
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 12 Mar 2026 18:55:43 +0100

    Don't make the common case look like an early exit

 ql/termstructures/volatility/equityfx/blackvariancecurve.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit 859f97bcc049311e3ca8d8893f022b8d7b6585ee
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 12 Mar 2026 18:15:55 +0100

    Move BlackVolTimeExtrapolation to own file.
    
    Also, use std::function to avoid templates (allowing us to keep the
    implementation in the cpp file).

 QuantLib.vcxproj                                   |   2 +
 QuantLib.vcxproj.filters                           |   6 ++
 ql/CMakeLists.txt                                  |   2 +
 ql/termstructures/volatility/equityfx/Makefile.am  |   2 +
 ql/termstructures/volatility/equityfx/all.hpp      |   2 +
 .../volatility/equityfx/blackvoltermstructure.cpp  |  82 ----------------
 .../volatility/equityfx/blackvoltermstructure.hpp  |  58 +-----------
 .../equityfx/blackvoltimeextrapolation.cpp         | 105 +++++++++++++++++++++
 .../equityfx/blackvoltimeextrapolation.hpp         |  63 +++++++++++++
 9 files changed, 183 insertions(+), 139 deletions(-)

commit 56b183efe903f475702a02af23b2c3c1dea8b229
Author: pandashark <richard.amaya@mac.com>
Date:   Thu, 12 Mar 2026 10:17:30 -0500

    Fix MakeVanillaSwap fixed tenor inference with explicit termination date
    
    When withTerminationDate() is used without withFixedLegTenor(), the
    currency-dependent fixed tenor inference used the cleared swapTenor_
    (Period(), i.e. zero), which compared as less than any positive period.
    This caused GBP swaps to always get Annual frequency (even for >1Y)
    and AUD swaps to always get Quarterly (even for >=4Y).
    
    Fix: when swapTenor_ is cleared, compute an approximate tenor from
    the actual date distance (endDate - startDate) for the inference.

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

commit 65a6878ede666f2981f3d49291178f4ed7ed6527
Author: zain <51121726+zippyg@users.noreply.github.com>
Date:   Thu, 12 Mar 2026 14:26:59 +0000

    Address review comments in MakeMultipleResetsSwap
    
    Move fixedRate and fwdStart out of the constructor into withFixedRate()
    and withForwardStart() fluent methods, keeping the constructor to its
    three mandatory parameters. Add a QL_REQUIRE guard so that
    withEffectiveDate and withSettlementDays are mutually exclusive rather
    than silently overriding each other. Add a test for the auto-fair-rate
    path in MakeMultipleResetsSwap.

 ql/instruments/makemultipleresetsswap.cpp          | 75 +++++++++++-----------
 ql/instruments/makemultipleresetsswap.hpp          | 14 ++--
 .../yield/multipleresetsswaphelper.cpp             | 35 +++++-----
 test-suite/multipleresetsswap.cpp                  | 40 +++++++-----
 4 files changed, 81 insertions(+), 83 deletions(-)

commit e585cfef382f56a9f891043cf829eb4a239a3baa
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 12 Mar 2026 09:37:00 +0100

    Bring MakeCreditDefaultSwap up to date with CDS instrument

 ql/instruments/makecds.cpp       | 151 +++++++++++++++++++++++++--------------
 ql/instruments/makecds.hpp       |  52 +++++++++-----
 test-suite/creditdefaultswap.cpp | 118 ++++++++++++++++++++++++++++++
 3 files changed, 251 insertions(+), 70 deletions(-)

commit a8aa6e91dc1d775e2866fd7a1d9ad03e2346509e
Author: Yassine Idyiahia <yassine.id@gmail.com>
Date:   Tue, 10 Mar 2026 17:55:58 +0000

    Add single-section constructor and tests to PiecewiseBlackVarianceSurface

 .../equityfx/piecewiseblackvariancesurface.cpp     |  11 +
 .../equityfx/piecewiseblackvariancesurface.hpp     |   6 +
 test-suite/piecewiseblackvariancesurface.cpp       | 244 ++++++++++++++++++++-
 3 files changed, 260 insertions(+), 1 deletion(-)

commit d74ebac42d3274b41f1ec8ca347615e1f461f825
Author: Paolo D'Elia <paolo.delia99@gmail.com>
Date:   Tue, 10 Mar 2026 14:22:42 +0100

    Fix docstring in blackvolsurfacedelta class

 ql/termstructures/volatility/equityfx/blackvolsurfacedelta.hpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 0a02cced01c10383c435743042ca3a231d20eb3e
Merge: f1d280deb fdefd361d
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 10 Mar 2026 13:47:34 +0100

    Add `operator==` to `FdmLinearOpIterator` (#2472)

commit f1d280debb016b174c80feb006ad85b3616618b9
Merge: ec72e5100 b256fd9b3
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 10 Mar 2026 12:43:41 +0100

    Fix `MakeOIS` and `MakeVanillaSwap` end-of-month handling (#2459)

commit a06826527485f75c1249bb5c1619a0c0d333e1de
Author: paolodelia99 <paolo.delia99@gmail.com>
Date:   Mon, 9 Mar 2026 19:03:30 +0100

    Refactoring according to suggestions: BlackVolTimeExtrapolation instead of plain functions

 QuantLib.vcxproj                                   |   1 -
 QuantLib.vcxproj.filters                           |   3 -
 ql/CMakeLists.txt                                  |   1 -
 ql/termstructures/volatility/equityfx/Makefile.am  |   1 -
 .../volatility/equityfx/blackvariancecurve.cpp     |  18 ++--
 .../volatility/equityfx/blackvariancecurve.hpp     |   5 +-
 .../equityfx/blackvariancetimeextrapolation.hpp    | 101 ---------------------
 .../volatility/equityfx/blackvolsurfacedelta.cpp   |   8 +-
 .../volatility/equityfx/blackvolsurfacedelta.hpp   |   6 +-
 .../volatility/equityfx/blackvoltermstructure.cpp  |  83 +++++++++++++++++
 .../volatility/equityfx/blackvoltermstructure.hpp  |  61 ++++++++++++-
 11 files changed, 156 insertions(+), 132 deletions(-)

commit ec72e510094e8a015d8d71408231840a03861dc8
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon, 9 Mar 2026 11:54:41 +0000

    Bump docker/login-action from 3 to 4
    
    Bumps [docker/login-action](https://github.com/docker/login-action) from 3 to 4.
    - [Release notes](https://github.com/docker/login-action/releases)
    - [Commits](https://github.com/docker/login-action/compare/v3...v4)
    
    ---
    updated-dependencies:
    - dependency-name: docker/login-action
      dependency-version: '4'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>

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

commit 0a8362c88923dcfc7efc9c3b6e0442150cb6c5eb
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Sun, 8 Mar 2026 01:47:26 +0000

    Automated fixes by clang-tidy

 ql/termstructures/inflation/inflationhelpers.cpp | 10 ++--
 ql/termstructures/inflation/inflationhelpers.hpp |  4 +-
 test-suite/piecewiseblackvariancesurface.cpp     | 61 ++++++++++++------------
 3 files changed, 37 insertions(+), 38 deletions(-)

commit 6a18dc9452e637b6011f3dc7c34a68d687e86a8e
Author: zain <51121726+zippyg@users.noreply.github.com>
Date:   Sun, 8 Mar 2026 16:35:45 +0000

    Add MultipleResetsSwap instrument and rate helper
    
    Implements issue #2138: a fixed-vs-floating swap whose floating leg coupons are
    determined by compounding or averaging multiple consecutive Ibor fixings within
    each accrual period.
    
    Adds MultipleResetsSwap (inheriting FixedVsFloatingSwap, giving fairRate(),
    fairSpread(), and BPS methods for free), a MakeMultipleResetsSwap fluent builder,
    and MultipleResetsSwapRateHelper for bootstrapping yield curves from
    multiple-resets swap quotes. The floating leg is built via the existing
    MultipleResetsLeg/coupon infrastructure. Tests cover fair-rate pricing,
    payer/receiver leg NPV consistency, averaging vs. compounding differentiation,
    and end-to-end bootstrapping at 1Y/2Y/3Y.
    
    Relates to #2138.

 QuantLib.vcxproj                                   |   6 +
 QuantLib.vcxproj.filters                           |  18 ++
 ql/CMakeLists.txt                                  |   6 +
 ql/instruments/Makefile.am                         |   4 +
 ql/instruments/all.hpp                             |   2 +
 ql/instruments/makemultipleresetsswap.cpp          | 186 +++++++++++++++++++++
 ql/instruments/makemultipleresetsswap.hpp          |  87 ++++++++++
 ql/instruments/multipleresetsswap.cpp              | 100 +++++++++++
 ql/instruments/multipleresetsswap.hpp              |  70 ++++++++
 ql/termstructures/yield/Makefile.am                |   2 +
 ql/termstructures/yield/all.hpp                    |   1 +
 .../yield/multipleresetsswaphelper.cpp             | 104 ++++++++++++
 .../yield/multipleresetsswaphelper.hpp             |  75 +++++++++
 test-suite/CMakeLists.txt                          |   1 +
 test-suite/Makefile.am                             |   1 +
 test-suite/multipleresetsswap.cpp                  | 153 +++++++++++++++++
 test-suite/testsuite.vcxproj                       |   1 +
 test-suite/testsuite.vcxproj.filters               |   3 +
 18 files changed, 820 insertions(+)

commit fdefd361d34773451c0ca6ffa0e4afb733accc0b
Author: Yassine Idyiahia <yassine.id@gmail.com>
Date:   Sun, 8 Mar 2026 12:26:46 +0000

    Add operator== to FdmLinearOpIterator

 ql/methods/finitedifferences/operators/fdmlinearopiterator.hpp | 4 ++++
 1 file changed, 4 insertions(+)

commit b256fd9b3781a454a85f19106ff0bbed498319c8
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Fri, 6 Mar 2026 22:04:24 +0100

    typo

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

commit ac200f099cdbb54da8d064226a9afc07e6bed054
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Fri, 6 Mar 2026 22:03:19 +0100

    add unit test

 test-suite/overnightindexedswap.cpp | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

commit 81d819d285418a272193a8b688bb751bc38b670c
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Fri, 6 Mar 2026 12:01:38 +0000

    Update copyright list in license

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

commit aee52b9fd2ccd5f94d4afcae8ca3d72204b80905
Merge: a38575987 23678dddf
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 6 Mar 2026 12:59:09 +0100

    Add `PiecewiseBlackVarianceSurface` for ragged vol grids (#2443)

commit 23678dddf18eda5a7e6c45648538f3497e79f882
Author: pandashark <richard.amaya@mac.com>
Date:   Thu, 5 Mar 2026 12:27:50 -0600

    Add PiecewiseBlackVarianceSurface for ragged vol grids
    
    Black volatility surface built from per-tenor SmileSections with
    potentially different strike grids. Interpolates linearly in total
    variance between tenors. Includes static makeFromGrid factory for
    migration from BlackVarianceSurface, and per-section strike range
    checking gated by enableExtrapolation().

 QuantLib.vcxproj                                   |   2 +
 QuantLib.vcxproj.filters                           |   6 +
 ql/CMakeLists.txt                                  |   2 +
 ql/termstructures/volatility/equityfx/Makefile.am  |   6 +-
 ql/termstructures/volatility/equityfx/all.hpp      |   1 +
 .../equityfx/piecewiseblackvariancesurface.cpp     | 157 ++++
 .../equityfx/piecewiseblackvariancesurface.hpp     | 108 +++
 test-suite/CMakeLists.txt                          |   1 +
 test-suite/Makefile.am                             |   1 +
 test-suite/piecewiseblackvariancesurface.cpp       | 869 +++++++++++++++++++++
 test-suite/testsuite.vcxproj                       |   1 +
 test-suite/testsuite.vcxproj.filters               |   3 +
 12 files changed, 1155 insertions(+), 2 deletions(-)

commit a385759875d16ca1828e28007ca44bfcf23c016e
Merge: d73e75718 c72ca15e5
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 5 Mar 2026 15:01:05 +0100

    Fix call price accrued during ex-coupon period (#2236) (#2455)

commit c72ca15e56533d0b5670ef4ab951334d6423afe9
Author: pandashark <richard.amaya@mac.com>
Date:   Wed, 4 Mar 2026 17:38:11 -0600

    remove unused CallableBond::accrued() method

 ql/experimental/callablebonds/callablebond.cpp | 21 ---------------------
 ql/experimental/callablebonds/callablebond.hpp |  9 ---------
 2 files changed, 30 deletions(-)

commit d73e757188e1ef56c2707e928612110ccf84a282
Merge: a7ae70589 acda08caf
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 4 Mar 2026 21:28:11 +0100

    Add Singapore (SGX) trading holidays for 2026 (#2468)

commit a7ae70589dbc48e9c2feaa8c82f3035b2a6ddb7d
Merge: 0a1cfdc73 47ba90c86
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 4 Mar 2026 21:27:54 +0100

    Fix address sanitizer failure (#2467)

commit 47ba90c86bc0176fd84d351067183b150d15851a
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Tue, 3 Mar 2026 20:06:59 -0500

    Fix address sanitizer failure
    
    Casting Interpolation to CubicInterpolation is technically UB, even
    though they are guaranteed to have the same layout. Instead we have
    to get the impl pointer from Interpolation directly and cast that.

 ql/math/interpolation.hpp                     |  1 +
 ql/math/interpolations/mixedinterpolation.hpp | 25 ++++++++-----------------
 2 files changed, 9 insertions(+), 17 deletions(-)

commit acda08caf6563e9515d5d23760abc68b8a5dd00a
Author: Guillermo F. Parra <g.parra.lopez@protonmail.com>
Date:   Wed, 4 Mar 2026 14:51:49 +0100

    Update documentation for Singapore calenda

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

commit ab5fb53bbdbb8e564d0184cd03e7b3108009e872
Author: Guillermo F. Parra <g.parra.lopez@protonmail.com>
Date:   Wed, 4 Mar 2026 14:48:54 +0100

    Added SGX (Singapur) holidays for 2026

 ql/time/calendars/singapore.cpp | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

commit 0a1cfdc7354c636e8e5e121542864ee66466148a
Merge: 53772dc64 2ea4c9e17
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 4 Mar 2026 09:48:38 +0100

    Remove virtual destructor from Extrapolator (#2466)

commit 53772dc6498f805211c84e122038948dd5e19129
Merge: 5641adade 098ffa672
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 4 Mar 2026 09:46:17 +0100

    Deprecate day-counter argument in z-spread functions (#2465)

commit 5641adadeacb2386452b9a382d4cec1a5a1330d7
Merge: 731de6617 e21074ac0
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 3 Mar 2026 13:27:29 +0100

    Deprecate classes using Kruger with monotonic=true (#2457)

commit 731de66179a069664b4b6119d871a5699d3f43b5
Merge: 568177a4c dfae35bb0
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 3 Mar 2026 09:22:29 +0100

    Fix inflation bootstrap pillar assignment for CPI::Linear (#2456)

commit 568177a4c61d7b83246dd78af3a1df7fbe65b0fb
Merge: c5f3b5a12 0b7eb2108
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 3 Mar 2026 09:02:34 +0100

    Add 2025 and 2026 TWSE holidays to Taiwan calendar (#2462)

commit 2ea4c9e17f642380b4e0b45115e0444d82e8934c
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Mon, 2 Mar 2026 20:41:31 -0500

    Remove virtual destructor from Extrapolator
    
    It's not needed and adds unnecessary overhead to Interpolation classes.

 ql/math/interpolation.hpp                         | 1 -
 ql/math/interpolations/chebyshevinterpolation.hpp | 1 -
 ql/math/interpolations/extrapolation.hpp          | 1 -
 3 files changed, 3 deletions(-)

commit c5f3b5a12fb2adc5a64784a9ab7eb68fc32c3006
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Mon, 2 Mar 2026 12:09:29 +0000

    Bump actions/upload-artifact from 6 to 7
    
    Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
    - [Release notes](https://github.com/actions/upload-artifact/releases)
    - [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)
    
    ---
    updated-dependencies:
    - dependency-name: actions/upload-artifact
      dependency-version: '7'
      dependency-type: direct:production
      update-type: version-update:semver-major
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>

 .github/workflows/msvc-analysis.yml | 2 +-
 .github/workflows/test-times.yml    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

commit 098ffa67270394b1e2e0329f2404482bd7bea6a8
Author: zain <51121726+zippyg@users.noreply.github.com>
Date:   Mon, 2 Mar 2026 12:18:44 +0000

    Deprecate day-counter argument in z-spread functions
    
    Since commit 5cb1bffa0 ("Remove day counter argument from spreaded
    curves"), ZeroSpreadedTermStructure ignores any day counter it is given
    and always delegates to the underlying curve's day counter.  However,
    the higher-level APIs that build that structure internally still exposed
    a DayCounter parameter that had become a no-op:
    
    - CashFlows::npv() (z-spread overload)
    - CashFlows::zSpread()
    - BondFunctions::cleanPrice() (z-spread overload)
    - BondFunctions::dirtyPrice() (z-spread overload)
    - BondFunctions::zSpread()
    
    Add new primary overloads without the DayCounter argument and mark the
    old signatures [[deprecated]] ("Deprecated in version 1.42"), following
    the same pattern used in 5cb1bffa0 for ZeroSpreadedTermStructure itself.
    The deprecated overloads are one-line delegates to the new primaries.
    
    Update all internal callers in test-suite/bonds.cpp and
    test-suite/assetswap.cpp to use the new overloads.  Remove the stale
    "to be fixed" comment in zerospreadedtermstructure.hpp.
    
    Fixes #2278.

 ql/cashflows/cashflows.cpp                         | 32 +++++++++++++++-
 ql/cashflows/cashflows.hpp                         | 32 ++++++++++++++--
 ql/pricingengines/bond/bondfunctions.cpp           | 43 +++++++++++++++++++---
 ql/pricingengines/bond/bondfunctions.hpp           | 33 +++++++++++++++++
 .../yield/zerospreadedtermstructure.hpp            |  1 -
 test-suite/assetswap.cpp                           | 28 ++++++--------
 test-suite/bonds.cpp                               | 13 +++----
 7 files changed, 147 insertions(+), 35 deletions(-)

commit 0b7eb2108160c5bf8a10d800663116040001b0b3
Author: zain <51121726+zippyg@users.noreply.github.com>
Date:   Mon, 2 Mar 2026 11:13:06 +0000

    Add 2025 and 2026 TWSE holidays to Taiwan calendar

 ql/time/calendars/taiwan.cpp | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

commit c22af1ed977c023e659eb8cb8945a8e932ae626b
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 1 Mar 2026 10:52:59 +0100

    not needed after making maturiytEndOfMonth optional

 ql/instruments/makeois.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

commit 81190170bf09469717ab7e1e70b6828002c29583
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 1 Mar 2026 10:51:23 +0100

    revert calendar / business days switch, update makeVanillaSwap

 ql/instruments/makeois.cpp         | 10 ++--------
 ql/instruments/makeois.hpp         |  5 ++---
 ql/instruments/makevanillaswap.cpp | 18 +++++++++++-------
 ql/instruments/makevanillaswap.hpp |  2 ++
 4 files changed, 17 insertions(+), 18 deletions(-)

commit ef761a963dc733a87b66940a93efb137d1b69516
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sat, 28 Feb 2026 20:15:41 +0100

    fix end date calculation

 ql/instruments/makeois.cpp | 33 ++++++++++++++++++++++-----------
 ql/instruments/makeois.hpp |  5 ++++-
 2 files changed, 26 insertions(+), 12 deletions(-)

commit 484e4c15bf07bd39311c4e9b4b7e774a1050868e
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sat, 28 Feb 2026 20:03:37 +0100

    expose allowsEndOfMonth()

 ql/time/schedule.cpp | 9 ++++-----
 ql/time/schedule.hpp | 3 +++
 2 files changed, 7 insertions(+), 5 deletions(-)

commit e21074ac00e8f6ea49c22068e39e64d0f48143d2
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Fri, 27 Feb 2026 12:53:15 -0500

    Deprecate classes using Kruger with monotonic=true
    
    That's probably a mistake caused by different defaults for monotonic
    between Cubic (defaults to false) and LogCubic (defaults to true).
    Since Kruger is naturally monotonic, it generally does not need a
    separate monotonic filter.
    
    Also, the name "Default" for Kruger is fairly misleading.

 ql/math/interpolations/loginterpolation.hpp | 11 +++++++++--
 test-suite/piecewiseyieldcurve.cpp          |  1 -
 2 files changed, 9 insertions(+), 3 deletions(-)

commit dfae35bb00baa7815dae5d1b81e2e59e1aa9d973
Author: pandashark <richard.amaya@mac.com>
Date:   Fri, 27 Feb 2026 08:19:36 -0600

    Fix inflation bootstrap pillar assignment for CPI::Linear (#2454)
    
    Use weight-based pillar assignment for interpolated inflation helpers,
    placing the pillar on the left node when the right-node interpolation
    weight is at most 0.5.  The weight is computed from startDate_ (the
    swap effective date) so that all helpers switch LEFT/RIGHT in sync,
    avoiding pillar collisions across months of different length.
    
    Add Pillar::Choice and customPillarDate parameters to both
    ZeroCouponInflationSwapHelper and YearOnYearInflationSwapHelper,
    following the SwapRateHelper pattern.
    
    Enable GlobalBootstrap for inflation curves by adding identity
    transformDirect/transformInverse to ZeroInflationTraits and
    YoYInflationTraits.
    
    Prerequisite fixes: forecastFixing NaN guard, maxDate() override
    in interpolated inflation curves, maxIterations 5 to 40 for
    ZeroInflationTraits.

 ql/indexes/inflationindex.cpp                      |   4 +
 ql/termstructures/inflation/inflationhelpers.cpp   | 119 +++++-
 ql/termstructures/inflation/inflationhelpers.hpp   |  22 +-
 ql/termstructures/inflation/inflationtraits.hpp    |  23 +-
 .../inflation/interpolatedyoyinflationcurve.hpp    |   2 +
 .../inflation/interpolatedzeroinflationcurve.hpp   |   2 +
 test-suite/inflation.cpp                           | 475 +++++++++++++++++++++
 7 files changed, 621 insertions(+), 26 deletions(-)

commit 266039865117734b4b99f085e8f8d84a4a49b25a
Merge: 581b2af72 d07fe0bb9
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 27 Feb 2026 13:10:19 +0100

    Use contract dates for fixed leg year fraction in ZeroCouponInflationSwap (#2451)

commit 581b2af72f37977efaa556f10aefa7b05030587f
Merge: a98d40b8b b4d8c999c
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 27 Feb 2026 11:52:06 +0100

    Support matching first derivatives in MixedLinearCubicInterpolation (#2450)

commit 1ac0dcdb3eba32aa758d3a5b919e9f704172808d
Author: pandashark <richard.amaya@mac.com>
Date:   Fri, 13 Feb 2026 12:39:04 -0600

    fix: use non-ex-coupon accrued for callable bond call prices
    
    When converting a clean call price to dirty in setupArguments(),
    the accrued interest now ignores ex-coupon conventions. The call
    is an issuer action governed by the indenture, so the holder
    receives the call price plus full accrued from the last payment
    date. Using the market's ex-coupon (negative) accrued created an
    inconsistency with the tree's continuation value, which includes
    coupons filtered at the settlement date, causing OAS to jump by
    ~667 bps when the call date crossed the ex-coupon boundary.
    
    Fixes: lballabio/QuantLib#2236

 ql/experimental/callablebonds/callablebond.cpp | 29 ++++++--
 test-suite/callablebonds.cpp                   | 95 ++++++++++++++++++++++++++
 2 files changed, 118 insertions(+), 6 deletions(-)

commit ddfc9be27b35247991064df9559df0e424dc2a84
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 25 Feb 2026 09:01:17 +0100

    Fix typo in function names

 ql/termstructures/volatility/equityfx/blackvariancecurve.cpp |  4 ++--
 .../volatility/equityfx/blackvariancetimeextrapolation.hpp   | 12 ++++++------
 2 files changed, 8 insertions(+), 8 deletions(-)

commit a98d40b8b5b602e3a59cc0bd250ffcf58af655a7
Merge: 54be303f2 5d22668c0
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 23 Feb 2026 12:29:46 +0100

    Respect AmericanExercise earliest date in FD engines (#2449)

commit 54be303f20385a175ddbeca2c354c0c97f2f8772
Merge: 2aa8b0578 db750273a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 23 Feb 2026 11:51:27 +0100

    Fix calculate implementation in FlatExtrapolator2D (#2448)

commit 239504d0b83b26dc80f8041d4820377bc8d802ec
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 23 Feb 2026 10:32:42 +0100

    Remove obsolete rights attribution

 ql/termstructures/volatility/equityfx/blackvolsurfacedelta.cpp | 1 -
 test-suite/blackvolsurfacedelta.cpp                            | 1 -
 2 files changed, 2 deletions(-)

commit 2aa8b057825caae0576b08f1d566397ebb43dd36
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Sun, 22 Feb 2026 01:40:33 +0000

    Automated fixes by clang-tidy

 ql/math/optimization/levenbergmarquardt.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

commit d07fe0bb975b9fdf581c0a7dfb856ff0c8269a37
Author: pandashark <richard.amaya@mac.com>
Date:   Fri, 13 Feb 2026 10:50:32 -0600

    Use contract dates for fixed leg year fraction in ZeroCouponInflationSwap
    
    The fixed leg of a ZCIIS computes N*[(1+K)^T - 1] where T should be
    the contractual accrual period. The previous code used
    inflationYearFraction with observation dates (shifted by lag and
    snapped to period boundaries), which is correct for inflation curve
    interpolation but not for the fixed leg compounding calculation.
    
    Replace inflationYearFraction(baseDate_, obsDate_) with
    dayCounter_.yearFraction(startDate_, maturityDate_) in the
    constructor, fairRate(), and fixedLegBPS(). Update cached test
    values that depend on the curve bootstrap.
    
    Closes #2361.

 ql/instruments/zerocouponinflationswap.cpp | 15 +++------------
 test-suite/inflationcpibond.cpp            |  6 +++---
 test-suite/inflationcpiswap.cpp            |  4 ++--
 3 files changed, 8 insertions(+), 17 deletions(-)

commit b4d8c999ccfca3dea19125d72750bb97352d7341
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Thu, 19 Feb 2026 12:55:45 -0500

    Support matching first derivatives in MixedLinearCubicInterpolation

 ql/math/interpolations/cubicinterpolation.hpp | 40 ++++++++++++++---------
 ql/math/interpolations/mixedinterpolation.hpp | 47 ++++++++++++++++++++-------
 test-suite/interpolations.cpp                 | 33 +++++++++++++++++++
 3 files changed, 93 insertions(+), 27 deletions(-)

commit 247dcf88f6c125b87d861c5b4bfe4419932d354d
Merge: 1cd1ce4a2 bdc0166cd
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 20 Feb 2026 11:18:59 +0100

    Add `ZabrSwaptionVolatilityCube` for ZABR-based swaption volatility cubes (#2434)

commit 5d22668c080e81418f5c644e5b3b802fa0b62843
Author: Brett Graves <brett.b.graves@gmail.com>
Date:   Thu, 19 Feb 2026 22:04:58 +0000

    Respect AmericanExercise earliest date in FD engines
    
    FdmAmericanStepCondition unconditionally applied the early exercise
    check at every timestep, ignoring the earliest exercise date stored
    in AmericanExercise. This meant that AmericanExercise(T-1w, T) gave
    the same price as AmericanExercise(t0, T), which is incorrect.
    
    The fix adds an exerciseStart parameter to FdmAmericanStepCondition
    (defaulting to 0.0 for backward compatibility) and skips the
    exercise check when t < exerciseStart. The vanillaComposite factory
    now extracts exercise->date(0) and passes it through.
    
    This resolves the \todo in exercise.hpp:
      "check that everywhere the American condition is applied
       from earliestDate and not earlier"
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

 ql/exercise.hpp                                    |  3 -
 .../stepconditions/fdmamericanstepcondition.cpp    | 11 ++-
 .../stepconditions/fdmamericanstepcondition.hpp    |  6 +-
 .../stepconditions/fdmstepconditioncomposite.cpp   |  5 +-
 test-suite/americanoption.cpp                      | 88 ++++++++++++++++++++++
 5 files changed, 105 insertions(+), 8 deletions(-)

commit bdc0166cd1393b67ad5729bff98b9fd557391006
Author: Aaditya Panikath <aadityarajeev@gmail.com>
Date:   Thu, 19 Feb 2026 18:07:34 +0000

    Exclude ZABR deprecation stubs from all.hpp generation
    
    The four ZABR stub headers in ql/experimental/volatility/ are
    pure forwarding shims that emit a #pragma message deprecation
    warning.  Including them in all.hpp would fire that warning for
    every translation unit that includes the aggregate header, even
    when using the correct new paths.
    
    Filter them out in both build systems, following the existing
    pattern used for ql/experimental/fx/ and
    ql/experimental/exoticoptions/.

 cmake/GenerateHeaders.cmake            | 7 +++++++
 ql/experimental/volatility/Makefile.am | 2 +-
 ql/experimental/volatility/all.hpp     | 4 ----
 3 files changed, 8 insertions(+), 5 deletions(-)

commit db750273a8d957e1d170a581ca5b65ab8602619e
Author: Eugene Toder <eltoder@users.noreply.github.com>
Date:   Thu, 19 Feb 2026 12:30:27 -0500

    Fix calculate implementation in FlatExtrapolator2D

 ql/math/interpolations/flatextrapolation2d.hpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

commit c02d68153f80a757bd62aa358b221771597261fa
Author: Aaditya Panikath <aadityarajeev@gmail.com>
Date:   Thu, 19 Feb 2026 16:50:30 +0000

    Fix dangling reference in createInterpolation() and Doxygen tag
    
    Pass forward rate by const reference in XabrModelTraits::createInterpolation()
    (primary template, ZABR and NoArbSABR specializations) so that
    XABRCoeffHolder::forward_ — a const Real& member — refers to the caller's
    variable rather than a destroyed local copy.  The dangling reference caused
    ZabrSpecs::guess() to read garbage, producing near-zero alpha values that
    triggered "alpha must be positive: nan not allowed" in all ZABR swaption
    cube tests on stricter compilers (Clang, GCC -O1).
    
    Also remove the \ingroup swaptionvol tag from the XabrModelTraits Doxygen
    comment: the group has no \defgroup definition, causing Doxygen to abort
    doc generation with WARN_AS_ERROR enabled.
    
    Update all.hpp aggregation headers to include the relocated ZABR files.

 ql/experimental/volatility/noarbsabrswaptionvolatilitycube.hpp       | 2 +-
 ql/math/interpolations/all.hpp                                       | 1 +
 ql/math/interpolations/xabrinterpolation.hpp                         | 3 +--
 ql/termstructures/volatility/all.hpp                                 | 3 +++
 ql/termstructures/volatility/swaption/sabrswaptionvolatilitycube.hpp | 3 +--
 ql/termstructures/volatility/swaption/zabrswaptionvolatilitycube.hpp | 2 +-
 6 files changed, 8 insertions(+), 6 deletions(-)

commit 2494b906757b48440c02cc1f7500f187c09a46a4
Author: paolodelia99 <paolo.delia99@gmail.com>
Date:   Wed, 18 Feb 2026 19:55:48 +0100

    Reorder some params of the blackvolsurfacedelta ctor

 .../volatility/equityfx/blackvolsurfacedelta.cpp   | 14 +++++-----
 .../volatility/equityfx/blackvolsurfacedelta.hpp   | 30 +++++++++++-----------
 2 files changed, 22 insertions(+), 22 deletions(-)

commit bd70727066b74815cb49d317c4da320a04fe014d
Author: Aaditya Panikath <aadityarajeev@gmail.com>
Date:   Wed, 18 Feb 2026 18:55:43 +0000

    Update ZABR experimental deprecation stubs to version 1.42

 ql/experimental/volatility/zabr.hpp                         | 2 +-
 ql/experimental/volatility/zabrinterpolatedsmilesection.hpp | 2 +-
 ql/experimental/volatility/zabrinterpolation.hpp            | 2 +-
 ql/experimental/volatility/zabrsmilesection.hpp             | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

commit 22b680a98441e1ec481fea3f1be0240158b0bedc
Author: Aaditya Panikath <aadityarajeev@gmail.com>
Date:   Wed, 18 Feb 2026 18:04:33 +0000

    Code review fixes: gammas if constexpr guard, BOOST_REQUIRE, Cube comment
    
    - sabrswaptionvolatilitycube.hpp: guard extractGamma() call with
      if constexpr so the call is dead-code-eliminated for 4-param models
      (SABR); update gammas comment to accurately describe allocation.
    - sabrswaptionvolatilitycube.hpp: add comment in Cube constructor
      explaining the k<=4 backwardFlat threshold and the resulting
      forward-rate interpolation asymmetry between SABR and ZABR.
    - swaptionvolatilitycube.cpp: change BOOST_CHECK to BOOST_REQUIRE for
      the section null-guard in testZabrWithFreeGamma, consistent with all
      other ZABR tests.

 .../volatility/swaption/sabrswaptionvolatilitycube.hpp       | 12 ++++++++++--
 test-suite/swaptionvolatilitycube.cpp                        |  2 +-
 2 files changed, 11 insertions(+), 3 deletions(-)

commit 2d3ec2d0b5276afb9b573d531cbaf8acda707270
Author: Aaditya Panikath <aadityarajeev@gmail.com>
Date:   Wed, 18 Feb 2026 17:45:12 +0000

    Fix ZABR UB, file relocation, and test robustness

 QuantLib.vcxproj                                   |   6 +-
 QuantLib.vcxproj.filters                           |  18 +-
 ql/CMakeLists.txt                                  |   6 +-
 ql/experimental/volatility/Makefile.am             |   3 +-
 .../volatility/noarbsabrswaptionvolatilitycube.hpp |  25 +-
 ql/experimental/volatility/zabr.hpp                |  66 +---
 .../volatility/zabrinterpolatedsmilesection.hpp    | 315 +-----------------
 ql/experimental/volatility/zabrinterpolation.hpp   | 201 +-----------
 ql/experimental/volatility/zabrsmilesection.hpp    | 320 +------------------
 ql/math/interpolations/Makefile.am                 |   3 +-
 ql/math/interpolations/zabrinterpolation.hpp       | 219 +++++++++++++
 ql/math/optimization/levenbergmarquardt.cpp        |  48 ++-
 ql/termstructures/volatility/Makefile.am           |   8 +-
 .../swaption/sabrswaptionvolatilitycube.hpp        | 251 ++++++++-------
 .../swaption/zabrswaptionvolatilitycube.hpp        |  86 ++---
 .../volatility/zabr.cpp                            |   3 +-
 ql/termstructures/volatility/zabr.hpp              |  84 +++++
 .../volatility/zabrinterpolatedsmilesection.hpp    | 333 +++++++++++++++++++
 ql/termstructures/volatility/zabrsmilesection.hpp  | 338 ++++++++++++++++++++
 test-suite/shortratemodels.cpp                     |   2 +-
 test-suite/swaptionvolatilitycube.cpp              | 351 ++++++++++++---------
 test-suite/zabr.cpp                                |   3 +-
 22 files changed, 1486 insertions(+), 1203 deletions(-)

commit 1cd1ce4a2f3bb1027ac6ef5405eda88c3b7e4006
Merge: 340741ff4 ec6f78472
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 17 Feb 2026 14:38:34 +0100

    Add fixingConvention parameter to FloatingRateCoupon (#2442)

commit 340741ff4bcf471c011f02e26cf42090282e046f
Merge: 6183e2fb2 c91af141f
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 17 Feb 2026 13:18:22 +0100

    Added Chinese holidays for the year 2026 (#2446)

commit ec6f7847256910d436385e3f588cb5526aa06ed0
Author: pandashark <richard.amaya@mac.com>
Date:   Tue, 17 Feb 2026 06:17:09 -0600

    Add fixingConvention parameter to FloatingRateCoupon
    
    FloatingRateCoupon::fixingDate() hardcodes Preceding business day
    convention. Add a configurable fixingConvention parameter (defaulting
    to Preceding) throughout the coupon hierarchy:
    
    - FloatingRateCoupon: new member, accessor, and constructor parameter
    - IborCoupon, CmsCoupon: pass through to parent
    - CappedFlooredCoupon: copy from underlying
    - CappedFlooredIborCoupon, CappedFlooredCmsCoupon: pass through
    - CmsSpreadCoupon, CappedFlooredCmsSpreadCoupon: pass through
    - FloatingLeg template: use if constexpr with is_constructible_v
      to detect whether the coupon type accepts fixingConvention,
      preserving backward compatibility for custom coupon types
    - IborLeg, CmsLeg: withFixingConvention() builder method
    - FloatingRateBond: constructor parameter
    
    Refs #2015

 ql/cashflows/capflooredcoupon.cpp           |   3 +-
 ql/cashflows/capflooredcoupon.hpp           |  12 ++--
 ql/cashflows/cashflowvectors.hpp            | 101 ++++++++++++++++++++--------
 ql/cashflows/cmscoupon.cpp                  |  14 +++-
 ql/cashflows/cmscoupon.hpp                  |   5 +-
 ql/cashflows/floatingratecoupon.cpp         |   8 ++-
 ql/cashflows/floatingratecoupon.hpp         |   7 +-
 ql/cashflows/iborcoupon.cpp                 |  14 +++-
 ql/cashflows/iborcoupon.hpp                 |   5 +-
 ql/experimental/coupons/cmsspreadcoupon.cpp |   5 +-
 ql/experimental/coupons/cmsspreadcoupon.hpp |   9 ++-
 ql/instruments/bonds/floatingratebond.cpp   |   6 +-
 ql/instruments/bonds/floatingratebond.hpp   |   3 +-
 test-suite/bonds.cpp                        |  68 +++++++++++++++++++
 14 files changed, 207 insertions(+), 53 deletions(-)

commit c91af141f12ea3a237d2de9e12a9e2e1b20e464a
Author: wegamekinglc <scrappedprince.li@gmail.com>
Date:   Tue, 17 Feb 2026 19:35:48 +0800

    added calendar for the year 2026

 ql/time/calendars/china.cpp | 16 +++++++++++++++-
 test-suite/calendars.cpp    | 33 +++++++++++++++++++++++++++++++--
 2 files changed, 46 insertions(+), 3 deletions(-)

commit 6183e2fb24948326b8134d03da3451bc620aea06
Merge: 35ed3b0d4 0f3791e6d
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 16 Feb 2026 15:55:20 +0100

    Avoid underflow and out-of-bounds access in SmileSectionUtils (#2444)

commit 35ed3b0d4924de505b1490b8e4a717b0a89b307b
Merge: 38545e0c3 4d2f4f801
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 16 Feb 2026 14:48:41 +0100

    Adjust Bessel K tolerance for catastrophic cancellation (#2445)

commit 0f3791e6d4bb53650740663762f135ededbc8eab
Author: pandashark <richard.amaya@mac.com>
Date:   Mon, 16 Feb 2026 07:19:34 -0600

    Avoid underflow and out-of-bounds access in SmileSectionUtils
    
    Swap the while-loop condition at line 137 so the bounds check
    short-circuits before af() is called with an out-of-bounds index.
    Guard rightIndex_-- at lines 178 and 185 against unsigned underflow
    when deleteArbitragePoints iteratively removes grid points.
    
    Add a regression test with a W-shaped smile that pushes the central
    index to the grid boundary, exercising the fix.
    
    Fixes #2184.

 ql/termstructures/volatility/smilesectionutils.cpp | 10 +++--
 test-suite/markovfunctional.cpp                    | 48 ++++++++++++++++++++++
 2 files changed, 54 insertions(+), 4 deletions(-)

commit 4d2f4f801f0b6bb3c8a55e411bd17c4424691f9a
Author: pandashark <richard.amaya@mac.com>
Date:   Fri, 13 Feb 2026 10:13:10 -0600

    Adjust Bessel K tolerance for catastrophic cancellation (#2432)
    
    The K_nu(x) formula (pi/2)*(I_{-nu} - I_nu)/sin(pi*nu) has condition
    number ~10,000 for small nu, amplifying rounding errors from I_nu into
    K_nu. For nu=0.001, the tolerance of 5e4*eps*|K| provides only 2.2x
    headroom, causing platform-dependent failures.
    
    Scale tol_k by max(|expected_k|, |expected_i|) to account for error
    propagation from the I computation. Also add setprecision(16) and
    show difference/tolerance in error messages for easier diagnosis.

 test-suite/functions.cpp | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

commit 69c51f71c48b2fe27d352274f02e785555d76470
Author: Aaditya Panikath <aadityarajeev@gmail.com>
Date:   Sat, 14 Feb 2026 20:04:09 +0000

    Fix CI failures: MSVC C4127 warning and ZABR calibration NaN on macOS
    
    Address two CI pipeline failures from PR #2434:
    
    1. MSVC C4127: Change `if` to `if constexpr` for compile-time
       Model::nParams >= 5 guards (lines 454, 520), eliminating
       "conditional expression is constant" warning treated as error.
    
    2. ZABR NaN alpha on macOS: Fix pre-existing copy-paste bug in
       ZabrSpecs::inverse() where x[2] (nu transform) read from y[4]
       (gamma) instead of y[2] (nu), corrupting the optimizer's initial
       guess and causing alpha to diverge to NaN on macOS/Accelerate.
    
    Also adds testZabrWithFreeGamma to exercise calibration with free
    gamma parameter, and a `using` declaration to unhide base class
    smileSection overloads in XabrSwaptionVolatilityCube.

 ql/experimental/volatility/zabrinterpolation.hpp   |  2 +-
 .../swaption/sabrswaptionvolatilitycube.hpp        |  5 +-
 test-suite/swaptionvolatilitycube.cpp              | 62 ++++++++++++++++++++++
 3 files changed, 66 insertions(+), 3 deletions(-)

commit ac9eb73b80a81dd2c2da42cc8e954ece7b4b7594
Author: Aaditya Panikath <aadityarajeev@gmail.com>
Date:   Sat, 14 Feb 2026 14:26:16 +0000

    Fix Doxygen @param mismatch in createSmileSection
    
    Name the unused shift and volatilityType parameters so Doxygen
    can match them to their @param documentation comments.
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

 ql/termstructures/volatility/swaption/zabrswaptionvolatilitycube.hpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 38545e0c3fe80a1f72a188acc4d6d4bd36132935
Merge: 93fa3f44f 5b004803b
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Feb 2026 13:13:30 +0100

    Make all interpolation implementations final (#2438)

commit 93fa3f44f275dcc6a84e14b03c8fed1c337d456b
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Fri, 13 Feb 2026 11:32:45 +0000

    Update copyright list in license

 LICENSE.TXT | 2 ++
 1 file changed, 2 insertions(+)

commit a64725d5a6c9ac1cfa4dace234e8994790b22ce0
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Fri, 13 Feb 2026 11:34:42 +0000

    Update generated headers

 ql/pricingengines/forward/all.hpp | 1 +
 1 file changed, 1 insertion(+)

commit ff4f283be7de47bc328f7ca40b695a6201a8ebaf
Merge: 37260bac3 aadca585a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Feb 2026 12:32:33 +0100

    Add FX Forward instrument, engine, and tests (#2414)

commit 37260bac318c0e6544a3a7cdbd9000f2729af123
Merge: ef7a958e8 1879cee29
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Fri, 13 Feb 2026 10:23:19 +0100

    Remove code duplication in FuturesConvAdjustmentQuote (#2436)

commit aadca585a7bf0f8ce8cbf574b73a1adbf4e43244
Author: chiragpdesai77 <chirag.desai@jcu.edu.au>
Date:   Fri, 13 Feb 2026 14:54:32 +0800

    Thank you for feedback from eltoder.
    I changed the name to be consistent in both constructors to be paySourceCurrency

 ql/instruments/fxforward.cpp | 4 ++--
 ql/instruments/fxforward.hpp | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

commit 5b004803b532c92d339c400ee20565facb2cdaa5
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Thu, 12 Feb 2026 20:30:33 -0500

    Make all interpolation implementations final

 ql/experimental/barrieroption/vannavolgainterpolation.hpp | 2 +-
 ql/experimental/shortrate/generalizedhullwhite.hpp        | 2 +-
 ql/math/interpolations/backwardflatinterpolation.hpp      | 2 +-
 ql/math/interpolations/forwardflatinterpolation.hpp       | 2 +-
 ql/math/interpolations/kernelinterpolation.hpp            | 2 +-
 ql/math/interpolations/lagrangeinterpolation.hpp          | 2 +-
 ql/math/interpolations/linearinterpolation.hpp            | 2 +-
 ql/math/interpolations/loginterpolation.hpp               | 2 +-
 ql/math/interpolations/mixedinterpolation.hpp             | 2 +-
 9 files changed, 9 insertions(+), 9 deletions(-)

commit ef7a958e88587ad240269369c8831854fff43fb6
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 12 Feb 2026 11:46:53 +0100

    Avoid warning when copying a partially initialized struct

 ql/models/shortrate/onefactormodels/markovfunctional.hpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

commit 7b76a7a0b61d7e953963c72c10285e8cf97881d0
Merge: a05b6ab32 662d0c042
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 12 Feb 2026 15:25:03 +0100

    Fix `testCachedHullWhite` failure with -O3 optimization (#2435)

commit 662d0c04215b5e11b7738f6734338cd6dd792454
Author: Vatsalpatni73 <vatsalpatni73@gmail.com>
Date:   Thu, 12 Feb 2026 18:06:04 +0530

    Typo Fix

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

commit 1879cee29c3aaf32d340a35e55de04b821f6dcd8
Author: Eugene Toder <eltoder@twosigma.com>
Date:   Tue, 10 Feb 2026 14:11:03 -0500

    Remove code duplication in FuturesConvAdjustmentQuote

 ql/quotes/futuresconvadjustmentquote.cpp | 11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)

commit 4befb53bec36d60ec1ff3e3958cb93c1059f7d35
Author: Vatsalpatni73 <vatsalpatni73@gmail.com>
Date:   Wed, 11 Feb 2026 00:35:27 +0530

    Fixes #2433 - Fix testCachedHullWhite failure with -O3 optimization

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

commit 536f48b84422edb67cedab7fdc767fe0ad3311ef
Author: chiragpdesai77 <chirag.desai@jcu.edu.au>
Date:   Sat, 7 Feb 2026 17:44:35 +0800

    Hi Dr Luigi, thank you for your feedback and made changes as per 3rd round as you recommended.

 ql/instruments/fxforward.cpp                       |  9 ++--
 ql/instruments/fxforward.hpp                       | 14 +++--
 .../forward/discountingfxforwardengine.cpp         | 23 ++++++---
 test-suite/fxforward.cpp                           | 59 ++++++++++++++--------
 4 files changed, 64 insertions(+), 41 deletions(-)

commit 0ea742f2ee9d7761e3ded2d346915c833bed0feb
Merge: 12c98ab57 011214b45
Author: Aaditya Panikath <aadityarajeev@gmail.com>
Date:   Thu, 5 Feb 2026 23:31:51 +0530

    Merge pull request #1 from aaditya-panik/update-copyright-list-feature/zabr-swaption-volatility-cube
    
    Update copyright list in license

commit 011214b45c9d847e9c4a9f238562d28c0e75b626
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Thu, 5 Feb 2026 17:43:09 +0000

    Update copyright list in license

 LICENSE.TXT | 2 ++
 1 file changed, 2 insertions(+)

commit 12c98ab57a87389ba36dbd2eaa14ab8a8b8eef2f
Author: Aaditya Panikath <aadityarajeev@gmail.com>
Date:   Thu, 5 Feb 2026 17:34:52 +0000

    Add ZabrSwaptionVolatilityCube for ZABR-based swaption volatility cubes
    
    Implements a ZabrSwaptionVolatilityCube class that enables building swaption
    volatility cubes using the ZABR model, which provides better smile fitting
    through its additional gamma parameter.
    
    Key changes:
    - Add Model::nParams trait to support variable parameter counts (SABR=4, ZABR=5)
    - Add factory methods (createInterpolation, createSmileSection, extractGamma)
      to abstract model-specific constructor differences
    - Create SwaptionVolCubeZabrModel using ZabrShortMaturityLognormal kernel
    - Add comprehensive unit tests for ZABR cube functionality
    
    The implementation maintains full backward compatibility with existing
    SabrSwaptionVolatilityCube and NoArbSabrSwaptionVolatilityCube.
    
    Closes #2366

 QuantLib.vcxproj                                   |   1 +
 QuantLib.vcxproj.filters                           |   3 +
 ql/CMakeLists.txt                                  |   1 +
 .../volatility/noarbsabrswaptionvolatilitycube.hpp |  36 +++
 ql/termstructures/volatility/swaption/Makefile.am  |   3 +-
 ql/termstructures/volatility/swaption/all.hpp      |   1 +
 .../swaption/sabrswaptionvolatilitycube.hpp        | 190 +++++++----
 .../swaption/zabrswaptionvolatilitycube.hpp        | 161 +++++++++
 test-suite/swaptionvolatilitycube.cpp              | 358 +++++++++++++++++++++
 9 files changed, 684 insertions(+), 70 deletions(-)

commit a05b6ab328ca7c01063d8209fcfb9e54a0eecf0b
Merge: 71e800be7 1bc9e984c
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 2 Feb 2026 10:10:13 +0100

    Faster `skipTo()` implementation in Burley's scrambled Sobol RNG (#2431)

commit b7ab07c994d50bf308fe9e9607cf95f55d864815
Author: chiragpdesai77 <chirag.desai@jcu.edu.au>
Date:   Sun, 1 Feb 2026 10:49:24 +0800

    Hi, as suggested by Dr Luigi,
    
    1) NPV date logic should be part of the instrument, not the engine and adjusted accordingly
    
    2) Added settlementDays to the FxForward instrument to support different settlement conventions (Overnight, TomNext, SpotNext, etc.). Added calendar to compute the actual payment date. Added relevant testSettlementDays, testSettlementDaysWithCalendar.

 ql/instruments/fxforward.cpp                       | 24 +++++++-
 ql/instruments/fxforward.hpp                       | 64 +++++++++++++++------
 .../forward/discountingfxforwardengine.cpp         | 24 ++------
 .../forward/discountingfxforwardengine.hpp         |  9 +--
 test-suite/fxforward.cpp                           | 65 ++++++++++++++++++++++
 5 files changed, 140 insertions(+), 46 deletions(-)

commit 1bc9e984cbb07c9fc3524e7bff49ca666c1e1012
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sat, 31 Jan 2026 17:16:08 +0100

    speed up

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

commit bb271ec305d53f3e154a30e90f1bcb7737c93704
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sat, 31 Jan 2026 13:12:49 +0100

    faster skipTo() implementation
    
    thanks to Fabien Le Floc'h

 ql/math/randomnumbers/burley2020sobolrsg.cpp |  9 +++---
 test-suite/lowdiscrepancysequences.cpp       | 44 ++++++++++++++++++++++++++++
 2 files changed, 48 insertions(+), 5 deletions(-)

commit f5f442ce935ed46be75dbdaf43ecb48e3440e9c5
Author: chiragpdesai77 <chirag.desai@jcu.edu.au>
Date:   Sat, 24 Jan 2026 11:08:29 +0800

    Previous commit ID 22a3d70a seems to have failed. Recomitting with Changes made with Round 2 of Dr Luigi's feedback for #2414

 ql/instruments/fxforward.cpp                       | 80 +++++++++---------
 ql/instruments/fxforward.hpp                       | 89 ++++++++++----------
 .../forward/discountingfxforwardengine.cpp         | 87 +++++++++----------
 .../forward/discountingfxforwardengine.hpp         | 50 +++++------
 test-suite/fxforward.cpp                           | 98 +++++++++++++++-------
 5 files changed, 225 insertions(+), 179 deletions(-)

commit 4a644a1a597bd139ddb5c67ff7bad32c611c4bd3
Author: chiragpdesai77 <chirag.desai@jcu.edu.au>
Date:   Sat, 24 Jan 2026 10:28:41 +0800

    Revert "Changes made in line with Round 2 of Dr Luigi's feedback for #2414"
    
    This reverts commit 23d626b4821097ab6d1e36c72223d8d3fd52bff4.

 ql/instruments/fxforward.cpp                       | 81 +++++++++----------
 ql/instruments/fxforward.hpp                       | 88 ++++++++++-----------
 .../forward/discountingfxforwardengine.cpp         | 84 ++++++++++----------
 .../forward/discountingfxforwardengine.hpp         | 44 +++++------
 test-suite/fxforward.cpp                           | 92 +++++++---------------
 5 files changed, 172 insertions(+), 217 deletions(-)

commit 22a2d70a11701f927e7839154634b007de5a6e14
Author: chiragpdesai77 <chirag.desai@jcu.edu.au>
Date:   Sat, 24 Jan 2026 09:48:26 +0800

    Changes made in line with Round 2 of Dr Luigi's feedback for #2414

 ql/instruments/fxforward.cpp                       | 81 ++++++++++---------
 ql/instruments/fxforward.hpp                       | 88 ++++++++++-----------
 .../forward/discountingfxforwardengine.cpp         | 84 ++++++++++----------
 .../forward/discountingfxforwardengine.hpp         | 44 +++++------
 test-suite/fxforward.cpp                           | 92 +++++++++++++++-------
 5 files changed, 217 insertions(+), 172 deletions(-)

commit d5c127c70b24e9c0f37e27381661f874e9be983a
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 22 Jan 2026 12:38:50 +0100

    Add new files to Makefiles and CMakeLists

 ql/CMakeLists.txt                     | 4 ++++
 ql/instruments/Makefile.am            | 2 ++
 ql/pricingengines/forward/Makefile.am | 4 +++-
 test-suite/CMakeLists.txt             | 1 +
 test-suite/Makefile.am                | 1 +
 5 files changed, 11 insertions(+), 1 deletion(-)

commit 6e430c94e9023f908061050a875ea8143612145e
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 22 Jan 2026 12:33:22 +0100

    Fix VC++ projects

 QuantLib.sln.DotSettings.user | 11 -----------
 QuantLib.vcxproj              | 42 +-----------------------------------------
 QuantLib.vcxproj.filters      | 40 +++++++++++++++++++++++++++++++++++-----
 test-suite/testsuite.vcxproj  | 42 +-----------------------------------------
 4 files changed, 37 insertions(+), 98 deletions(-)

commit ece457693f3830b3be2bff778521ddd85ff52d3b
Author: chiragpdesai77 <chirag.desai@jcu.edu.au>
Date:   Thu, 22 Jan 2026 17:09:18 +0800

    With reference to Dr Luigi's first round of feedback #2414, made the changes recommended

 QuantLib.vcxproj.filters                           | 46 ++++++----------------
 ql/instruments/fxforward.cpp                       |  2 +-
 ql/instruments/fxforward.hpp                       | 18 +++++----
 .../forward/discountingfxforwardengine.cpp         | 35 +++-------------
 .../forward/discountingfxforwardengine.hpp         | 30 +++++---------
 test-suite/fxforward.cpp                           | 26 ++++++------
 6 files changed, 50 insertions(+), 107 deletions(-)

commit 71e800be7e2e31246d0422203ef43037e01ccebd
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Mon, 19 Jan 2026 12:36:37 +0100

    Avoid deprecation warning

 ql/methods/finitedifferences/boundarycondition.cpp | 4 ++++
 1 file changed, 4 insertions(+)

commit a31cea34155193ab087047d472d4c7a767684b95
Merge: b1925ef79 62867af6b
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 15 Jan 2026 11:25:29 +0100

    Fix: add constructor validation in OvernightIndexedCoupon to prevent paymentDate < accrualEndDate (#2421)

commit 62867af6b0e1254d67aa01813127abb962ed28ee
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 15 Jan 2026 09:37:54 +0100

    Add test message

 test-suite/overnightindexedcoupon.cpp | 1 +
 1 file changed, 1 insertion(+)

commit b1925ef7949f7a35b727052a0790f7f2db36f35f
Merge: 73d9a0557 86729628d
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 15 Jan 2026 09:28:30 +0100

    Fix accrued amount calculation for simple-averaging overnight indexed coupon (#2427)

commit 01c83702aca10160a58e51550f30e29ac2e5a8a1
Author: jay-jain <jayjainemail@gmail.com>
Date:   Wed, 14 Jan 2026 16:43:14 -0800

    Add missing includes for OvernightIndexedCoupon test

 test-suite/overnightindexedcoupon.cpp | 3 +++
 1 file changed, 3 insertions(+)

commit 430f78e337f9d5c6d8f65bbc3d9923e75708e4fa
Author: jay-jain <jayjainemail@gmail.com>
Date:   Wed, 14 Jan 2026 16:24:57 -0800

    Fix: add constructor guard in OvernightIndexedCoupon and test invalid paymentDate

 ql/cashflows/overnightindexedcoupon.cpp |  5 +++++
 test-suite/overnightindexedcoupon.cpp   | 21 +++++++++++++++++++++
 2 files changed, 26 insertions(+)

commit 86729628d6a83d03e9ea23641ef706be59a9c4c5
Author: Guillaume Horel <guillaume.horel@gmail.com>
Date:   Tue, 13 Jan 2026 22:57:21 -0500

    fix accrued amount for simple averaging overnight indexec coupon

 ql/cashflows/overnightindexedcoupon.cpp       |  6 +++---
 ql/cashflows/overnightindexedcouponpricer.cpp | 21 +++++++++++++++++----
 ql/cashflows/overnightindexedcouponpricer.hpp |  4 +++-
 3 files changed, 23 insertions(+), 8 deletions(-)

commit 73d9a0557d1048ccf429dcd893b7e559b90cd6b7
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 14 Jan 2026 15:29:02 +0100

    Remove prerelease before creating draft release

 .github/workflows/publish-release.yml | 6 ++++++
 1 file changed, 6 insertions(+)

commit bc3d06eabd9092374f35aa732ff60ac970df5ec4
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 14 Jan 2026 14:42:54 +0100

    Sync when a release is published

 .github/workflows/sync-org-repo.yml | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

commit 49dd75d6e0ab2539ef6063cd82311108682ce896
Merge: f0a38c340 332e795f4
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 14 Jan 2026 14:27:48 +0100

    Avoid storing references in GSR and Markov-functional state processes (#2418)

commit f0a38c340e8eea81519496aaba40047f6fb0ada9
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 14 Jan 2026 13:39:24 +0100

    Also trigger publishing workflow with minor versions

 .github/workflows/publish-release.yml | 1 +
 1 file changed, 1 insertion(+)

commit dc954aa7e3ec85a02276650b005190e412aa5917
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 14 Jan 2026 12:57:02 +0100

    Add workflow to automate syncing the org repo when releasing

 .github/workflows/sync-org-repo.yml | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

commit 332e795f48da9330f2d0b973b0ff917300ad0016
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Wed, 14 Jan 2026 12:03:02 +0100

    notify observers after update

 ql/models/shortrate/onefactormodels/gsr.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

commit 16340a86398617a0136849f0205e59cba9d18b05
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Wed, 14 Jan 2026 12:02:56 +0100

    make setters private

 ql/processes/mfstateprocess.cpp | 2 ++
 ql/processes/mfstateprocess.hpp | 9 ++++-----
 2 files changed, 6 insertions(+), 5 deletions(-)

commit db21e8c8f5e011efb0d0a0aced8a144a2ac8aa00
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Wed, 14 Jan 2026 11:57:27 +0100

    make setters private

 ql/processes/gsrprocess.hpp     |  8 +++-----
 ql/processes/gsrprocesscore.hpp | 16 ++++++++++------
 2 files changed, 13 insertions(+), 11 deletions(-)

commit b64f97dc268ab635a7d5bd83d4eff0e019383e8c
Merge: ef746de22 4b71c3ba7
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 13 Jan 2026 16:58:19 +0100

    Deprecate a few last unused parts of the old finite-difference framework (#2425)

commit ef746de221401e532e1e3dd86c93ee6c9bea6dd1
Merge: 64fd8261b 6cf802e62
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Tue, 13 Jan 2026 14:02:44 +0100

    Remove features deprecated in version 1.37 (#2424)

commit 64fd8261b97177c87f819fa6cb3e4602dbe9fc71
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Tue, 13 Jan 2026 08:53:03 +0000

    Set version to 1.42-dev

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

commit 4b71c3ba7200b8d31b3879804d208c318751a1b3
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 8 Jan 2026 11:19:19 +0100

    Avoid warning

 ql/methods/finitedifferences/mixedscheme.hpp | 66 +++++++++++++---------------
 1 file changed, 31 insertions(+), 35 deletions(-)

commit d5e89c7ea16022f12dd4599c85fa4407f81ffaf9
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Thu, 8 Jan 2026 11:06:05 +0100

    Deprecate more parts of the old FD framework

 .../continuousarithmeticasianvecerengine.cpp       |  8 ++--
 ql/methods/finitedifferences/boundarycondition.hpp | 24 ++++--------
 ql/methods/finitedifferences/cranknicolson.hpp     | 41 ++++-----------------
 ql/methods/finitedifferences/dminus.hpp            | 30 +++++----------
 ql/methods/finitedifferences/dplus.hpp             | 30 +++++----------
 ql/methods/finitedifferences/dplusdminus.hpp       | 33 +++++------------
 ql/methods/finitedifferences/dzero.hpp             | 33 +++++------------
 ql/methods/finitedifferences/expliciteuler.hpp     | 40 ++++----------------
 ql/methods/finitedifferences/impliciteuler.hpp     | 36 ++++--------------
 ql/methods/finitedifferences/mixedscheme.hpp       | 43 ++--------------------
 test-suite/operators.cpp                           |  2 +
 11 files changed, 79 insertions(+), 241 deletions(-)

commit 6cf802e62521e7d6ef200418a402856133e3cbb9
Author: Luigi Ballabio <luigi.ballabio@gmail.com>
Date:   Wed, 7 Jan 2026 11:56:12 +0100

    Remove features deprecated in version 1.37

 QuantLib.vcxproj                                   |  10 --
 QuantLib.vcxproj.filters                           |  30 ----
 cmake/GenerateHeaders.cmake                        |  17 +-
 ql/CMakeLists.txt                                  |  10 --
 ql/Makefile.am                                     |   1 +
 ql/cashflows/Makefile.am                           |   3 +-
 ql/cashflows/multipleresetscoupon.cpp              | 199 ---------------------
 ql/cashflows/multipleresetscoupon.hpp              |  88 ---------
 ql/cashflows/subperiodcoupon.hpp                   |  29 ---
 ql/experimental/commodities/commodityindex.hpp     |  58 ------
 ql/experimental/exoticoptions/Makefile.am          |   3 +-
 ql/experimental/exoticoptions/all.hpp              |   2 -
 .../exoticoptions/kirkspreadoptionengine.cpp       | 108 -----------
 .../exoticoptions/kirkspreadoptionengine.hpp       |  31 +---
 ql/experimental/exoticoptions/spreadoption.hpp     |  30 +---
 ql/grid.hpp                                        |  59 +-----
 ql/indexes/indexmanager.cpp                        |   6 -
 ql/indexes/indexmanager.hpp                        |  45 +----
 ql/instruments/Makefile.am                         |   3 +-
 ql/instruments/assetswap.cpp                       |  14 --
 ql/instruments/assetswap.hpp                       |  15 --
 ql/instruments/fixedratebondforward.hpp            |  28 ---
 ql/math/Makefile.am                                |   3 +-
 ql/math/all.hpp                                    |   1 -
 ql/math/optimization/levenbergmarquardt.cpp        |   4 +-
 ql/math/optimization/levenbergmarquardt.hpp        |  11 --
 ql/math/sampledcurve.hpp                           |  28 ---
 ql/math/transformedgrid.hpp                        |  88 +--------
 ql/methods/finitedifferences/Makefile.am           |   6 +-
 ql/methods/finitedifferences/all.hpp               |   3 -
 ql/methods/finitedifferences/bsmoperator.cpp       |  56 ------
 ql/methods/finitedifferences/bsmoperator.hpp       |  19 +-
 ql/methods/finitedifferences/bsmtermoperator.hpp   |  27 ---
 ql/methods/finitedifferences/fdtypedefs.hpp        |  31 ----
 ql/methods/finitedifferences/parallelevolver.hpp   |  39 ----
 ql/methods/finitedifferences/pde.hpp               | 104 +----------
 ql/methods/finitedifferences/pdebsm.hpp            |  41 +----
 ql/pricingengines/mcsimulation.hpp                 |   1 -
 ql/pricingengines/vanilla/Makefile.am              |   4 +-
 ql/pricingengines/vanilla/fdmultiperiodengine.hpp  |  28 ---
 ql/pricingengines/vanilla/fdvanillaengine.hpp      |  30 ----
 ql/quantlib.hpp                                    |   1 -
 .../inflation/interpolatedyoyinflationcurve.hpp    |  60 -------
 .../inflation/piecewiseyoyinflationcurve.hpp       |  21 ---
 ql/termstructures/inflationtermstructure.cpp       |  58 +-----
 ql/termstructures/inflationtermstructure.hpp       |  57 ------
 ql/termstructures/yield/oisratehelper.cpp          |  25 ---
 ql/termstructures/yield/oisratehelper.hpp          |  27 ---
 test-suite/CMakeLists.txt                          |   2 -
 test-suite/Makefile.am                             |   2 -
 test-suite/multipleresetscoupons.cpp               |  72 --------
 test-suite/operators.cpp                           |  67 -------
 test-suite/overnightindexedswap.cpp                |  30 ----
 test-suite/spreadoption.cpp                        | 177 ------------------
 test-suite/testsuite.vcxproj                       |   4 +-
 test-suite/testsuite.vcxproj.filters               |   8 +-
 test-suite/transformedgrid.cpp                     |  60 -------
 57 files changed, 55 insertions(+), 1929 deletions(-)

commit b0e060f26640699a1c35912ce275551ca41a45f0
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 4 Jan 2026 13:35:48 +0100

    fix

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

commit 45c0fcee931a640f344b237f19deb6d0819b4c5d
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 4 Jan 2026 13:27:07 +0100

    avoid copies

 ql/processes/gsrprocess.hpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

commit 5ed6415994f42680c1f10cbf02230bf349f0331b
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 4 Jan 2026 13:22:31 +0100

    we can use static cast which is faster

 ql/models/shortrate/onefactormodels/gsr.cpp | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

commit 483c7f855c92a34d2e8e29da3f207d5a4f06d824
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 4 Jan 2026 13:22:23 +0100

    call setters

 ql/models/shortrate/onefactormodels/gsr.cpp              | 6 +++++-
 ql/models/shortrate/onefactormodels/gsr.hpp              | 2 ++
 ql/models/shortrate/onefactormodels/markovfunctional.cpp | 2 ++
 3 files changed, 9 insertions(+), 1 deletion(-)

commit d7ced562407f6d1459cf7a5781423374bae7ab58
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 4 Jan 2026 13:21:37 +0100

    call setter when vols change, remove outdated restriction

 ql/models/shortrate/onefactormodels/markovfunctional.hpp | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

commit a1b5160688c91a586eaafaefd57ab41f3bb0d3ce
Author: Peter Caspers <pcaspers1973@gmail.com>
Date:   Sun, 4 Jan 2026 13:21:05 +0100

    avoid storing references, add setters

 ql/processes/gsrprocess.cpp     |  8 ++++----
 ql/processes/gsrprocess.hpp     | 17 +++++++++++++----
 ql/processes/gsrprocesscore.cpp | 42 +++++++++++++++++++++++++++++------------
 ql/processes/gsrprocesscore.hpp | 10 ++++++++--
 ql/processes/mfstateprocess.cpp | 36 ++++++++++++++++++++++++-----------
 ql/processes/mfstateprocess.hpp | 14 +++++++++++---
 6 files changed, 91 insertions(+), 36 deletions(-)

commit f05dd6e8e00830ffd3999be883ec0184c047486e
Author: chiragpdesai77 <chirag.desai@jcu.edu.au>
Date:   Thu, 1 Jan 2026 09:55:45 +0800

    Add FX Forward instrument, engine, and tests
    
    Introduces a new FxForward instrument to QuantLib, including a discounting pricing engine and comprehensive unit tests. Updates project files for integration and adds support for construction via notional amounts or forward rate. The engine prices FX forwards using currency-specific discount curves and spot FX, and exposes fair forward rate and NPV in both currencies. All changes are fully integrated into the build and test suite.

 QuantLib.sln.DotSettings.user                      |  11 +
 QuantLib.vcxproj                                   |  46 ++-
 QuantLib.vcxproj.filters                           |   6 +-
 ql/instruments/all.hpp                             |   1 +
 ql/instruments/fxforward.cpp                       | 118 +++++++
 ql/instruments/fxforward.hpp                       | 157 +++++++++
 ql/pricingengines/forward/all.hpp                  |   2 +-
 .../forward/discountingfxforwardengine.cpp         | 142 ++++++++
 .../forward/discountingfxforwardengine.hpp         | 105 ++++++
 test-suite/fxforward.cpp                           | 381 +++++++++++++++++++++
 test-suite/testsuite.vcxproj                       |  41 +++
 test-suite/testsuite.vcxproj.filters               |   3 +
 12 files changed, 1010 insertions(+), 3 deletions(-)

commit 8d636c277695225d778a08c7f41d2769ec69776b
Author: shubhamessier <shubham.gaur7116@gmail.com>
Date:   Mon, 29 Dec 2025 17:02:10 +0530

    feat: Implement fairSpread() for FloatFloatSwap
    
    Add missing fairSpread() method to FloatFloatSwap class following the same
    pattern as other swap instruments. Calculates fair spread adjustment needed
    on the second floating leg to achieve zero NPV.
    
    - Add fairSpread() method with proper caching and lifecycle management
    - Update results class and fetchResults() with calculation logic
    - Ensures API consistency across all swap types in QuantLib
    
    Fixes #2403

 ql/instruments/floatfloatswap.cpp | 36 ++++++++++++++++++++++++++++++++++--
 ql/instruments/floatfloatswap.hpp |  4 ++++
 2 files changed, 38 insertions(+), 2 deletions(-)

commit 12c44d1c9993c08dfb776954d8d8c88a86b50a93
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Thu, 18 Dec 2025 11:58:06 +0000

    Update copyright list in license

 LICENSE.TXT | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

commit 57372ce4176e8513c41356a018669c61187bb92a
Author: lballabio[bot] <224797326+lballabio-bot@users.noreply.github.com>
Date:   Thu, 18 Dec 2025 11:58:06 +0000

    Update old license links

 .../volatility/equityfx/blackvariancetimeextrapolation.hpp              | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 856b09650213ad7332c33edf2d1d5132237d3623
Author: Paolo D'Elia <paolo.delia99@gmail.com>
Date:   Thu, 18 Dec 2025 12:57:53 +0100

    Correct logical error when creating InterpolatedSmileSection in tests
    
    Made mistake by using vols instead of stdDevs when building SmileSection in the test suite

 test-suite/interpolatedsmilesection.cpp | 42 ++++++++++++++++++++-------------
 1 file changed, 26 insertions(+), 16 deletions(-)

commit 8e6afe619154de161b0ab82becbc193c0f6f7b8c
Author: paolodelia99 <paolo.delia99@gmail.com>
Date:   Thu, 27 Nov 2025 18:06:09 +0100

    no anonymous namespace anymore, removed #pragma once

 .../volatility/equityfx/blackvariancetimeextrapolation.hpp         | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

commit ff66504dcaea6468f91c2b185e048f63c93cc291
Author: paolodelia99 <paolo.delia99@gmail.com>
Date:   Thu, 27 Nov 2025 13:13:17 +0100

    Fix various oversights and add interpolatedsmilesection first tests

 .../volatility/interpolatedsmilesection.hpp        |  28 +--
 test-suite/CMakeLists.txt                          |   1 +
 test-suite/Makefile.am                             |   1 +
 test-suite/interpolatedsmilesection.cpp            | 206 +++++++++++++++++++++
 test-suite/testsuite.vcxproj                       |   1 +
 test-suite/testsuite.vcxproj.filters               |   3 +
 6 files changed, 218 insertions(+), 22 deletions(-)

commit 813c1bf7ada6db44a18051270c742ce006018f84
Author: paolodelia99 <paolo.delia99@gmail.com>
Date:   Thu, 6 Nov 2025 17:30:46 +0100

    Updated initial comment in the tests

 test-suite/blackvolsurfacedelta.cpp | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

commit 9a58b8af8e2bdf8553f2b4634f62999ea8d0fb55
Author: paolodelia99 <paolo.delia99@gmail.com>
Date:   Wed, 5 Nov 2025 23:23:30 +0100

    fix win compilation error, in generate doc error

 ql/termstructures/volatility/equityfx/blackvolsurfacedelta.hpp | 3 +--
 ql/termstructures/volatility/interpolatedsmilesection.hpp      | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

commit 3e61f8d8edfc9820be2d979ac331161328a00a91
Author: paolodelia99 <paolo.delia99@gmail.com>
Date:   Wed, 5 Nov 2025 17:33:00 +0100

    set flatStrikeExtrapolation to false, add checkStrike sanity check in iterpolateSmileSection

 .../volatility/equityfx/blackvolsurfacedelta.cpp   | 17 +++-
 .../volatility/equityfx/blackvolsurfacedelta.hpp   |  3 +-
 .../volatility/interpolatedsmilesection.hpp        | 97 ++++++++++++++++++----
 3 files changed, 94 insertions(+), 23 deletions(-)

commit 94f4762f161fc5c3142c647235d5e3599041070d
Author: paolodelia99 <paolo.delia99@gmail.com>
Date:   Wed, 5 Nov 2025 15:33:25 +0100

    renaming vars, added docs string for the blackvolsurfacedelta

 .../volatility/equityfx/blackvolsurfacedelta.cpp   |  41 ++++----
 .../volatility/equityfx/blackvolsurfacedelta.hpp   | 104 +++++++++++++++++----
 test-suite/blackvolsurfacedelta.cpp                |  25 ++++-
 3 files changed, 129 insertions(+), 41 deletions(-)

commit dddeafdec3342c4d8a4f925a34eebb7981890cd4
Author: paolodelia99 <paolo.delia99@gmail.com>
Date:   Wed, 5 Nov 2025 11:02:38 +0100

    Replace InterpolatedFxSmileSection with already present InterpolatedSmileSection

 QuantLib.vcxproj                                   |   1 -
 QuantLib.vcxproj.filters                           |   3 -
 ql/CMakeLists.txt                                  |   1 -
 ql/termstructures/volatility/equityfx/Makefile.am  |   1 -
 .../volatility/equityfx/blackvolsurfacedelta.cpp   | 129 +++++++--------------
 .../volatility/equityfx/blackvolsurfacedelta.hpp   |  69 ++---------
 .../volatility/equityfx/fxsmilesection.hpp         |  55 ---------
 test-suite/blackvolsurfacedelta.cpp                |  65 -----------
 8 files changed, 52 insertions(+), 272 deletions(-)

commit 93c57cb52c3336f9323fa48d0c9c2f79b2bf0410
Author: paolodelia99 <paolo.delia99@gmail.com>
Date:   Tue, 4 Nov 2025 22:41:40 +0100

    Fix compilation errors

 .../volatility/equityfx/blackvariancetimeextrapolation.hpp             | 1 +
 ql/termstructures/volatility/equityfx/blackvolsurfacedelta.hpp         | 3 ++-
 2 files changed, 3 insertions(+), 1 deletion(-)

commit 5d346f81dfcf0d5442eb889ff2a44af23ac02d2a
Author: paolodelia99 <paolo.delia99@gmail.com>
Date:   Tue, 4 Nov 2025 12:25:32 +0100

    make InterpolatedFxSmileSection lazy, possibility to pass handle<quote> for the vols

 .../volatility/equityfx/blackvolsurfacedelta.cpp   | 54 ++++++++++---
 .../volatility/equityfx/blackvolsurfacedelta.hpp   | 20 ++++-
 test-suite/blackvolsurfacedelta.cpp                | 92 +++++++++++++++-------
 3 files changed, 123 insertions(+), 43 deletions(-)

commit be091ed5e7f2d6812f232bf271b5b4c1b6000fb7
Author: paolodelia99 <paolo.delia99@gmail.com>
Date:   Fri, 17 Oct 2025 09:42:02 +0200

    Add unit test for BlackVolatilitySurfaceDelta with non-constant volatility

 .../volatility/equityfx/blackvolsurfacedelta.cpp   | 14 +++----
 test-suite/blackvolsurfacedelta.cpp                | 49 ++++++++++++++++++++++
 2 files changed, 56 insertions(+), 7 deletions(-)

commit 490046dd6bee7f37afa9fca29e1b486bc5695b36
Author: paolodelia99 <paolo.delia99@gmail.com>
Date:   Sun, 12 Oct 2025 22:07:03 +0200

    Added first fx vol utils classes from ORE

 QuantLib.vcxproj                                   |   4 +
 QuantLib.vcxproj.filters                           |  12 ++
 ql/CMakeLists.txt                                  |   4 +
 ql/termstructures/volatility/equityfx/Makefile.am  |   4 +
 .../volatility/equityfx/blackvariancecurve.cpp     |  18 +-
 .../volatility/equityfx/blackvariancecurve.hpp     |   4 +-
 .../equityfx/blackvariancetimeextrapolation.hpp    | 101 +++++++++
 .../volatility/equityfx/blackvolsurfacedelta.cpp   | 238 +++++++++++++++++++++
 .../volatility/equityfx/blackvolsurfacedelta.hpp   | 177 +++++++++++++++
 .../volatility/equityfx/blackvoltermstructure.hpp  |   6 +
 .../volatility/equityfx/fxsmilesection.hpp         |  55 +++++
 test-suite/CMakeLists.txt                          |   1 +
 test-suite/Makefile.am                             |   1 +
 test-suite/blackvolsurfacedelta.cpp                | 102 +++++++++
 test-suite/testsuite.vcxproj                       |   1 +
 test-suite/testsuite.vcxproj.filters               |   3 +
 16 files changed, 724 insertions(+), 7 deletions(-)
