vike

Recipe 2 of 33

How are crypto speculators positioned? A Commitments-of-Traders view for crypto

Split one Hyperliquid market's open interest into long and short by account-size category with one call, then repeat it with an earlier end for the weekly change.

GET /v1/hl-cohorts/symbols/{symbol}/cohort-metrics with axis=size answers it in one call. A Commitments-of-Traders report splits a market's open interest by trader category; this splits one Hyperliquid perp's open interest by account size, one row per category with its long notional, total notional and position counts for the newest settled hour. The full parameter list is on Coin cohort metrics.

Quick answer

BTC here; any Hyperliquid ticker works in the path.

cURL
# BTC open interest by account-size category, long and short, newest settled hour
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hl-cohorts/symbols/BTC/cohort-metrics?axis=size&hours=1"

Example response

Captured from the live API on 2026-10-24 at 17:11 UTC, trimmed to 5 of 12 categories. Long is total_position_value_long, short is total_position_value minus it, both in USD; the _size fields are the same split in BTC. The largest accounts (4x whale, $10m and up) were 21% long on $1.16B, while the smallest (shrimp, under $1k) were 67% long across 29,075 positions.

Example response
{
  "axis": "size",
  "label_basis": "point_in_time",
  "metrics": [
    {
      "ts": "2026-10-24T16:00:00+00:00",
      "cohort": "4x whale",
      "position_count": 22,
      "position_count_long": 7,
      "total_position_value": 1163976506.0,
      "total_position_value_long": 246682718.2,
      "total_unrealized_pnl": -7969237.26,
      "total_position_size": 14570.28685,
      "total_position_size_long": 3087.89563,
      "bias": -0.576137977,
      "label_basis": "point_in_time",
      "grading": null
    },
    {
      "ts": "2026-10-24T16:00:00+00:00",
      "cohort": "whale",
      "position_count": 104,
      "position_count_long": 58,
      "total_position_value": 460673104.4,
      "total_position_value_long": 274952948.7,
      "total_unrealized_pnl": -16449223.58,
      "total_position_size": 5766.61979,
      "total_position_size_long": 3441.80325,
      "bias": 0.1937008958,
      "label_basis": "point_in_time",
      "grading": null
    },
    {
      "ts": "2026-10-24T16:00:00+00:00",
      "cohort": "dolphin",
      "position_count": 574,
      "position_count_long": 372,
      "total_position_value": 163566953.2,
      "total_position_value_long": 112704228.8,
      "total_unrealized_pnl": -2336336.234,
      "total_position_size": 2047.50014,
      "total_position_size_long": 1410.81401,
      "bias": 0.3780806769,
      "label_basis": "point_in_time",
      "grading": null
    },
    {
      "ts": "2026-10-24T16:00:00+00:00",
      "cohort": "fish",
      "position_count": 1805,
      "position_count_long": 1173,
      "total_position_value": 134061757.2,
      "total_position_value_long": 94985957.83,
      "total_unrealized_pnl": -1754803.384,
      "total_position_size": 1678.15134,
      "total_position_size_long": 1189.01294,
      "bias": 0.4170477819,
      "label_basis": "point_in_time",
      "grading": null
    },
    {
      "ts": "2026-10-24T16:00:00+00:00",
      "cohort": "shrimp",
      "position_count": 29075,
      "position_count_long": 20534,
      "total_position_value": 58006945.99,
      "total_position_value_long": 38762227.59,
      "total_unrealized_pnl": -349867.7977,
      "total_position_size": 726.50801,
      "total_position_size_long": 485.55114,
      "bias": 0.3364684842,
      "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

The same report a week earlier. end without start returns the newest hours at or before it, so the week-on-week change is a second call; ending at 16:59:59 keeps the 16:00 hour. On 2026-10-17 at 16:00 UTC 4x whale was 23% long on $936M and shrimp 71% long.

cURL — a week earlier
# the same report at an earlier hour: end is ISO-8601 UTC
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hl-cohorts/symbols/BTC/cohort-metrics?axis=size&end=2026-10-17T16:59:59Z&hours=1"

Every hour of the week. hours=168 returns a week of hourly buckets, every category in each.

cURL — 168 hours
# a week of hourly reports for BTC, newest first
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hl-cohorts/symbols/BTC/cohort-metrics?axis=size&hours=168"

One category across every market. /segments/{cohort}/summary sums one category over every perp at the newest 5-minute snapshot.

cURL — whole book
# what the $10m-and-up accounts hold across all of Hyperliquid
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/hl-cohorts/segments/4x_whale/summary?axis=size"

Before you rely on it

Categories are account sizes, on one venue

These are Hyperliquid wallets only, grouped by the account value of each wallet, not by trader type as in a regulator's report. Every long has a short on the other side, so the categories net to roughly zero across the market: read a category's bias against the others. Rows are hourly and settled, so the newest one is one to two hours old.

End a window at HH:59:59

An hourly bucket is stamped with its hour but matched against the time of its last snapshot, which falls inside the hour, so an end exactly on the hour leaves that hour out: end=2026-10-17T17:00:00Z returns 16:00 as its newest bucket. End at HH:59:59 to keep hour HH.

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.

Ask your agent
Show a Commitments-of-Traders style report for BTC on Hyperliquid: long and short by account size
Example response
{  "axis": "size",  "label_basis": "point_in_time",  "metrics": [    {      "ts": "2026-10-24T16:00:00+00:00",      "cohort": "4x whale",      "position_count": 22,      "position_count_long": 7,      "total_position_value": 1163976506.0,      "total_position_value_long": 246682718.2,      "total_unrealized_pnl": -7969237.26,      "total_position_size": 14570.28685,      "total_position_size_long": 3087.89563,      "bias": -0.576137977,      "label_basis": "point_in_time",      "grading": null    },    {      "ts": "2026-10-24T16:00:00+00:00",      "cohort": "whale",      "position_count": 104,      "position_count_long": 58,      "total_position_value": 460673104.4,      "total_position_value_long": 274952948.7,      "total_unrealized_pnl": -16449223.58,      "total_position_size": 5766.61979,      "total_position_size_long": 3441.80325,      "bias": 0.1937008958,      "label_basis": "point_in_time",      "grading": null    },    {      "ts": "2026-10-24T16:00:00+00:00",      "cohort": "dolphin",      "position_count": 574,      "position_count_long": 372,      "total_position_value": 163566953.2,      "total_position_value_long": 112704228.8,      "total_unrealized_pnl": -2336336.234,      "total_position_size": 2047.50014,      "total_position_size_long": 1410.81401,      "bias": 0.3780806769,      "label_basis": "point_in_time",      "grading": null    },    {      "ts": "2026-10-24T16:00:00+00:00",      "cohort": "fish",      "position_count": 1805,      "position_count_long": 1173,      "total_position_value": 134061757.2,      "total_position_value_long": 94985957.83,      "total_unrealized_pnl": -1754803.384,      "total_position_size": 1678.15134,      "total_position_size_long": 1189.01294,      "bias": 0.4170477819,      "label_basis": "point_in_time",      "grading": null    },    {      "ts": "2026-10-24T16:00:00+00:00",      "cohort": "shrimp",      "position_count": 29075,      "position_count_long": 20534,      "total_position_value": 58006945.99,      "total_position_value_long": 38762227.59,      "total_unrealized_pnl": -349867.7977,      "total_position_size": 726.50801,      "total_position_size_long": 485.55114,      "bias": 0.3364684842,      "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  }}