Performance
Performance is the daily return series for a lens: time-weighted return, contributions, and market value per date, in one reporting currency of the lens's client. One point per day over the window you ask for, or per day and asset, custody account or tag with group_by.
Reading requires the positions:read scope.
Every holding is kept once per reporting currency of its client, as in holdings: currency picks the leg, the client's primary currency by default. Its currencies are its primary currency, its entities' primary currencies and their alternative currencies; any other currency is a 400 that lists them.
A lens synced from the legacy platform counts a portfolio that sits in more than one of its portfolio groups once per group, as the legacy API does. A lens built in v1 is read through its rules, as holdings reads it: each day's figures count with the lens's weight of the row and within your own share, each row once, and nothing before the lens's start_date. A lens with a custody account, cash account or custodian rule (also through a lens it takes or the folder it sits in) is read per custody or cash account, and so is group_by=custody_account.
Amounts follow your ownership, as holdings do: if you see a portfolio only as its owner, daily_return, net_contribution and net_market_value are your share of it on each day. A change of your share is a flow on the day it takes effect, never a return: buying into 10 % more of a portfolio worth 1 000 000 shows 100 000 in net_contribution on that day and is not on the transaction list. The time-weighted return is the portfolio's own, whatever your share.
Data model
dateISO 8601 dateThe day of the point.
asset_idstring or nullThe asset, with
group_by=asset;nullotherwise.custody_account_idstring or nullThe custody account, with
group_by=custody_account;nullotherwise, and on figures held outside a custody account.tag_idstring or nullThe asset's detailed asset class as a tag, with
group_by=tag;nullotherwise, and on a class without a tag.twrdecimal string or nullTime-weighted return for the day, rounded to 12 decimals.
nullon an asset or tag of a class the legacy platform shows no return for (forwards, derivatives, money market); its amounts are still there.accumulated_twrdecimal string or nullTime-weighted return compounded from
from_datethrough the date;nullwheretwris.daily_returndecimal stringReturn in money for the day.
accumulated_returndecimal stringReturn in money summed from
from_datethrough the date.net_contributiondecimal stringNet external cash flow on the date — contributions positive, withdrawals negative.
net_market_valuedecimal stringMarket value at close of the date.
currency_codestringISO 4217 currency the point is valued in.
List performance
Returns the daily series for a lens over a date window, in the standard v1 list envelope plus from_date and currency. The window starts on from_date or at the start of period, exactly one of the two, and ends on as_of, today when left out. Both or neither, an unknown period, an as_of before the start, a currency outside the client's currencies and an unknown query parameter (also the old to_date) are a 400. The envelope's as_of is the day the window ends on, from_date the day it starts on (the lens's start_date when that is later) and currency the currency read. A window that ends before the lens's start_date is an empty list.
Query parameters
lens_idstringThe lens to compute over. Required.
from_dateISO 8601 dateInclusive start of the window; the accumulated figures run from it. Not together with
period.periodstringThe window ending on
as_of, in place offrom_date:dtd(the day),mtd(from the 1st of the month),qtd,htdandytd(from the start of the quarter, half-year and year of the lens's accounting year, 1 January unless the lens has its own),itd(from the lens's first day: itsstart_date, else its first figures),1m,3m,6mand1y(from the day after the same day one unit back) and3yand5y(from the same day three or five years back). A lens whose sub-lenses have different accounting years takesfrom_dateonly.as_ofISO 8601 dateThe inclusive end of the window. Today when left out.
currencystringThe reporting currency to read, one of the lens client's currencies. The client's primary currency when left out.
group_bystringasset,custody_accountortag: one point per day per group, each accumulated on its own. Any other value is a400. Omit for one point per day.limitintegerPage size. Defaults to 366 — one year of daily points — capped at 3 650.
cursorstringOpaque cursor from the previous page's
next_cursor. Omit for the first page.
curl -G https://api.aleta.ai/v1/performance \
-H "Authorization: Bearer {access_token}" \
-d lens_id=019f91be-1d83-7f0a-bbfc-e64861142e87 \
-d from_date=2025-01-30 \
-d as_of=2025-02-28
{
"data": [
{
"date": "2025-01-30",
"asset_id": null,
"custody_account_id": null,
"tag_id": null,
"twr": "0.0012505",
"accumulated_twr": "0.0012505",
"daily_return": "1250.5",
"accumulated_return": "1250.5",
"net_contribution": "0",
"net_market_value": "1001250.5",
"currency_code": "DKK"
},
{
"date": "2025-01-31",
"asset_id": null,
"custody_account_id": null,
"tag_id": null,
"twr": "-0.000475861843",
"accumulated_twr": "0.000774043092",
"daily_return": "-500.25",
"accumulated_return": "750.25",
"net_contribution": "50000",
"net_market_value": "1050750.25",
"currency_code": "DKK"
}
],
"next_cursor": null,
"limit": 366,
"as_of": "2025-02-28",
"from_date": "2025-01-30",
"currency": "DKK"
}
List private-market figures
Returns the private-equity figures of a lens's funds, in the standard v1 list envelope: one row per fund and holding date (holding_date), at the market price date date. A NAV dated 1 June is the price for every day until the next NAV, so one date can carry many rows. Takes lens_id and from_date (required), to_date (today when left out; both on date) and currency (one of the lens client's currencies, its primary currency when left out, as on GET /v1/performance). The envelope's as_of is the to_date used. The funds are the ones the lens held within the window. An unknown query parameter (also the old reporting_currency), a currency outside the client's currencies and a to_date before from_date are a 400.
Each row has, in this order, date, holding_date, asset_id, nav_date, reporting_currency_code, fund_currency_code, nav, market_value (in the fund's currency), market_value_reporting (in the reporting currency), commitment_total, commitment_called and commitment_uncalled (fund currency) and their _reporting twins, dpi, rvpi, tvpi, capital_calls (the capital called), distributions, accumulated_return (summed per fund from its first day) and irr. Rows are ordered by date, then asset and holding date. nav_date and every figure from nav on can be null (a ratio over a zero commitment is null, not a number). limit defaults to 100, at most 1 000.
The amounts follow your ownership and the lens's rules per portfolio, as performance does: market_value, the commitments, capital_calls, distributions and accumulated_return are your share of each portfolio's figures on the holding date, summed over the portfolios. nav, dpi, rvpi, tvpi and irr are the fund's own and are not weighted.
Related
- Holdings — the positions behind the numbers.
- Benchmarks — reference series to compare returns against.
- Lenses — the scope performance is computed over.