Skip to content

Copy Trading Boundaries

Bullpen has two copy-trading command families. They are separate products with separate state, risk settings, and command references.

Use this page to choose the right surface. Use the linked tutorials for actual workflows and command examples.

Choose The Right Surface

Goal Command family Start here
Copy Prediction traders bullpen tracker copy Prediction Copy Trading
Copy Perps leaders bullpen hl copy Perps Copy Trading Tutorial
Run copy trading from an agent or server Same command family, with JSON output and explicit approvals AI Agents, Headless & Docker Setup

tracker copy does not create Perps subscriptions. hl copy does not create Prediction subscriptions.

Prediction Copy Trading

Use tracker copy when the copied trader is a Polymarket prediction-market address. Start read-only:

bullpen tracker copy list --output json
bullpen tracker copy risk --output json
bullpen tracker copy pending --output json

Follow Prediction Copy Trading for preview, create/update, manual confirmation, and risk-limit steps. Use the generated tracker copy reference for exact flags.

If tracker copy start fails with TURNKEY_POLICY_DENIAL or ACTIVITY_TYPE_SIGN_RAW_PAYLOAD_V2, Bullpen could not sign through the account's Turnkey policy. Re-login and local CLOB reset commands do not repair that policy. Capture bullpen doctor auth --output json and open or continue a Bullpen support ticket.

Perps Copy Trading

Use hl copy when the copied leader is a Hyperliquid account. Start read-only:

bullpen hl copy list --output json
bullpen hl copy pending --output json
bullpen hl copy risk config --output json

Follow the full workflow in Perps Copy Trading Tutorial. Use the generated hl copy reference for exact flags.

HIP-3 DEX-aware copy filters are not part of the current hl copy contract. Do not assume a HIP-3 trading command adds DEX-scoped copy filtering.

Automation Rules

  • Use --output json for state checks and automation logs.
  • Use --dry-run or --preview before any subscription or risk change.
  • Use ids returned by JSON output instead of scraping table output.
  • --non-interactive suppresses prompts. It does not imply --yes.
  • Review pending executions before running confirm or reject.
  • Keep support evidence in JSON: status, subscription ids, pending executions, and the exact failing command output.

Not Covered Here