How does LUSID calculate accrued interest?

Prev Next

The following table explains how LUSID calculates accrued interest for supported instruments.

Note: For more information on how LUSID calculates an accrual factor using a flow convention day count, see this article.

Instrument

LUSID's accrued interest calculation

Basket

Sum of basket accrued. Currency mixes not supported.

Bond

Accrual factor calculated using flow convention day count. See Diagnostics.

ComplexBond

InflationLinkedBond

Accrual factor calculated using flow convention day count, adjusted for inflation.

CreditDefaultSwap

Accrual factor on premium leg only calculated using flow convention day count, assuming no default.

CdsIndex

Accrual factor on premium leg only calculated using flow convention day count, assuming no default.

EquitySwap

Accrual on funding leg only, no equity.

FixedLeg

Accrual factor calculated using flow convention day count.

FloatingLeg

Accrual factor calculated using flow convention day count. For SOFR/OIS, known daily resets are compounded. For in arrears, 0 is returned.

FundingLeg

Accrual on daily notional amounts (same as FloatingLeg).

InflationSwap

CPI swap is zero coupon so 0 is always returned. YoY/LPI swap returns sum of two accruals, using same day count form interest leg on both.

InterestRateSwap

Sum of leg accruals. No FX conversion considered.

Repo

Accrual on interest using AccrualBasis day count.

SimpleCashFlowLoan

Days accrued divided by days in period multipled by the period interest amount.

TermDeposit

Accrual factor calculated using flow convention day count and a calendar where every week day is a good business day (no holidays).

Changing the accrual recognition time of day in a recipe

By default, LUSID recognises interest accruals at start of day (SOD). You can change this to end of day (EOD) by setting the pricing.accrualDefinition field in a valuation recipe, for example:

{
  "scope": "my-recipe-scope",
  "code": "my-recipe-code",
  "pricing": {
    "accrualDefinition": "EOD"
  },
  ...
}

Reporting calculation results

LUSID provides numerous Valuation/Accrued* metrics to report accrued interest calculation results in a valuation report, for example:

  • Valuation/Accrued

  • Valuation/AccruedSOD

  • Valuation/AccruedEOD

  • Valuation/AccruedInPortfolioCcy

Diagnosing calculations in valuation reports

LUSID provides the following Valuation/Diagnostics/Accrual/* metrics to further understand the calculations:

{
  "portfolioEntityIds": [ {"scope": "my-portfolio-scope", "code": "my-portfolio-scope", "portfolioEntityType": "SinglePortfolio"} ],
  "valuationSchedule": {"effectiveFrom": "2022-03-07T00:00:00.0000000+00:00", "effectiveAt": "2022-03-11T00:00:00.0000000+00:00" },
  "recipeId": {"scope": "my-recipe-scope", "code": "my-recipe-scope"},
  "metrics": [
    {"key": "Valuation/EffectiveAt", "op": "Value"},
    {"key": "Instrument/default/Name", "op": "Value"},
    {"key": "Valuation/PvInPortfolioCcy", "op": "Value"},
    {"key": "Valuation/Accrued", "op": "Value"},
    {"key": "Valuation/Diagnostics/Accrual/DaysAccrued", "op": "Value"},
    {"key": "Valuation/Diagnostics/Accrual/DaysInPeriod", "op": "Value"},
    {"key": "Valuation/Diagnostics/Accrual/AccrualDescription", "op": "Value"},
    {"key": "Valuation/Diagnostics/Accrual/AccrualFactor", "op": "Value"},
    {"key": "Valuation/Diagnostics/Accrual/PaymentFrequency", "op": "Value"},
    {"key": "Valuation/Diagnostics/Accrual/AccrualStartDate", "op": "Value"},
    {"key": "Valuation/Diagnostics/Accrual/AccrualEndDate", "op": "Value"},
    {"key": "Valuation/Diagnostics/Accrual/AccrualCalculationDate", "op": "Value"},
    {"key": "Valuation/Diagnostics/Accrual/AccrualDayCountType", "op": "Value"}
  ]
}

For a UK gilt mastered as an instrument of type Bond, the response might be as follows:

{
  "aggregationEffectiveAt": "2022-03-07T00:00:00.0000000+00:00",
  "aggregationAsAt": "2023-09-05T08:49:20.1445980+00:00",
  "data": [
    {
      "Valuation/EffectiveAt": "2022-03-07T00:00:00.0000000+00:00",
      "Instrument/default/Name": "UKT 0 â…œ 10/22/26",
      "Valuation/PV": 10134.010989010989,
      "Valuation/Accrued": 216.67463918812,
      "Valuation/Diagnostics/Accrual/DaysAccrued": 136,
      "Valuation/Diagnostics/Accrual/DaysInPeriod": 182,
      "Valuation/Diagnostics/Accrual/AccrualDescription": "Notional * (CouponRate / Frequency) * AccrualFactor",
      "Valuation/Diagnostics/Accrual/AccrualFactor": 0.7472527472527473,
      "Valuation/Diagnostics/Accrual/PaymentFrequency": "6M",
      "Valuation/Diagnostics/Accrual/AccrualStartDate": "2021-10-22T00:00:00.0000000+00:00",
      "Valuation/Diagnostics/Accrual/AccrualEndDate": "2022-04-22T00:00:00.0000000+00:00",
      "Valuation/Diagnostics/Accrual/AccrualCalculationDate": "2022-03-07T00:00:00.0000000+00:00",
      "Valuation/Diagnostics/Accrual/AccrualDayCountType": "ActualActual"
    }
  ],
  ...
}