--- title: "Modelling inflation-linked bonds in LUSID" slug: "modelling-inflation-linked-bonds-in-lusid" tags: ["bond", "inflation", "fixing", "linker"] updated: 2026-10-13T09:01:41Z published: 2026-10-13T09:01:41Z 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) | | PIK bond | [Read this dedicated article](/v1/docs/modelling-pik-bonds-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?sv=2026-02-06&spr=https&st=2026-11-09T06%3A00%3A25Z&se=2026-11-09T07%3A00%3A25Z&sr=c&sp=r&sig=wq3e4oo3i1IFHYNFfDD%2F2njs1PlLWqMAm0UzddUXadM%3D) 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://.lusid.com/api/api/instruments?scope=mycustominstrscope"   -H "Content-Type: application/json-patch+json"   -H "Authorization: Bearer "   -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://.lusid.com/api/api/quotes/MyFixings"  -H "Authorization: Bearer "  -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). 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); - Inflation 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.*` | ## Assessing risk The basic process of assessing risk while valuing an `InflationLinkedBond` is the same as for a [vanilla fixed-rate bond](/v1/docs/modelling-fixed-rate-vanilla-bonds-in-lusid#assessing-risk). ## 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).