Coin indices
Smart Money Index, Whale-vs-Shrimp Index and the whale and smart bias of one symbol, as ratios — the newest snapshot and the settled hourly series.
GET https://data.vike.io/v1/hl-cohorts/symbols/{symbol}/indicesThe asset page's Smart Money Index (SMI), Whale-vs-Shrimp Index (WSI) and whale and smart bias for
one symbol, as ratios in [−1, +1] — the site multiplies them by 100 for display. latest is the
newest 5-minute snapshot; series is the settled hourly rows, newest first. Both are computed with
the site's own rung sets and SQL.
# BTC's indices now and for the last week, hourly
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/BTC/indices" \
-H "X-API-KEY: $VIKE_API_KEY"
# just the current reading: latest is the newest 5-minute snapshot whatever window is asked for
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/ETH/indices?hours=1" \
-H "X-API-KEY: $VIKE_API_KEY" \
| jq '.latest'
# the widest window, 8760 hours: limit caps it at 5000 rows, and has_more says whether older ones remain
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/BTC/indices?hours=8760" \
-H "X-API-KEY: $VIKE_API_KEY" \
| jq '{has_more, rows: (.series | length)}'
# a pinned window: start and end are ISO-8601 UTC, and end is inclusive
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/BTC/indices?start=2026-09-01T00:00:00Z&end=2026-09-07T23:00:00Z" \
-H "X-API-KEY: $VIKE_API_KEY"
# the page before a cut one: END is the oldest ts of the previous page minus 1 second
curl -s "https://data.vike.io/v1/hl-cohorts/symbols/BTC/indices?hours=8760&end=$END" \
-H "X-API-KEY: $VIKE_API_KEY"symbolpathrequiredstartqueryoptionalhours newest hours.endqueryoptionalstart, the window is the hours newest hours at or before it.hoursqueryoptionalstart is omitted. Default 168, max 8760.limitqueryoptionalhas_more says there are older ones (page back with end = the oldest ts minus 1 second; end is inclusive).{
"symbol": "BTC",
"label_basis": "point_in_time",
"latest": {
"ts": "2026-10-24T07:10:00+00:00",
"smi": -0.120895,
"wsi": -0.339371,
"whale_bias": -0.205388,
"smart_bias": -0.122256,
"label_basis": "current"
},
"series": [
{
"ts": "2026-10-24T06:00:00+00:00",
"smi": -0.12074,
"wsi": -0.337079
},
{
"ts": "2026-10-24T05:00:00+00:00",
"smi": -0.1202,
"wsi": -0.335166
}
],
"has_more": false
}What each value is
A long share is long / (long + short) notional of a set of rungs.
| Field | Definition |
|---|---|
smi | long share of 3x smart, 2x smart and smart − long share of rekt, 2x rekt and 3x rekt |
wsi | long share of 4x whale, 3x whale, 2x whale and whale − long share of shrimp and 2x shrimp |
whale_bias | (long − short) / (long + short) over the whale rungs. latest only. |
smart_bias | (long − short) / (long + short) over the smart rungs. latest only. |
smi and smart_bias use the realized-PnL ladder, wsi and whale_bias the account-size ladder;
both are on Cohorts and axes. The hourly sets also count the
older hours that were stored under the retired spellings of the same rungs. Values are rounded to
six decimal places.
A value is null, never 0, when a rung set holds no positions — null says nothing is there,
and 0 would read as perfectly balanced. A symbol with no snapshot at all answers with latest.ts
and every latest value null.
The response
| Field | What it is |
|---|---|
symbol | The symbol in its stored spelling (btc → BTC, kpepe → kPEPE). |
label_basis | point_in_time: it describes series, whose pnl rungs carry each hour's point-in-time label. |
latest | {ts, smi, wsi, whale_bias, smart_bias, label_basis} at the newest 5-minute snapshot. Its pnl rungs are graded by today's wallet dictionary, as the site's right-edge point is, so latest.label_basis is current. Always the newest snapshot, whatever window was asked for. |
series | {ts, smi, wsi} per settled hour, newest first. The hour in progress is never in it; that is latest's job. |
has_more | true when the window holds older rows than limit returned. |
The window and paging
The window is start as given, or else the hours newest hours at or before end (default 168,
max 8760). At most limit rows come back (default and max 5000), so a window over 5000 hours takes
two calls; has_more says older rows exist. Page back with end = the oldest ts minus 1 second:
end is inclusive, so passing the oldest ts itself repeats that row. A start more than 8760
hours before end (or now, when end is omitted) is a 400.
Errors
| Status | When |
|---|---|
400 | The symbol is blank, start or end is not ISO-8601, or start is more than 8760 hours before end. The body is {"detail": "…"}. |
422 | hours is above 8760 or limit above 5000. |
401 / 429 | No or bad credential, or the hourly budget or the per-minute cap is spent — see Authentication and Rate limits. |
503 | The store behind it is unavailable. |
Every rung's own hourly positioning on a symbol is on
/symbols/{symbol}/cohort-metrics; the
point-in-time labels are explained on Label basis.