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:
Call the UpsertQuotes API, encapsulating all the quotes in the request in a single
scope(namespace). Match this using the dataScope field in a recipe.For each quote in the request, specify:
An ephemeral ID (to track errors in the response).
A
providerrepresenting a financial data vendor. Valid providers are currentlyBloomberg,DataScope(for Refinitiv),SIX,FactSet,TraderMade,Edi,Rimes,LusidandClient; if your data vendor isn't listed, represent it usingClient. Match this using the supplier field in a recipe.Optionally, a
priceSourceindicating a sub-supplier to the financial data vendor (above), 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 itspriceSourcefield.An
instrumentIdTypeandinstrumentIdthat together constitute an instrument identifier linking the quote to an instrument mastered in LUSID. Match this using the key field in a recipe.Market data category
instrumentIdTypefieldinstrumentIdfield syntax and example valueMarket price
Your choice of
LusidInstrumentId,Figi,RIC,QuotePermId,Isin,Sedol,Cusip,ClientInternalThere is no syntax; the value must be appropriate for the identifier type, for example
LUID_00003D58forLusidInstrumentId.FX spot rate
CurrencyPairSyntax:
<DomCcy>/<FgnCcy>
Example:USD/GBPA
quoteType, for examplePriceorRate. Match this using the quoteType field in a recipe.A
fieldappropriate for theprovider. Match this using the field field in a recipe.providerfieldfieldvaluesLusidAny string
Bloombergbid,mid,ask,open,close,lastSIXbid,mid,ask,open,close,last,referencePrice,highPrice,lowPrice,maxRedemptionPrice,maxSubscriptionPrice,openPrice,bestBidPrice,lastBidPrice,bestAskPrice,lastAskPrice,finalSettlementOptions,finalSettlementFutures,valuationPriceAmountDataScopebid,mid,askClientAny string
Edibid,mid,ask,open,close,lastTraderMadebid,mid,ask,open,close,high,lowFactSetbid,mid,ask,open,closeRimesbid,mid,ask,open,close,lastICEask,bid,close,high,low,open,primaryExchangeTradePrice,vwap,midLSEGASK,BID,MID_PRICEAn
effectiveAtdate from which the quote is valid. This could be a full date and time (in UTC), or a date and cut label.A
metricValueconstituting the actual price or rate, with avalueand aunitthat is either a currency (price) or a currency pair (rate).Optionally, a
scaleFactorto scale down the price.
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 Luminesce
You can use the Lusid.Instrument.Quote.Writer provider.
Using the LUSID web app
Navigate to the Data Management > Quotes dashboard, click the Create quote button and follow the instructions:
.png?sv=2022-11-02&spr=https&st=2025-11-02T03%3A22%3A05Z&se=2025-11-02T03%3A35%3A05Z&sr=c&sp=r&sig=YwOr4oQZQEGJulWrgGP5Zbg7kS1eVSWyj%2BJnMLgFPU8%3D)