How does LUSID calculate exposure?

The following table explains how LUSID calculates exposure for supported instruments.

You can report the result when you perform a valuation using the Valuation/Exposure/Amount metric. See all available metrics.

Note that LUSID’s exposure calculation is defined with reference to the guidance provided by ESMA (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

Equity

QTY * Equity Price

Bond

(Price/100 * Face Amount) + Accrued

InflationLinkedBond

(Price/100 * Face Amount) + Accrued

ComplexBond

(Price/100 * Face Amount) + Accrued

TermDeposit

(Price/100 * Face Amount) + Accrued

ForwardRateAgreement

Notional Value

CapFloor

Notional Value

CreditDefaultSwap

Notional Value

CdsIndex

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

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

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

QTY * FX Spot * Delta

EquityOption
(Deltas can be loaded into the SRS)

Equity Option OTC

QTY * Contract Size * Underlying Equity Price * Delta

Index Option OTC

QTY * Contract Size * Underlying Index Price * Delta

Warrants and Rights

QTY * Contract Size * Underlying Equity Price * Delta

ExchangeTradedOption
(Deltas can be loaded 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

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 (SRS).

The default delta used depends on the pricing model 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 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:

    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 API to upsert the document to the SRS using the UnitResult/Analytic result type, for example:

    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 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:

    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 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:

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: