/leaderboard
The trader leaderboard carrying the full risk-metric set — drawdown, Calmar, recovery factor, profit factor, expectancy and streaks beside PnL.
GET https://data.vike.io/v1/hyperliquid/leaderboardThe trader leaderboard carrying the full risk-metric set — drawdown, Calmar, recovery factor, profit factor, expectancy and streaks beside PnL. A wallet up 300% through a 70% drawdown is not the same find as one up 300% without, and a PnL-only board cannot tell them apart.
Truncated: traders holds 3 rows (limit=3); the first is shown in full, so the whole
risk-metric set is visible.
# the 30-day PnL board with the full risk-metric set beside each wallet
curl -s "https://data.vike.io/v1/hyperliquid/leaderboard?limit=3&window=30d" \
-H "X-API-KEY: $VIKE_API_KEY"
# risk-adjusted instead of raw PnL: best Calmar ratio among wallets with at least 50 trades
curl -s "https://data.vike.io/v1/hyperliquid/leaderboard?sort=calmar&min_trades=50&limit=10" \
-H "X-API-KEY: $VIKE_API_KEY"
# next page of the Calmar board: NEXT is its nextCursor; resend the same window, sort, order, axis and cohort
curl -s "https://data.vike.io/v1/hyperliquid/leaderboard?sort=calmar&min_trades=50&limit=10&cursor=$NEXT" \
-H "X-API-KEY: $VIKE_API_KEY"
# consistent winners: min_win_rate is compared with the same win_rate column the rows show, a fraction
# (0.6 is 60%), where /traders takes a percent
curl -s "https://data.vike.io/v1/hyperliquid/leaderboard?sort=win_rate&min_trades=100&min_win_rate=0.6&limit=25" \
-H "X-API-KEY: $VIKE_API_KEY"
# only wallets in the 3x smart realized-PnL band, by slug; the label is resolved from today's dictionary
curl -s "https://data.vike.io/v1/hyperliquid/leaderboard?axis=pnl&cohort=3x_smart&window=30d&limit=25" \
-H "X-API-KEY: $VIKE_API_KEY"
# the other end of the board: the biggest realized losses
curl -s "https://data.vike.io/v1/hyperliquid/leaderboard?sort=pnl&order=asc&min_trades=20&limit=25" \
-H "X-API-KEY: $VIKE_API_KEY"windowqueryoptional1d | 7d | 30d | all. Default 30dsortqueryoptionalpnl, realized_pnl, roi, volume, trades, win_rate, long_win_rate, short_win_rate, account_value, profit_factor, expectancy, calmar, recovery_factor, max_drawdown, current_drawdown, avg_leverage, avg_duration, fees, win_streak, loss_streak. Default pnl. An unknown key is a 400, not a defaultorderqueryoptionalasc | desc. Default desccohortqueryoptionalaxisaxisqueryoptionalsize | pnl | pnl_abs. Default sizemin_tradesqueryoptionalmin_win_ratequeryoptionalmin_volumequeryoptionallimitqueryoptionalcursorqueryoptional{
"traders": [
{
"wallet": "0x9bbb821a51d9c0ef24dd8592e9caad7fc469bbf2",
"rank": 1,
"account_value": 0.0,
"total_realized_pnl": 2152061.802894,
"cum_realized_pnl": 4018227.3687610077,
"roi": 0.0,
"pnl_pct": null,
"total_volume": 45909810.173497,
"total_fee": 3873.5595550000003,
"trade_count": 10,
"win_count": 7,
"loss_count": 3,
"win_rate": 0.699999988079071,
"long_win_rate": 0.6000000238418579,
"short_win_rate": 0.800000011920929,
"long_pnl": 1163849.598942,
"short_pnl": 988212.203952,
"profit_factor": 32.784751892089844,
"expectancy": 215206.18028939998,
"max_drawdown_pct": 154.60000610351562,
"current_drawdown_pct": 100.0,
"calmar_ratio": 0.0,
"recovery_factor": 999.0,
"max_win_streak": 7,
"max_loss_streak": 3,
"avg_leverage": 0.0,
"avg_duration_seconds": 82171,
"size_cohort": "shrimp",
"pnl_cohort": "3x smart",
"pnl_cohort_tag": "consistent_winner",
"style_cohort_tag": "whale_hunter"
}
],
"totalCount": 414029,
"nextCursor": "eyJrIjoiMzBkfHBubHxkZXNjfHNpemV8IiwiciI6MywidiI6MTE3OTc3MS42Mzc1NjI5OTk3LCJ3IjoiMHgwMDRlZGNkNDAzNjBlMjkzZTRjZjI2MGQyZWJkZjhjNzA3NmMxYmI4In0"
}sort is a closed allow-list. An unknown key gets a 400, not a clamped default — sorting by
something other than what was asked for is a wrong answer that looks like a right one.
The 20 accepted keys: pnl, realized_pnl, roi, volume, trades, win_rate,
long_win_rate, short_win_rate, account_value, profit_factor, expectancy, calmar,
recovery_factor, max_drawdown, current_drawdown, avg_leverage, avg_duration, fees,
win_streak, loss_streak.
Both cohort labels are returned regardless of which axis you filtered on. pnl_pct is a
null-guarded ROI: the stored roi is raw even when equity is a rounding error (values like 4.8e10
occur), so pnl_pct is null below $1 of equity and a client can display one column without
special-casing.