userPnlLeaderboard

Top traders ranked by realized PnL, win rate, or volume, with quality filters.

Returns a ranked list of users by realized PnL, win rate, or volume traded over a configurable window. Quality filters (minTrades, minDaysActive, minAccountAgeDays, minHumanScore) let you exclude one-shot accounts, brand-new wallets, and high-frequency bots.

dex is optional. Omit for a leaderboard aggregated across every perp DEX. Set to "main_dex" for the native Hyperliquid dex, or to a HIP-3 dex name (e.g. "xyz") to scope the leaderboard to that dex. When the filter is set, each user's tradedPairs is scoped to the dex; accountAgeDays is always lifetime by design.

note: data used to compute the leaderboard is starting from 1st of aug 2025

POST Request

Field
Type
Description

type

string

Must be "userPnlLeaderboard"

window

string

One of "1d", "7d", "30d", "90d", "all". Default "30d" (optional)

sortBy

string

One of "totalPnl", "winRate", "volumeTraded". Default "totalPnl" (optional)

limit

int

Max results to return. Default 100, max 1000 (optional)

offset

int

Pagination offset. Default 0 (optional)

minTrades

int

Minimum completed trades to include a user. Default 5 (optional)

minDaysActive

int

Minimum distinct active days to include a user. Default 1 (optional)

minAccountAgeDays

int

Minimum account age in days. Default 0 (optional)

minHumanScore

int

Minimum human score (0–100). Filters out users below this score (optional)

dex

string

Scope the leaderboard to a single perp DEX. "main_dex" for the native Hyperliquid dex, or a HIP-3 dex name (e.g. "xyz"). Omit for all dexes (optional)

curl -X POST https://api.hydromancer.xyz/info \
  -H "Authorization: Bearer $HYDROMANCER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "userPnlLeaderboard",
    "window": "30d",
    "sortBy": "totalPnl",
    "limit": 50,
    "minTrades": 10,
    "minHumanScore": 60
  }'

Response Fields

The response is an object with users, total, limit, and offset fields. Each entry in users has the same shape as a userPnlSummary response (minus lossRate).

Field
Type
Description

users

object[]

Ranked list of user entries (see below)

total

int

Total users matching all filters before limit/offset is applied

limit

int

Echo of the request's limit

offset

int

Echo of the request's offset

users[] entry

Field
Type
Description

user

string

Ethereum address

totalPnl

string

Sum of net PnL across the user's completed trades in the window. Net PnL is gross_pnl - fees + funding_pnl

winRate

float

Fraction of trades with net_pnl > 0, rounded to 4 decimals (0–1)

totalTrades

int

Number of completed trades in the window

volumeTraded

string

Sum of |px × sz| across all of the user's fills in the window

totalFees

string

Sum of fees paid across completed trades

totalFunding

string

Sum of cumulative funding PnL across completed trades. Already included in totalPnl

daysActive

int

Number of distinct UTC days on which the user had any fill in the window

accountAgeDays

int?

Days between the user's earliest known fill and now. null if the user has never had a fill on record

tradedPairs

string[]

Distinct coin symbols the user has ever filled on (lifetime)

humanScore

int

Heuristic 0–100 score, higher = more likely a human trader. Combines average fills per trade, average distinct trading hours per active day, and the ratio of maker to taker fills

Response

Last updated