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:
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
provider
representing a financial data vendor. Valid providers are currentlyBloomberg
,DataScope
(for Refinitiv),SIX
,FactSet
,TraderMade
,Edi
,Rimes
,Lusid
andClient
; if your data vendor isn't listed, represent it usingClient
. Match this using the supplier field 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, match this using the priceSource field in a recipe.An
instrumentIdType
andinstrumentId
that 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
instrumentIdType
fieldinstrumentId
field syntax and example valueMarket 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
forLusidInstrumentId
.FX spot rate
CurrencyPair
Syntax:
<DomCcy>/<FgnCcy>
Example:USD/GBP
A
quoteType
, for examplePrice
orRate
. Match this using the quoteType field in a recipe.A
field
appropriate for theprovider
. Match this using the field field in a recipe.provider
fieldfield
valuesLusid
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 avalue
and aunit
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 Luminesce
You can use the Lusid.Instrument.Quote.Writer provider.
Using the LUSID web app
Coming soon.