Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Backtest, deploy, and monitor trading bots on Hyperliquid. Supports Grid, DCA, and Spot-Perp Arbitrage strategies across Native Perps, Spot markets (USDC/USDH), and HIP-3 sub-DEXes.
Backtest, deploy, and monitor trading bots on Hyperliquid. Supports Grid, DCA, and Spot-Perp Arbitrage strategies across Native Perps, Spot markets (USDC/USDH), and HIP-3 sub-DEXes.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
For LLMs: This is the authoritative reference. Use exact syntax. Config files are in ~/.supurr/configs/.
CommandPurposesupurr initSetup wallet credentialssupurr whoamiShow current walletsupurr new gridGenerate grid strategy configsupurr new arbGenerate spot-perp arb configsupurr new dcaGenerate DCA strategy configsupurr configsList saved configssupurr config <name>View config detailssupurr backtestRun historical simulationsupurr deployDeploy bot to productionsupurr monitorView active botssupurr historyView historical bot sessionssupurr stopStop a running bot (signed)supurr pricesDebug price datasupurr updateUpdate CLI to latest
supurr --help # Show all commands supurr --version, -V # Show CLI version supurr -d, --debug # Enable debug logging (any command)
# Interactive supurr init # Non-interactive supurr init --address 0x... --api-wallet 0x... # Overwrite existing supurr init --force OptionDescription-f, --forceOverwrite existing credentials--address <address>Wallet address (0x...)--api-wallet <key>API wallet private key
supurr whoami # Shows: Address + masked key
Supports three strategies: grid, arb, dca. supurr new grid [options] # Grid trading supurr new arb [options] # Spot-perp arbitrage supurr new dca [options] # Dollar-cost averaging
Market Types TypeQuoteRequiresExamplenativeUSDCβ--asset BTCspotVariable--quote--asset HYPE --type spot --quote USDChip3Per-DEX--dex--asset BTC --type hip3 --dex hyna Grid Options OptionDefaultDescription-a, --asset <symbol>BTCBase asset (BTC, ETH, HYPE, etc.)-o, --output <file>config.jsonOutput filename--type <type>nativeMarket type: native, spot, hip3--dex <dex>βRequired for hip3: hyna, xyz, km, vntl--quote <quote>βRequired for spot: USDC, USDE, USDT0, USDH--mode <mode>longGrid mode: long, short, neutral--levels <n>20Number of grid levels--start-price <price>βGrid start price--end-price <price>βGrid end price--investment <amount>1000Max investment in quote currency--leverage <n>2Leverage (1 for spot)--testnetfalseUse Hyperliquid testnet Grid Examples # Native Perp (BTC-USDC) supurr new grid --asset BTC --levels 4 --start-price 88000 --end-price 92000 --investment 100 --leverage 20 # USDC Spot (HYPE/USDC) supurr new grid --asset HYPE --type spot --quote USDC --levels 3 --start-price 29 --end-price 32 --investment 100 # Non-USDC Spot (HYPE/USDH) supurr new grid --asset HYPE --type spot --quote USDH --levels 3 --start-price 29 --end-price 32 --investment 100 # HIP-3 (hyna:BTC) supurr new grid --asset BTC --type hip3 --dex hyna --levels 4 --start-price 88000 --end-price 92000 --investment 100 --leverage 20 HIP-3 DEXes DEXQuoteAssetshynaUSDECrypto perps (BTC, ETH, HYPE, etc.)xyzUSDEStocks (AAPL, TSLA, etc.)kmUSDTKinetiq MarketsvntlUSDEAI/tech tokens
Generates a config that simultaneously trades the spot and perp legs of the same asset, capturing spread differentials. Market Constraint: Only assets that have both a spot token AND a perp market on Hyperliquid are eligible. The CLI auto-resolves the spot counterpart. Spot Resolution Logic Hyperliquid spot tokens for major assets use a U-prefix naming convention: You pass --assetCLI resolves spot tokenSpot pairPerp pairBTCUBTCUBTC/USDCBTC perpETHUETHUETH/USDCETH perpSOLUSOLUSOL/USDCSOL perpENAUENAUENA/USDCENA perpWLDUWLDUWLD/USDCWLD perpMONUMONUMON/USDCMON perpMEGAUMEGAUMEGA/USDCMEGA perpZECUZECUZEC/USDCZEC perpXPLUXPLUXPL/USDCXPL perpPUMPUPUMPUPUMP/USDCPUMP perpHYPEHYPE (exact name)HYPE/USDCHYPE perpTRUMPTRUMP (exact name)TRUMP/USDCTRUMP perpPURRPURR (exact name)PURR/USDCPURR perpBERABERA (exact name)BERA/USDCBERA perp Resolution order: try U{ASSET} first β fallback to exact name β fail if neither exists. β οΈ U-prefix Hazard: Do NOT pass asset names that already start with U (e.g., UNIT). The CLI will prepend another U and look for UUNIT, which doesn't exist. Always use the perp ticker name (e.g., BTC, not UBTC). Arb Options OptionDefaultDescription-a, --asset <symbol>BTCPerp asset name (BTC, ETH, HYPE, etc.)--amount <usdc>100Order amount in USDC per leg--leverage <n>1Leverage for perp leg--open-spread <pct>0.003Min opening spread (0.003 = 0.3%)--close-spread <pct>-0.001Min closing spread (-0.001 = -0.1%)--slippage <pct>0.001Slippage buffer for both legs (0.001 = 0.1%)-o, --output <file>{asset}-arb.jsonOutput filename--testnetfalseUse Hyperliquid testnet Arb Examples # BTC spot-perp arb (default $100/leg) supurr new arb --asset BTC # HYPE arb with $50 per leg, 2x leverage on perp supurr new arb --asset HYPE --amount 50 --leverage 2 # ETH arb with tighter spreads supurr new arb --asset ETH --open-spread 0.002 --close-spread -0.0005 --slippage 0.0005 # SOL arb on testnet supurr new arb --asset SOL --testnet Balance Requirement: Arb bots require USDC balance in both Spot and Perps wallets on Hyperliquid, since the bot trades on both sides simultaneously.
Generates a Dollar-Cost Averaging config that opens positions in steps when price deviates, then takes profit on the averaged entry. DCA Options OptionDefaultDescription-a, --asset <symbol>BTCBase asset--mode <mode>longDirection: long or short--type <type>nativeMarket type: native, spot, hip3--trigger-price <price>100000Price to trigger base order--base-order <size>0.001Base order size in base asset--dca-order <size>0.001DCA order size in base asset--max-orders <n>5Max number of DCA orders--size-multiplier <x>2.0Size multiplier per DCA step--deviation <pct>0.01Price deviation % to trigger first DCA (0.01 = 1%)--deviation-multiplier <x>1.0Deviation multiplier for subsequent steps--take-profit <pct>0.02Take profit % from avg entry (0.02 = 2%)--stop-loss <pnl>βOptional stop loss as absolute PnL threshold--leverage <n>2Leverage (1 for spot)--restartfalseRestart cycle after take profit--cooldown <secs>60Cooldown between cycles in seconds-o, --output <file>config.jsonOutput filename--testnetfalseUse Hyperliquid testnet DCA Examples # BTC DCA long, trigger at $95k supurr new dca --asset BTC --trigger-price 95000 # ETH DCA short with custom deviation supurr new dca --asset ETH --mode short --deviation 0.02 # HYPE DCA with auto-restart supurr new dca --asset HYPE --restart --cooldown 120 --take-profit 0.03 # DCA on spot market supurr new dca --asset HYPE --type spot --quote USDC --trigger-price 25
supurr configs # Lists all configs in ~/.supurr/configs/ Output: π Configs (/Users/you/.supurr/configs): btc-grid.json grid BTC-USDC hype-usdc-spot.json grid HYPE-USDC hyna-btc.json grid BTC-USDE
supurr config btc-grid # View btc-grid.json supurr config btc-grid.json # Same
supurr backtest -c <config> [options]
OptionDescription-c, --config <file>Required. Config file (name or path)-s, --start <date>Start date (YYYY-MM-DD)-e, --end <date>End date (YYYY-MM-DD)-p, --prices <file>Use local prices file-o, --output <file>Save results to JSON--no-cacheDisable price caching
# By config name (looks in ~/.supurr/configs/) supurr backtest -c btc-grid.json -s 2026-01-28 -e 2026-02-01 # By full path supurr backtest -c ~/.supurr/configs/btc-grid.json -s 2026-01-28 -e 2026-02-01 # Save results supurr backtest -c btc-grid.json -s 2026-01-28 -e 2026-02-01 -o results.json
DexAsset FormatExamplehyperliquidBTC, HYPENative perp + Spothynahyna:BTC, hyna:ETHHIP-3 DEX Note: Archive data available from 2026-01-28 onwards. Important: Backtests use Supurr's price archive (tick-level) or a user-provided prices file (-p). Do not use Hyperliquid Info API mids/candles for backtests; they don't provide tick-level historical data and will produce inaccurate results.
supurr deploy -c <config> [-s <address> | -v <address>] OptionDescription-c, --config <file>Required. Config file (name or path)-s, --subaccount <address>Trade from a subaccount (validates master ownership)-v, --vault <address>Trade from a vault (validates you are the vault leader) Subaccount vs Vault: Subaccount = personal trading account under your master wallet. Verified via subAccounts API (checks master field). Vault = shared investment pool you manage. Verified via vaultDetails API (checks leader field). Both set vault_address in the bot config on success. Cannot use both --subaccount and --vault simultaneously.
# Deploy from main wallet supurr deploy -c btc-grid.json # Deploy from subaccount supurr deploy -c btc-grid.json -s 0x804e57d7baeca937d4b30d3cbe017f8d73c21f1b # Deploy from vault (you must be the vault leader) supurr deploy -c config.json --vault 0xdc89f67e74098dd93a1476f7da79747f71ccb5d9 # HL: prefix is auto-stripped (copy-paste from Hyperliquid UI) supurr deploy -c config.json -s HL:0x804e57d7baeca937d4b30d3cbe017f8d73c21f1b Output: β Loaded config for grid strategy β Subaccount verified: 0x804e57d7... β Bot deployed successfully! π¦ Deployment Details Bot ID: 217 Pod Name: bot-217 Bot Type: grid Market: BTC-USDC
IssueSolutionHL: prefix in addressAuto-stripped β safe to paste from Hyperliquid explorer"Subaccount not owned"Ensure the subaccount's master matches your supurr whoami address"Vault not found"Check the vault address exists on the correct network (mainnet vs testnet)"Vault leader mismatch"Only the vault leader can deploy β check vaultDetails APIsubAccounts returns nullNormal β means no subaccounts exist for that address
supurr monitor [options]
OptionDescription-w, --wallet <address>Filter by wallet address--watchLive mode (refreshes every 2s)
supurr monitor # List all active bots supurr monitor --watch # Live monitoring (Ctrl+C to exit) supurr monitor -w 0x1234... # Filter by wallet Output Columns: ID β Bot identifier Type β Strategy (grid, dca, mm, arb) Market β Trading pair (BTC-USDC, HYPE-USDH) Position β Size + direction (L=Long, S=Short) PnL β Total profit/loss
supurr history # Show last 20 bot sessions supurr history -n 50 # Show last 50 bot sessions OptionDefaultDescription-n, --limit <count>20Number of bots to show Output Columns: ID β Bot identifier Market β Trading pair (from config.markets[0]) Type β Strategy (grid, dca, mm, arb) PnL β Total profit/loss (realized + unrealized) Stop Reason β Why the bot stopped (shutdown:graceful β "User stopped the bot Successfully")
Signs Stop <bot-id> with your API wallet private key (EIP-191 personal_sign) and sends the signature to the bot API. supurr stop # Interactive - select from list supurr stop --id 217 # Stop specific bot by ID OptionDescription--id <bot_id>Bot ID to stop (from supurr monitor) Crypto: Uses @noble/curves/secp256k1 + @noble/hashes/sha3 (pure JS, no native deps). Signature format: 0x{r}{s}{v} (65 bytes).
supurr prices -a BTC # Fetch BTC prices (7 days) supurr prices -a hyna:BTC --dex hyna # HIP-3 prices supurr prices -a HYPE -s 2026-01-28 # From specific date OptionDescription-a, --asset <symbol>Required. Asset symbol--dex <dex>DEX name (default: hyperliquid)-s, --start <date>Start date-e, --end <date>End date--no-cacheDisable caching
supurr update # Check and install latest version
# 1. Initialize (first time only) supurr init --address 0x... --api-wallet 0x... # 2. Create config supurr new grid --asset BTC --levels 4 --start-price 88000 --end-price 92000 --investment 100 --leverage 20 --output btc-grid.json # 3. Backtest supurr backtest -c btc-grid.json -s 2026-01-28 -e 2026-02-01 # 4. Deploy supurr deploy -c btc-grid.json # 5. Monitor supurr monitor --watch # 6. Stop when done supurr stop --id <bot_id>
# 1. Initialize supurr init --address 0x... --api-wallet 0x... # 2. Generate arb config (auto-resolves spot counterpart) supurr new arb --asset BTC --amount 200 --leverage 1 --output btc-arb.json # 3. Review the generated config supurr config btc-arb # 4. Ensure USDC balance in BOTH Spot and Perps wallets on Hyperliquid # 5. Deploy supurr deploy -c btc-arb.json # 6. Monitor supurr monitor --watch
# 1. Create DCA config supurr new dca --asset BTC --trigger-price 95000 --base-order 0.001 --max-orders 5 --take-profit 0.02 --output btc-dca.json # 2. Deploy supurr deploy -c btc-dca.json # 3. Monitor supurr monitor --watch
# Native Perp supurr new grid --asset BTC --output native-btc.json supurr backtest -c native-btc.json -s 2026-01-28 -e 2026-02-01 # USDC Spot supurr new grid --asset HYPE --type spot --quote USDC --output hype-usdc.json supurr backtest -c hype-usdc.json -s 2026-01-30 -e 2026-01-31 # Non-USDC Spot supurr new grid --asset HYPE --type spot --quote USDH --output hype-usdh.json supurr backtest -c hype-usdh.json -s 2026-01-30 -e 2026-01-31 # HIP-3 supurr new grid --asset BTC --type hip3 --dex hyna --output hyna-btc.json supurr backtest -c hyna-btc.json -s 2026-01-28 -e 2026-02-01
~/.supurr/ βββ credentials.json # { address, private_key } βββ configs/ # Saved bot configs β βββ btc-grid.json β βββ hype-usdc.json β βββ ... βββ cache/ # Price data cache βββ hyperliquid/ βββ BTC/ βββ HYPE/
PurposeEndpointAuthBot DeployPOST /bots/create/<wallet>βActive BotsGET /dashboard/active_botsβBot HistoryGET /dashboard/user_bots/<address> (Python)βStop BotPOST /bots/<bot_id>/stop (Node)EIP-191 signaturePrice DataGET /prices?dex=X&asset=Y&start_time=ZβPrice ArchiveGET /{dex}/{asset}/{date}.jsonβ
IssueSolution"Config not found"Use supurr configs to list available configs"No credentials"Run supurr init first"0 prices fetched"Check date range (data from 2026-01-28+)"API wallet not valid"Register API wallet on Hyperliquid firstHIP-3 backtest failsUse format --dex hyna --asset BTC"No spot market found"Asset has no spot counterpart β arb not available for this assetArb asset starts with UUse the perp name (e.g., BTC not UBTC) β CLI adds U prefix
Backtesting note: This appendix is for live metadata and user state lookups. It is not a source of tick-level historical data for supurr backtest. Get address via: supurr whoami β returns the configured wallet address. All endpoints use POST https://api.hyperliquid.xyz/info with Content-Type: application/json.
QueryRequest BodyAll Mid Prices{"type": "allMids"}Sub-DEX Prices{"type": "allMids", "dex": "hyna"}Perp Metadata{"type": "metaAndAssetCtxs"}Spot Metadata{"type": "spotMeta"}L2 Order Book{"type": "l2Book", "coin": "BTC"}List HIP-3 DEXes{"type": "perpDexs"}
QueryRequest BodyPerp Positions{"type": "clearinghouseState", "user": "0x..."}Spot Balances{"type": "spotClearinghouseState", "user": "0x..."}Open Orders{"type": "openOrders", "user": "0x..."}Order History{"type": "historicalOrders", "user": "0x..."}Trade Fills{"type": "userFills", "user": "0x...", "aggregateByTime": true}Funding History{"type": "userFunding", "user": "0x...", "startTime": <ts>, "endTime": <ts>}Sub-Accounts{"type": "subAccounts", "user": "0x..."}Vault Details{"type": "vaultDetails", "vaultAddress": "0x..."}
DEXQuoteAssetshynaUSDECrypto perps (BTC, ETH, HYPE)xyzUSDEStocks (AAPL, TSLA, NVDA)vntlUSDEAI/tech tokenskmUSDTKinetiq MarketscashUSDCTech stocks
const HL = "https://api.hyperliquid.xyz/info"; async function query<T>(body: object): Promise<T> { const res = await fetch(HL, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(body), }); return res.json(); } // Examples const mids = await query({ type: "allMids" }); const positions = await query({ type: "clearinghouseState", user: "0x..." }); const spotBal = await query({ type: "spotClearinghouseState", user: "0x..." }); const dexes = await query({ type: "perpDexs" });
IssueSolutionszDecimals truncationTruncate qty to szDecimals before submitHIP-3 price prefixSub-DEX prices keyed as hyna:BTC, not BTCSub-DEX asset indexUse local index from DEX's universe, not globalFill limitsuserFills max 2000 β paginate with time ranges
Step-by-step deployment guides with parameter selection advice and practical tips: Grid Bot Tutorial β Range trading with buy/sell grids Arb Bot Tutorial β Market-neutral spot-perp arbitrage DCA Bot Tutorial β Dollar-cost averaging with auto-restart
Agent frameworks, memory systems, reasoning layers, and model-native orchestration.
Largest current source with strong distribution and engagement signals.