vike

Recipe 18 of 65

Closed trades of a wallet: win rate, hold time, best and worst coin

/wallets/{address}/trades lists the wallet's closed round trips with hold time and realized PnL, and /trades/summary totals them overall and per coin, which gives the win rate, the median hold and the best and worst coin.

GET /v1/hyperliquid/wallets/{address}/trades answers it in one call: closed round trips, newest close first, one row per position from open to close, with entry and exit price, hold time, peak size and realized PnL. GET /v1/hyperliquid/wallets/{address}/trades/summary aggregates the same trades overall and per coin, so the win rate, the median hold time and the best and worst coin come from one more call. The full parameter lists are on Wallet closed trades and Wallet trade statistics.

Quick answer

Put the address in the path.

cURL
# the newest closed round trips of one wallet
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/wallets/0xfc667adba8d4837586078f4fdcdc29804337ca06/trades?limit=5"

Example response

Captured from the live API on 2026-10-24 at 17:17 UTC, trimmed to 3 of 5 rows. The legacy asset copy of symbol is left out.

Three winning shorts closed on 2026-10-24, held 37 to 93 hours (duration_seconds). realized_pnl and volume_usd are USD; max_size_usd is the largest the position got, and one trade can be thousands of fills.

Example response
{
  "wallet": "0xfc667adba8d4837586078f4fdcdc29804337ca06",
  "trades": [
    {
      "symbol": "BTC",
      "direction": "short",
      "open_ts": "2026-10-22T13:41:37.609000+00:00",
      "close_ts": "2026-10-24T15:20:05.819000+00:00",
      "duration_seconds": 178708,
      "entry_price": 81641.58978048603,
      "exit_price": 79313.0,
      "max_size_token": 116.39549000005138,
      "max_size_usd": 9498686.752434192,
      "volume_usd": 22036034.51329,
      "realized_pnl": 158614.864015,
      "total_fee": 1556.3926339999998,
      "fill_count": 2366,
      "is_complete": true
    },
    {
      "symbol": "ZEC",
      "direction": "short",
      "open_ts": "2026-10-22T19:36:10.329000+00:00",
      "close_ts": "2026-10-24T09:17:02.422000+00:00",
      "duration_seconds": 135652,
      "entry_price": 1235.790315035104,
      "exit_price": 1152.1,
      "max_size_token": 5347.359999999909,
      "max_size_usd": 6678317.9039998865,
      "volume_usd": 15707643.197,
      "realized_pnl": 359493.257218,
      "total_fee": 2082.188699,
      "fill_count": 3008,
      "is_complete": true
    },
    {
      "symbol": "NEAR",
      "direction": "short",
      "open_ts": "2026-10-20T12:01:33.106000+00:00",
      "close_ts": "2026-10-24T09:04:39.627000+00:00",
      "duration_seconds": 334986,
      "entry_price": 5.05892841981383,
      "exit_price": 4.4976,
      "max_size_token": 2036088.9999999967,
      "max_size_usd": 11017888.405699981,
      "volume_usd": 37317584.00470997,
      "realized_pnl": 277461.051203,
      "total_fee": 4099.403985999999,
      "fill_count": 21162,
      "is_complete": true
    }
  ],
  "nextCursor": "eyJhIjoieHl6OkNSQ0wiLCJjIjoiMjAyNi0xMC0yNCAwODo0NzozMC41MjMiLCJkIjotMSwibyI6IjIwMjYtMTAtMjMgMDg6MjY6MjIuOTU4In0"
}

Variations

Win rate and hold time over 30 days. Read the summary's overall block.

cURL — overall
# win rate, median and average hold, and net PnL over 30 days
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/wallets/0xfc667adba8d4837586078f4fdcdc29804337ca06/trades/summary?window=30d" \
  | jq '.overall | {trade_count, closed_trade_count, win_rate, median_duration, avg_duration, net_pnl}'

Best and worst coin. Sort the per-coin rows by net PnL and keep both ends.

cURL — best and worst coin
# the worst and the best coin of the last 30 days by net PnL
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/wallets/0xfc667adba8d4837586078f4fdcdc29804337ca06/trades/summary?window=30d" \
  | jq '.by_symbol | sort_by(.net_pnl) | [first, last] | map({symbol, net_pnl, trade_count, win_rate, median_duration})'

Captured from the live API on 2026-10-24 at 17:16 UTC, the output of that jq filter.

[
  {
    "symbol": "XRP",
    "net_pnl": -1991444.444604,
    "trade_count": 3,
    "win_rate": 0.0,
    "median_duration": 6460887
  },
  {
    "symbol": "xyz:SKHX",
    "net_pnl": 3059019.817753,
    "trade_count": 9,
    "win_rate": 0.4444444444444444,
    "median_duration": 75812
  }
]

One coin's trades. Add symbol, and start for the close time to begin from.

cURL — BTC trades
# every closed BTC round trip of the wallet in October
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hyperliquid/wallets/0xfc667adba8d4837586078f4fdcdc29804337ca06/trades?symbol=BTC&start=2026-10-01T00:00:00Z&limit=1000"

Before you rely on it

The list holds closed trades; the summary counts open ones too

/trades returns only closed round trips, and start filters on the close time. /trades/summary also counts still-open trades that have booked part of their PnL, so its trade_count and win_rate include them; closed_trade_count and open_trade_count show the split, and every duration field uses closed trades only. A summary window is the last N times 24 hours of activity, not whole UTC days. For a wallet with no trades at all the summary is a 400, not zeros, while the list is simply empty.

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_wallet tool answers with view: trades_summary and window: 30d, at 1 credit a call.

Ask your agent
What is the win rate, typical hold time and best and worst coin of Hyperliquid wallet 0xfc667adba8d4837586078f4fdcdc29804337ca06 over the last 30 days?
Example response
{  "wallet": "0xfc667adba8d4837586078f4fdcdc29804337ca06",  "trades": [    {      "symbol": "BTC",      "direction": "short",      "open_ts": "2026-10-22T13:41:37.609000+00:00",      "close_ts": "2026-10-24T15:20:05.819000+00:00",      "duration_seconds": 178708,      "entry_price": 81641.58978048603,      "exit_price": 79313.0,      "max_size_token": 116.39549000005138,      "max_size_usd": 9498686.752434192,      "volume_usd": 22036034.51329,      "realized_pnl": 158614.864015,      "total_fee": 1556.3926339999998,      "fill_count": 2366,      "is_complete": true    },    {      "symbol": "ZEC",      "direction": "short",      "open_ts": "2026-10-22T19:36:10.329000+00:00",      "close_ts": "2026-10-24T09:17:02.422000+00:00",      "duration_seconds": 135652,      "entry_price": 1235.790315035104,      "exit_price": 1152.1,      "max_size_token": 5347.359999999909,      "max_size_usd": 6678317.9039998865,      "volume_usd": 15707643.197,      "realized_pnl": 359493.257218,      "total_fee": 2082.188699,      "fill_count": 3008,      "is_complete": true    },    {      "symbol": "NEAR",      "direction": "short",      "open_ts": "2026-10-20T12:01:33.106000+00:00",      "close_ts": "2026-10-24T09:04:39.627000+00:00",      "duration_seconds": 334986,      "entry_price": 5.05892841981383,      "exit_price": 4.4976,      "max_size_token": 2036088.9999999967,      "max_size_usd": 11017888.405699981,      "volume_usd": 37317584.00470997,      "realized_pnl": 277461.051203,      "total_fee": 4099.403985999999,      "fill_count": 21162,      "is_complete": true    }  ],  "nextCursor": "eyJhIjoieHl6OkNSQ0wiLCJjIjoiMjAyNi0xMC0yNCAwODo0NzozMC41MjMiLCJkIjotMSwibyI6IjIwMjYtMTAtMjMgMDg6MjY6MjIuOTU4In0"}