Portfolio Performance
Retrieve cash-flow-adjusted daily P&L, time-weighted returns, and optional benchmark comparisons for master and customer portfolios.
Use GET /portfolio/performance for the partner master account and
GET /users/{userId}/portfolio/performance for a customer sub-account. These endpoints are distinct
from /portfolio/history, which intentionally returns raw equity snapshots without cash-flow adjustment.
Each point includes equity, marketValue, netCashFlow, dailyPnl, dailyReturn,
cumulativeReturn, and—when requested—benchmarkReturn plus excessReturn.
/portfolio/performance
Master-account cash-flow-adjusted performance
Full endpoint documentationgetPortfolioPerformanceReturns daily P&L, Modified Dietz interval returns, and geometrically linked cumulative time-weighted return. Completed master/sub-account transfers and completed external top-ups/payouts are cash-flow adjusted. Supply an optional exchange-qualified benchmark symbol for rebased price return and excess-return comparison. Benchmark return excludes dividends and FX. Use /portfolio/history when raw equity snapshots are required.
Parameters
period1M | 3M | 6M | 1Y | ALLqueryExample: 1Y
fromstringquerytostringquerybenchmarkstringqueryOptional exchange-qualified benchmark symbol.
Example: SCOM.KE
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
accountTypeMASTER | SUBACCOUNTRequiredscopeMASTER_ACCOUNT | SUBACCOUNTRequiredsubAccountIdstringexternalIdstring | nullbaseCurrencyUSDRequiredtimeframe1DRequiredperiod1M | 3M | 6M | 1Y | ALLRequiredcalculationDAILY_MODIFIED_DIETZ_LINKED_TWRRequiredcashFlowAdjustedbooleanRequiredmethodologystringRequiredbenchmarkunionRequiredsummaryobjectRequiredsummary.startEquitynumberRequiredsummary.endEquitynumberRequiredsummary.netCashFlownumberRequiredsummary.totalPnlnumberRequiredsummary.totalReturnnumberRequiredsummary.benchmarkReturnnumber | nullRequiredsummary.excessReturnnumber | nullRequiredpointsobject[]Requiredpoints[].timestampstringRequiredpoints[].equitynumberRequiredpoints[].marketValuenumberRequiredpoints[].netCashFlownumberRequiredSigned completed external cash flow during the interval.
points[].dailyPnlnumberRequiredEnd equity minus start equity minus net cash flow.
points[].dailyReturnnumber | nullRequiredModified Dietz return for the snapshot interval.
points[].cumulativeReturnnumberRequiredGeometrically linked time-weighted return from the first point.
points[].benchmarkReturnnumber | nullRequiredRebased benchmark price return when requested.
points[].excessReturnnumber | nullRequiredcumulativeReturn minus benchmarkReturn.
countintegerRequiredasOfstring | nullResponse codes
200Cash-flow-adjusted master-account performance.400Invalid period404Benchmark symbol not found./users/{userId}/portfolio/performance
Sub-account cash-flow-adjusted performance
Full endpoint documentationgetUserPortfolioPerformanceReturns daily P&L, Modified Dietz interval returns, and geometrically linked cumulative time-weighted return for one partner-owned sub-account. Completed deposits and withdrawals are treated as external cash flows. Supply an optional exchange-qualified benchmark symbol for rebased price return and excess-return comparison.
Parameters
userIdstringpathRequiredperiod1M | 3M | 6M | 1Y | ALLqueryExample: 1Y
fromstringquerytostringquerybenchmarkstringqueryOptional exchange-qualified benchmark symbol.
Example: SCOM.KE
Headers
AuthorizationstringRequiredBearer sk_sandbox_<your_key> for sandbox requests.
Response fields
accountTypeMASTER | SUBACCOUNTRequiredscopeMASTER_ACCOUNT | SUBACCOUNTRequiredsubAccountIdstringexternalIdstring | nullbaseCurrencyUSDRequiredtimeframe1DRequiredperiod1M | 3M | 6M | 1Y | ALLRequiredcalculationDAILY_MODIFIED_DIETZ_LINKED_TWRRequiredcashFlowAdjustedbooleanRequiredmethodologystringRequiredbenchmarkunionRequiredsummaryobjectRequiredsummary.startEquitynumberRequiredsummary.endEquitynumberRequiredsummary.netCashFlownumberRequiredsummary.totalPnlnumberRequiredsummary.totalReturnnumberRequiredsummary.benchmarkReturnnumber | nullRequiredsummary.excessReturnnumber | nullRequiredpointsobject[]Requiredpoints[].timestampstringRequiredpoints[].equitynumberRequiredpoints[].marketValuenumberRequiredpoints[].netCashFlownumberRequiredSigned completed external cash flow during the interval.
points[].dailyPnlnumberRequiredEnd equity minus start equity minus net cash flow.
points[].dailyReturnnumber | nullRequiredModified Dietz return for the snapshot interval.
points[].cumulativeReturnnumberRequiredGeometrically linked time-weighted return from the first point.
points[].benchmarkReturnnumber | nullRequiredRebased benchmark price return when requested.
points[].excessReturnnumber | nullRequiredcumulativeReturn minus benchmarkReturn.
countintegerRequiredasOfstring | nullResponse codes
200Cash-flow-adjusted sub-account performance.400Invalid period404Sub-account or benchmark symbol not found.Methodology
- Daily P&L is
end equity - start equity - net external cash flow. - Each interval uses Modified Dietz, weighting completed cash flows by the time remaining in the interval.
- Daily returns are geometrically linked to produce cumulative time-weighted return.
- Sub-account
DEPOSITandWITHDRAWALentries are external cash flows. - Master-account internal transfers and completed top-ups/payouts are adjusted so funding movement is not reported as investment return.
- Benchmark comparison is price return rebased to the first available close. It excludes dividends and FX and must be labelled accordingly.
Performance is only as complete as the available daily valuation snapshots. Do not fabricate intraday returns from delayed quotes, and do not present the benchmark comparison as total return.
Was this page useful?
Your signal helps us tighten partner onboarding docs.
Last updated on