# Equity curve

> The balance and equity series behind the chart, bucketed to whatever range you ask for.

Source: https://www.propexecutor.com/docs/equity-curve
Whole reference in one file: https://www.propexecutor.com/doc.md

The balance and equity series on its own, for a caller that wants the chart without the rest of the [analytics object](https://www.propexecutor.com/docs/analytics).

`GET /v1/accounts/{account}/equity` · **Available** · scope `accounts:read`

<!-- curl -->
```bash
curl "https://api.propexecutor.com/v1/accounts/10000042/equity?from=2026-09-26T00:00:00Z&to=2026-09-27T00:00:00Z" \
  -H "Authorization: Bearer $PFX_KEY"
```

<!-- 200 OK -->
```json
{
  "period": 300,
  "chart": [
    {
      "x": 1790348400,
      "balance": 10000,
      "equity": 9994.2,
      "high": 10002.1,
      "low": 9990.05,
      "drawdown": 0.001,
      "filled": false
    },
    {
      "x": 1790348700,
      "balance": 10000,
      "equity": 10000,
      "high": 10000,
      "low": 10000,
      "drawdown": 0,
      "filled": true
    }
  ]
}
```

## Fields

| Field | Type | Description |
| --- | --- | --- |
| `period` | integer | Bucket width in seconds. Chosen from the range — see below. |
| `x` | integer | Bucket opening time, Unix seconds UTC. |
| `balance` | number | Realized balance at the bucket's close. |
| `equity` | number | Balance plus floating P&L at the bucket's close. |
| `high · low` | number | Highest and lowest equity *within* the bucket. `low` is the one that matters — it is where a drawdown dip shows up that a single reading per bucket would miss entirely. |
| `drawdown` | number | Worst trailing drawdown inside the bucket, as a fraction of the account's all-time peak. |
| `filled` | boolean | `true` when nothing happened in this bucket and the values were carried forward. See below. |

## Resolution

We store fine detail for recent history and progressively coarser detail for older history, and pick a bucket width that keeps the point count roughly constant whatever you ask for.

| Range requested | period returned | Points |
| --- | --- | --- |
| Up to 48 hours | 300s (5 min) | ≤ 576 |
| Up to 20 days | 3,600s (1 hour) | ≤ 480 |
| Up to 400 days | 86,400s (1 day) | ≤ 400 |
| Longer | weekly, then monthly | ≤ 400 |

Five-minute detail is kept for 35 days. Ask for a 40-day range and you get hourly buckets — `period` tells you so. That is not a degradation: nobody reads a 40-day chart at five-minute resolution.

## Filled buckets

An account with no open positions has equity equal to its balance by definition, so nothing is recorded while nothing is moving. Those buckets come back with the last known values carried forward and `filled: true`.

- Before the account’s first trade, a filled bucket sits flat at the starting balance — that is what the account was worth, not zero.
- A filled bucket always has `drawdown: 0` and `high` and `low` equal to `equity`: nothing happened, so nothing was lost. Do not read a filled bucket as a fresh low.

> **Equity cannot be backfilled**
> Floating profit and loss is computed live and, before the equity curve shipped, was never written down. So for any period earlier than that, the equity line equals the balance line exactly and intraday dips are invisible. The balance line is correct for the account’s entire history either way.
