Documentation Index

Fetch the complete documentation index at: https://support.lusid.com/llms.txt

Use this file to discover all available pages before exploring further.

How does LUSID calculate accrued interest?

Prev Next

LUSID calculates accrued interest from the start of day on settlement date of trades in the following instruments:

Instrument type

LUSID's accrued interest calculation

Basket

Sum of basket accrued. Currency mixes not supported.

Bond, ComplexBond

Accrual factor calculated using flow convention day count.

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.

FlexibleRepo

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 and diagnosing 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

The following Valuation/Diagnostics/Accrual/* metrics are available to further understand the calculations:

  • Valuation/Diagnostics/Accrual/DaysAccrued

  • Valuation/Diagnostics/Accrual/DaysInPeriod

  • Valuation/Diagnostics/Accrual/AccrualDescription

  • Valuation/Diagnostics/Accrual/AccrualEndDate

  • Valuation/Diagnostics/Accrual/PaymentFrequency

  • Valuation/Diagnostics/Accrual/AccrualCalculationDate

  • Valuation/Diagnostics/Accrual/EffectiveCoupon

  • Valuation/Diagnostics/Accrual/AccrualFactor (see how this is calculated)

  • Valuation/Diagnostics/Accrual/AccrualStartDate

  • Valuation/Diagnostics/Accrual/AccrualDayCountType

  • Valuation/Diagnostics/Accrual/AccruedSettled

  • Valuation/Diagnostics/Accrual/AccruedUnsettled (accrued interest between trade and settlement dates)

  • Valuation/Diagnostics/Accrual/EffectiveNotional

  • Valuation/Diagnostics/Accrual/CompoundInputRates (for instruments with a floating leg and a compounding method)

For example, the following valuation request for a UK gilt mastered as a Bond:

{
  "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"}
  ]
}

…might yield a response 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"
    }
  ],
  ...
}