Skip to content

Include daily-compounded spreads in forecast overnight coupons - #3059

Open
Kiril1Shevtsov wants to merge 1 commit into
lballabio:masterfrom
Kiril1Shevtsov:fix/daily-compounded-spread
Open

Kiril1Shevtsov wants to merge 1 commit into
lballabio:masterfrom
Kiril1Shevtsov:fix/daily-compounded-spread

Conversation

@Kiril1Shevtsov

Copy link
Copy Markdown

A compounded overnight coupon with a nonzero daily-compounded spread can forecast its future part using a bare discount-factor ratio, omitting the spread inside each daily factor. Keep every overnight period for this case and use the existing daily-product path. Zero spread and additive-after spread retain their current shortcuts.

Add a deterministic regression with expected products derived from separate business-day enumeration, explicit historical inputs and overnight deposit discount factors. It covers future, mixed and historical observations; positive and negative spreads; lockout; full and telescopic schedule requests; observation shift for full accrual; and unshifted partial intervals.

Validation against cf74c9f657150750dfbf00ed6fd4c0768bc5ce36:

  • The new stock regression fails 120 assertions on the baseline and passes all 241 assertions with the fix.
  • The final unfiltered stock suite passes 1,715 test cases and 619,978 assertions, with no failures or skipped cases.
  • An independent future oracle passes all 251 checks, compared with 84 failures on the baseline. Another 48 boundary-control checks pass on both.
  • git diff --check and tools/check_test_messages.py pass.

Native validation used Linux x86_64, GCC 14, Boost 1.87 and C++17, shared/default configuration, unity builds, -O1 -g0 -DNDEBUG and warnings as errors. The changed production and stock-test units were rebuilt and linked with hash-verified unchanged baseline objects.

The exact daily-product fallback has O(N) construction, storage and forecasting cost. The broader control matrix retains 16 separate compressed-lockout anchor failures, addressed independently in #3058. This PR does not include that fix or the separate today-fixing corrections. Daily-spread gearing remains one, as required by the existing contract.

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.

1 participant