-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
One-month SofrFutureRateHelper start and end dates #1574
Comments
Hi @bensonluk could you please post a quick code that reproduces the user case? |
In case anyone else is interested, the chapter and verse from the CME rulebook is:
|
@jakeheke75 Below is an example for illustration: assume all relevant historical fixings are zero, and a Jan 2023 futures price at 99 (implying average rate = 1% over Jan). The stripping result is 14.5%, indicating that the denominator used is 29 days only (because 1st and 2nd Jan are holidays) instead of 31 days. Changing the 30 Dec fixing does not affect the result, whilst in reality it should (by affecting the 1 and 2 Jan values). As a sanity check, changing fixings in Jan (e.g. 5 Jan) does affect the stripping result.
Output:
|
On a second thought it may be better to change the
Similarly, we need to add these two arguments to Then in Finally, Any thoughts? |
Here's the CME example for settlement calculations on both 3M and 1M SOFR futures (link below). This should help make a set of tests for both types of contracts. Start and end dates for 1M contract are simply first and last day of month, while the 3M contract SR3M23 has start date 21-JUN-2023 (the M23 IMM date) and end date 19-SEP-2023 (the U23 IMM date minus one day). Example Settlement Calcs PDF |
This concerns the fixing period of
SofrFutureRateHelper
with monthly frequency.Take Jan 2023, we currently have
getValidSofrStart
returns 3 Jan (first business day of the month), whilegetValidSofrEnd
gives 1 Feb. The helper would create a future referencing this period.That appears inconsistent with the contract specification, which states we should take average over 1 Jan - 31 Jan fixing. The helper should instead start by looking for 30 Dec 2022 fixing, which should weigh for two days (1 and 2 Jan 2023). On the last business day of the month, similar logic applies. (assume 31 Jan and 1 Feb were holidays, it should look at the forward rate from 30 Jan to 2 Feb, but this rate should weigh only for 2 days - 30 and 31 Jan)
I believe we can NOT adjust for holiday when creating the rate helpers (i.e. we always set
valueDate
andmaturityDate
to be the first and last calendar days of the month - even if it is a holiday). Then, inOvernightIndexFuture::averagedRate()
, we add the implementation of the logic above regarding holidays around the first and last fixings.The text was updated successfully, but these errors were encountered: