JGB Accrued / Yield Calcuations

JGB bonds use a separate daycount convention for AI vs Yield calculation for bonds with greater than 1 year to maturity. Is it possible to represent this in Strata currently?

Simple and compound yields are calculated on an NL/365 basis when period from settle to maturity is greater or equal to one calendar year. The day count changes to Act/365 when this period is less than one calendar year. To clarify , when settle falls on 2/29 , it is always included as on day, regardless of time to maturity. When maturity falls of 2/29 and time to maturity is greater than one calendar year, then it needs to be excluded as a day.

Accrued is calculated on an Act/365 basis therefore includes February 29 when counting days.

As a test case you can look at JP1300041009 for settlement 2019-11-19 - as this is a 2.9% coupon bond the effect on AI is clearly visible. The AI should be 14,500,000 for 1m notional but Strata calculates 14,539,726 using day count NL/365 or ACT/365F. The only DayCount I could get to produce 14,500,000 was Act/Act Year.

I’d also like to highlight that the price and yield values are truncated (not rounded) to 3 d.p. and the accrued to 7 d.p.

Accrued Interest: (Face/100)*X, truncate decimals to 1 yen

Plus

Accrued interest cannot be greater than the total coupon amount. For example, for a semi-annual payment, when days held is 183 days, the accrued interest is set at the semi-annual coupon amount.

I don’t know whether you would expect all of these conditions to be reflected in DiscountingFixedCouponBondProductPricer - we are updating our local fork to do so e.g. truncation applied.

More problems with modelling JGBs - Accrued Interest is always calculated using an Act/365 day count, even when everything else is using NL/365. This causes some pretty fundamental issues with the existing code.