Performance
Two endpoints calculate performance. Use Performance for asset-level detail. Use Grouped performance for one metric aggregated by a grouping, as in the CPA / SCP TWR report.
Performance by asset
GET/Performance/{id}
MCP tool
get_performanceFull license onlyReturns performance for each asset and account of a client: flows, gains and losses, income, average capital base, IRR and TWR for the period.
Parameters
| Name | In | Type | Description | |
|---|---|---|---|---|
id | path | integer | required | Client id. 0 returns all clients you can access. |
yearMonth | query | integer | required | End of the period, YYYYMM. |
period | query | integer | optional | 0 MTD (default), 1 YTD, 2 3 months, 3 6 months, 4 12 months. |
ccy | query | string | optional | Reporting currency. Default USD. |
investmentVehicle | query | string | optional | Only return this investment vehicle. Default: all. |
tenantId | query | string | optional | Tenant to query, from /Tenants. Default: your user's main tenant. |
Example request
Response
Response fields
| Field | Type | Description |
|---|---|---|
clientID, clientAlias | string | null | Client ID and alias. |
invVehicle, invVehicleCode | string | Investment vehicle name and code. |
parentNodeId, nodeId | string | Position in the GWM. |
bankBroker, accountNumber | string | null | Account details. Apply to account nodes. |
assetName | string | null | Asset or security name. |
securityId | integer | Masttro security id. |
assetClass, securityType | string | null | Classification from your Asset Master. |
deposits | number | null | Deposits in the period. |
withdrawals | number | null | Withdrawals in the period. |
transferInOut | number | null | Transfers in and out in the period. |
periodRealizedGL | number | null | Realized gains and losses in the period. |
periodUnrealizedGL | number | null | Unrealized gains and losses in the period. |
income | number | null | Net income in the period. |
totalPL | number | null | Total profit and loss in the period. |
avgCapBase | number | null | Average capital base. |
marketValueInitial | number | null | Market value at the start of the period. |
marketValue | number | null | Market value at the end of the period. |
irr | number | null | Internal rate of return for the period. |
twr | number | null | Time-weighted return for the period. |
initialDate | string | null | Start of the selected period. |
date | string | null | Date selected in the request. |
All amounts are in the reporting currency.
Errors
| Status | Body |
|---|---|
400 | "The user does not have access to this client or the client does not exist." |
400 | Validation problem when yearMonth is missing or not a number. |
400 | "The user does not have access to this tenant or the tenant does not exist." |
Grouped performance
GET/Performance/Grouped/{id}
MCP tool
get_performance_groupedFull license onlyReturns one performance metric (IRR, TWR or cumulative XIRR) aggregated at a grouping level, matching the groupings in the CPA / SCP TWR report. Each call covers one grouping, one period and one metric.
Parameters
| Name | In | Type | Description | |
|---|---|---|---|---|
id | path | integer | required | Client id. 0 returns all clients you can access, and is only valid with groupBy=consolidated. |
ccy | query | string | required | Reporting currency, 3-letter ISO code. |
yearMonth | query | integer | required | Position date the period is calculated back from, YYYYMM. |
period | query | integer | optional | 0 MTD (default), 1 YTD, 2 3 months, 3 6 months, 4 12 months. Ignored for XIRR. |
groupBy | query | string | optional | consolidated (default), investmentVehicle, bankAccount, assetClass or customField. Case-insensitive. |
customFieldId | query | integer | conditional | Custom field index, 1 to 10. Required with groupBy=customField, not allowed otherwise. |
performanceMetric | query | string | optional | IRR (default), TWR or XIRR. XIRR is cumulative since inception. |
investmentVehicleNodeId | query | string | conditional | Node id of the investment vehicle, from /GWM. Required with groupBy=investmentVehicle (returns one row), not allowed otherwise. |
tenantId | query | string | optional | Tenant to query, from /Tenants. Default: your user's main tenant. |
Example request
Response
Response fields
| Field | Type | Description |
|---|---|---|
clientId | string | null | Client ID from the Clients module. Note the lowercase d. |
groupType | string | Consolidated, InvestmentVehicle, BankAccount, AssetClass or CustomField. |
groupId | string | null | Internal group id. null on consolidated rows. |
groupName | string | null | Group display name. null on consolidated rows. "Not Assigned" for holdings without a custom field value. |
marketValueInitial | number | null | Market value at the start of the period. |
marketValue | number | null | Market value as of yearMonth. |
deposits, withdrawals, transferInOut | number | null | Flows in the period. |
income | number | null | Net income in the period. |
periodRealizedGl, periodUnrealizedGl | number | null | Realized and unrealized gains and losses in the period. |
totalPl | number | null | Total profit and loss in the period. |
avgCapBase | number | null | Average capital base. |
performanceMetricType | string | The metric requested: IRR, TWR or XIRR. |
performanceMetric | number | null | The metric value, in percent (100% = 100.0). XIRR is cumulative since inception. |
initialDate | string | null | First day of the period, YYYYMMDD. |
date | string | null | Report date, YYYYMMDD. |
All amounts are in the reporting currency.
Errors
| Status | Body |
|---|---|
400 | "groupBy must be one of: consolidated, bankAccount, investmentVehicle, assetClass, customField." |
400 | "id=0 is only valid when groupBy is \"consolidated\"." |
400 | "customFieldId is required and must be between 1 and 10 when groupBy is \"customField\"." |
400 | "customFieldId is only valid when groupBy is \"customField\"." |
400 | "investmentVehicleNodeId is required when groupBy is \"investmentVehicle\"." |
400 | "investmentVehicleNodeId is only valid when groupBy is \"investmentVehicle\"." |
400 | "period must be a single value between 0 and 4." |
400 | "performanceMetric must be one of: IRR, TWR, XIRR." |
400 | Validation problem when ccy or yearMonth is missing. |
404 | "Unknown client id." |
400 | "The user does not have access to this tenant or the tenant does not exist." |
Plus the common 401 and 429 responses. See Errors.