Providing you have suitable access control permissions, you can upload a ‘quote’ representing a single value at a single point in time to the LUSID Quote Store, for example an Apple stock price or a USD/GBP spot rate.

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.

Using the LUSID API

You can load up to 2000 quotes in a single request:

  1. Obtain an API access token.

  2. Call the UpsertQuotes API, encapsulating all the quotes in the request in a single scope (namespace). See how to match this in a recipe.

  3. For each quote in the request, specify:

    • An ephemeral ID (to track errors in the response).

    • A provider representing a financial data vendor. Valid providers are currently Bloomberg, DataScope (for Refinitiv), SIX, FactSet, TraderMade, Edi, Rimes, Lusid and Client; if your data vendor isn't listed, represent it using Client. See how to match this in a recipe.

    • Optionally, a priceSource indicating a sub-supplier to the financial data vendor (above), for example Tradeweb or RRPS for Refinitiv DataScope. If specified, see how to match this in a recipe.

    • An instrumentIdType and instrumentId that together constitute an instrument identifier linking the quote to an instrument mastered in LUSID. See how to match this in a recipe.

      Market data category

      instrumentIdType field

      instrumentId field syntax and example value

      Market price

      Your choice of LusidInstrumentId, Figi, RIC, QuotePermId, Isin, Sedol, Cusip, ClientInternal

      There is no syntax; the value must be appropriate for the identifier type, for example LUID_00003D58 for LusidInstrumentId.

      FX spot rate

      CurrencyPair

      Syntax: <DomCcy>/<FgnCcy>

      Example: USD/GBP

    • A quoteType, for example Price or Rate. See how to match this in a recipe.

    • A field appropriate for the provider. See how to match this in a recipe.

      provider field

      field values

      Lusid

      Any string

      Bloomberg

      bid, mid, ask, open, close, last

      SIX

      bid, mid, ask, open, close, last, referencePrice, highPrice, lowPrice, maxRedemptionPrice, maxSubscriptionPrice, openPrice, bestBidPrice, lastBidPrice, bestAskPrice, lastAskPrice, finalSettlementOptions, finalSettlementFutures

      DataScope

      bid, mid, ask

      Client

      Any string

      Edi

      bid, mid, ask, open, close, last

      TraderMade

      bid, mid, ask, open, close, high, low

      FactSet

      bid, mid, ask, open, close

      Rimes

      bid, mid, ask, open, close, last

    • An effectiveAt date from which the quote is valid. This could be a full date and time (in UTC), or a date and cut label.

    • A metricValue constituting the actual price or rate, with a value and a unit that is either a currency (price) or a currency pair (rate).

Consider the following example of a market price and a FX spot rate uploaded together to a Growth quote scope (in the URL):

curl -X POST "https://<your-domain>.lusid.com/api/api/quotes/Growth"
  -H "Authorization: Bearer <your-API-access-token>"
  -H "Content-Type: application/json-patch+json"
  -d '{
    "Quote-0001": {
      "quoteId": {
        "quoteSeriesId": {
          "provider": "Lusid",
          "instrumentIdType": "LusidInstrumentId",
          "instrumentId": "LUID_00003D58",
          "quoteType": "Price",
          "field": "mid"
        },
        "effectiveAt": "2023-02-07T00:00:00Z"
      },
      "metricValue": {
        "value": 100, "unit": "USD"
      }
    },
    "Quote-0002": {
      "quoteId": {
        "quoteSeriesId": {
          "provider": "Lusid",
          "instrumentIdType": "CurrencyPair",
          "instrumentId": "USD/GBP",
          "quoteType": "Rate",
          "field": "mid"
        },
        "effectiveAt": "2023-02-07T00:00:00Z"
      },
      "metricValue": {
        "value": 0.8, "unit": "USD/GBP"
      }
    }
  }'

Using the LUSID web app

Coming soon.