Hyperliquid Vault Analyzer
Pricing
Pay per usage
Hyperliquid Vault Analyzer
Screen and rank Hyperliquid vaults by TVL, PnL, age, history coverage, Sharpe, Sortino, drawdown, and a transparent 100-point score.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
BB
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Rank the public Hyperliquid vault universe by TVL, cumulative or window PnL,
age, APR, Sharpe, Sortino, maximum drawdown, and the transparent 100-point
vault-score-v2 score. Results are written as one structured dataset item per
vault, ready for spreadsheets, dashboards, agents, or scheduled workflows.
Unofficial community Actor. This Actor is not affiliated with, endorsed by, sponsored by, or operated by Hyperliquid. Hyperliquid is a third-party trademark. The Actor analyzes public data and does not place trades, access a wallet, or use private exchange endpoints.
This is historical data analysis, not investment advice, a performance forecast, or an instruction to deposit into, trade, or copy a vault.
The vaults, under cold light
At 00:10 UTC, the vaults become numbers. TVL. PnL. Age. Sharpe. Sortino. Some look expensive. Some merely look successful. The score remembers the difference.
There are thousands of vaults on the screen and every one of them has a name, a balance, a history, a leader, a number that wants to be admired. The page is clean. The money is not.
Once a day, the Hyperliquid Vault Analyzer takes the public universe apart. It sorts the large from the small, the old from the new, the profitable from the merely liquid. It measures Sharpe, Sortino, drawdown, coverage and time. Then it reduces the performance to a transparent score out of one hundred, because the only thing more seductive than a return is a return with excellent typography.
No wallet. No trade. No prophecy. Just the vaults, ranked under cold light.
What you can do
- screen the complete prepared universe or up to 1,000 specified vault addresses;
- sort high-to-low or low-to-high by score, TVL, all-time cumulative PnL, selected-window PnL change, Sharpe, Sortino, age, APR, or name;
- choose 7, 30, 90, 180, or 365-day analysis windows;
- filter by current TVL, vault age, valid-return count, history coverage, maximum drawdown, score, Sharpe, Sortino, open/closed state, and score eligibility;
- retrieve normalized metadata, daily-history coverage, risk metrics, score components, full-universe ranks, and machine-readable warnings;
- return up to 10,000 dataset rows in one run.
Quick start
The following low-cost query returns 25 open vaults with at least USD 100,000 in current TVL, largest first:
{"metricWindow": "30d","minimumTvl": 100000,"includeClosed": false,"eligibleOnly": false,"sortBy": "tvl","sortDirection": "desc","limit": 25}
Leave vaultAddresses empty to query all matching prepared vaults. The default
input requests up to 100 open vaults sorted by current TVL and projects 30-day
metrics. This remains useful while the real Sharpe, Sortino, and score history
is still maturing.
Once enough daily history is available, a quality-oriented screen can require both usable data and explicit risk thresholds:
{"metricWindow": "30d","minimumTvl": 100000,"minimumAgeDays": 90,"minimumReturnCount": 25,"minimumCoverageRatio": 0.8,"maximumDrawdown": -0.25,"minimumScore": 60,"minimumSharpeRatio": 1,"minimumSortinoRatio": 1,"includeClosed": false,"sortBy": "score","sortDirection": "desc","limit": 100}
Thresholds are inclusive. Optional score, ratio, and drawdown filters also exclude rows where the corresponding metric is unavailable; this prevents an unknown risk value from silently passing a quality screen.
Input reference
| Field | Type | Default | Contract |
|---|---|---|---|
vaultAddresses | array of strings | [] | Optional EVM-address filter; 0–1,000 unique addresses after trim and lowercase normalization. |
metricWindow | string | "30d" | One of 7d, 30d, 90d, 180d, 365d. Selects metrics, score, ranks, and windowPnl. |
minimumTvl | number | 0 | Minimum current TVL in USD; must be non-negative. |
minimumAgeDays | integer | 0 | Minimum calendar age. A positive threshold excludes unknown ages. |
minimumReturnCount | integer | 0 | Minimum valid daily returns inside metricWindow; 0–365. |
minimumCoverageRatio | number | 0 | Minimum valid-return coverage inside metricWindow; 0–1. |
maximumDrawdown | optional number | unset | Accepted drawdown floor from -1 to 0. -0.25 means no worse than -25%; missing drawdown is excluded. |
minimumScore | optional integer | unset | Minimum selected-window score from 0–100; missing score is excluded. |
minimumSharpeRatio | optional number | unset | Minimum selected-window Sharpe; missing Sharpe is excluded. |
minimumSortinoRatio | optional number | unset | Minimum selected-window Sortino; missing Sortino is excluded. |
includeClosed | boolean | false | Include closed vaults when true. |
eligibleOnly | boolean | false | Return only status: "ok" rows with a calculable score. |
sortBy | string | "tvl" | score, tvl, pnl, windowPnl, sharpe, sortino, age, apr, or name. |
sortDirection | string | "desc" | desc for highest first; asc for lowest first. |
limit | integer | 100 | 1–10,000 dataset rows after filtering and sorting. |
sortBy: "pnl" means the latest cumulative all-time PnL supplied by the
discovery feed. sortBy: "windowPnl" means metrics.pnlChange between the
first and last usable observations in metricWindow. Missing sort values are
always placed last in either direction. Equal values are resolved by lowercase
vault address for repeatable output.
Output reference
Each default-dataset item is a vaultAnalysis record with:
- contract metadata:
schemaVersion,scoreVersion,recordType,status,catalogObservedAt,snapshotDate,selectedWindow, andreturnBasis; vault: address, name, optional description, leader, creation time, age, closed state, relationship, current TVL, current APR, and cumulative PnL;- history metadata:
historyDayCountandmaturityBand; metrics: coverage, return count, missing days, mean return, volatility, Sharpe, Sortino, compounded return, maximum drawdown, positive/negative/flat days, PnL change, estimated net flow, and TVL change;- nullable
score: overall and five component scores; rank: full prepared-universe ranks for overall score, TVL, Sharpe, and Sortino;warnings: machine-readable methodology and data-quality flags.
Decimal output values are JSON strings, preserving deterministic decimal
precision. Ratios and percentage returns use fractions: 0.05 means 5%.
Nullable metrics are returned as null, never Infinity or NaN.
Status values
pending: fewer than 30 valid daily returns;ok: at least 30 valid returns and all required score inputs are available;ineligible: at least 30 returns exist, but a required metric or valid vault age is unavailable.
The daily collector began building real history on July 18, 2026. There is no fabricated backfill. A 30-day score therefore requires 31 consecutive usable snapshots; longer windows mature naturally over time.
Methodology
For two consecutive UTC snapshots:
daily PnL = cumulative PnL today - cumulative PnL yesterdayestimated return = daily PnL / TVL yesterdayestimated net flow = TVL today - TVL yesterday - daily PnL
No return is formed across a missing calendar day, when cumulative PnL is
missing, or when previous TVL is non-positive. The result is explicitly
estimated_daily_pnl_over_previous_tvl: it is not a verified time-weighted
return or an investable NAV series. Deposits, withdrawals, liquidations, and
changes in upstream methodology can affect interpretation.
Sharpe is the arithmetic daily mean divided by sample standard deviation,
annualized by sqrt(365). Sortino uses a zero daily target and downside
deviation sqrt(sum(min(0, r)^2) / n). Maximum drawdown is computed from the
compounded estimated-return curve. A zero denominator produces null.
Transparent 100-point score
vault-score-v2 requires at least 30 valid daily returns and all required risk
inputs. Component values use decimal arithmetic and round half up:
| Component | Maximum | Mapping |
|---|---|---|
| Sharpe | 30 | Linear from Sharpe -1 → 0 points to 3 → 30 points; clamped. |
| Sortino | 25 | Linear from Sortino -1 → 0 points to 5 → 25 points; clamped. |
| Maturity | 20 | Linear from 0 to 365 vault-age days; capped. |
| Liquidity | 15 | Logarithmic from USD 10,000 → 0 points to USD 10,000,000 → 15 points; clamped. |
| Drawdown | 10 | Linear from -50% → 0 points to 0% → 10 points; clamped. |
overallScore is the sum of these components. It describes observed public
data, not future quality. It does not measure smart-contract, strategy,
liquidity, leader, custody, or platform risk completely.
Data freshness and warnings
The internal collector refreshes once per UTC day and keeps the publication
store restricted. This Actor reads only a signed URL for the single prepared
catalog record; it has no access to raw snapshots or other publisher data. A
catalog older than 36 hours adds stale_catalog to returned rows.
Common warnings include estimated_return_not_twr, insufficient_history,
missing_daily_snapshots, missing_cumulative_pnl,
missing_or_future_create_time, vault_closed, extreme_estimated_return,
zero_return_volatility, and zero_downside_deviation.
The source discovery feed is public and currently validated in production, but
it is not a stable documented Hyperliquid Info API contract. An upstream schema
change can cause a run to fail safely instead of returning misleading partial
analysis. Descriptions remain null when the discovery feed does not supply
them.
Runtime and cost drivers
Customer runs download one compressed prepared catalog and perform local
filtering and sorting. They do not request thousands of vault detail endpoints
or rebuild 365 days of history. Runtime and platform usage mainly grow with the
requested output limit; start with 25–100 rows before requesting the full
universe. Check the Actor's current Pricing tab for the applicable Apify usage
model.
Privacy and support
Inputs contain only public vault addresses and query settings. The Actor does not request wallet keys, signatures, exchange credentials, or personal data. For a reproducible problem, open the Actor's Issues tab and include the run ID, input with secrets removed, expected result, and observed result.