Hyperliquid Vault Analyzer avatar

Hyperliquid Vault Analyzer

Pricing

Pay per usage

Go to Apify Store
Hyperliquid Vault Analyzer

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

BB

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

2 days ago

Last modified

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

FieldTypeDefaultContract
vaultAddressesarray of strings[]Optional EVM-address filter; 0–1,000 unique addresses after trim and lowercase normalization.
metricWindowstring"30d"One of 7d, 30d, 90d, 180d, 365d. Selects metrics, score, ranks, and windowPnl.
minimumTvlnumber0Minimum current TVL in USD; must be non-negative.
minimumAgeDaysinteger0Minimum calendar age. A positive threshold excludes unknown ages.
minimumReturnCountinteger0Minimum valid daily returns inside metricWindow; 0–365.
minimumCoverageRationumber0Minimum valid-return coverage inside metricWindow; 0–1.
maximumDrawdownoptional numberunsetAccepted drawdown floor from -1 to 0. -0.25 means no worse than -25%; missing drawdown is excluded.
minimumScoreoptional integerunsetMinimum selected-window score from 0–100; missing score is excluded.
minimumSharpeRatiooptional numberunsetMinimum selected-window Sharpe; missing Sharpe is excluded.
minimumSortinoRatiooptional numberunsetMinimum selected-window Sortino; missing Sortino is excluded.
includeClosedbooleanfalseInclude closed vaults when true.
eligibleOnlybooleanfalseReturn only status: "ok" rows with a calculable score.
sortBystring"tvl"score, tvl, pnl, windowPnl, sharpe, sortino, age, apr, or name.
sortDirectionstring"desc"desc for highest first; asc for lowest first.
limitinteger1001–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, and returnBasis;
  • vault: address, name, optional description, leader, creation time, age, closed state, relationship, current TVL, current APR, and cumulative PnL;
  • history metadata: historyDayCount and maturityBand;
  • 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 yesterday
estimated return = daily PnL / TVL yesterday
estimated 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:

ComponentMaximumMapping
Sharpe30Linear from Sharpe -1 → 0 points to 3 → 30 points; clamped.
Sortino25Linear from Sortino -1 → 0 points to 5 → 25 points; clamped.
Maturity20Linear from 0 to 365 vault-age days; capped.
Liquidity15Logarithmic from USD 10,000 → 0 points to USD 10,000,000 → 15 points; clamped.
Drawdown10Linear 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.