Accruals calculation based on actual RFR fixings

Hi Opengamma Strata,

Please advise if you are planning to implement accruals calculation based on actual RFR fixings.

For a trade with start date = 09-Feb-21 and valuation date = 10-Feb-21, we should calculate accrued interest based on the fixing @ 09-Feb-21, however OG Strata seem to calculate the rate based on the projected rate from the curve for the first period (probably to be in line with swaps against LIBOR).

This is not market standard, but please advise if you are planning to amend it soon given the Libor transition to RFR.

Thank you,
Sandra

Hi Sandra,

The computation of overnight coupons in the composition period is done in the ForwardOvernightCompoundedRateComputationFn. The code will use the fixing if available in the fixing time series, see method pastCompositionFactor. If past fixing are not available, a PricingException is thrown. There is one border line case, when the valuation is on the publication date, the fixing may be already available or not. If available it is used and if not, the forward is used. Note that a lot of RFR are published T+1 (the system knows about publication date, see getPublicationDateOffset in OvernightIndex). So in your example, on 10-Feb, the system will not complain for the unavailable fixing for the period starting on 9-Feb if the underlying index is T+1. But if you provide it in the time series, it will use it.
Regards,
Marc

Hi Marc,

thanks for your reply. We would still like to use the calculation method outlined in our original post. Again, using the 10th Feb as an example for GBP-SONIA with a trade starting on the 8th Feb we would have the fixings for the 8/9th Feb and therefore should be able to use the standard accrual method to calculate the accrual outlined below.

Trade details

Ccy GBP
Underlying GBP-SONIA
SD 08-Feb-21
ED 08-Feb-22
Notional 10,000,000
Valuation Date 10-Feb-21

7b879bec-c5cc-4e24-8479-85b595fd32e2
Column D shows the calculations used to generate the values in C.

Do any of the methods you’ve provided in your comment solve accrual in the same way as shown in the screenshot? This is in line with Bloomberg’s method of calculations.

Thank you,
Sandra

Hi Sandra,
It is not clear to me where you are looking at those accrual. As indicated in the previous answer, the computation you highlighted is the one done in the pricer to obtain the present value.
Regards,
Marc

Hi Marc,

Thanks for your response.

We understand that the forward rate computation is done via the ForwardOvernightCompoundedRateComputationFn. It is also understood that such forward rate includes any relevant fixings. However, our question relates to the calculation of accrued interest in the period {Start Date, Valuation Date}.

For all swaps, we use the method com.opengamma.strata.pricer.swap.DiscountingSwapLegPricer#accruedInterest, and for overnight swaps this method in turn calls com.opengamma.strata.pricer.impl.swap.DiscountingRatePaymentPeriodPricer#accruedInterest. This method calculates the forward rate of the full coupon period (e.g. 6 months) that includes the accrual period, and then in the following method (com.opengamma.strata.pricer.impl.swap.DiscountingRatePaymentPeriodPricer#unitNotionalAccrualRaw), the forward rate is multiplied by (Valuation Date - Start Date) * day count.

For overnight swaps, accruedInterest should not be calculated by pro-rating such forward rate. Instead, we believe that the correct accrued interest calculation should solely be performed using the compounded fixings to the Valuation Date. To address potential publication considerations, one option would be to add a new payment period pricer that returns the compounded rate from {Start Date, Valuation Date} when calculating accrued interest, i.e., the value returned from com.opengamma.strata.pricer.impl.rate.ForwardOvernightCompoundedRateComputationFn.ObservationDetails#calculateRate

Hope this clarifies.