Skip to content

Restore shared pricer state in capped YoY coupons - #3052

Open
Kiril1Shevtsov wants to merge 1 commit into
lballabio:masterfrom
Kiril1Shevtsov:fix/yoy-shared-pricer-3041
Open

Kiril1Shevtsov wants to merge 1 commit into
lballabio:masterfrom
Kiril1Shevtsov:fix/yoy-shared-pricer-3041

Conversation

@Kiril1Shevtsov

Copy link
Copy Markdown

Fixes #3041.

The underlying rate can be cached while a shared pricer has since been initialized for another coupon. The capped/floored coupon then asks that pricer for an optionlet adjustment using the wrong coupon's fixing and other state.

Reinitialize the pricer with the underlying coupon, or with the direct coupon when there is no underlying wrapper, before computing caplet or floorlet rates. Unrestricted coupons do not perform the extra initialization.

The regression uses two known historical fixings and checks the capped/floored rates against the contractual payoff. It covers both constructors, positive and negative gearing, a nonzero spread, caps, floors, collars and an unrestricted control, with interleaved repeated calls. On the unfixed implementation a coupon capped at 3% can return 5% after another coupon is priced.

Validation on macOS arm64, AppleClang 21, Boost 1.92, C++17, Boost shared pointers, with warnings treated as errors:

  • Test-only negative control against unchanged production code: the new test fails 24 numerical checks.
  • With the fix: the new test passes all 97 assertions, and InflationCapFlooredCouponTests passes all 3 test cases.
  • Full unfiltered test suite: 1715 test cases and 619834 assertions pass, with no skipped test cases.
  • git diff --check and tools/check_test_messages.py pass.

@boring-cyborg

boring-cyborg Bot commented Nov 11, 2026

Copy link
Copy Markdown

Thanks for opening this pull request! It might take a while before we look at it, so don't worry if there seems to be no feedback. We'll get to it.

@CLAassistant

CLAassistant commented Nov 11, 2026 •

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

QuantLib’s capped/floored year-on-year coupon eventual bug

2 participants