Recipe 6 of 33
Do whales rotate between BTC, ETH and HYPE? (cross-asset cohort drift)
Pull the same 30 days of hourly size-cohort positioning for each coin, sum the whale rows per hour, and compare their long notional and bias across the three coins.
GET /v1/hl-cohorts/symbols/{symbol}/cohort-metrics with axis=size&hours=720 answers it, one call per coin: 30
days of hourly positioning split by account-size cohort. Sum the four whale rows (4x whale to whale, accounts
of $1m and up) for each hour, then compare the coins hour by hour; rotation shows as whale long notional falling on
one coin while it rises on another. The full parameter list is on
Coin cohort metrics.
Quick answer
The same call three times, once per coin.
# 30 days of hourly BTC positioning by account-size cohort
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hl-cohorts/symbols/BTC/cohort-metrics?axis=size&hours=720"
# the same 30 days for ETH
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hl-cohorts/symbols/ETH/cohort-metrics?axis=size&hours=720"
# the same 30 days for HYPE
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hl-cohorts/symbols/HYPE/cohort-metrics?axis=size&hours=720"Example response
Captured from the live API on 2026-10-24 at 17:12 UTC from the HYPE call with hours=1, trimmed to the 4 whale rows of 12.
Summed over the four rows, HYPE whales held $868M at 16:00 UTC, 48% of it long (bias -0.04). The
same hour from the other two calls: BTC whales $2.15B, 40% long (bias -0.19); ETH whales $2.04B,
48% long (bias -0.04). Compare long notional in USD across coins; total_position_size is in each
coin's own units and does not add up across them.
{
"axis": "size",
"label_basis": "point_in_time",
"metrics": [
{
"ts": "2026-10-24T16:00:00+00:00",
"cohort": "4x whale",
"position_count": 18,
"position_count_long": 7,
"total_position_value": 356317805.7,
"total_position_value_long": 140063060.9,
"total_unrealized_pnl": 45633942.06,
"total_position_size": 4723382.5,
"total_position_size_long": 1856689.17,
"bias": -0.2138306944,
"label_basis": "point_in_time",
"grading": null
},
{
"ts": "2026-10-24T16:00:00+00:00",
"cohort": "3x whale",
"position_count": 22,
"position_count_long": 11,
"total_position_value": 58049237.7,
"total_position_value_long": 18263739.76,
"total_unrealized_pnl": -5305953.539,
"total_position_size": 769506.18,
"total_position_size_long": 242105.86,
"bias": -0.3707500569,
"label_basis": "point_in_time",
"grading": null
},
{
"ts": "2026-10-24T16:00:00+00:00",
"cohort": "2x whale",
"position_count": 38,
"position_count_long": 20,
"total_position_value": 162442260.2,
"total_position_value_long": 107902594.6,
"total_unrealized_pnl": -3590918.866,
"total_position_size": 2153349.95,
"total_position_size_long": 1430366.99,
"bias": 0.3285039805,
"label_basis": "point_in_time",
"grading": null
},
{
"ts": "2026-10-24T16:00:00+00:00",
"cohort": "whale",
"position_count": 93,
"position_count_long": 49,
"total_position_value": 291119638.1,
"total_position_value_long": 150632573.7,
"total_unrealized_pnl": -4087107.336,
"total_position_size": 3859109.43,
"total_position_size_long": 1996799.63,
"bias": 0.03484996537,
"label_basis": "point_in_time",
"grading": null
}
],
"hours": 1,
"nextCursor": "eyJtIjoiY29ob3J0X21ldHJpY3MiLCJ0IjoiMjAyNi0xMC0yNCAxNjowMDowMCJ9",
"grading": null,
"freshness": {
"newest_ts": "2026-10-24T16:00:00+00:00",
"behind_hours": 1,
"settled_lag_ceiling_hours": 3,
"stale": false
}
}Variations
Page further back. end without start returns the hours newest buckets at or before it, so the previous 30 days is
the same call with end set just before the oldest hour you already have.
# the 720 hours before the first call: END is its oldest ts minus 1 second
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hl-cohorts/symbols/BTC/cohort-metrics?axis=size&hours=720&end=$END"The whole board at one instant. /heatmap returns every coin's cohort split at the newest 5-minute snapshot in one call, so a
"where are whales now" snapshot needs no loop.
# whale cells for the three coins at the newest snapshot
curl -s -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hl-cohorts/heatmap?axis=size" \
| jq '[.heatmap[] | select(.symbol == "BTC" or .symbol == "ETH" or .symbol == "HYPE") | {symbol, whales: [.segments[] | select(.cohort | test("whale")) | {cohort, total_long_value, bias}]}]'Before you rely on it
A cohort is a set of accounts, not the same wallets
A wallet's size cohort is stored with each snapshot from its account value at the time, so a wallet
that grows or shrinks moves between rungs; a change in whale notional can be membership, not trading. The whale rows are a few
dozen positions per coin, so one account can swing them. Each call returns about hours x 12 rows;
join the three on ts.
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_cohort_metrics tool answers, at 1 credit a call.
Over the last 30 days, did Hyperliquid whales move long exposure from BTC to ETH or HYPE?