---
title: "Modelling inflation-linked bonds in LUSID"
slug: "modelling-inflation-linked-bonds-in-lusid"
updated: 2026-06-01T13:44:30Z
published: 2026-06-01T13:44:30Z
canonical: "support.lusid.com/modelling-inflation-linked-bonds-in-lusid"
---

> ## 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.

# Modelling inflation-linked bonds in LUSID

You can model an inflation-linked bond contract as an instrument of type `InflationLinkedBond` in LUSID. [See all supported instruments](/v1/docs/supported-instruments-in-lusid).

Note LUSID has other instrument types for different kinds of bond:

| **Kind of bond** | **LUSID instrument type** | **More information** |
| --- | --- | --- |
| Inflation-linked | `InflationLinkedBond` | Continue reading this article. |
| Fixed rate with regular coupons (only the first can be irregular) Zero coupon | `Bond` | [Read this dedicated article](/v1/docs/modelling-fixed-rate-vanilla-bonds-in-lusid). |
| Fixed rate with irregular coupons (other than the first) Floating rate Fixed-to-floating rate Municipal Callable Puttable Sinkable Convertible | `ComplexBond` | [Read this dedicated article](/v1/docs/modelling-complex-bonds-in-lusid). |
| Mortgage-backed security (MBS) | [Read this dedicated article](/v1/docs/modelling-mortgage-backed-securities-in-lusid). |

## Mastering an instrument

There are [numerous methods you can use to master](/v1/docs/how-do-i-master-an-instrument) an instrument of type `InflationLinkedBond` in the LUSID Security Master.

Some fields are common to all types of instrument, such as an intuitive `name`, the [requirement to specify a set](/v1/docs/understanding-instrument-identifiers) of `identifiers`, and the facility to [store extra information](/v1/docs/properties) as `properties`.

Fields in the economic `definition` object are specific to `InflationLinkedBond`. For more information on these fields, consult the [schema](https://www.lusid.com/docs/api/lusid/schemas/InflationLinkedBond/), or select **InflationLinkedBond** from the **definition** dropdown in the [API documentation](https://www.lusid.com/docs/api/lusid/endpoints/instruments/UpsertInstruments):

![](https://cdn.document360.io/d575ad81-c0ed-4980-bbd1-d59ac5c3de82/Images/Documentation/image(168).png)

For example, the following call to the `UpsertInstruments` API masters a bond in a custom [instrument scope](/v1/docs/understanding-instrument-scopes) using a FIGI [unique identifier](/v1/docs/what-are-unique-and-non-unique-identifiers). Note the fields specified below are the ***minimum required*** to master an instrument of type `InflationLinkedBond`:

```json
curl -X POST "https://<your-domain>.lusid.com/api/api/instruments?scope=mycustominstrscope"
   -H "Content-Type: application/json-patch+json"
   -H "Authorization: Bearer <your-API-access-token>"
   -d '{
  "request_id_1": {
    "name": "UKT 0 ⅜ 10/22/26",
    "identifiers": {"Figi": {"value": "BBG00ZF1T8P5"}},
    "definition": {
      "instrumentType": "InflationLinkedBond",
      "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,
      "calculationType": "Standard",
      "flowConventions": {
        "currency": "GBP",
        "paymentFrequency": "6M",
        "dayCountConvention": "Actual365",
        "rollConvention": "22",
        "businessDayConvention": "NoAdjustment"
      },
      "inflationIndexConventions": {
        "inflationIndexName": "UKRPI",
        "currency": "GBP",
        "observationLag": "3M"
      },
      "tradingConventions": {
        "priceScaleFactor": 100
      }
    }
  }
}'
```

Note the following:

- The `instrumentType` must be `InflationLinkedBond`.
- The `domCcy` field must be an [ISO 4217 currency code](https://en.wikipedia.org/wiki/ISO_4217) (and likewise all `currency` fields in nested objects).
- The `startDate` should be the accrual start date; that is, the date from which interest is calculated.
- The maximum `maturityDate` is 31 December 2140.
- The `couponRate` should be expressed as a decimal rather than a percentage, so a bond paying:
  - 10% should have a `couponRate` of `0.1`
  - 2.5% should have a `couponRate` of `0.025`
  - 0.375% should have a `couponRate` of `0.00375`.
- The `principal` can be any number, but we advise setting it to `1` to unitise the security and specifying the face or purchase amount [on the transaction](/v1/docs/modelling-inflation-linked-bonds-in-lusid#booking-a-transaction-to-establish-a-position).
- The `calculationType` defaults to `Standard`, suitable for modern UK Gilts with monthly inflation fixings. You may need to change this for certain kinds of bond, which impacts the quantity and quality of market data required. [More information](/v1/docs/modelling-inflation-linked-bonds-in-lusid#valuing-your-position).
- The `flowConventions` object specifies all the information necessary to determine [payment schedules](/v1/docs/flow-conventions-and-index-conventions#specifying-a-flow-convention).
- The `inflationIndexConventions` object specifies all the information necessary to calculate [accrued interest amounts](/v1/docs/flow-conventions-and-index-conventions#specifying-an-index-convention) from a reference index.
- If you omit the `exDividendDays` field, a bond has no ex-dividend period.
- If you omit the `roundingConventions` array, no [rounding conventions](/v1/docs/how-does-lusid-handle-rounding-conventions) are applied at the instrument level.
- You can set `stubType` to `ShortFront`, `ShortBack`, `LongFront`, `LongBack` or `Both` to model irregular first or last coupon periods (or both). By default, the first and last periods are expected to be regular.
- The `tradingConventions.priceScaleFactor` field is set to `100` so bond prices can be expressed as a percentage of par without [scaling every quote](/v1/docs/scaling-a-market-price) loaded into LUSID.

Providing the request is successful, the response:

- Confirms the globally-unique [LUID](/v1/docs/what-is-a-lusid-instrument-id-or-luid) for the instrument;
- Generates extra fields that are stored as part of the instrument definition and can be [filtered on](/v1/docs/filtering-information-retrieved-from-lusid);
- Supplies default values for fields not explicitly specified in the request:

```json
{
  "scope": "mycustominstrscope",
  "lusidInstrumentId": "LUID_00003GVU",
  "name": "UKT 0 ⅜ 10/22/26",
  "identifiers": {
    "LusidInstrumentId": "LUID_00003GVU",
    "Figi": "BBG00ZF1T9P5"
  },
  "properties": [],
  "instrumentDefinition": {
    "startDate": "2016-10-22T00:00:00.0000000+00:00",
    "maturityDate": "2026-10-22T00:00:00.0000000+00:00",
    "flowConventions": {
      "currency": "GBP",
      "paymentFrequency": "6M",
      "dayCountConvention": "Actual365",
      "rollConvention": "22",
      "paymentCalendars": [],
      "resetCalendars": [],
      "settleDays": 0,
      "resetDays": 0,
      "leapDaysIncluded": true,
      "accrualDateAdjustment": "Adjusted",
      "businessDayConvention": "None",
      "accrualDayCountConvention": "Actual365"
    },
    "inflationIndexConventions": {
      "inflationIndexName": "UKRPI",
      "currency": "GBP",
      "observationLag": "3M",
      "inflationInterpolation": "Linear",
      "inflationFrequency": "1M",
      "inflationRollDay": 1
    },
    "couponRate": 0.00375,
    "identifiers": {},
    "calculationType": "Standard",
    "indexPrecision": 5,
    "principal": 1,
    "principalProtection": true,
    "stubType": "ShortFront",
    "roundingConventions": [],
    "tradingConventions": {
      "priceScaleFactor": 100,
      "minimumOrderSize": 0,
      "minimumOrderIncrement": 0
    },
    "instrumentType": "InflationLinkedBond"
  },
  "state": "Active",
  "assetClass": "Inflation",
  "domCcy": "GBP",
  "relationships": [],
  "dataModelMembership": {
    "membership": []
  },
  ...
}
```

## Providing inflation fixings

LUSID must have access to inflation fixings (resets) in order to perform almost any operation on a portfolio holding an `InflationLinkedBond`.

Note the precise quantity and quality of market data required depends on a bond’s `calculationType`. [More information](/v1/docs/modelling-inflation-linked-bonds-in-lusid#valuing-your-position).

### Loading fixings into the LUSID Quote Store

Consider the example of a UK Gilt linked to UKRPI with a `calculationType` of `Standard` and the following `inflationIndexName` in its instrument definition:

```json
"inflationIndexConventions": {
  "inflationIndexName": "UKRPI",
   ...
}
```

The following call to the [UpsertQuotes](https://www.lusid.com/docs/api#operation/UpsertQuotes) API loads two fixings for 1 September and 1 October 2023 at midnight UTC into a `MyFixings` quote scope:

```json
curl -X POST "https://<your-domain>.lusid.com/api/api/quotes/MyFixings"
  -H "Authorization: Bearer <your-API-access-token>"
  -H "Content-Type: application/json-patch+json"
  -d '{
    "Quote-0001": {
      "quoteId": {
        "quoteSeriesId": {
          "provider": "Lusid",
          "instrumentIdType": "ClientInternal",
          "instrumentId": "UKRPI",
          "quoteType": "Index",
          "field": "mid"
        },
        "effectiveAt": "2023-09-01"
      },
      "metricValue": {
        "value": 378.4, "unit": "none"
      }
    },
    "Quote-0002": {
      "quoteId": {
        "quoteSeriesId": {
          "provider": "Lusid",
          "instrumentIdType": "ClientInternal",
          "instrumentId": "UKRPI",
          "quoteType": "Index",
          "field": "mid"
        },
        "effectiveAt": "2023-10-01"
      },
      "metricValue": {
        "value": 377.8, "unit": "none"
      }
    }
  }'
```

For general information on loading inflation fixings into the Quote Store, see [this article](/v1/docs/how-do-i-upload-an-inflation-fixing-to-the-lusid-quote-store). Note the following about this example:

- Both fixings are loaded into a quote scope (specified in the URL) that is only used for fixings, to avoid clashes.
- The `instrumentIdType` of each fixing must be `ClientInternal`.
- The `instrumentId` must be the `inflationIndexName` specified in the bond's inflation index convention, in this case `UKPRI`.
- The `provider` is set to `Lusid` and the `field` to `mid`, to avoid validation errors.
- The `quoteType` is `Index`. Note bonds with [other calculation types](/v1/docs/modelling-inflation-linked-bonds-in-lusid#valuing-your-position) require fixings with different quote types.
- The `effectiveAt` must be the first day of a month at midnight UTC. Note bonds with [other calculation types](/v1/docs/modelling-inflation-linked-bonds-in-lusid#valuing-your-position) require fixings at different cadences.

### Creating a suitable recipe

Your recipe must have a [market data rule](/v1/docs/recipes-locating-market-data) able to locate these fixings, for example:

```json
"market": {
  "marketRules": [
    {
      "key": "Inflation.InflationIndex.UKRPI",
      "dataScope": "MyFixings",
      "supplier": "Lusid",
      "quoteType": "Index",
      "field": "mid"
    },
    ...
  ]
},
```

For general information on recipes, start with [this article](/v1/docs/what-is-a-recipe). Note the following:

- The `key` should have a prefix of `Inflation.InflationIndex` and a suffix of the bond's `inflationIndexName`. Note bonds with [other calculation types](/v1/docs/modelling-inflation-linked-bonds-in-lusid#valuing-your-position) have different recipe key requirements for fixings.
- The `dataScope` must match the quote scope into which fixings were loaded.
- The other fields must match their respective quote fields exactly (values are case-sensitive).

### Registering the recipe with portfolios

You must register the recipe with every portfolio in which you intend to hold an `InflationLinkedBond`. [See how to do this](/v1/docs/setting-a-portfolio-recipe).

You can use the same recipe for valuation operations if you wish.

## Booking a transaction to establish a position

The process of booking a transaction in an `InflationLinkedBond` is the same as for a [vanilla fixed-rate bond](/v1/docs/modelling-fixed-rate-vanilla-bonds-in-lusid#booking-a-transaction-to-establish-a-position).

## Valuing your position

The basic process of valuing a portfolio containing an `InflationLinkedBond` is the same as for a [vanilla fixed-rate bond](/v1/docs/modelling-fixed-rate-vanilla-bonds-in-lusid#valuing-your-position). We recommend switching to the dedicated `BondLookupPricer` pricing model in your recipe.

Note the quantity and quality of market data required depends on a bond’s [calculation type](/v1/docs/modelling-inflation-linked-bonds-in-lusid#mastering-an-instrument). LUSID must be able to locate in the Quote Store:

- A market price for the valuation date, which may be clean, dirty or 'half-dirty’ (the price includes the inflation ratio but does not include accrued interest);
- Fixings at a particular cadence:

| Calculation type | Typical use case | Market data |
| --- | --- | --- |
| [**Price**](/v1/docs/how-do-i-upload-a-market-price-or-fx-spot-rate-to-the-quote-store) | [**Fixings**](/v1/docs/how-do-i-upload-an-inflation-fixing-to-the-lusid-quote-store) | [**Recipe key**](/v1/docs/recipes-locating-market-data#more-information-on-the-key-field) **to locate fixings** |
| `Standard` | UK Gilts post-2005 | A clean price (`quoteType` of `Price`) | Monthly. 1st of each month at midnight UTC (`quoteType` of `Index`) | `Inflation.InflationIndex.*` |
| `StandardAccruedOnly` | UK Gilts pre-2005 | A ‘half-dirty’ price (`quoteType` of `Price`) |
| `Quarterly` | Australian and NZ bonds | A clean price (`quoteType` of `Price`) | Quarterly. 1st of each publication month at midnight UTC (`quoteType` of `Index`) |
| `Ratio` | US TIPS | A clean price (`quoteType` of `Price`) | Daily (`quoteType` of `Ratio`) | `Inflation.InflationRatio.*` |
| `RatioAccruedOnly` | A ‘half-dirty’ price (`quoteType` of `Price`) |
| `Brazil` | Brazilian bonds | A dirty price (`quoteType` of `DirtyPrice`) | Monthly. 15th of each month at midnight UTC (`quoteType` of `Index`) | `Inflation.InflationIndex.*` |
| Assumption resets (`quoteType` of `InflationAssumption`) | `Inflation.InflationAssumption.*` |

## Monitoring the lifecycle of the instrument

The process of handling instrument events for an `InflationLinkedBond` is the same as for a [vanilla fixed-rate bond](/v1/docs/modelling-fixed-rate-vanilla-bonds-in-lusid#monitoring-the-lifecycle-of-the-instrument).
