---
title: "How does LUSID calculate exposure?"
slug: "how-does-lusid-calculate-exposure"
tags: ["risk"]
updated: 2026-07-01T09:15:01Z
published: 2026-07-01T09:15:01Z
canonical: "support.lusid.com/how-does-lusid-calculate-exposure"
---

> ## 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 exposure?

The following table explains how LUSID calculates exposure for [supported instruments](/v1/docs/what-instruments-does-lusid-support).

You can report the result when you perform a valuation using the `Valuation/Exposure/Amount` metric. [See all available metrics](/v1/docs/what-is-a-metric).

Note that LUSID’s exposure calculation is defined with reference to the [guidance provided by ESMA](https://www.esma.europa.eu/sites/default/files/library/2015/11/10_788.pdf) (The European Securities and Markets Authority). Where the exposure calculation for a particular type of instrument is not specified by ESMA guidance, or the variables of the calculation may not be readily available for clients, LUSID’s calculation deviates while remaining within the spirit of the guidance. In particular:

- Non-derivatives: Exposures are equivalent to the PV (Present Value) as calculated by the valuation engine.
- Futures: The futures price is used in the calculation rather than the underlying asset price.

| **Instrument type** | **LUSID’s exposure calculation** | Notes |
| --- | --- | --- |
| [Equity](/v1/docs/modelling-equities-in-lusid) | QTY * Equity Price |  |
| [Bond](/v1/docs/modelling-fixed-rate-vanilla-bonds-in-lusid) | (Price/100 * Face Amount) + Accrued |  |
| [InflationLinkedBond](/v1/docs/modelling-inflation-linked-bonds-in-lusid) | (Price/100 * Face Amount) + Accrued |  |
| [ComplexBond](/v1/docs/modelling-complex-bonds-in-lusid) | (Price/100 * Face Amount) + Accrued |  |
| `TermDeposit` | (Price/100 * Face Amount) + Accrued |  |
| `ForwardRateAgreement` | Notional Value |  |
| `CapFloor` | Notional Value |  |
| `CreditDefaultSwap` | Notional Value |  |
| [CdsIndex](/v1/docs/modelling-cds-index-instruments-in-lusid) | Notional Value |  |
| `InflationSwap` | Notional Value (1st leg notional value) |  |
| `InterestRateSwap` | Vanilla | Notional Value (1st leg notional value) |  |
| Cross-currency | Notional Value (1st leg notional value) |  |
| `InterestRateSwaption` | Notional Value (of the reference swap leg 1) * Delta |  |
| [Future](/v1/docs/modelling-exchange-traded-futures-and-options-in-lusid) | Equity Future | QTY * Contract Size * Equity Future Price |  |
| Bond Future | QTY * Contract Size * Bond Future Price |  |
| Index Future | QTY * Contract Size * Index Future Price |  |
| Currency Future | QTY * Contract Size |  |
| Interest Rate Future | QTY * Contract Size |  |
| [FxForward](/v1/docs/modelling-fxforwards-in-lusid) | FX Forward | The sum of the non-report ccy notionals, converted to report ccy. Long ccy notional & Short ccy notional may also be returned. |  |
| FX Spot | The sum of the non-report ccy notionals, converted to report ccy. Long ccy notional & Short ccy notional may also be returned. |  |
| `FxSwap` | The sum of the non-report ccy notionals, converted to report ccy. Long ccy notional & Short ccy notional may also be returned. |  |
| [FxOption](/v1/docs/modelling-fx-options-in-lusid) | QTY * FX Spot * Delta |  |
| [EquityOption](/v1/docs/modelling-equity-options-in-lusid) (Deltas can be [loaded into the SRS](/v1/docs/how-does-lusid-calculate-exposure#loading-deltas-into-the-srs)) | Equity Option OTC | QTY * Contract Size * Underlying Equity Price * Delta | If using the `SimpleStatic` pricing model, exposure is QTY * Contract Size * (Option price / Scaling factor) * Delta since this model has no knowledge of the Underlying price. [See how to change the pricing model](/v1/docs/recipes-changing-the-default-pricing-models-for-instrument-types). |
| Index Option OTC | QTY * Contract Size * Underlying Index Price * Delta |
| Warrants and Rights | QTY * Contract Size * Underlying Equity Price * Delta |
| [ExchangeTradedOption](/v1/docs/modelling-exchange-traded-options-in-lusid) (Deltas can be [loaded into the SRS](/v1/docs/how-does-lusid-calculate-exposure#loading-deltas-into-the-srs)) | Equity Option ET | QTY * Contract Size * Underlying Equity Price * Delta |
| Bond Option ET | QTY * Contract Size * Underlying Bond Price * Delta |
| Index Option ET | QTY * Contract Size * Underlying Index Price * Delta |
| Option on Futures ET | QTY * Contract Size * Underlying Future Price * Delta |
| Interest Rate Option ET | QTY * Contract Size * Delta |  |
| [ContractForDifference](/v1/docs/modelling-cfds-in-lusid) | QTY * Underlying Price |  |
| `EquitySwap` | QTY * Equity Price |  |
| `TotalReturnSwap` | QTY * Underlying Price |  |
| `Repo` | Market value of underlying bond |  |
| `FundingLeg` | Will display as PV settings for Funding leg (Accrued Interest) |  |
| `Basket` | QTY * Basket Price |  |

## Loading deltas into the SRS

LUSID uses a delta when calculating exposure for an instrument with optionality such as `EquityOption` or `ExchangeTradedOption`. Note you can override the default delta used by loading your own delta into LUSID’s [Structured Result Store](/v1/docs/what-is-structured-result-data) (SRS).

The default delta used depends on the [pricing model](/v1/docs/what-pricing-models-can-i-use-in-my-valuation) chosen to value an instrument of either type:

- The `BlackScholes` and `Bachelier` pricing models calculate a delta using volatility information upserted to LUSID’s Complex Market Data Store, which is then used to calculate exposure as `units * contract size * underlying price * delta` in line with ESMA regulations. (Note that the units in LUSID are signed.)
- The `Discounting` pricing model sets a delta value from a discounting curve which is then used to calculate exposure in the same way as `BlackScholes` and `Bachelier`. Note that the delta generated by `Discounting` is not generally aligned to expected values since no volatility information is used.
- The `SimpleStatic` and `ConstantTimeValueOfMoney` pricing models do not calculate a delta but instead set it to 1, so exposure is the same as clean PV.

The default delta used by any pricing model can be replaced with a delta stored in the SRS. This triggers a recalculation. Note that LUSID simply applies the value it finds in the SRS so for a meaningful exposure calculation the following rules apply:

- The value in the SRS should be a signed number between [-1,1].
- For call options the value should have a positive sign.
- For put options the value should have a negative sign.

### Example

To load a delta into the SRS:

1. Prepare a JSON or CSV document with a delta amount keyed by the LUID of the instrument being valued, for example:

| **LUID** | **Delta** |
| --- | --- |
| LUID_JKGH56FT | 0.6 |
2. Call the [CreateDataMap](https://www.lusid.com/docs/api/lusid/endpoints/structured-result-data/CreateDataMap) API to create a data map for the document with the **LUID** column name in the document mapped to the `UnitResult/LusidInstrumentId` address and the **Delta** column name mapped to the `UnitResult/Valuation/Delta` address, for example:

```json
curl -X POST 'https://<your-domain>.lusid.com/api/api/unitresults/datamap/ExternalEquityOptionDeltas'
 -H 'Content-Type: application/json-patch+json'
 -H 'Authorization: Bearer <your-API-access-token>'
 -d '{
 "MyDeltaDataMap": {
   "id": {
     "version": "1.0.0",
     "code": "DeltaDataMap"
   },
   "data": {
     "dataDefinitions": [
       {
         "address": "UnitResult/LusidInstrumentId",
         "name": "LUID",
         "dataType": "String",
         "keyType": "Unique"
       },
       {
         "address": "UnitResult/Valuation/Delta",
         "name": "Delta",
         "dataType": "Decimal",
         "keyType": "Leaf"
       }
     ]
   }
 }
}'
```
3. Call the [UpsertStructuredResultData](https://www.lusid.com/docs/api/lusid/endpoints/structured-result-data/UpsertStructuredResultData) API to upsert the document to the SRS using the `UnitResult/Analytic` result type, for example:

```json
curl -X POST 'https://<your-domain>.lusid.com/api/api/unitresults/ExternalEquityOptionDeltas'
 -H 'Content-Type: application/json-patch+json'
 -H 'Authorization: Bearer <your-API-access-token>'
 -d '{
 "first-item": {
   "MyDeltaDocument": {
     "source": "Client",
     "code": "DeltaDocument",
     "effectiveAt": "2024-08-31T00:00:00.0000000+00:00",
     "resultType": "UnitResult/Analytic"
   },
   "data": {
     "documentFormat": "Csv",
     "version": "1.0.0",
     "name": "My delta document",
     "document": "LUID,Delta\nLUID_JKGH56FT,0.6",
     "dataMapKey": {
       "version": "1.0.0",
       "code": "DeltaDataMap"
     }
   }
 }
}'
```
4. Call the [UpsertConfigurationRecipe](https://www.lusid.com/docs/api/lusid/endpoints/configuration-recipe/UpsertConfigurationRecipe) API to create a new (or amend an existing) recipe to include a `Pricing.ResultDataRules` object able to locate the data map in the SRS:

```json
curl -X POST 'https://<your-domain>.lusid.com/api/api/recipes'
 -H 'Content-Type: application/json-patch+json'
 -H 'Authorization: Bearer <your-API-access-token>'
 -d '{
  "MyRecipe": {
    "scope": "ExternalEquityOptionDeltas",
    "code": "SRSRecipe",
    "pricing": {
      "resultDataRules": [
        {
          "resourceKey": "UnitResult/*",
          "supplier": "Client",
          "dataScope": "ExternalEquityOptionDeltas",
          "documentCode": "DeltaDocument",
          "quoteInterval": "1M.0D",
          "documentResultType": "UnitResult/Analytic",
          "resultKeyRuleType": "ResultDataKeyRule"
        }
      ]
    }
  }
}'
```

When you [value the portfolio](/v1/docs/how-do-i-perform-a-valuation) containing a holding in the instrument, LUSID automatically calculates `Valuation/Exposure/Amount` using the delta in the SRS. You can additionally request the `UnitResult/Valuation/Delta` metric to audit the delta used:

```json
curl -X POST 'https://<your-domain>.lusid.com/api/api/aggregation/$valuation'
  -H 'Authorization: Bearer <your-API-access-token>'
  -H 'Content-Type: application/json-patch+json'
  -d '{
    "portfolioEntityIds": [ {"scope": "EquityOptions", "code": "UK" ],
    "valuationSchedule": {"effectiveAt": "2024-08-31T00:00:00.0000000+00:00" },
    "recipeId": {"scope": "ExternalEquityOptionDeltas", "code": "SRSRecipe"},
    "metrics": [
      {"key": "Valuation/Exposure/Amount", "op": "Value"},
      {"key": "UnitResult/Valuation/Delta", "op": "Value"},
    ],
  }'
```

For example:

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