Hyperliquid Market Data & Trade Review with Hermes Agent
Hyperliquid market data, account history, trade review.
Written by Neura Market from the official Hermes Agent documentation for Hyperliquid. Commands, paths, and version numbers are reproduced from the source unchanged.
Read the official documentationThis skill gives Hermes Agent read-only access to Hyperliquid's public /info endpoint. You can query perp and spot market data, inspect a wallet's positions and fills, generate a post-trade review, and export normalized candle/funding datasets for backtesting. No API key, no signing, no order placement. Twelve commands, all using only Python stdlib.
What it does
The skill wraps Hyperliquid's public API into a local CLI client. You run it through Hermes Agent's terminal tool. It covers the full set of read operations: discovering DEXs and markets, pulling candles and funding rates, reading the L2 order book, checking account state (perp positions and spot balances), reviewing fills and open orders, generating a heuristic trade review, and exporting a reusable dataset. Every command accepts --json for machine-readable output.
Before you start
- Python 3 with stdlib only (no pip install needed).
- The script reads
${HERMES_HOME:-~/.hermes}/.envfor two optional defaults:HYPERLIQUID_API_URL, defaults tohttps://api.hyperliquid.xyz. Set tohttps://api.hyperliquid-testnet.xyzfor testnet.HYPERLIQUID_USER_ADDRESS, default address forstate,spot-balances,fills,orders, andreview. If unset, pass the address as the first positional argument.
- A project
.envin the current working directory is honored as a dev fallback. - Helper script:
~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py
How to run
Invoke through the terminal tool:
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py <command> [args]
Add --json to any command for machine-readable output.
Quick reference
hyperliquid_client.py dexs
hyperliquid_client.py markets [--dex DEX] [--limit N] [--sort volume|oi|funding_abs|change_abs|name]
hyperliquid_client.py spots [--limit N]
hyperliquid_client.py candles <coin> [--interval 1h] [--hours 24] [--limit N]
hyperliquid_client.py funding <coin> [--hours 72] [--limit N]
hyperliquid_client.py l2 <coin> [--levels N]
hyperliquid_client.py state [address] [--dex DEX]
hyperliquid_client.py spot-balances [address] [--limit N]
hyperliquid_client.py fills [address] [--hours N] [--limit N] [--aggregate-by-time]
hyperliquid_client.py orders [address] [--limit N]
hyperliquid_client.py review [address] [--coin COIN] [--hours N] [--fills N]
hyperliquid_client.py export <coin> [--interval 1h] [--hours N] [--output PATH]
For state, spot-balances, fills, orders, and review, the address is optional when HYPERLIQUID_USER_ADDRESS is set in ${HERMES_HOME:-~/.hermes}/.env.
Procedure
1. Discover DEXs and Markets
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py dexs
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py \
markets --limit 15 --sort volume
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py \
spots --limit 15
--dexonly applies to perp endpoints; omit for the first perp dex.- Spot pairs may show as
PURR/USDCor aliases like@107. - HIP-3 markets prefix the coin with the dex, e.g.
mydex:BTC.
2. Pull Historical Market Data
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py \
candles BTC --interval 1h --hours 72 --limit 48
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py \
funding BTC --hours 168 --limit 30
Time-range endpoints paginate. For larger windows, repeat with a later startTime or use export (below).
3. Inspect Live Order Book
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py \
l2 BTC --levels 10
Use when asked about book depth, near-term liquidity, or potential market impact of a large order.
4. Review an Account
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py \
state 0xabc...
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py \
spot-balances
state returns perp positions; spot-balances returns spot inventory. Use these for "how are my positions?", "what am I holding?", "how much is withdrawable?".
5. Review Fills and Orders
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py \
fills 0xabc... --hours 72 --limit 25
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py \
orders --limit 25
6. Generate a Trade Review
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py \
review 0xabc... --hours 72 --fills 50
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py \
review --coin BTC --hours 168
Reports realized PnL, fees, win/loss counts, coin breakdowns, market trend and average funding for each traded perp, plus heuristics (fee drag, concentration, counter-trend losses).
For deeper post-trade analysis: start with review to find problem coins or windows → pull fills and orders for that period → pull candles and funding for each traded coin → judge decision quality separately from outcome quality.
7. Export a Reusable Dataset
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py \
export BTC --interval 1h --hours 168 --output ./btc-1h-7d.json
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py \
export BTC --interval 15m --hours 72 --end-time-ms 1760000000000
Output JSON contains: schema version, source metadata, exact time window, normalized candle rows, normalized funding rows, summary stats. Use --end-time-ms for reproducible windows.
When not to use it
This skill is read-only. It cannot place, cancel, or modify orders. If the user asks to trade, set use, or transfer funds, you need a different tool. It also cannot reconstruct full historical fills beyond the rolling window exposed by userFillsByTime.
Limits and gotchas
- Public info endpoints are rate-limited. Large historical queries may return capped windows; iterate with later
startTimevalues. fills --hours ...usesuserFillsByTime, which only exposes a recent rolling window, not full archive history.historicalOrdersreturns recent orders only; not a full export.- The
reviewcommand is heuristic. It cannot reconstruct intent, order placement quality, or true slippage from fills alone. - The
exportcommand writes a normalized dataset, not a backtest engine. You still need your own slippage/fill model. - Spot aliases like
@107are valid identifiers even when the UI shows a friendlier name. l2is a point-in-time snapshot, not a time series.
Verification
python3 ~/.hermes/skills/blockchain/hyperliquid/scripts/hyperliquid_client.py \
markets --limit 5
Should print the top Hyperliquid perp markets by 24h notional volume.