Recipe 3 of 8
Liquidation cascade on Hyperliquid: did whales see it coming?
Find the hour of the move with candles, pull the liquidations inside it, then read every cohort's long/short bias in the hours before.
Three calls. /v1/hyperliquid/ohlcv finds the hour of the move. /v1/hyperliquid/liquidations lists the forced closes
inside it. /v1/hl-cohorts/symbols/{symbol}/cohort-metrics returns, for every hour, each cohort's BTC long and short
notional and its bias, so you can read how whales were positioned before the move started. The parameters are on Candles, Liquidations and Coin cohort metrics.
Quick answer
# the 24 hourly BTC candles of the day, to find the hour of the move
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/ohlcv?symbol=BTC&interval=1h&start=2026-10-22T00:00:00Z&end=2026-10-23T00:00:00Z&limit=24"# longs liquidated on BTC inside that hour, newest first
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/liquidations?symbol=BTC&direction=long&start=2026-10-22T01:00:00Z&end=2026-10-22T02:00:00Z&limit=5"# every size cohort's BTC positioning, hour by hour, in the six hours before the move
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hl-cohorts/symbols/BTC/cohort-metrics?axis=size&start=2026-10-21T19:00:00Z&end=2026-10-22T01:00:00Z&hours=7"Example response
Captured from the live API on 2026-10-24 at 17:19 UTC. Candles trimmed to 3 rows, liquidations to 2 (label_computed removed), and the
cohort matrix to two cohorts at the first and last hour of the window.
{
"symbol": "BTC",
"market": "perp",
"dex": "HL",
"interval": "1h",
"tz": "UTC",
"source": "1h fills rollup",
"candles": [
{
"ts": 1792627200000,
"open": 84047.0,
"high": 84312.0,
"low": 84046.0,
"close": 84155.0,
"volume": 1245.7687899999987,
"volume_usd": 104861739.09864005,
"n_trades": 9893
},
{
"ts": 1792630800000,
"open": 84156.0,
"high": 84335.0,
"low": 83368.0,
"close": 83370.0,
"volume": 2714.893270000001,
"volume_usd": 227242737.36762005,
"n_trades": 20759
},
{
"ts": 1792634400000,
"open": 83368.0,
"high": 83442.0,
"low": 82777.0,
"close": 82894.0,
"volume": 4385.550420000001,
"volume_usd": 364199989.2592602,
"n_trades": 29471
}
]
}{
"liquidations": [
{
"liq_ts": "2026-10-22T01:54:00+00:00",
"wallet": "0xfc6c21ddb7b30a775ffff48021176d55f226f119",
"symbol": "BTC",
"side": "long",
"size_token": 0.0652,
"size_usd": 5456.581479999999,
"mark_price": 83689.9,
"size_cohort": null,
"pnl_cohort": "2x rekt",
"pnl_cohort_basis": "point_in_time",
"asset": "BTC"
},
{
"liq_ts": "2026-10-22T01:54:00+00:00",
"wallet": "0xfbfae1268fc37646c956cddeb6d1ccb5d58ce0bb",
"symbol": "BTC",
"side": "long",
"size_token": 0.01731,
"size_usd": 1448.6721689999997,
"mark_price": 83689.9,
"size_cohort": null,
"pnl_cohort": "loser",
"pnl_cohort_basis": "point_in_time",
"asset": "BTC"
}
],
"nextCursor": "eyJ0cyI6IjIwMjYtMTAtMjIgMDE6NTQ6MDAuMDAwIiwidyI6IjB4ZjY0YzExN2FmOGZlMjgzNDZmMTY5YmE0ZDU3NDM5ZWRiYWM3Mjg0NyJ9"
}{
"axis": "size",
"label_basis": "point_in_time",
"metrics": [
{
"ts": "2026-10-22T00:00:00+00:00",
"cohort": "4x whale",
"position_count": 21,
"position_count_long": 9,
"total_position_value": 1161726137.0,
"total_position_value_long": 357889877.1,
"total_unrealized_pnl": -18709507.69,
"total_position_size": 13788.05233,
"total_position_size_long": 4247.64856,
"bias": -0.3838653265,
"label_basis": "point_in_time",
"grading": null
},
{
"ts": "2026-10-22T00:00:00+00:00",
"cohort": "shrimp",
"position_count": 29882,
"position_count_long": 20375,
"total_position_value": 49859528.9,
"total_position_value_long": 22801601.8,
"total_unrealized_pnl": 158469.3891,
"total_position_size": 591.82373,
"total_position_size_long": 270.651,
"bias": -0.08536633594,
"label_basis": "point_in_time",
"grading": null
},
{
"ts": "2026-10-21T19:00:00+00:00",
"cohort": "4x whale",
"position_count": 22,
"position_count_long": 10,
"total_position_value": 1212561698.0,
"total_position_value_long": 377115964.9,
"total_unrealized_pnl": -20961813.99,
"total_position_size": 14336.13418,
"total_position_size_long": 4458.64741,
"bias": -0.3779846988,
"label_basis": "point_in_time",
"grading": null
},
{
"ts": "2026-10-21T19:00:00+00:00",
"cohort": "shrimp",
"position_count": 29963,
"position_count_long": 20386,
"total_position_value": 39885639.89,
"total_position_value_long": 20986332.59,
"total_unrealized_pnl": 141190.3246,
"total_position_size": 471.70228,
"total_position_size_long": 248.18586,
"bias": 0.05232523017,
"label_basis": "point_in_time",
"grading": null
}
],
"hours": 6,
"nextCursor": null,
"grading": null
}2026-10-22 was BTC's largest daily drop of the 30 days before the capture (84,047 to 81,410), and its largest hour
started at 01:00 UTC (84,156 to 83,370). Longs were liquidated in it; side: "long" is the side that was closed. The
window returned the six buckets from 19:00 to 00:00. In every one of them 4x whale (accounts of $10M or more) was
net short, bias between -0.33 and -0.39 on $1.14B to $1.21B of BTC notional, while 2x whale ran +0.51 to +0.62 and
shrimp stayed near flat. The largest accounts were already short; they did not turn short into the move.
Variations
Find the day first. Thirty daily candles, then pick the day with the largest move.
# BTC daily candles for the last 30 days
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/ohlcv?symbol=BTC&interval=1d&limit=30"Smart money instead of size. The same window on the realized-PnL ladder, with each hour's label as it stood then. In the capture 3x smart was net
short (-0.14 to -0.17) and 2x rekt heavily long (+0.62 to +0.68).
# PnL cohorts before the move, labels frozen at each hour
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hl-cohorts/symbols/BTC/cohort-metrics?axis=pnl&labelBasis=point_in_time&start=2026-10-21T19:00:00Z&end=2026-10-22T01:00:00Z&hours=7"Every liquidation of the hour. A page holds up to 5,000 rows; pass nextCursor back as cursor until it is null.
# the next page of the hour's long liquidations; NEXT is the previous nextCursor, verbatim
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/liquidations?symbol=BTC&direction=long&start=2026-10-22T01:00:00Z&end=2026-10-22T02:00:00Z&limit=5000&cursor=$NEXT"A squeeze instead of a dump. When price jumps, shorts are the side liquidated.
# shorts liquidated on BTC inside the hour
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/liquidations?symbol=BTC&direction=short&start=2026-10-22T01:00:00Z&end=2026-10-22T02:00:00Z&limit=100"Before you rely on it
Ask the PnL axis for point-in-time labels
On axis=pnl the default grades every past hour with today's label, which looks ahead: a wallet graded smart today
may not have been smart that night. Pass labelBasis=point_in_time for a study of the past. axis=size is always
point-in-time, so the size matrix in the example needs nothing extra.
Bias is a share of notional, and the matrix has no current hour
bias is (long - short) / (long + short) of the cohort's BTC notional in that hour, so a cohort can hold more long
positions by count and still read short, as shrimp does at 00:00. The matrix serves settled hours only, so the
newest bucket is one to two hours behind the clock; read freshness on a window that reaches the present.
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 (1 credit) answers it, with hl_liquidations (1 credit) and hl_ohlcv (1 credit) for the hour.
How were Hyperliquid BTC whales positioned in the six hours before the 2026-10-22 01:00 UTC drop, and who was liquidated in that hour?