Trader Analytics

Get a trader's realized-PnL time series

Returns a time-series of realized PnL data points for charting a trader's PnL progression over the requested window, bucketed by time_range. The wallet address is validated as either an Ethereum (0x...) address (Polymarket/Opinion/predictfun) or a Solana base58 address (Kalshi) and normalized (lower-cased for EVM) before lookup; if it matches neither format the request is rejected with 400. provider is optional — if omitted, the provider is auto-detected from the address format; pass it explicitly to disambiguate EVM venues other than Polymarket. Provider values are validated against the live set of active providers rather than a fixed enum, so an inactive/unknown id is rejected with 400. Responses are cacheable at the edge and briefly cached server-side. Public endpoint — no authentication required. Rate-limited per client IP (X-Forwarded-For, falling back to the socket peer) at 30 requests/minute, independent of the global 100/minute default.

get/trader-stats/pnl-history/{wallet_address}

Request

  • Base URL
    https://data.kairos.trade
  • Auth
    none required

Path parameters

wallet_addressstring required

Ethereum (0x-prefixed, 42 chars) or Solana (base58) wallet address. Normalized (EVM lower-cased) before use. Returns 400 if it matches neither format.

Query parameters

time_range'1D' | '1W' | '1M' | 'ALL'

Time window for the PnL series.

providerstring

Provider override (e.g. polymarket, kalshi, opinion, predictfun). Validated against the live active-provider registry. Auto-detected from address format when omitted.

Response

PnL time series for the wallet and time range.

wallet_addressstring required
time_range'1D' | '1W' | '1M' | 'ALL' required
start_pnlstring decimal required

Realized PnL at the start of the window.

end_pnlstring decimal required

Realized PnL at the end of the window.

pnl_changestring decimal required

Absolute change in realized PnL over the window (end_pnl - start_pnl).

pnl_change_percentstring decimal nullable

Percentage change over the window; null if start_pnl is zero/undefined.

current_realized_pnlstring decimal required

Wallet's current total realized PnL (as of now, not bounded to the window).

current_total_pnlstring decimal nullable

Current realized + unrealized PnL combined, when available.

Example response

{
  "wallet_address": "0x1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b",
  "time_range": "1W",
  "data_points": [
    {
      "timestamp": "2026-07-15T00:00:00Z",
      "realized_pnl": "1250.4382"
    }
  ],
  "start_pnl": "800.00",
  "end_pnl": "1250.4382",
  "pnl_change": "450.4382",
  "pnl_change_percent": "56.30",
  "current_realized_pnl": "1250.4382",
  "current_total_pnl": "1875.10"
}

Changes

No recorded changes to this operation across all 1 revision of this API.