Trading-competition stats — windowed volume + account value + realized/unrealized PnL
/v1/me/statsCompetition leaderboard for the caller org's wallets. Per wallet (or per provider): `accountValueUsd` = current NAV (point-in-time liquidation equity), `volumeUsd` = traded notional over `[from, to)`, `realizedPnlUsd` = realized PnL over the window (**gross of fees**), `unrealizedPnlUsd` = open-position mark PnL (point-in-time), `tradingFeeUsd`/`builderFeeUsd` = Σ fees over the window (HL; under `platform=mine` `builderFeeUsd` is the builder fee on your attributed fills while `tradingFeeUsd` is null — exchange fee isn't attributable per-builder; both null for non-HL) so net = realized − fees, `tradeCount` = fills over the window. For **Hyperliquid** the realized/volume/trade-count all come from the wallet's own exchange fills (`closedPnl` + notional — matches HL's UI, covers perp + HIP-3 + spot, correct windowing); account value spans perp + spot + vault + staking. Sort with `sort` (default `-realizedPnlUsd`). `groupBy=wallet` for the per-wallet leaderboard, `groupBy=provider` to roll up by venue. `from`/`to` are ISO-8601 (omit for all-time). **`platform=mine`** restricts volume/realized/tradeCount to fills routed through a builder you registered (semantics + 400 `no_platform_attribution` identical to `/v1/me/pnl?platform=mine`); `accountValueUsd`/`unrealizedPnlUsd` stay whole-account — balances belong to the wallet, not to the platform that routed an order. For PnL drill-down by market use `/v1/me/pnl`. **`mode=snapshot|live`** (default `snapshot`; `nav=` is a deprecated alias): row freshness. `snapshot` reads `accountValueUsd`/`unrealizedPnlUsd` from the latest persisted hourly NAV snapshot (fast over many wallets, ≤1h stale); `mode=live` fetches real-time `getState` per wallet AND — with `roi=true` — anchors the whole row's `netPnlUsd`/ROI on that same live NAV (self-consistent row: account value, PnL and ROI move together; effective refresh ≈12–15s from caching). If a requested NAV read is unavailable, `accountValueUsd` is `null` (including the aggregate); it is never silently coerced to `0`. **`roi=true`** (with `groupBy=wallet`) adds per-wallet `mwrPct` + `twrPct` + `simpleRoiPct` + `netPnlUsd` + `netDepositsUsd` — HL wallets computed from the HL portfolio grid (canonical: nav = accountValueHistory, netDeposits = accountValue − pnlHistory, so figures match HL's own UI), end-anchored on the row's account value. NOTE: realized/unrealized are null where unknown (non-HL in `all` mode, or upstream error; snapshot unrealized is also null for wallets snapshotted before the field existed / backfill-only / PM).