How does LUSID handle rounding conventions?

You can configure LUSID to round accrued interest and/or cashflows to a specific number of decimal places for the following instruments:

By default, no rounding is applied at the instrument level. You have the option to apply the standard ISO 4217 currency rounding convention in a recipe.

Consider the following example of a fixed-rate vanilla bond mastered as an instrument of type Bond:

{
  "name": "UKT 0 â…œ 10/22/26",
  "identifiers": {"Figi": {"value": "BBG00ZF1T9P5"}},
  "definition": {
    "instrumentType": "Bond",
    "startDate": "2016-10-22T10:00:00.0000000+00:00",
    "maturityDate": "2026-10-22T10:00:00.0000000+00:00",
    "domCcy": "GBP",
    "couponRate": 0.00375,
    "principal": 1
    "flowConventions": {
      "currency": "GBP",
      "paymentFrequency": "12M",
      "dayCountConvention": "Actual365",
      "rollConvention": "22",
      "businessDayConvention": "Following"
    },
    "roundingConventions": [
      {
        "roundingTarget": "AccruedInterest",
        "faceValue": 100,
        "precision": 10,
        "roundingType": "Up"
      },
      {
        "roundingTarget": "Cashflows",
        "faceValue": 100,
        "precision": 6,
        "roundingType": "Down"
      },
    ]
  }
}

Note the following:

  • The instrument definition has a roundingConventions array with two RoundingConvention objects.

  • The first has a roundingTarget of AccruedInterest, which impacts the Instrument/Accrued metric available when calling the GetValuation API, and rounds up to 10 decimal places.

  • The second has a roundingTarget of Cashflows, which impacts the GetCashLadder API, and rounds down to 6 decimal places.

  • Both have a faceValue of the par value specified in the bond prospectus.

Note: To define a universal rounding convention, specify a single RoundingConvention object with a roundingTarget of All.

LUSID applies a rounding convention as follows:

  1. Calculate the unitised accrued interest or cashflow amount.

  2. Multipy by the face value.

  3. Apply the rounding convention.

  4. Invert the rounded scaled accrued interest or cashflow amount.

  5. Multiply by the number of units in the holding.

  6. Apply the ISO 4217 currency rounding convention in a recipe, if applicable.