Key Principles
Principle | Decision / Discussion | Status |
---|---|---|
Flexible aggregation over time |
| SPECIFIED |
Scope one Portfolio |
| SPECIFIED |
Benchmark Data |
| SPECIFIED |
Frequency |
| SPECIFIED |
Calendar Days |
| SPECIFIED |
Period Definitions |
| SPECIFIED |
Return Types |
| SPECIFIED |
Completeness & |
| PROPOSED |
Incomplete month periods |
| PROPOSED |
Interface "PortfolioReturns"
Status | IMPLEMENTED | ||
---|---|---|---|
Usage & Contents |
| ||
Path | /portfolio/returns | ||
Parameters | portfolioId* | string | The id of the portfolio (or consolidation) in the data source |
startDate* | string (date) | The start date of the period for which return data is requested | |
endDate* | string (date) | The end date of the period for which return data is requested | |
includeDailyReturns | boolean | Response to include daily return data (where available) | |
includeBenchmark | boolean | Response to include benchmark return data | |
(customBenchmarkId) | string | Future parameter to query data of the portfolio measured against another benchmark | |
Example call | /portfolio/returns?portfolioId=E0002&startDate=2011-04-01&endDate=2019-03-31 | ||
Response structure | If the API can fulfill the request (response status code 200 = OK) the response must have the following high-level structure and must follow the respective json-schema. High-level Structure{ "request": { ... }, "dataVersioning": {...}, "returns": [ ... ] }
| ||
Schema | |||
Error handling | If the request can't be fulfilled an appropriate response status code (4xx or 5xx) must be used. Possible errors could be
The body of the response should contain information about the reason of the error in plain text or as json object. | ||
Consistency Rules | The following rules should be adhered to by any response and will eventually be checked when consuming a response: Consistency Rules* All data returned has to respect the requested period: no data earlier than startDate, no (daily) data later than endDate * No gaps are allowed in the years and months arrays (only daily array can have gaps for weekends/holidays) * (Year, Month, Day) has to be a valid date (e.g. no 31. of april) * all return data (years, months, days) should be sorted in the chronological order * if ordered with "includeBenchmark", "bmIndexStart" has to be provided and all indexed return objects have to provide a "bmIndex" value * the interface should respond with a valid file for any period starting earliest at PortfolioMasterData.performanceMeasurementStartDate and ending with the most current date (delivered by future data availability calls) * if ordered with "includeDailyReturns" all and only the months buckets beginning with the month of PortfolioMasterData.dailyPerformanceStartDate to the endDate should provide daily return data. | ||
Reporting Business Logic |
| ||
Example |
{ "request": { "path": "/portfolio/returns", "parameters": { "portfolioId": "E0001", "period": { "startDate": "2019-03-15", "endDate": "2019-03-31" }, "includeDailyReturns": true, "includeBenchmark": true } }, "dataVersioning": "include here any data needed for data lineage like dataquality-level, timestamps, data file versions, program versions", "returns": { "indexStartValues": {"grossIndexStart": 1.00, "netIndexStart": 1.00, "bmIndexStart": 1.00}, "indexedReturns": [ {"year": 2019, "monthly": [ { "month": 3, "grossIndex": 0.998610167389151, "netIndex": 0.998411811861891, "bmIndex": 0.99832365534172 , "daily": [ { "day": 15, "grossIndex": 1.0045101948, "netIndex": 1.0045101948, "bmIndex": 1.0044517811 }, { "day": 16, "grossIndex": 1.0045101948, "netIndex": 1.0045101948, "bmIndex": 1.0044517811 }, { "day": 17, "grossIndex": 1.0045101948, "netIndex": 1.0045101948, "bmIndex": 1.0044517811 }, { "day": 18, "grossIndex": 1.00649181104652, "netIndex": 1.00649181104652, "bmIndex": 1.00642390043263 }, { "day": 19, "grossIndex": 1.00752296895238, "netIndex": 1.00752296895238, "bmIndex": 1.00739509929527 }, { "day": 20, "grossIndex": 1.00095942480408, "netIndex": 1.00095942480408, "bmIndex": 1.00084622231232 }, { "day": 21, "grossIndex": 1.00349696955389, "netIndex": 1.00349696955389, "bmIndex": 1.00335123601851 }, { "day": 22, "grossIndex": 0.989428389700745, "netIndex": 0.989428389700745, "bmIndex": 0.989231476718871 }, { "day": 23, "grossIndex": 0.989428389700745, "netIndex": 0.989428389700745, "bmIndex": 0.989231476718871 }, { "day": 24, "grossIndex": 0.989428389700745, "netIndex": 0.989428389700745, "bmIndex": 0.989231476718871 }, { "day": 25, "grossIndex": 0.983761504593607, "netIndex": 0.983761504593607, "bmIndex": 0.983544720209762 }, { "day": 26, "grossIndex": 0.993059858670534, "netIndex": 0.993059858670534, "bmIndex": 0.992871364286443 }, { "day": 27, "grossIndex": 0.990423681175259, "netIndex": 0.990423681175259, "bmIndex": 0.990199383224224 }, { "day": 28, "grossIndex": 0.991777636303084, "netIndex": 0.991777636303084, "bmIndex": 0.991461936056625 }, { "day": 29, "grossIndex": 0.991777636303084, "netIndex": 0.991777636303084, "bmIndex": 0.99832365534172 }, { "day": 30, "grossIndex": 0.991777636303084, "netIndex": 0.991777636303084, "bmIndex": 0.99832365534172 }, { "day": 31, "grossIndex": 0.998610167389151, "netIndex": 0.998411811861891, "bmIndex": 0.99832365534172 } ] } ] } ] } } | ||
Potential Problems |
|
Interface "Portfolio Instrument or Segment Returns"
Status | PARKED |
---|---|
Usage | Query performance / return data on sector or instrument level for a given period used to produce
|
Discussion |
|
Data Contents |
|
Parameters |
|
Reporting Business Logic |
|
Example | |
Potential Problems |
Add Comment