hyperliquid.vault
Documentation for eth_defi.hyperliquid.vault Python module.
Hyperliquid vault data extraction and analysis.
This module provides functionality for extracting historical Hyperliquid vault events and serializing them into Pandas DataFrames for analysis.
API Endpoints
Hyperliquid has two relevant API surfaces for vault data:
Official Info API (https://api.hyperliquid.xyz/info):
vaultDetails- Get details for a specific vault (works)userVaultEquities- Get user’s vault positions (works)vaultSummaries- Documented but returns empty array (non-functional)
Stats Data API (https://stats-data.hyperliquid.xyz/Mainnet/vaults):
Undocumented internal endpoint that powers the Hyperliquid web UI
Returns all vaults (~8,000+) with APR, TVL, and PNL history arrays
Uses GET instead of POST - serves pre-aggregated/cached data
More comprehensive than the official API but may change without notice
The vaultSummaries endpoint in the official API is documented but non-functional
(returns []). For bulk vault listing, use the stats-data endpoint or the
bash script at scripts/hyperliquid/fetch-vault-metadata.sh.
For more information about Hyperliquid vaults see:
https://hyperliquid.gitbook.io/hyperliquid-docs/hypercore/vaults
https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/info-endpoint
https://app.hyperliquid.xyz/vaults (web UI using stats-data endpoint)
Module Attributes
Hyperliquid mainnet API URL |
|
Hyperliquid testnet API URL |
|
Hyperliquid stats-data API URL for vault listing (mainnet). |
|
Hyperliquid stats-data API URL for vault listing (testnet) |
Functions
|
Iterate over all Hyperliquid vaults. |
Classes
Client for extracting historical Hyperliquid vault events and data. |
|
Historical portfolio data for a specific time period. |
|
Represents a follower (depositor) in a Hyperliquid vault. |
|
Detailed information about a Hyperliquid vault. |
|
Supported sort keys for vault listing. |
|
Summary information for a Hyperliquid vault. |
- HYPERLIQUID_API_URL = 'https://api.hyperliquid.xyz'
Hyperliquid mainnet API URL
- HYPERLIQUID_TESTNET_API_URL = 'https://api.hyperliquid-testnet.xyz'
Hyperliquid testnet API URL
- HYPERLIQUID_STATS_URL = 'https://stats-data.hyperliquid.xyz/Mainnet/vaults'
Hyperliquid stats-data API URL for vault listing (mainnet). This is an undocumented internal endpoint that powers the Hyperliquid web UI. It must be used instead of the official
vaultSummariesendpoint which is documented but non-functional (returns empty array). This endpoint returns all vaults (~8,000+) with APR, TVL, and PNL history via GET request. See: https://app.hyperliquid.xyz/vaults
- HYPERLIQUID_STATS_TESTNET_URL = 'https://stats-data.hyperliquid-testnet.xyz/Mainnet/vaults'
Hyperliquid stats-data API URL for vault listing (testnet)
- class VaultFollower
Bases:
objectRepresents a follower (depositor) in a Hyperliquid vault.
- user: eth_typing.evm.HexAddress
Follower’s wallet address
- vault_equity: decimal.Decimal
Current equity in the vault (USD)
- pnl: decimal.Decimal
Profit/loss since entry
- all_time_pnl: decimal.Decimal
All-time profit/loss
- __init__(user, vault_equity, pnl, all_time_pnl, days_following, vault_entry_time, lockup_until=None)
- Parameters
user (eth_typing.evm.HexAddress) –
vault_equity (decimal.Decimal) –
pnl (decimal.Decimal) –
all_time_pnl (decimal.Decimal) –
days_following (int) –
vault_entry_time (int) –
lockup_until (int | None) –
- Return type
None
- class PortfolioHistory
Bases:
objectHistorical portfolio data for a specific time period.
Contains account value history, PNL history, and trading volume for a given period (day, week, month, or allTime).
- account_value_history: list[tuple[datetime.datetime, decimal.Decimal]]
Account value history as list of (timestamp, value) tuples
- pnl_history: list[tuple[datetime.datetime, decimal.Decimal]]
PNL history as list of (timestamp, pnl) tuples
- volume: decimal.Decimal
Trading volume for the period (USD)
- __init__(period, account_value_history, pnl_history, volume)
- Parameters
period (str) –
account_value_history (list[tuple[datetime.datetime, decimal.Decimal]]) –
pnl_history (list[tuple[datetime.datetime, decimal.Decimal]]) –
volume (decimal.Decimal) –
- Return type
None
- class VaultInfo
Bases:
objectDetailed information about a Hyperliquid vault.
This dataclass represents the response from the
vaultDetailsAPI endpoint, containing comprehensive vault metadata, follower information, and portfolio history.- vault_address: eth_typing.evm.HexAddress
Vault’s blockchain address
- leader: eth_typing.evm.HexAddress
Vault manager/operator address
- followers: list[eth_defi.hyperliquid.vault.VaultFollower]
List of vault followers (depositors)
- portfolio: dict[str, eth_defi.hyperliquid.vault.PortfolioHistory]
Portfolio history by time period
- max_distributable: decimal.Decimal
Maximum distributable amount (USD)
- max_withdrawable: decimal.Decimal
Maximum withdrawable amount (USD)
- parent: Optional[eth_typing.evm.HexAddress]
Parent vault address if this is a child vault
- __init__(name, vault_address, leader, description, followers, portfolio, max_distributable, max_withdrawable, is_closed, allow_deposits, relationship_type, commission_rate=None, parent=None)
- Parameters
name (str) –
vault_address (eth_typing.evm.HexAddress) –
leader (eth_typing.evm.HexAddress) –
description (str) –
followers (list[eth_defi.hyperliquid.vault.VaultFollower]) –
portfolio (dict[str, eth_defi.hyperliquid.vault.PortfolioHistory]) –
max_distributable (decimal.Decimal) –
max_withdrawable (decimal.Decimal) –
is_closed (bool) –
allow_deposits (bool) –
relationship_type (str) –
commission_rate (float | None) –
parent (Optional[eth_typing.evm.HexAddress]) –
- Return type
None
- class VaultSummary
Bases:
objectSummary information for a Hyperliquid vault.
Contains both basic vault metadata and performance metrics from the stats-data endpoint.
- vault_address: eth_typing.evm.HexAddress
Vault’s blockchain address
- leader: eth_typing.evm.HexAddress
Vault manager/operator address
- tvl: decimal.Decimal
Total Value Locked (USD)
- create_time: datetime.datetime | None
Vault creation timestamp
- __init__(name, vault_address, leader, tvl, is_closed, relationship_type, create_time=None, apr=None, pnl_day=None, pnl_week=None, pnl_month=None, pnl_all_time=None)
- Parameters
name (str) –
vault_address (eth_typing.evm.HexAddress) –
leader (eth_typing.evm.HexAddress) –
tvl (decimal.Decimal) –
is_closed (bool) –
relationship_type (str) –
create_time (datetime.datetime | None) –
apr (float | None) –
- Return type
None
- class HyperliquidVault
Bases:
objectClient for extracting historical Hyperliquid vault events and data.
This class provides methods to fetch vault information from the Hyperliquid API and serialize the data into Pandas DataFrames for analysis.
Example:
from eth_defi.hyperliquid.session import create_hyperliquid_session from eth_defi.hyperliquid.vault import HyperliquidVault, HYPERLIQUID_API_URL # Create a session for API requests session = create_hyperliquid_session() # Initialize for mainnet vault = HyperliquidVault( session=session, vault_address="0x1234567890abcdef1234567890abcdef12345678", ) # Or for testnet vault = HyperliquidVault( session=session, vault_address="0x1234567890abcdef1234567890abcdef12345678", server_url=HYPERLIQUID_TESTNET_API_URL, )- Parameters
session – HTTP session with retry logic from
create_hyperliquid_session()vault_address – The vault’s blockchain address
server_url – Hyperliquid API URL (defaults to mainnet)
timeout – HTTP request timeout in seconds
Initialize the Hyperliquid vault client.
- Parameters
session – HTTP session with retry logic. Use
create_hyperliquid_session()to create one.vault_address – The vault’s blockchain address
server_url – Hyperliquid API URL. Use
HYPERLIQUID_API_URLfor mainnet orHYPERLIQUID_TESTNET_API_URLfor testnet.timeout – HTTP request timeout in seconds
- __init__(session, vault_address, server_url='https://api.hyperliquid.xyz', timeout=30.0)
Initialize the Hyperliquid vault client.
- Parameters
session (requests.sessions.Session) – HTTP session with retry logic. Use
create_hyperliquid_session()to create one.vault_address (eth_typing.evm.HexAddress) – The vault’s blockchain address
server_url (str) – Hyperliquid API URL. Use
HYPERLIQUID_API_URLfor mainnet orHYPERLIQUID_TESTNET_API_URLfor testnet.timeout (float) – HTTP request timeout in seconds
- fetch_info()
Fetch detailed vault information from the Hyperliquid API.
Makes a request to the
vaultDetailsendpoint and returns a typedVaultInfodataclass with all vault metadata.Use
infoproperty for cached access.Example:
from eth_defi.hyperliquid.session import create_hyperliquid_session from eth_defi.hyperliquid.vault import HyperliquidVault session = create_hyperliquid_session() vault = HyperliquidVault( session=session, vault_address="0x3df9769bbbb335340872f01d8157c779d73c6ed0", ) info = vault.fetch_info() print(f"Vault: {info.name}") print(f"Leader: {info.leader}") print(f"Followers: {len(info.followers)}")- Returns
VaultInfo dataclass with vault details
- Raises
requests.HTTPError – If the HTTP request fails
- Return type
- property info: eth_defi.hyperliquid.vault.VaultInfo
Cached vault information.
Fetches vault details on first access and caches the result. Use
fetch_info()to force a fresh fetch.- Returns
VaultInfo dataclass with vault details
- class VaultSortKey
Bases:
enum.EnumSupported sort keys for vault listing.
These correspond to fields available in VaultSummary that provide stable, deterministic ordering.
- VAULT_ADDRESS = 'vault_address'
Sort by vault address (hex string, stable and unique)
- NAME = 'name'
Sort by vault name (alphabetical)
- TVL = 'tvl'
Sort by TVL (Total Value Locked)
- APR = 'apr'
Sort by APR (Annual Percentage Rate)
- CREATE_TIME = 'create_time'
Sort by creation time
- fetch_all_vaults(session=None, stats_url='https://stats-data.hyperliquid.xyz/Mainnet/vaults', timeout=30.0)
Iterate over all Hyperliquid vaults.
This function fetches all vault summaries from the Hyperliquid stats-data API and yields them one by one. It handles API throttling using exponential backoff retry logic.
Note
This uses the undocumented stats-data endpoint (
HYPERLIQUID_STATS_URL) instead of the officialvaultSummariesendpoint which is documented but non-functional (returns empty array).Example:
from eth_defi.hyperliquid.session import create_hyperliquid_session from eth_defi.hyperliquid.vault import fetch_all_vaults, HYPERLIQUID_STATS_TESTNET_URL # Create a session for API requests session = create_hyperliquid_session() # Iterate over all vaults (mainnet) for vault in fetch_all_vaults(session): print(f"Vault: {vault.name}, TVL: ${vault.tvl:,.2f}") # Use testnet for vault in fetch_all_vaults(session, stats_url=HYPERLIQUID_STATS_TESTNET_URL): print(f"Testnet vault: {vault.name}") # Filter vaults with high TVL high_tvl_vaults = [v for v in fetch_all_vaults(session) if v.tvl > 1_000_000] # Convert to list all_vaults = list(fetch_all_vaults(session)) # Sort vaults by TVL after fetching sorted_by_tvl = sorted(fetch_all_vaults(session), key=lambda v: v.tvl, reverse=True) # Get top 10 vaults by TVL top_tvl = sorted_by_tvl[:10]- Parameters
session (requests.sessions.Session | None) – A requests Session configured for Hyperliquid API. Use
eth_defi.hyperliquid.session.create_hyperliquid_session()to create one. If None, a default session will be created.stats_url (str) – Hyperliquid stats-data API URL. Use
HYPERLIQUID_STATS_URLfor mainnet orHYPERLIQUID_STATS_TESTNET_URLfor testnet.timeout (float) – HTTP request timeout in seconds
- Returns
Iterator yielding VaultSummary objects
- Raises
requests.HTTPError – If the HTTP request fails after all retries
- Return type