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:
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.For each object in the request, specify:
An ephemeral ID, to track errors in the response.
A market data ID, comprising:
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, you can represent it usingLusid
. 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
effectiveAt
date from which the object is valid.A
marketAsset
constituting a name. Note each category of complex market data has a particular naming syntax, for example<Ccy>/<Ccy>OIS
for a discount factor curve. Match this using the key field in a recipe.
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
]
}
}
}'