# Pnl

<div class="api-grid" markdown>
<div class="api-main" markdown>

<span class="api-method api-method--get">GET</span> <span class="api-url">`https://api.pro.anboto.xyz/api/v2/portfolio/pnl`</span>

Daily PnL from equity closes at 00:00 UTC, net of deposits and withdrawals: the same figures as the PnL page of the trading UI. `total` covers the whole selection; with `groupBy`, `groups` splits it per exchange or account (money values add up to the total, ratios do not). Every `*_pct` value is in percent. `period_return_pct` is a simple return, not time-weighted; `equity_prev` in each point gives the denominator for a time-weighted return. `nav_usd` and `today_pnl` come from live equity (`as_of`). Exchanges without daily PnL coverage are listed in `uncovered_exchanges` and never counted as zero. Scope spot or future is recomputed per day and limited to 366 days. **ApiKeyAuth** required.

### Query params

<div class="api-params" markdown>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`accounts` <span class="api-param__type">string</span></div>
<div class="api-param__desc" markdown="span">Comma-separated accounts: `binance` = every account on Binance (main and subaccounts), `binance:` = the main account only, `binance:Sub1` = that subaccount. Omit for every account of the team. At most 20 items. Unlike /api/v2/trading/*, a missing subaccount means all accounts. Sign the raw value, e.g. `accounts=binance:,bybit:Sub1`.</div>
<div class="api-param__meta" markdown="span">Example: `binance:,bybit:Sub1`</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`scope` <span class="api-param__type">enum</span></div>
<div class="api-param__desc" markdown="span">Wallet scope: total (default), spot or future — `total`, `spot`, `future`</div>
<div class="api-param__meta" markdown="span">Default: `total`</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groupBy` <span class="api-param__type">enum</span></div>
<div class="api-param__desc" markdown="span">Split the result into `groups`: none (default), exchange or account — `none`, `exchange`, `account`</div>
<div class="api-param__meta" markdown="span">Default: `none`</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`period` <span class="api-param__type">string</span></div>
<div class="api-param__desc" markdown="span">Window ending at endDate: `<N>d` (N from 1 to 3660), week, month, quarter or year. Default 30d. Ignored when startDate is given</div>
<div class="api-param__meta" markdown="span">Example: `90d`</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`startDate` <span class="api-param__type">date</span></div>
<div class="api-param__desc" markdown="span">First day, YYYY-MM-DD (UTC, inclusive)</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`endDate` <span class="api-param__type">date</span></div>
<div class="api-param__desc" markdown="span">Last day, YYYY-MM-DD (UTC, inclusive). At most today. The series ends yesterday at the latest, the last closed day: the default, and the day an endDate of today is answered up to (`to_date` gives the applied end; today's PnL so far is `today_pnl`). The window spans at most 3660 days, or 366 days for scope spot or future</div>
</div>
</div>

### Headers

| Header | | |
|---|---|---|
| `X-API-KEY` | string | <span class="api-req">required</span> |
| `X-TIMESTAMP` | int64 ms | <span class="api-req">required</span> |
| `X-SIGN` | string | <span class="api-req">required</span> |
| `X-RECV-WINDOW` | int, default 5000 | |

### Responses

| | |
|---|---|
| <span class="api-status api-status--ok">200</span> | The daily PnL |
| <span class="api-status api-status--err">400</span> | Invalid parameter, {"error": "..."} |
| <span class="api-status api-status--err">401</span> | Unauthorized: missing or unknown API key |
| <span class="api-status api-status--err">429</span> | Rate limit exceeded, retry later |
| <span class="api-status api-status--err">503</span> | The portfolio service is unavailable, {"error": "..."} |

### Response fields — [PortfolioPnlResponse](schemas.md#portfoliopnlresponse)

<div class="api-params" markdown>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`as_of` <span class="api-param__type">date-time</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">UTC time of the newest live equity snapshot used for today_pnl; null when none was available</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`nav_usd` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Net asset value of the selection now: the sum of each account's newest live equity snapshot (at most 3 days old; for scope spot or future, that wallet's equity), in USD. Null when no snapshot was available</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`from_date` <span class="api-param__type">date</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">First day of the window (YYYY-MM-DD, UTC), as applied</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`to_date` <span class="api-param__type">date</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Last day of the window (YYYY-MM-DD, UTC), as applied. Days are closed at 00:00 UTC, so this is at most yesterday</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`scope` <span class="api-param__type">enum</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Wallet scope — `total`, `spot`, `future`</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`group_by` <span class="api-param__type">enum</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Grouping of `groups` — `none`, `exchange`, `account`</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`currency` <span class="api-param__type">string</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Currency of every money value</div>
<div class="api-param__meta" markdown="span">Example: `USD`</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`accounts` <span class="api-param__type">array[[PortfolioAccountRef](schemas.md#portfolioaccountref)]</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">The resolved account selection; null when the request covered every account of the team</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`accounts[].exchange` <span class="api-param__type">string</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Exchange code, e.g. binance</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`accounts[].subaccount` <span class="api-param__type">string</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Subaccount name; "" is the main account and null means every account on the exchange</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`uncovered_exchanges` <span class="api-param__type">array[string]</span></div>
<div class="api-param__desc" markdown="span">Requested or connected exchanges without daily PnL coverage. They are left out of every figure, never counted as zero</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total` <span class="api-param__type">[PnlSummary](schemas.md#pnlsummary)</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">PnL figures and daily series of a selection</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.today_pnl` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">PnL since 00:00 UTC from live equity; null when no live snapshot exists or a flow today could not be priced</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.cumulative_pnl` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Sum of daily_pnl over the window</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.period_return_pct` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Simple return over the window in percent: cumulative_pnl over the first flow-adjusted equity (not time-weighted)</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.since_inception_pnl` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">PnL since the selection's first closed day</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.since_inception_return_pct` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Simple return since inception, in percent</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.since_inception_date` <span class="api-param__type">date</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">First closed day of the selection (YYYY-MM-DD)</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.sharpe` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Sharpe ratio of the daily returns, annualised with √365; null with fewer than 2 points</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.max_drawdown_pct` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Largest peak-to-trough drawdown in the window, in percent (≤ 0)</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.estimated` <span class="api-param__type">boolean</span></div>
<div class="api-param__desc" markdown="span">True when at least one day in the window is estimated rather than closed from snapshots</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.reconstructed_range` <span class="api-param__type">[PnlDateRange](schemas.md#pnldaterange)</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">First and last UTC day of a run of PnL points</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.point_count` <span class="api-param__type">integer</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Number of points in series</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.series` <span class="api-param__type">array[[PnlPoint](schemas.md#pnlpoint)]</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">One point per UTC day, oldest first. Days without comparable data are skipped</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.series[].date` <span class="api-param__type">date</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">UTC day (YYYY-MM-DD)</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.series[].daily_pnl` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">PnL of the day, net of deposits and withdrawals</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.series[].net_flows` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Net external flows of the day: positive for deposits, negative for withdrawals</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.series[].equity_close` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Equity at the day's close (00:00 UTC of the next day)</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.series[].equity_prev` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">Equity at the previous close; the denominator of a time-weighted return</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.series[].daily_return_pct` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">daily_pnl over the flow-adjusted previous equity, in percent</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.series[].drawdown_pct` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Drawdown from the running peak, in percent (≤ 0)</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.series[].daily_unrealized_pnl` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Change of unrealised PnL over the day, where the exchange reports it</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.series[].unrealized_pnl_close` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Unrealised PnL at the close, where the exchange reports it</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.series[].quality` <span class="api-param__type">enum</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">ok, or estimated when the close was not taken from a snapshot — `ok`, `estimated`</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`total.series[].reconstructed` <span class="api-param__type">boolean</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">True when the day's close or the previous close was rebuilt from the account's fills, income history and daily mark prices, for days before its first stored daily close. quality is estimated on those days</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups` <span class="api-param__type">array[[PnlGroup](schemas.md#pnlgroup)]</span></div>
<div class="api-param__desc" markdown="span">One entry per exchange or account; present only when group_by is not none. Money values add up to `total`; ratios (returns, sharpe, drawdown) do not</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].key` <span class="api-param__type">[PnlGroupKey](schemas.md#pnlgroupkey)</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Identity of a PnL group</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].as_of` <span class="api-param__type">date-time</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">UTC time of the newest live snapshot used for this group's today_pnl</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].today_pnl` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Group PnL since 00:00 UTC; null when not available for this group</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].cumulative_pnl` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Sum of the group's daily_pnl over the window</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].period_return_pct` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Simple return of the group over the window, in percent</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].since_inception_pnl` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].since_inception_return_pct` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].since_inception_date` <span class="api-param__type">date</span> <span class="api-req">required</span></div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].sharpe` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].max_drawdown_pct` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">In percent (≤ 0)</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].estimated` <span class="api-param__type">boolean</span></div>
<div class="api-param__desc" markdown="span">True when at least one of the group's days is estimated</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].reconstructed_range` <span class="api-param__type">[PnlDateRange](schemas.md#pnldaterange)</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">First and last UTC day of a run of PnL points</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].point_count` <span class="api-param__type">integer</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Number of points in series</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].series` <span class="api-param__type">array[[PnlPoint](schemas.md#pnlpoint)]</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Only the days of total.series on which the group had data; a missing day contributed 0</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].series[].date` <span class="api-param__type">date</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">UTC day (YYYY-MM-DD)</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].series[].daily_pnl` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">PnL of the day, net of deposits and withdrawals</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].series[].net_flows` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Net external flows of the day: positive for deposits, negative for withdrawals</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].series[].equity_close` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Equity at the day's close (00:00 UTC of the next day)</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].series[].equity_prev` <span class="api-param__type">number</span></div>
<div class="api-param__desc" markdown="span">Equity at the previous close; the denominator of a time-weighted return</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].series[].daily_return_pct` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">daily_pnl over the flow-adjusted previous equity, in percent</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].series[].drawdown_pct` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Drawdown from the running peak, in percent (≤ 0)</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].series[].daily_unrealized_pnl` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Change of unrealised PnL over the day, where the exchange reports it</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].series[].unrealized_pnl_close` <span class="api-param__type">number</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">Unrealised PnL at the close, where the exchange reports it</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].series[].quality` <span class="api-param__type">enum</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">ok, or estimated when the close was not taken from a snapshot — `ok`, `estimated`</div>
</div>
<div class="api-param" markdown>
<div class="api-param__head" markdown="span">`groups[].series[].reconstructed` <span class="api-param__type">boolean</span> <span class="api-req">required</span></div>
<div class="api-param__desc" markdown="span">True when the day's close or the previous close was rebuilt from the account's fills, income history and daily mark prices, for days before its first stored daily close. quality is estimated on those days</div>
</div>
</div>

</div>
<div class="api-code" markdown>

=== "Shell"

    ```bash
    curl -X GET "$BASE/api/v2/portfolio/pnl?accounts=string" \
      -H "X-API-KEY: $API_KEY" -H "X-TIMESTAMP: $ts" \
      -H "X-SIGN: $sign"
    ```

=== "Python"

    ```python
    params = {"accounts": ..., "scope": ..., "groupBy": ..., "period": ..., "startDate": ..., "endDate": ...}
    r = requests.get(f"{BASE}/api/v2/portfolio/pnl",
        params=params
        headers=signed_headers_query(params))
    print(r.json())
    ```

=== "Rust"

    ```rust
    let resp = client
        .get(format!("{BASE}/api/v2/portfolio/pnl?accounts=string"))
        .headers(signed_headers_query(&params))
        .send()?;
    println!("{}", resp.text()?);
    ```

=== "Go"

    ```go
    req, _ := http.NewRequest("GET", BASE+"/api/v2/portfolio/pnl?accounts=string", nil)
    for k, v := range signedHeadersQuery(req.URL.Query()) {
    	req.Header.Set(k, v)
    }
    resp, err := http.DefaultClient.Do(req)
    if err != nil {
    	log.Fatal(err)
    }
    defer resp.Body.Close()
    io.Copy(os.Stdout, resp.Body)
    ```

=== "Java"

    ```java
    HttpResponse<String> resp = client.send(
        signedGet("/api/v2/portfolio/pnl?accounts=string"),
        HttpResponse.BodyHandlers.ofString());
    ```

=== "TypeScript"

    ```typescript
    const res = await fetch(`${BASE}/api/v2/portfolio/pnl?accounts=string`, {
      method: "GET",
      headers: signedHeadersQuery(params),
    });
    const data: PortfolioPnlResponse = await res.json();
    ```

=== "Kotlin"

    ```kotlin
    val request = signedGet("/api/v2/portfolio/pnl?accounts=string")
    val response = client.send(request, HttpResponse.BodyHandlers.ofString())
    println(response.body())
    ```

=== "C++"

    ```cpp
    cpr::Response r = cpr::Get(
        cpr::Url{BASE + "/api/v2/portfolio/pnl?accounts=string"},
        signedHeadersQuery(params));
    std::cout << r.text << std::endl;
    ```

=== "JavaScript"

    ```javascript
    const res = await fetch(`${BASE}/api/v2/portfolio/pnl?accounts=string`, {
      method: "GET",
      headers: signedHeadersQuery(params),
    });
    console.log(await res.json());
    ```

<div class="api-response" markdown>

**Response** <span class="api-status api-status--ok">200</span>

```json
{
  "as_of": "string",
  "nav_usd": 0.0,
  "from_date": "string",
  "to_date": "string",
  "scope": "total",
  "group_by": "none",
  "currency": "USD",
  "accounts": [
    {
      "exchange": "string",
      "subaccount": "string"
    }
  ],
  "uncovered_exchanges": [
    "string"
  ],
  "total": {
    "today_pnl": 0.0,
    "cumulative_pnl": 0.0,
    "period_return_pct": 0.0,
    "since_inception_pnl": 0.0,
    "since_inception_return_pct": 0.0,
    "since_inception_date": "string",
    "sharpe": 0.0,
    "max_drawdown_pct": 0.0,
    "estimated": true,
    "reconstructed_range": {
      "first_date": "string",
      "last_date": "string"
    },
    "point_count": 0,
    "series": [
      {
        "date": "string",
        "daily_pnl": 0.0,
        "net_flows": 0.0,
        "equity_close": 0.0,
        "equity_prev": 0.0,
        "daily_return_pct": 0.0,
        "drawdown_pct": 0.0,
        "daily_unrealized_pnl": 0.0,
        "unrealized_pnl_close": 0.0,
        "quality": "ok",
        "reconstructed": true
      }
    ]
  },
  "groups": [
    {
      "key": {
        "exchange": "string",
        "subaccount": "string",
        "market": "string"
      },
      "as_of": "string",
      "today_pnl": 0.0,
      "cumulative_pnl": 0.0,
      "period_return_pct": 0.0,
      "since_inception_pnl": 0.0,
      "since_inception_return_pct": 0.0,
      "since_inception_date": "string",
      "sharpe": 0.0,
      "max_drawdown_pct": 0.0,
      "estimated": true,
      "reconstructed_range": {
        "first_date": "string",
        "last_date": "string"
      },
      "point_count": 0,
      "series": [
        {}
      ]
    }
  ]
}
```

</div>
</div>
</div>
