vike
API EndpointsHyperliquid

/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/leaderboard

The 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.

cURL
# 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"
windowqueryoptional
1d | 7d | 30d | all. Default 30d
sortqueryoptional
One of 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. Default pnl. An unknown key is a 400, not a default
orderqueryoptional
asc | desc. Default desc
cohortqueryoptional
One label on axis
axisqueryoptional
size | pnl | pnl_abs. Default size
min_tradesqueryoptional
Minimum closed trades. Default 0 (no floor here)
min_win_ratequeryoptional
Minimum win rate
min_volumequeryoptional
Minimum total volume
limitqueryoptional
Default 25, max 500
cursorqueryoptional
Keyset cursor
Example response
{
  "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.

cURL
# the 30-day PnL board with the full risk-metric set beside each walletcurl -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 tradescurl -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 cohortcurl -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 percentcurl -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 dictionarycurl -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 lossescurl -s "https://data.vike.io/v1/hyperliquid/leaderboard?sort=pnl&order=asc&min_trades=20&limit=25" \  -H "X-API-KEY: $VIKE_API_KEY"
Example response
{  "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"}