Hyperliquid vaults: HLP and every vault's performance
Every Hyperliquid vault, HLP included, with its TVL, APR, PnL and return over any window, its depositors and their flows, and its equity day by day: over MCP, the vault API and the CLI, on one free key.
“Which Hyperliquid vaults made the best return over the last 30 days, and how big is HLP?”
hl_vaults“Who are the largest depositors of this vault, and how did its equity move this month? (paste a vault address)”
hl_vaultWhat a Hyperliquid vault is, and what HLP is
A Hyperliquid account its leader trades with depositors' money. Each depositor owns a share of the vault (share_pct) and its value moves with the vault's PnL; the leader keeps a stake of its own (leader_share_pct; Hyperliquid's floor is 5%, and near it new deposits can be refused) and takes a commission (leader_commission), paid out as vaultLeaderCommission ledger events.
A vault may accept deposits or not (allow_deposits). Money put in is locked until the lockup after the depositor's last deposit ends (lockup_seconds; lockup_until on each depositor). Withdrawals include distributions, a vault paying its depositors out.
The Hyperliquidity Provider vault, in its own description: “This community-owned vault provides liquidity to Hyperliquid through multiple market making strategies, performs liquidations, and accrues platform fees.” It is a parent vault with sub-vaults, and the data counts the family as ONE row (child_vaults lists the sub-vaults), so every dollar is counted once; user_vault_tvl_usd is the TVL outside it and hlp_net_flow_usd its own net flow. The leader-stake floor does not apply to it.
TVL is the vault's equity now. APR is our 30-day share-price return, annualised. PnL over a window is the equity change minus the money that came in or out, and nav is the share price chained day by day, so deposits do not read as profit. Windows are 7, 30, 90 or 365 days or all history, in whole UTC days.
Every open vault right now
Ranked by TVL, with each vault's PnL, return and net flow over the window shown: the first screen of the site's vault list.
| Vault | TVL | APR | PnL 30d | Return 30d | Net flow 30d |
|---|---|---|---|---|---|
| Hyperliquidity Provider (HLP) | $149.47M | — | +$67.8K | — | -$32.12M |
| Growi HF | $12.48M | -12.52% | -$139.0K | -1.09% | +$76.4K |
| [ Systemic Strategies ] L/S Grids | $11.19M | +210.52% | +$894.3K | +9.76% | -$447.7K |
| drkmttr | $8.32M | -98.06% | -$3.25M | -27.66% | -$466.8K |
| DOUBLETOP Vault | $6.64M | -80.22% | -$891.3K | -12.47% | +$826.2K |
| [ Systemic Strategies ] ♾️ HyperGrowth ♾️ | $6.29M | +876.33% | +$1.05M | +20.60% | -$1.03M |
| BredoStrategy | $5.08M | — | -$3.13M | — | +$1.81M |
| Long HYPE & BTC | Short Garbage | $2.89M | +96.00% | +$151.4K | +5.69% | -$74.6K |
| FC Genesis - Quantum | $2.03M | -72.79% | -$234.5K | -10.15% | -$19.6K |
| Hyperrr | $2.02M | -99.81% | -$664.4K | -40.34% | +$1.05M |
| Bitcoin Moving Average Long/Short | $1.93M | -97.84% | -$724.8K | -27.04% | -$56.1K |
| Orbit Value Strategies | $1.42M | +109.05% | +$82.8K | +6.25% | -$37.8K |
| Long LINK Short XRP | $1.32M | -100.00% | -$1.39M | -65.69% | +$800.8K |
| Black Ops | $1.29M | -88.44% | -$258.4K | -16.25% | -$39.8K |
| Enjoyooor V3 | $1.26M | -100.00% | -$1.63M | -56.56% | +$153.0K |
| Quantitative Market Neutral Strategy | $1.14M | +3.19% | +$2.4K | +0.26% | +$148.1K |
| Ultron | $1.08M | -89.19% | -$194.7K | -16.71% | +$177.9K |
| AIQuantPulse | $1.08M | -40.49% | -$47.6K | -4.18% | -$32.4K |
| AILAB TEST ULTRA | $917.4K | +103.17% | +$51.2K | +6.00% | -$1.0K |
| AceVault Hyper01 | $908.0K | +198.19% | +$80.6K | +9.40% | -$107.7K |
| +convexity | $806.9K | -32.10% | -$23.2K | -3.13% | +$88.5K |
| Jade Lotus Capital | $806.5K | -94.60% | -$227.7K | -21.33% | -$59.7K |
| Elsewhere | $804.8K | +553.31% | +$115.0K | +16.68% | — |
| Citadel | $754.6K | +4.31% | +$1.9K | +0.35% | +$63.1K |
| PF1 | $750.8K | — | -$4.6K | — | +$248.6K |
The first 25 of 3,056 open vaults, as the site's list opens · built 2026-11-04 02:52 UTC.
Every vault, on vike.io
Every Hyperliquid vault ranked by TVL: APR, PnL and share-price return over 7 days to all time, leverage, leader stake, deposits and withdrawals; each vault's own page with its equity and flows, open positions, risk and largest depositors.
The vault dataset
Vaults
Every Hyperliquid vault with TVL, APR and PnL, return, net flow and volume over 7, 30, 90 or 365 days or all history; platform totals, depositors, deposit and withdrawal flows and an equity and share-price series per vault.
- Routes
/v1/hyperliquid/vaults- Built on
- Fills
- MCP
hl_vaults
GET /v1/hyperliquid/vaults · Every vault, ranked: TVL, APR, PnL, return and flows
- CLI
vike-data hl vaults- MCP
hl_vaults· 1 credit- Cost
- 1 request of the hourly limit
Every Hyperliquid vault, one row per vault family: current TVL, APR, the window's PnL, return, net flow, volume and fills, and the risk columns.
HLP and its sub-vaults are ONE row (child_vaults lists them), every dollar counted once. A window ends on the newest recorded day and reaches back 7, 30, 90 or 365 days; all is all recorded history. Windows are whole UTC days, from the close of the start day to the newest reading, so a figure can differ from the venue's own rolling week or month by up to one day's movement; tvl_usd is within a few percent of the venue's own figure. The top-level window states the resolved bounds, and each row its own start and partial: a vault younger than the window starts later. A family is measured from the first day inside the window on which all its open vaults are recorded (its start; partial true when that is later than the window's), every vault over that same span; if one of them has no record that day, pnl_usd, return_pct and apr_pct are null. A family's flows are the deposits into and withdrawals from its parent only: a sub-vault's own deposits and withdrawals are the parent moving money between its vaults, and pnl_usd nets them out. A closed sub-vault holds nothing and never holds a family's figures back.
pnl_usd is the equity change minus net deposits, null until a day after start is recorded (as return_pct is). return_pct is the chained share-price return in percentage points over the days with a measurable share-price step; days without one are skipped, and coverage (a fraction) says how much of the window was measured. It is null below 95% coverage, and null when a rebuilt day before 2026-10-27 holds a share-price jump of more than 2x either way that is not one of a pair (a jump and an equally large reversal on the next day, with no other such jump beside them, are both skipped). apr_pct annualises the vault's own 30-day return and is null for a vault, or a family, not recorded for all 30 days. net_flow_usd counts withdrawals and distributions as outflow. leverage is gross open notional over equity, leader_share_pct the leader's own share and top5_share_pct the five largest depositors' share, in percentage points, from the newest hourly reading (null for a vault not read in the last day, e.g. a closed one).
Parameters
| Parameter | In | Description |
|---|---|---|
window | query | 7d | 30d | 90d | 365d | all, whole UTC days ending on the newest recorded day. Default 30d |
sort | query | tvl | apr | pnl | return | net_flow | volume | age | leverage | top5_share. Default tvl |
order | query | asc | desc. Default desc |
status | query | open | closed | all. Default open |
deposits | query | any | open | closed: whether the vault accepts deposits. Default any |
min_tvl | query | Minimum current TVL in USD. Default 0 |
q | query | Search, 2 to 64 characters: a case-insensitive part of the vault name, or an address prefix when it starts with 0x (a sub-vault's address finds its family). Matched literally: % and _ are not wildcards |
limit | query | Default 50, max 500 |
cursor | query | Keyset cursor |
Call it
curl -H "X-API-KEY: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/vaults?window=30d&sort=return&min_tvl=100000&limit=20"
import os, requests
r = requests.get(
"https://data.vike.io/v1/hyperliquid/vaults?window=30d&sort=return&min_tvl=100000&limit=20",
headers={"X-API-KEY": os.environ["VIKE_API_KEY"]},
)
print(r.json())
vike-data hl vaults --window 30d --sort return --min-tvl 100000 --limit 20
# any MCP client; or from the terminal:
vike-data call hl_vaults --args '{"view": "list", "window": "30d", "sort": "return", "min_tvl": 100000, "limit": 20}'
Platform totals and one vault in depth
Where the money is going across vaults, and one vault's depositors, flows and equity.
Ask your AI: hl_vaults (views list, stats, flows; 1 credit a call) and hl_vault (views profile, depositors, flows, series; 1 credit a call). Connect Claude, ChatGPT or Cursor: AI & API →
Platform totals: TVL, deposits, withdrawals, vaults created
- Route
GET /v1/hyperliquid/vaults/stats- CLI
vike-data hl vaults- MCP
hl_vaults· 1 credit- Cost
- 1 request of the hourly limit
Vault platform totals: TVL with every vault family counted once, flows over the window, vaults created per month.
user_vault_tvl_usd is the TVL outside the HLP family and hlp_net_flow_usd HLP's own net flow. withdrawals_usd includes distributions (a vault paying its depositors out), as net_flow_usd does. HLP moving money between its own sub-vaults is not a flow. vaults and open_vaults count vault families. With no recorded history the money totals and window are null.
Parameters
| Parameter | In | Description |
|---|---|---|
window | query | 7d | 30d | 90d | 365d | all, whole UTC days ending on the newest recorded day. Default 30d |
Call it
curl -H "X-API-KEY: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/vaults/stats?window=30d"
import os, requests
r = requests.get(
"https://data.vike.io/v1/hyperliquid/vaults/stats?window=30d",
headers={"X-API-KEY": os.environ["VIKE_API_KEY"]},
)
print(r.json())
vike-data hl vaults --view stats --window 30d
# any MCP client; or from the terminal:
vike-data call hl_vaults --args '{"view": "stats", "window": "30d"}'
Deposits and withdrawals across every vault
- Route
GET /v1/hyperliquid/vaults/flows- CLI
vike-data hl vaults- MCP
hl_vaults· 1 credit- Cost
- 1 request of the hourly limit
Deposits into and withdrawals from every vault, newest first, from the depositor's side.
Each row names the depositor, the vault and direction (in | out; amount_usd is unsigned). pnl_rank is the depositor's rank in the top 1,000 of /v1/hyperliquid/leaderboard?window=all, else null. vault is null on rows recorded before 2026-10-25 06:31 UTC.
Parameters
| Parameter | In | Description |
|---|---|---|
window | query | 7d | 30d | 90d | 365d | all, whole UTC days ending on the newest recorded day. Default 7d |
min_usd | query | Smallest flow in USD. Default 10000 |
type | query | all | deposit | withdraw | distribution | commission. Default all |
smart_only | query | Only depositors in the top 1,000 of /v1/hyperliquid/leaderboard?window=all. Default false |
limit | query | Default 100, max 1000 |
cursor | query | Keyset cursor |
Call it
curl -H "X-API-KEY: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/vaults/flows?window=7d&min_usd=100000"
import os, requests
r = requests.get(
"https://data.vike.io/v1/hyperliquid/vaults/flows?window=7d&min_usd=100000",
headers={"X-API-KEY": os.environ["VIKE_API_KEY"]},
)
print(r.json())
vike-data hl vaults --view flows --window 7d --min-usd 100000
# any MCP client; or from the terminal:
vike-data call hl_vaults --args '{"view": "flows", "window": "7d", "min_usd": 100000}'
One vault: TVL, APR, leverage and all five windows
- Route
GET /v1/hyperliquid/vaults/{vault}- CLI
vike-data hl vault- MCP
hl_vault· 1 credit- Cost
- 1 request of the hourly limit
One vault: registry fields, current TVL, APR, leverage, depositor concentration and all five windows.
windows holds 7d, 30d, 90d, 365d and all, each with start, end, partial, pnl_usd, return_pct, net_flow_usd, volume_usd, fills and coverage as on /vaults. leverage is open notional over equity; leader_share_pct and top5_share_pct are the leader's and the five largest depositors' shares in percentage points; active_depositors counts depositors holding at least $1. A parent vault's figures include its sub-vaults (child_vaults). With no recorded history windows, tvl_usd and apr_pct are null; an unknown address is a 404.
The vault's fills, trades and positions are served by /v1/hyperliquid/wallets/{address}/… with the vault's address.
Parameters
| Parameter | In | Description |
|---|---|---|
vaultrequired | path | Vault address |
Call it
curl -H "X-API-KEY: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/vaults/0xdfc24b077bc1425ad1dea75bcb6f8158e10df303"
import os, requests
r = requests.get(
"https://data.vike.io/v1/hyperliquid/vaults/0xdfc24b077bc1425ad1dea75bcb6f8158e10df303",
headers={"X-API-KEY": os.environ["VIKE_API_KEY"]},
)
print(r.json())
vike-data hl vault 0xdfc24b077bc1425ad1dea75bcb6f8158e10df303
# any MCP client; or from the terminal:
vike-data call hl_vault --args '{"vault": "0xdfc24b077bc1425ad1dea75bcb6f8158e10df303"}'
Who is in a vault: every depositor, largest share first
- Route
GET /v1/hyperliquid/vaults/{vault}/depositors- CLI
vike-data hl vault- MCP
hl_vault· 1 credit- Cost
- 1 request of the hourly limit
A vault's current depositors, largest share first.
share_pct is the depositor's share of the vault in percentage points and equity_usd its value at as_of; a parent vault's depositors own shares of the parent and its sub-vaults together, so the top-level equity_usd is theirs combined. pnl_usd is that value minus the cost basis of the depositor's current position (unrealised, as the venue reports it), all_time_pnl_usd that value minus everything the depositor ever put in net of what it took out. entered_at is the depositor's entry into the vault and lockup_until the end of the lockup after its last deposit (null when the vault has no lockup). pnl_rank is the depositor's rank in the top 1,000 of /v1/hyperliquid/leaderboard?window=all, else null. The list is complete: every depositor holding at least min_equity_usd, not only the largest 100; a wallet that has left the vault is never listed.
Parameters
| Parameter | In | Description |
|---|---|---|
vaultrequired | path | Vault address |
sort | query | share | pnl | all_time_pnl | entered. Default share |
order | query | asc | desc. Default desc |
smart_only | query | Only depositors in the top 1,000 of /v1/hyperliquid/leaderboard?window=all. Default false |
min_equity_usd | query | Smallest depositor equity in USD, at least 1. Default 1 |
limit | query | Default 100, max 1000 |
cursor | query | Keyset cursor |
Call it
curl -H "X-API-KEY: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/vaults/0xdfc24b077bc1425ad1dea75bcb6f8158e10df303/depositors?limit=20"
import os, requests
r = requests.get(
"https://data.vike.io/v1/hyperliquid/vaults/0xdfc24b077bc1425ad1dea75bcb6f8158e10df303/depositors?limit=20",
headers={"X-API-KEY": os.environ["VIKE_API_KEY"]},
)
print(r.json())
vike-data hl vault 0xdfc24b077bc1425ad1dea75bcb6f8158e10df303 --view depositors --limit 20
# any MCP client; or from the terminal:
vike-data call hl_vault --args '{"view": "depositors", "vault": "0xdfc24b077bc1425ad1dea75bcb6f8158e10df303", "limit": 20}'
One vault's deposits, withdrawals and commissions
- Route
GET /v1/hyperliquid/vaults/{vault}/flows- CLI
vike-data hl vault- MCP
hl_vault· 1 credit- Cost
- 1 request of the hourly limit
One vault's own deposits, withdrawals, distributions and leader commissions, newest first.
counterparty is the depositor on deposits and withdrawals (on a deposit it is read from the depositor's own row of the same event; null when that row is missing or ambiguous). amount_usd is unsigned and direction is in or out. On a parent vault (HLP), the parent moving money into or out of its own sub-vaults is not a row.
Parameters
| Parameter | In | Description |
|---|---|---|
vaultrequired | path | Vault address |
window | query | 7d | 30d | 90d | 365d | all, whole UTC days ending on the newest recorded day. Default 30d |
type | query | all | deposit | withdraw | distribution | commission. Default all |
limit | query | Default 100, max 1000 |
cursor | query | Keyset cursor |
Call it
curl -H "X-API-KEY: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/vaults/0xdfc24b077bc1425ad1dea75bcb6f8158e10df303/flows?window=30d"
import os, requests
r = requests.get(
"https://data.vike.io/v1/hyperliquid/vaults/0xdfc24b077bc1425ad1dea75bcb6f8158e10df303/flows?window=30d",
headers={"X-API-KEY": os.environ["VIKE_API_KEY"]},
)
print(r.json())
vike-data hl vault 0xdfc24b077bc1425ad1dea75bcb6f8158e10df303 --view flows --window 30d
# any MCP client; or from the terminal:
vike-data call hl_vault --args '{"view": "flows", "vault": "0xdfc24b077bc1425ad1dea75bcb6f8158e10df303", "window": "30d"}'
Equity, share price and PnL, day by day
- Route
GET /v1/hyperliquid/vaults/{vault}/series- CLI
vike-data hl vault- MCP
hl_vault· 1 credit- Cost
- 1 request of the hourly limit
Equity, share price, net flow and PnL of one vault per hour or day, oldest first.
nav is the chained share price, 1.0 at the first point of the first page; a missing step ends the chain (nav null from there), it is never read as 1.0. pnl_usd is the equity change minus the point's net flow. The cursor carries the previous point, so nav and pnl_usd continue across pages. A parent vault's (HLP's) series is its family's: equity_usd sums the parent and the sub-vaults read at that hour, or for a day at the parent's last reading of it (a closed one while it existed, a new one from its first reading), and net_flow_usd is the parent's depositors' deposits and withdrawals, so money moved between the parent and its sub-vaults is not PnL.
Parameters
| Parameter | In | Description |
|---|---|---|
vaultrequired | path | Vault address |
bucket | query | 1d | 1h. Default 1d |
start | query | ISO-8601 UTC bounds |
end | query | ISO-8601 UTC bounds |
limit | query | Default 500, max 5000 |
cursor | query | Keyset cursor |
Call it
curl -H "X-API-KEY: $VIKE_API_KEY" \
"https://data.vike.io/v1/hyperliquid/vaults/0xdfc24b077bc1425ad1dea75bcb6f8158e10df303/series?bucket=1d&start=2026-10-01T00%3A00%3A00Z"
import os, requests
r = requests.get(
"https://data.vike.io/v1/hyperliquid/vaults/0xdfc24b077bc1425ad1dea75bcb6f8158e10df303/series?bucket=1d&start=2026-10-01T00%3A00%3A00Z",
headers={"X-API-KEY": os.environ["VIKE_API_KEY"]},
)
print(r.json())
vike-data hl vault 0xdfc24b077bc1425ad1dea75bcb6f8158e10df303 --view series --bucket 1d --start 2026-10-01T00:00:00Z
# any MCP client; or from the terminal:
vike-data call hl_vault --args '{"view": "series", "vault": "0xdfc24b077bc1425ad1dea75bcb6f8158e10df303", "bucket": "1d", "start": "2026-10-01T00:00:00Z"}'