Recipe 9 of 65
Find high win-rate Hyperliquid traders with at least 30 closed trades
Call /leaderboard with min_trades=30 and min_win_rate=0.6 (a fraction), sorted by PnL, to list wallets that won at least 60% of 30 or more trades closed in the window.
GET /v1/hyperliquid/leaderboard answers it in one call: min_trades=30 and min_win_rate=0.6 keep the wallets with
at least 30 trades closed in the window and a win rate of 60% or more. Sorting the survivors by pnl puts the ones that
also made the most money first; sorting by win_rate gives a wall of 100% ties instead. The full parameter list is on
Leaderboard.
Quick answer
Set both floors and sort by PnL.
# wallets with 30+ closed trades and a 60%+ win rate over 30 days, biggest PnL first
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/leaderboard?window=30d&min_trades=30&min_win_rate=0.6&sort=pnl&limit=5"Example response
Captured from the live API on 2026-10-24 at 17:22 UTC, trimmed to 3 of 5 rows.
13,390 wallets pass the two filters. win_rate is a fraction (0.611 is 61.1%), counted over the trades closed in the
window, and trade_count is that number of trades. The first wallet wins 61% of 3,234 trades for $5.57M; the second
wins 67% of only 46 trades but with a profit factor of 10.5.
{
"traders": [
{
"wallet": "0xecb63caa47c7c4e77f60f1ce858cf28dc2b82b00",
"rank": 1,
"account_value": 33067379.692377,
"total_realized_pnl": 5567982.361969139,
"cum_realized_pnl": 19680262.553564098,
"roi": 16.838293247809784,
"pnl_pct": 16.838293247809784,
"total_volume": 9462552357.735611,
"total_fee": -84653.02627408998,
"trade_count": 3234,
"win_count": 1976,
"loss_count": 1258,
"win_rate": 0.6110080480575562,
"long_win_rate": 0.6136080026626587,
"short_win_rate": 0.6084558963775635,
"long_pnl": 7855474.846183539,
"short_pnl": -2287492.484214401,
"profit_factor": 1.6827245950698853,
"expectancy": 1721.7014106274396,
"max_drawdown_pct": 48.599998474121094,
"current_drawdown_pct": 45.599998474121094,
"calmar_ratio": 0.34646692872047424,
"recovery_factor": 0.34646692872047424,
"max_win_streak": 22,
"max_loss_streak": 11,
"avg_leverage": 0.0,
"avg_duration_seconds": 92101,
"size_cohort": "4x whale",
"pnl_cohort": "3x smart",
"pnl_cohort_tag": "consistent_winner",
"style_cohort_tag": "streak_trader"
},
{
"wallet": "0x58b27998b4ff896949d5f57466b259e50ee211f3",
"rank": 2,
"account_value": 1675724.100283,
"total_realized_pnl": 2806590.700221001,
"cum_realized_pnl": 3199946.620584999,
"roi": 167.48525009260285,
"pnl_pct": 167.48525009260283,
"total_volume": 429257228.63025,
"total_fee": 93601.925023,
"trade_count": 46,
"win_count": 31,
"loss_count": 15,
"win_rate": 0.6739130616188049,
"long_win_rate": 0.5789473652839661,
"short_win_rate": 0.7407407164573669,
"long_pnl": 1296031.2249120001,
"short_pnl": 1510559.4753090015,
"profit_factor": 10.452153205871582,
"expectancy": 61012.8413091522,
"max_drawdown_pct": 65.0,
"current_drawdown_pct": 26.5,
"calmar_ratio": 2.5766961574554443,
"recovery_factor": 2.5766961574554443,
"max_win_streak": 8,
"max_loss_streak": 3,
"avg_leverage": 0.0,
"avg_duration_seconds": 231719,
"size_cohort": "whale",
"pnl_cohort": "3x smart",
"pnl_cohort_tag": "consistent_winner",
"style_cohort_tag": "streak_trader"
},
{
"wallet": "0x71d0e11ebb6150cebe20cf62f798be1a50108c26",
"rank": 3,
"account_value": 9194978.373452,
"total_realized_pnl": 2302443.4488457143,
"cum_realized_pnl": 3475830.6563184457,
"roi": 25.040226907910885,
"pnl_pct": 25.040226907910885,
"total_volume": 2922966557.301638,
"total_fee": 40987.1221534395,
"trade_count": 3035,
"win_count": 2136,
"loss_count": 899,
"win_rate": 0.7037891149520874,
"long_win_rate": 0.670634925365448,
"short_win_rate": 0.7367038726806641,
"long_pnl": 453311.48798302293,
"short_pnl": 1849131.9608626913,
"profit_factor": 1.3840434551239014,
"expectancy": 758.6304609046834,
"max_drawdown_pct": 29.0,
"current_drawdown_pct": 27.299999237060547,
"calmar_ratio": 0.863456130027771,
"recovery_factor": 0.863456130027771,
"max_win_streak": 26,
"max_loss_streak": 8,
"avg_leverage": 0.0,
"avg_duration_seconds": 99423,
"size_cohort": "3x whale",
"pnl_cohort": "3x smart",
"pnl_cohort_tag": "sharp_shooter",
"style_cohort_tag": "streak_trader"
}
],
"totalCount": 13390,
"nextCursor": "eyJrIjoiMzBkfHBubHxkZXNjfHNpemV8IiwiciI6NSwidiI6MjEwMjcwMS43NDExMDEsInciOiIweGQ0YzFmN2U4ZDg3NmM0NzQ5MjI4ZDUxNTQ3M2QzNmY5MTk1ODNkMWQifQ"
}Variations
Sorted by win rate. The literal ranking. The top is a run of 100% win rates, tied and then ordered by wallet address.
# the same filter ranked by win rate
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/leaderboard?window=30d&min_trades=30&min_win_rate=0.6&sort=win_rate&limit=5"A size floor as well. min_volume drops small accounts. The five 100% rows of the win-rate ranking each had under $600,000 of volume.
# 60%+ win rate, 30+ trades and at least $10M of volume over 30 days
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/leaderboard?window=30d&min_trades=30&min_win_rate=0.6&min_volume=10000000&sort=win_rate&limit=25"The same question on /traders. /traders takes min_win_rate in percent and returns at most 20 rows with no cursor.
# the /traders form: 60 means 60% here
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/traders?window=30d&sort=win_rate&min_trades=30&min_win_rate=60&size=20"Before you rely on it
0.6 here, 60 on /traders, and open losers are not counted
On /leaderboard, min_win_rate=60 keeps nobody, because the field is a fraction; on /traders it is a percent. The
win rate counts only closed trades, so a wallet that closes its winners and holds its losers open scores 100%: in a
capture of sort=win_rate the 100% rows carried drawdowns of up to 99%. Read max_drawdown_pct and profit_factor
beside it; a profit_factor of 999 means no losing trade closed in the window.
Ask your agent
Connected to the Vike MCP server (https://vike.io/mcp) in Claude, ChatGPT or Cursor, ask it in plain words.
The hl_leaderboard tool answers with view: ranking, at 1 credit a call.
Which Hyperliquid traders won at least 60% of 30 or more trades in the last 30 days?