How do I upload an object to the Complex Market Data Store?

Providing you have suitable access control permissions, you can upload an object to the LUSID Complex Market Data Store, for example a discount factor curve encapsulating the idea that money today is not worth the same as money in the future. See the different categories of complex market data.

Note: Choices you make when uploading market data impact the composition of the recipe you must create in order to use this data in a valuation.

  • Method 1: Using the LUSID API

  • Method 2: Using the LUSID web app (coming soon)

  • Method 3: Using Luminesce (coming soon)

Using the LUSID API

You can upload up to 2000 complex market data objects in a single request:

  1. Obtain an API access token.

  2. Call the UpsertComplexMarketData API, encapsulating all the objects in the request in a single scope (namespace). Match this using the dataScope field in a recipe.

  3. For each object in the request, specify:

    • An ephemeral ID, to track errors in the response.

    • A market data ID, comprising:

    • A market data type defining the object and its behavior, for example DiscountFactorCurveData for a discount factor curve. Each type has different fields; examine the API reference and select the appropriate option from the dropdown to see what these are. For information on specifying tenors for objects that require them, see this article.
       

Consider the following example, of a discount factor curve and a FX forward pips curve uploaded together to a Growth quote scope (in the URL below): 

curl -X POST "https://<your-domain>.lusid.com/api/api/complexmarketdata/Growth"
 -H "Authorization: Bearer <your-API-access-token>"
 -H "Content-Type: application/json-patch+json"
 -d '{
  "ephemeral-id-1": {
    "marketDataId": {
      "provider": "Lusid",
      "effectiveAt": "2021-01-20T00:00:00.0000000+00:00",
      "marketAsset": "GBP/GBPOIS"
    },
    "marketData": {
      "marketDataType": "DiscountFactorCurveData",
      "baseDate": "2021-01-20T00:00:00.0000000+00:00",
      "dates": [
        "2021-02-19T00:00:00.0000000+00:00",
        "2021-03-21T00:00:00.0000000+00:00",
        "2021-04-20T00:00:00.0000000+00:00",
        "2021-07-19T00:00:00.0000000+00:00",
        "2022-01-20T00:00:00.0000000+00:00",
        "2022-07-21T00:00:00.0000000+00:00",
        "2023-01-20T00:00:00.0000000+00:00",
        "2024-01-20T00:00:00.0000000+00:00",
        "2025-01-19T00:00:00.0000000+00:00",
        "2026-01-19T00:00:00.0000000+00:00"
      ],
      "discountFactors": [
        0.9998,
        0.9994,
        0.9987,
        0.9953,
        0.9871,
        0.9778,
        0.9705,
        0.958,
        0.9467,
        0.9366
      ]
    }
  },
  "ephemeral-id-2": {
    "marketDataId": {
      "provider": "Lusid",
      "effectiveAt": "2021-01-20T00:00:00.0000000+00:00",
      "marketAsset": "EUR/USD/FxFwdCurve"
    },
    "marketData": {
      "marketDataType": "FxForwardTenorPipsCurveData",
      "baseDate": "2021-01-20T00:00:00.0000000+00:00",
      "domCcy": "EUR",
      "fgnCcy": "USD",
      "tenors": [
        "1D",
        "1W",
        "2W",
        "3W",
        "1M",
        "2M",
        "3M",
        "4M",
        "5M",
        "6M",
        "9M",
        "1Y",
        "15M",
        "18M",
        "2Y",
        "3Y"
      ],
      "pipRates": [
        0.6375,
        1.4975,
        3.0275,
        4.5625,
        6.7525,
        19.5125,
        27.3225,
        34.0625,
        41.5175,
        49.2025,
        74.8125,
        104.9125,
        141.1925,
        176.8375,
        260.1475,
        453.2625
      ]
    }
  }
}'