API reference

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 only

Returns performance for each asset and account of a client: flows, gains and losses, income, average capital base, IRR and TWR for the period.

Parameters

NameInTypeDescription
idpathintegerrequiredClient id. 0 returns all clients you can access.
yearMonthqueryintegerrequiredEnd of the period, YYYYMM.
periodqueryintegeroptional0 MTD (default), 1 YTD, 2 3 months, 3 6 months, 4 12 months.
ccyquerystringoptionalReporting currency. Default USD.
investmentVehiclequerystringoptionalOnly return this investment vehicle. Default: all.
tenantIdquerystringoptionalTenant to query, from /Tenants. Default: your user's main tenant.

Example request

Response

Response fields
FieldTypeDescription
clientID, clientAliasstring | nullClient ID and alias.
invVehicle, invVehicleCodestringInvestment vehicle name and code.
parentNodeId, nodeIdstringPosition in the GWM.
bankBroker, accountNumberstring | nullAccount details. Apply to account nodes.
assetNamestring | nullAsset or security name.
securityIdintegerMasttro security id.
assetClass, securityTypestring | nullClassification from your Asset Master.
depositsnumber | nullDeposits in the period.
withdrawalsnumber | nullWithdrawals in the period.
transferInOutnumber | nullTransfers in and out in the period.
periodRealizedGLnumber | nullRealized gains and losses in the period.
periodUnrealizedGLnumber | nullUnrealized gains and losses in the period.
incomenumber | nullNet income in the period.
totalPLnumber | nullTotal profit and loss in the period.
avgCapBasenumber | nullAverage capital base.
marketValueInitialnumber | nullMarket value at the start of the period.
marketValuenumber | nullMarket value at the end of the period.
irrnumber | nullInternal rate of return for the period.
twrnumber | nullTime-weighted return for the period.
initialDatestring | nullStart of the selected period.
datestring | nullDate selected in the request.

All amounts are in the reporting currency.

Errors

StatusBody
400"The user does not have access to this client or the client does not exist."
400Validation 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 only

Returns 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

NameInTypeDescription
idpathintegerrequiredClient id. 0 returns all clients you can access, and is only valid with groupBy=consolidated.
ccyquerystringrequiredReporting currency, 3-letter ISO code.
yearMonthqueryintegerrequiredPosition date the period is calculated back from, YYYYMM.
periodqueryintegeroptional0 MTD (default), 1 YTD, 2 3 months, 3 6 months, 4 12 months. Ignored for XIRR.
groupByquerystringoptionalconsolidated (default), investmentVehicle, bankAccount, assetClass or customField. Case-insensitive.
customFieldIdqueryintegerconditionalCustom field index, 1 to 10. Required with groupBy=customField, not allowed otherwise.
performanceMetricquerystringoptionalIRR (default), TWR or XIRR. XIRR is cumulative since inception.
investmentVehicleNodeIdquerystringconditionalNode id of the investment vehicle, from /GWM. Required with groupBy=investmentVehicle (returns one row), not allowed otherwise.
tenantIdquerystringoptionalTenant to query, from /Tenants. Default: your user's main tenant.

Example request

Response

Response fields
FieldTypeDescription
clientIdstring | nullClient ID from the Clients module. Note the lowercase d.
groupTypestringConsolidated, InvestmentVehicle, BankAccount, AssetClass or CustomField.
groupIdstring | nullInternal group id. null on consolidated rows.
groupNamestring | nullGroup display name. null on consolidated rows. "Not Assigned" for holdings without a custom field value.
marketValueInitialnumber | nullMarket value at the start of the period.
marketValuenumber | nullMarket value as of yearMonth.
deposits, withdrawals, transferInOutnumber | nullFlows in the period.
incomenumber | nullNet income in the period.
periodRealizedGl, periodUnrealizedGlnumber | nullRealized and unrealized gains and losses in the period.
totalPlnumber | nullTotal profit and loss in the period.
avgCapBasenumber | nullAverage capital base.
performanceMetricTypestringThe metric requested: IRR, TWR or XIRR.
performanceMetricnumber | nullThe metric value, in percent (100% = 100.0). XIRR is cumulative since inception.
initialDatestring | nullFirst day of the period, YYYYMMDD.
datestring | nullReport date, YYYYMMDD.

All amounts are in the reporting currency.

Errors

StatusBody
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."
400Validation 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.