userPnlSummary

Aggregate realized-PnL stats for a single user, computed from completed trades.

Returns aggregate realized-PnL metrics for a user, derived from their completed (fully closed) positions. Includes total net PnL, win/loss rates, volume traded, fees, funding PnL, account age, traded pairs, and a heuristic "human score" (0–100, higher = more likely human, lower = more likely an algorithmic trader).

startTime and endTime are optional and let you scope the metrics to a specific window (filtered on the position's close_time).

dex is optional. Omit for aggregate 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 to that dex. When the filter is set, 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 "userPnlSummary"

user

string

Ethereum address (0x-prefixed, 42 characters)

startTime

int

Start time in ms, filters on close_time (optional)

endTime

int

End time in ms, filters on close_time (optional)

dex

string

Scope 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": "userPnlSummary",
    "user": "0x0000000000000000000000000000000000000000"
  }'

Response Fields

Field
Type
Description

user

string

Ethereum address (echoed from the request)

totalPnl

string

Sum of net PnL across all 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)

lossRate

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 (notional traded)

totalFees

string

Sum of fees paid across completed trades

totalFunding

string

Sum of cumulative funding PnL across completed trades (positive = received, negative = paid). 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