How do I load FX spot rates into the Quote Store?

Prev Next

You can load a quote representing a FX spot rate between two currencies on a given day, for example 1.3592 for GBPUSD on 6 May 2026.

Note the following:

  • FX spot rates are required items of market data when valuing certain instruments, and may be required for any instrument held in a portfolio with a different base currency.

  • Choices you make when uploading market data impact the composition of the recipe you must create in order to use that data.

See also: Market prices | Inflation fixings | Interest rate fixings

Methods

Call the UpsertQuotes API to load up to 2000 quotes in a single request. You must:

  • Encapsulate all the quotes in a single scope (namespace) in the URL.

  • For each quote, specify an ephemeral ID (to track errors in the response).

curl -X POST "https://<your-domain>.lusid.com/api/api/quotes/MyAPPLPrices"
  -H "Authorization: Bearer <your-API-access-token>"
  -H "Content-Type: application/json-patch+json"
  -d '{
  "Quote-0001": {
    "quoteId": {
      "quoteSeriesId": {
        "provider": "LSEG",
        "instrumentIdType": "CurrencyPair",
        "instrumentId": "GBP/USD",
        "quoteType": "Rate",
        "field": "MID_PRICE"
      },
      "effectiveAt": "2026-05-06T00:00:00Z"
    },
    "metricValue": {
      "value": 1.3592, "unit": "GBP/USD"
    }
  },
  "Quote-0002": {
    "quoteId": {
      "quoteSeriesId": {
        "provider": "LSEG",
        "instrumentIdType": "CurrencyPair",
        "instrumentId": "GBP/USD",
        "quoteType": "Rate",
        "field": "MID_PRICE"
      },
      "effectiveAt": "2026-05-05T00:00:00Z"
    },
    "metricValue": {
      "value": 1.3568, "unit": "GBP/USD"
    }
  }
}'

Navigate to Data Management > Quotes and click the Create quote button:

Write a Luminesce SQL query using the Lusid.Instrument.Quote.Writer provider and execute it using a tool such as the LUSID web app:

Data fields

This section supplements the API documentation and on-screen help text in the LUSID web app.

Mandatory field or parameter

Allowed values

Must be matched in recipe?

scope

Any, for example MyGBPUSDRates

dataScope field

provider

Any valid

supplier field

field

Any valid for provider

field field

instrumentIdType

CurrencyPair

key field, for example Fx.GBP.USD or Fx.*.*

instrumentId

Must match the syntax <DomCcy>/<FgnCcy>, for example GBP/USD (note forward slash)

quoteType

Rate

quoteType field

effectiveAt

A UTC datetime, or date and cut label

but must be within quoteInterval

metricValue.value

The quoted rate, for example 1.36206

metricValue.unit

Same as instrumentId, for example GBP/USD

The following fields are optional:

  • A priceSource indicating a sub-supplier to the provider, for example Tradeweb or RRPS for Refinitiv DataScope. Match this using the priceSource field in a recipe. Note that if omitted, your recipe must also omit its priceSource field.

  • A lineage providing additional information.

  • We recommend not setting a scaleFactor for a FX spot rate.

Subsequent updates

You can change the metricValue of an existing quote. Any other update constitutes a new quote in the time series.