Skip to main content
Returns every wallet currently in your BYOB pool together with their backtest copy-PnL scores across all six time windows (or a chosen subset). One request — no per-period round trips, no client-side stitching. This is the canonical read for any UI that renders stats cards, dashboards, or grids over the entire tracked-wallet set. Pair it with GET /wallets if you need to render the empty-state pool too.

Query parameters

string
default:"7d,14d,30d,60d,90d,180d"
Comma-separated subset of periods to include. Defaults to all six. Useful when you only render a single time window — e.g. ?periods=30d returns ~1/6 the payload.

Response shape

Per-wallet entry

Per-period score blob

Examples

Full snapshot (default)

Response (200 OK, abridged):

Subset of periods

Returns the same shape but with only the requested periods inside each wallets[].periods object. Use this when your UI only renders a single window — payload drops proportionally.

Performance

All reads come from the precomputed score cache.

Notes

  • scored_any vs scored on the leaderboard. A wallet counts as scored_any here if it has a score for at least one of the requested periods. The leaderboard’s scored is per-requested-period.
  • Per-period null. A wallet may be scored for 30d but null for 180d (heavy whales often time out on long windows). Read each period’s value independently.
  • error is wallet-global. A single error object per wallet covers the most recent refresh failure across any period. Use it to surface “X wallets retrying” in your UI.
  • No pagination. This endpoint always returns the full pool. Use the leaderboard endpoint with limit/offset if you need server-side paging — that’s the trade-off vs the one-shot snapshot.
  • Race-safe with adds. Wallets you add via POST /v2/copy-pnl/wallets show up here immediately, with null periods until the on-add freshening finishes (~30 s).