hyperliquid-trading-bot

Configurable grid trading bot for Hyperliquid DEX with TypeScript/Node.js primary implementation, supporting perpetuals and spot markets with risk management features.

22 stars

Best use case

hyperliquid-trading-bot is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Configurable grid trading bot for Hyperliquid DEX with TypeScript/Node.js primary implementation, supporting perpetuals and spot markets with risk management features.

Teams using hyperliquid-trading-bot should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/hyperliquid-trading-bot/SKILL.md --create-dirs "https://raw.githubusercontent.com/Aradotso/trending-skills/main/skills/hyperliquid-trading-bot/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/hyperliquid-trading-bot/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How hyperliquid-trading-bot Compares

Feature / Agenthyperliquid-trading-botStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Configurable grid trading bot for Hyperliquid DEX with TypeScript/Node.js primary implementation, supporting perpetuals and spot markets with risk management features.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Hyperliquid Trading Bot

> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.

A configurable grid strategy runner for [Hyperliquid](https://hyperliquid.xyz) DEX. Places layered buy/sell orders around a price range and enforces risk rules (stop loss, take profit, drawdown limits, rebalancing). Primary stack is **TypeScript on Node.js 20.19+**; a legacy Python tree exists for reference and learning examples.

---

## Installation

```bash
git clone https://github.com/PolyPulse-Analytics/hyperliquid-trading-bot.git
cd hyperliquid-trading-bot
npm install
```

### Requirements

- Node.js **20.19+**
- A Hyperliquid wallet private key (use a dedicated testnet key to start)
- `git`

Optional for Python examples: [uv](https://github.com/astral-sh/uv)

---

## Environment Setup

```bash
cp .env.example .env
```

Edit `.env` — minimum required keys:

```env
# Testnet (recommended to start)
HYPERLIQUID_TESTNET_PRIVATE_KEY=0xYOUR_TESTNET_PRIVATE_KEY_HERE
HYPERLIQUID_TESTNET=true

# Mainnet (real funds — set carefully)
# HYPERLIQUID_MAINNET_PRIVATE_KEY=0xYOUR_MAINNET_PRIVATE_KEY_HERE
# HYPERLIQUID_TESTNET=false
```

**Never commit `.env` or share your private key.**

---

## Key Commands

| Command | Purpose |
|---|---|
| `npm start` | Run bot using first `active: true` config in `bots/` |
| `npm run validate` | Validate YAML config structure (no private key needed) |
| `npm test` | Run automated tests (grid math, etc.) |
| `npx tsc --noEmit` | TypeScript type check |
| `npx tsx ts/src/runBot.ts path/to/config.yaml` | Run with explicit config file |

### Explicit config path (recommended for multi-bot setups)

```bash
npx tsx ts/src/runBot.ts bots/btc_conservative.yaml
```

### Graceful shutdown

Press **Ctrl+C** — the engine attempts to cancel all open orders before exiting. Always review logs to confirm cancellation.

---

## Bot Configuration (YAML)

Config files live in `bots/*.yaml`. Only one file should have `active: true` when using auto-discovery via `npm start`.

### Full annotated example

```yaml
name: "btc_grid_testnet"
active: true

exchange:
  type: "hyperliquid"
  testnet: true          # Set false for mainnet — also set HYPERLIQUID_TESTNET=false in .env

account:
  max_allocation_pct: 10.0   # Max % of account balance to allocate to this grid

grid:
  symbol: "BTC"              # Hyperliquid market symbol
  levels: 10                 # Number of buy/sell levels on each side
  price_range:
    mode: "auto"             # "auto" or "manual"
    auto:
      range_pct: 5.0         # Spread ±5% from current price
    # manual:
    #   lower: 90000
    #   upper: 100000

risk_management:
  stop_loss_enabled: false
  stop_loss_pct: 8.0         # Trigger if price drops X% from entry

  take_profit_enabled: false
  take_profit_pct: 15.0      # Trigger if price rises X% from entry

  max_drawdown_pct: 15.0     # Max allowed drawdown before halting
  max_position_size_pct: 40.0 # Max position as % of allocated capital

  rebalance:
    price_move_threshold_pct: 12.0  # Rebalance grid if price moves outside this %

monitoring:
  log_level: "INFO"          # DEBUG, INFO, WARN, ERROR
```

### Manual price range example

```yaml
grid:
  symbol: "ETH"
  levels: 8
  price_range:
    mode: "manual"
    manual:
      lower: 3000
      upper: 3600
```

---

## Common Patterns

### Running multiple bots with different configs

Do not use `active: true` — call each explicitly:

```bash
# Terminal 1
npx tsx ts/src/runBot.ts bots/btc_conservative.yaml

# Terminal 2
npx tsx ts/src/runBot.ts bots/eth_aggressive.yaml
```

### Validate before running (CI/pre-flight)

```bash
npm run validate && npm start
```

### Testnet workflow before going live

1. Set `HYPERLIQUID_TESTNET=true` in `.env`
2. Set `exchange.testnet: true` in your YAML
3. Fund via [Hyperliquid testnet faucet](https://faucet.chainstack.com/hyperliquid-testnet-faucet)
4. Run `npm run validate` then `npm start`
5. Watch logs — verify orders appear in testnet UI
6. Only then flip both flags to `false` for mainnet

---

## Python Learning Examples

```bash
# Install Python deps
uv sync

# Validate Python bot config
uv run src/run_bot.py --validate

# Run Python bot (legacy)
uv run src/run_bot.py

# Educational scripts
uv run learning_examples/01_websockets/realtime_prices.py
uv run learning_examples/02_market_data/get_all_prices.py
uv run learning_examples/04_trading/place_limit_order.py
```

### Python: Fetch real-time prices via WebSocket

```python
# learning_examples/01_websockets/realtime_prices.py pattern
import asyncio
from hyperliquid.websocket_manager import WebsocketManager

async def on_message(msg):
    print(msg)

async def main():
    ws = WebsocketManager(base_url="https://api.hyperliquid-testnet.xyz")
    await ws.subscribe({"type": "allMids"}, on_message)
    await asyncio.sleep(30)

asyncio.run(main())
```

### Python: Place a limit order (testnet)

```python
# learning_examples/04_trading/place_limit_order.py pattern
import os
from hyperliquid.exchange import Exchange
from hyperliquid.utils import constants
import eth_account

private_key = os.environ["HYPERLIQUID_TESTNET_PRIVATE_KEY"]
account = eth_account.Account.from_key(private_key)

exchange = Exchange(account, constants.TESTNET_API_URL)

# Place a limit buy for 0.001 BTC at $90,000
result = exchange.order(
    "BTC",
    is_buy=True,
    sz=0.001,
    limit_px=90000,
    order_type={"limit": {"tif": "Gtc"}},
)
print(result)
```

---

## Troubleshooting

### Bot exits immediately without placing orders

- Run `npm run validate` first — check for YAML syntax errors
- Confirm `active: true` is set (or pass config path explicitly)
- Verify `HYPERLIQUID_TESTNET` in `.env` matches `exchange.testnet` in YAML

### Orders placed but immediately cancelled

- Testnet account may have insufficient balance — refund via faucet
- `max_allocation_pct` may be too low for minimum order sizes on the symbol

### TypeScript compilation errors

```bash
npx tsc --noEmit
```

Check Node.js version — must be **20.19+**:

```bash
node --version
```

### Python `uv` not found

```bash
pip install uv
# or
curl -LsSf https://astral.sh/uv/install.sh | sh
```

### Private key errors / authentication failures

- Confirm the key in `.env` matches the funded testnet wallet
- Key must include `0x` prefix
- Never use a mainnet key on testnet configs — keep separate keys

### Grid not rebalancing when price moves

Check `risk_management.rebalance.price_move_threshold_pct` — default is `12.0`. Lower it if you want more frequent rebalancing (increases gas/fees).

---

## Project Structure

```
hyperliquid-trading-bot/
├── bots/                    # YAML strategy configs
│   └── btc_conservative.yaml
├── ts/src/
│   └── runBot.ts            # Main TypeScript entrypoint
├── src/
│   └── run_bot.py           # Legacy Python entrypoint
├── learning_examples/       # Educational Python scripts
│   ├── 01_websockets/
│   ├── 02_market_data/
│   └── 04_trading/
├── .env.example             # Environment variable template
├── package.json
└── pyproject.toml
```

---

## Risk Reminder

- Always start on **testnet** with a dedicated key
- Use `max_allocation_pct` to limit exposure
- Enable `max_drawdown_pct` as a safety net before enabling stop loss/take profit
- Review open orders in the Hyperliquid UI after every bot restart
- This software is provided "as is" — you are responsible for your capital

Related Skills

polymarket-copy-trading-bot

22
from Aradotso/trending-skills

TypeScript bot that monitors a Polymarket wallet and mirrors BUY trades to your own account via the Polymarket CLOB API on Polygon.

polymarket-arbitrage-trading-bot

22
from Aradotso/trending-skills

Automated dump-and-hedge arbitrage trading bot for Polymarket's 15-minute crypto Up/Down markets, supporting BTC, ETH, SOL, and XRP.

hyperliquid-grid-trading-bot

22
from Aradotso/trending-skills

Configure and run an automated grid trading bot on Hyperliquid DEX with TypeScript/Node.js, supporting perpetuals and spot markets with risk management.

aster-bot-trading

22
from Aradotso/trending-skills

Automated perpetual futures trading bot for AsterDEX with dual strategies, risk management, and TypeScript/Node.js stack

```markdown

22
from Aradotso/trending-skills

---

zeroboot-vm-sandbox

22
from Aradotso/trending-skills

Sub-millisecond VM sandboxes for AI agents using copy-on-write KVM forking via Zeroboot

yourvpndead-vpn-detection

22
from Aradotso/trending-skills

Android app that detects VPN/proxy servers (VLESS/xray/sing-box) via local SOCKS5 vulnerability, exposing exit IPs and server configs without root

xata-postgres-platform

22
from Aradotso/trending-skills

Expert skill for Xata open-source cloud-native Postgres platform with copy-on-write branching, scale-to-zero, and Kubernetes deployment

x-mentor-skill-nuwa

22
from Aradotso/trending-skills

AI-powered X (Twitter) content strategy skill that distills methodologies from 6 top creators + open-source algorithm data into actionable writing, growth, and monetization guidance.

wx-favorites-report

22
from Aradotso/trending-skills

End-to-end pipeline to extract, decrypt, and visualize WeChat Mac favorites from encrypted SQLite DB into an interactive HTML report.

wterm-web-terminal

22
from Aradotso/trending-skills

Web terminal emulator with Zig/WASM core, DOM rendering, and React/vanilla JS bindings

worldmonitor-intelligence-dashboard

22
from Aradotso/trending-skills

Real-time global intelligence dashboard with AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking