vike

Flow-adjusted leaderboard

Ranked on fills-derived realized PnL, with external flow reported beside it.

GET https://data.vike.io/v1/hyperliquid/leaderboard/flow-adjusted

Ranked on fills-derived realized PnL, with external flow reported beside it.

Truncated: traders holds 3 rows (limit=3); the first is shown in full, including the deposit and withdrawal figures and the flow_unbalanced flag described below.

cURL
# who earned the most from trading in 30 days, deposits excluded by construction
curl -s "https://data.vike.io/v1/hyperliquid/leaderboard/flow-adjusted?limit=3&window=30d" \
  -H "X-API-KEY: $VIKE_API_KEY"

# next page of the first call: NEXT is its nextCursor, passed back verbatim with the same window
curl -s "https://data.vike.io/v1/hyperliquid/leaderboard/flow-adjusted?window=30d&limit=3&cursor=$NEXT" \
  -H "X-API-KEY: $VIKE_API_KEY"

# this week's board
curl -s "https://data.vike.io/v1/hyperliquid/leaderboard/flow-adjusted?window=7d&limit=25" \
  -H "X-API-KEY: $VIKE_API_KEY"

# the all-time board, the largest page the route serves
curl -s "https://data.vike.io/v1/hyperliquid/leaderboard/flow-adjusted?window=all&limit=500" \
  -H "X-API-KEY: $VIKE_API_KEY"

# drop the wallets whose attribution is unreliable; the route reports flow_unbalanced but never filters on it
curl -s "https://data.vike.io/v1/hyperliquid/leaderboard/flow-adjusted?window=30d&limit=100" \
  -H "X-API-KEY: $VIKE_API_KEY" \
  | jq '.traders[] | select(.flow_unbalanced | not) | {wallet, rank, total_realized_pnl}'
windowqueryoptional
1d | 7d | 30d | all. Default 30d. The trades CLOSED in the current UTC day and the 1, 7, 30 or 365 days before it, so PnL, trade counts, win rates and tags are what was realized in the window
limitqueryoptional
Default 25, max 500
cursorqueryoptional
Keyset cursor
min_tradesqueryoptional
Minimum closed trades in the window. Default 3; 0 keeps any wallet with at least one
Example response
{
  "traders": [
    {
      "wallet": "0x30afce2f6842bf183c7e3fe7162e279ff0b6393e",
      "rank": 1,
      "account_value": 0.0,
      "total_realized_pnl": 11709016.230618,
      "cum_realized_pnl": 3615564.967409672,
      "roi": 0.0,
      "pnl_pct": null,
      "total_volume": 280185067.76154,
      "total_fee": 39422.057744,
      "trade_count": 9,
      "win_count": 6,
      "loss_count": 3,
      "win_rate": 0.6666666865348816,
      "long_win_rate": 0.6666666865348816,
      "short_win_rate": 0.0,
      "long_pnl": 11709016.230618,
      "short_pnl": 0.0,
      "profit_factor": 2.5232200622558594,
      "expectancy": 1301001.803402,
      "max_drawdown_pct": null,
      "current_drawdown_pct": null,
      "calmar_ratio": null,
      "recovery_factor": null,
      "max_win_streak": 2,
      "max_loss_streak": 3,
      "avg_leverage": 0.0,
      "avg_duration_seconds": 988861,
      "size_cohort": "shrimp",
      "pnl_cohort": "3x smart",
      "pnl_cohort_tag": "consistent_winner",
      "style_cohort_tag": "whale_hunter",
      "attributed": {
        "trading_pnl_total": -8843945.93713,
        "realized_trading_pnl": -561313.3808879973,
        "delta_unrealized_pnl": -8282632.556242004,
        "funding_paid_usd": 0.0,
        "delta_account_value": -18664526.948445,
        "account_value_eod": 0.0,
        "active_days": 11,
        "last_day": "2026-10-18",
        "perps_trading_pnl": -8843945.93713
      },
      "flow": {
        "deposit_usd": 199417.988685,
        "withdraw_usd": 9999999.0,
        "net_external_flow_usd": -9820581.011315,
        "net_total_flow_usd": -9820581.011315
      },
      "flow_unbalanced": true
    }
  ],
  "totalCount": 172293,
  "nextCursor": "eyJrIjoiZmxvd2FkanwzMGQiLCJyIjozLCJ2IjoxMDM3MDg0OS4wNDA3NjM5OTgsInciOiIweDAyMGNhNjZjMzBiZWMyYzRmZTM4NjFhOTRlNGRiNGE0OThhMzU4NzIifQ",
  "ranked_by": "total_realized_pnl (fills-derived; excludes deposits by construction)"
}

A window is what a wallet realized in it. window covers the trades closed in the current UTC day and the 1, 7, 30 or 365 days before it (all is 365 days), whenever they opened, so "who earned the most from trading in 30 days" is answered by the trades that closed in them. (Until 2026-10-19 the window held the trades opened in it and since closed; see the changelog.) min_trades defaults to 3 closed trades in the window; min_trades=0 keeps any wallet with at least one, which is what the board listed before. The attributed and flow blocks are sums over the same number of days of wallet_pnl_attributed_daily and ledger_events, which count by calendar day and ledger timestamp, not by the trades' close.

An account-value delta is not a trading result: a wallet that deposits $1M and loses $50k reads as +$950k on any equity-delta ranking. The rank here comes from the sum of closed round-trip PnL, which excludes deposits by construction — there is no flow term in it to corrupt. Deposits, withdrawals and the daily attribution figures come back in the same row, so a caller can see what was excluded rather than trust that something was.

flow_unbalanced is a per-row honesty flag, not a filter

flow_unbalanced is true when the wallet had a send in the window, which is when the attributed block beside the rank is unreliable — the ledger records send one-sided (measured 2026-08-04: 1,010,263 negative rows against 835,295 positive over 30 days, netting −$1.27B, while spotTransfer, internalTransfer and subAccountTransfer each net about 0). The rank itself does not depend on attribution and is unaffected. The flag is reported and never used to filter: active traders move money constantly, and excluding them would empty the board rather than clean it.

Example response
{  "traders": [    {      "wallet": "0x30afce2f6842bf183c7e3fe7162e279ff0b6393e",      "rank": 1,      "account_value": 0.0,      "total_realized_pnl": 11709016.230618,      "cum_realized_pnl": 3615564.967409672,      "roi": 0.0,      "pnl_pct": null,      "total_volume": 280185067.76154,      "total_fee": 39422.057744,      "trade_count": 9,      "win_count": 6,      "loss_count": 3,      "win_rate": 0.6666666865348816,      "long_win_rate": 0.6666666865348816,      "short_win_rate": 0.0,      "long_pnl": 11709016.230618,      "short_pnl": 0.0,      "profit_factor": 2.5232200622558594,      "expectancy": 1301001.803402,      "max_drawdown_pct": null,      "current_drawdown_pct": null,      "calmar_ratio": null,      "recovery_factor": null,      "max_win_streak": 2,      "max_loss_streak": 3,      "avg_leverage": 0.0,      "avg_duration_seconds": 988861,      "size_cohort": "shrimp",      "pnl_cohort": "3x smart",      "pnl_cohort_tag": "consistent_winner",      "style_cohort_tag": "whale_hunter",      "attributed": {        "trading_pnl_total": -8843945.93713,        "realized_trading_pnl": -561313.3808879973,        "delta_unrealized_pnl": -8282632.556242004,        "funding_paid_usd": 0.0,        "delta_account_value": -18664526.948445,        "account_value_eod": 0.0,        "active_days": 11,        "last_day": "2026-10-18",        "perps_trading_pnl": -8843945.93713      },      "flow": {        "deposit_usd": 199417.988685,        "withdraw_usd": 9999999.0,        "net_external_flow_usd": -9820581.011315,        "net_total_flow_usd": -9820581.011315      },      "flow_unbalanced": true    }  ],  "totalCount": 172293,  "nextCursor": "eyJrIjoiZmxvd2FkanwzMGQiLCJyIjozLCJ2IjoxMDM3MDg0OS4wNDA3NjM5OTgsInciOiIweDAyMGNhNjZjMzBiZWMyYzRmZTM4NjFhOTRlNGRiNGE0OThhMzU4NzIifQ",  "ranked_by": "total_realized_pnl (fills-derived; excludes deposits by construction)"}