🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Supurr Hyperliquid Algorithmic Trading

by @yashagarwal1994

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.

Versionv1.0.0
Downloads1,475
TERMINAL
clawhub install supurr-hyperliquid

πŸ“– About This Skill


name: supurr description: 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.

Supurr CLI β€” Complete Command Reference

> For LLMs: This is the authoritative reference. Use exact syntax. Config files are in ~/.supurr/configs/.


Quick Reference

| Command | Purpose | | ---------------------- | ----------------------------- | | supurr init | Setup wallet credentials | | supurr whoami | Show current wallet | | supurr new grid | Generate grid strategy config | | supurr new arb | Generate spot-perp arb config | | supurr new dca | Generate DCA strategy config | | supurr configs | List saved configs | | supurr config | View config details | | supurr backtest | Run historical simulation | | supurr deploy | Deploy bot to production | | supurr monitor | View active bots | | supurr history | View historical bot sessions | | supurr stop | Stop a running bot (signed) | | supurr prices | Debug price data | | supurr update | Update CLI to latest |


Global Options

supurr --help              # Show all commands
supurr --version, -V       # Show CLI version
supurr -d, --debug         # Enable debug logging (any command)


1. supurr init β€” Credential Setup

# Interactive
supurr init

Non-interactive

supurr init --address 0x... --api-wallet 0x...

Overwrite existing

supurr init --force

| Option | Description | | --------------------- | ------------------------------ | | -f, --force | Overwrite existing credentials | | --address

| Wallet address (0x...) | | --api-wallet | API wallet private key |


2. supurr whoami β€” Show Identity

supurr whoami    # Shows: Address + masked key


3. supurr new β€” Config Generator

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


3a. supurr new grid β€” Grid Strategy

#### Market Types

| Type | Quote | Requires | Example | | -------- | -------- | --------- | --------------------------------------- | | native | USDC | β€” | --asset BTC | | spot | Variable | --quote | --asset HYPE --type spot --quote USDC | | hip3 | Per-DEX | --dex | --asset BTC --type hip3 --dex hyna |

#### Grid Options

| Option | Default | Description | | ----------------------- | ------------- | ---------------------------------------------- | | -a, --asset | BTC | Base asset (BTC, ETH, HYPE, etc.) | | -o, --output | config.json | Output filename | | --type | native | Market type: native, spot, hip3 | | --dex | β€” | Required for hip3: hyna, xyz, km, vntl | | --quote | β€” | Required for spot: USDC, USDE, USDT0, USDH | | --mode | long | Grid mode: long, short, neutral | | --levels | 20 | Number of grid levels | | --start-price | β€” | Grid start price | | --end-price | β€” | Grid end price | | --investment | 1000 | Max investment in quote currency | | --leverage | 2 | Leverage (1 for spot) | | --testnet | false | Use 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

| DEX | Quote | Assets | | ------ | ----- | ----------------------------------- | | hyna | USDE | Crypto perps (BTC, ETH, HYPE, etc.) | | xyz | USDE | Stocks (AAPL, TSLA, etc.) | | km | USDT | Kinetiq Markets | | vntl | USDE | AI/tech tokens |


3b. supurr new arb β€” Spot-Perp Arbitrage Strategy

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 --asset | CLI resolves spot token | Spot pair | Perp pair | | ------------------ | ----------------------- | ---------- | ---------- | | BTC | UBTC | UBTC/USDC | BTC perp | | ETH | UETH | UETH/USDC | ETH perp | | SOL | USOL | USOL/USDC | SOL perp | | ENA | UENA | UENA/USDC | ENA perp | | WLD | UWLD | UWLD/USDC | WLD perp | | MON | UMON | UMON/USDC | MON perp | | MEGA | UMEGA | UMEGA/USDC | MEGA perp | | ZEC | UZEC | UZEC/USDC | ZEC perp | | XPL | UXPL | UXPL/USDC | XPL perp | | PUMP | UPUMP | UPUMP/USDC | PUMP perp | | HYPE | HYPE (exact name) | HYPE/USDC | HYPE perp | | TRUMP | TRUMP (exact name) | TRUMP/USDC | TRUMP perp | | PURR | PURR (exact name) | PURR/USDC | PURR perp | | BERA | BERA (exact name) | BERA/USDC | BERA 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

| Option | Default | Description | | ---------------------- | ------------------ | -------------------------------------------- | | -a, --asset | BTC | Perp asset name (BTC, ETH, HYPE, etc.) | | --amount | 100 | Order amount in USDC per leg | | --leverage | 1 | Leverage for perp leg | | --open-spread | 0.003 | Min opening spread (0.003 = 0.3%) | | --close-spread | -0.001 | Min closing spread (-0.001 = -0.1%) | | --slippage | 0.001 | Slippage buffer for both legs (0.001 = 0.1%) | | -o, --output | {asset}-arb.json | Output filename | | --testnet | false | Use 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.


3c. supurr new dca β€” DCA Strategy

Generates a Dollar-Cost Averaging config that opens positions in steps when price deviates, then takes profit on the averaged entry.

#### DCA Options

| Option | Default | Description | | ---------------------------- | ------------- | -------------------------------------------------- | | -a, --asset | BTC | Base asset | | --mode | long | Direction: long or short | | --type | native | Market type: native, spot, hip3 | | --trigger-price | 100000 | Price to trigger base order | | --base-order | 0.001 | Base order size in base asset | | --dca-order | 0.001 | DCA order size in base asset | | --max-orders | 5 | Max number of DCA orders | | --size-multiplier | 2.0 | Size multiplier per DCA step | | --deviation | 0.01 | Price deviation % to trigger first DCA (0.01 = 1%) | | --deviation-multiplier | 1.0 | Deviation multiplier for subsequent steps | | --take-profit | 0.02 | Take profit % from avg entry (0.02 = 2%) | | --stop-loss | β€” | Optional stop loss as absolute PnL threshold | | --leverage | 2 | Leverage (1 for spot) | | --restart | false | Restart cycle after take profit | | --cooldown | 60 | Cooldown between cycles in seconds | | -o, --output | config.json | Output filename | | --testnet | false | Use 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


4. supurr configs β€” List Saved Configs

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


5. supurr config β€” View Config

supurr config btc-grid        # View btc-grid.json
supurr config btc-grid.json   # Same


6. supurr backtest β€” Run Backtest

Syntax

supurr backtest -c  [options]

Options

| Option | Description | | --------------------- | ---------------------------------------- | | -c, --config | Required. Config file (name or path) | | -s, --start | Start date (YYYY-MM-DD) | | -e, --end | End date (YYYY-MM-DD) | | -p, --prices | Use local prices file | | -o, --output | Save results to JSON | | --no-cache | Disable price caching |

Examples

# 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

Archive Data Availability

| Dex | Asset Format | Example | | ------------- | ---------------------- | ------------------ | | hyperliquid | BTC, HYPE | Native perp + Spot | | hyna | hyna:BTC, hyna:ETH | HIP-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.


7. supurr deploy β€” Deploy Bot

supurr deploy -c  [-s 
| -v
]

| Option | Description | | ---------------------------- | ------------------------------------------------------- | | -c, --config | Required. Config file (name or path) | | -s, --subaccount

| Trade from a subaccount (validates master ownership) | | -v, --vault
| 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.

Examples

# 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

Gotchas

| Issue | Solution | | ---------------------------- | -------------------------------------------------------------------------- | | HL: prefix in address | Auto-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 API | | subAccounts returns null | Normal β€” means no subaccounts exist for that address |


8. supurr monitor β€” View Active Bots

Syntax

supurr monitor [options]

Options

| Option | Description | | ------------------------ | ------------------------------ | | -w, --wallet

| Filter by wallet address | | --watch | Live mode (refreshes every 2s) |

Examples

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

  • 9. supurr history β€” View Bot History

    supurr history             # Show last 20 bot sessions
    supurr history -n 50       # Show last 50 bot sessions
    

    | Option | Default | Description | | --------------------- | ------- | ---------------------- | | -n, --limit | 20 | Number 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")

  • 10. supurr stop β€” Stop Bot (Signature Auth)

    Signs Stop 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
    

    | Option | Description | | --------------- | -------------------------------------- | | --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).


    11. supurr prices β€” Debug Price Data

    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
    

    | Option | Description | | ---------------------- | ------------------------------- | | -a, --asset | Required. Asset symbol | | --dex | DEX name (default: hyperliquid) | | -s, --start | Start date | | -e, --end | End date | | --no-cache | Disable caching |


    12. supurr update β€” Self-Update

    supurr update    # Check and install latest version
    


    Complete Workflows

    Workflow 1: Grid β€” Backtest β†’ Deploy β†’ Monitor

    # 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

    Workflow 2: Arb β€” Setup β†’ Deploy β†’ Monitor

    # 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

    Workflow 3: DCA β€” Configure β†’ Deploy

    # 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

    Workflow 4: Test All Market Types

    # 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


    Config Storage

    ~/.supurr/
    β”œβ”€β”€ credentials.json      # { address, private_key }
    β”œβ”€β”€ configs/              # Saved bot configs
    β”‚   β”œβ”€β”€ btc-grid.json
    β”‚   β”œβ”€β”€ hype-usdc.json
    β”‚   └── ...
    └── cache/                # Price data cache
        └── hyperliquid/
            β”œβ”€β”€ BTC/
            └── HYPE/
    


    API Endpoints Used

    | Purpose | Endpoint | Auth | | ------------- | --------------------------------------------- | ----------------- | | Bot Deploy | POST /bots/create/ | β€” | | Active Bots | GET /dashboard/active_bots | β€” | | Bot History | GET /dashboard/user_bots/

    (Python) | β€” | | Stop Bot | POST /bots//stop (Node) | EIP-191 signature | | Price Data | GET /prices?dex=X&asset=Y&start_time=Z | β€” | | Price Archive | GET /{dex}/{asset}/{date}.json | β€” |


    Troubleshooting

    | Issue | Solution | | ------------------------- | ---------------------------------------------------------------- | | "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 first | | HIP-3 backtest fails | Use format --dex hyna --asset BTC | | "No spot market found" | Asset has no spot counterpart β€” arb not available for this asset | | Arb asset starts with U | Use the perp name (e.g., BTC not UBTC) β€” CLI adds U prefix |


    Appendix: Hyperliquid Info API

    > 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.

    Market Data (No Address Required)

    | Query | Request Body | | ---------------- | ------------------------------------ | | All 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"} |

    User Data (Address Required)

    | Query | Request Body | | --------------- | ------------------------------------------------------------------------------ | | Perp 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": , "endTime": } | | Sub-Accounts | {"type": "subAccounts", "user": "0x..."} | | Vault Details | {"type": "vaultDetails", "vaultAddress": "0x..."} |

    HIP-3 Sub-DEXes

    | DEX | Quote | Assets | | ------ | ----- | ----------------------------- | | hyna | USDE | Crypto perps (BTC, ETH, HYPE) | | xyz | USDE | Stocks (AAPL, TSLA, NVDA) | | vntl | USDE | AI/tech tokens | | km | USDT | Kinetiq Markets | | cash | USDC | Tech stocks |

    TypeScript Helper

    const HL = "https://api.hyperliquid.xyz/info";

    async function query(body: object): Promise { 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" });

    Common Hazards

    | Issue | Solution | | ----------------------- | ------------------------------------------------- | | szDecimals truncation | Truncate qty to szDecimals before submit | | HIP-3 price prefix | Sub-DEX prices keyed as hyna:BTC, not BTC | | Sub-DEX asset index | Use local index from DEX's universe, not global | | Fill limits | userFills max 2000 β€” paginate with time ranges |


    Tutorials

    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
  • πŸ’‘ Examples

    # 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

    Archive Data Availability

    | Dex | Asset Format | Example | | ------------- | ---------------------- | ------------------ | | hyperliquid | BTC, HYPE | Native perp + Spot | | hyna | hyna:BTC, hyna:ETH | HIP-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.


    βš™οΈ Configuration

    | Option | Description | | --------------------- | ---------------------------------------- | | -c, --config | Required. Config file (name or path) | | -s, --start | Start date (YYYY-MM-DD) | | -e, --end | End date (YYYY-MM-DD) | | -p, --prices | Use local prices file | | -o, --output | Save results to JSON | | --no-cache | Disable price caching |

    Examples

    # 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

    Archive Data Availability

    | Dex | Asset Format | Example | | ------------- | ---------------------- | ------------------ | | hyperliquid | BTC, HYPE | Native perp + Spot | | hyna | hyna:BTC, hyna:ETH | HIP-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.


    πŸ“‹ Tips & Best Practices

    | Issue | Solution | | ------------------------- | ---------------------------------------------------------------- | | "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 first | | HIP-3 backtest fails | Use format --dex hyna --asset BTC | | "No spot market found" | Asset has no spot counterpart β€” arb not available for this asset | | Arb asset starts with U | Use the perp name (e.g., BTC not UBTC) β€” CLI adds U prefix |


    Appendix: Hyperliquid Info API

    > 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.