Keel Docs
Paper Trading

Paper Trading

Run a strategy on simulated fills at live Hyperliquid prices, with the same pipeline as a live run and no wallet or exchange account. How to start, slots, auto-pause, tracking and going live.

Ask AI about Keel

Paper Trading

A paper run puts one of your strategies on a schedule exactly as a live run would, and fills its orders with simulated money instead of real money. The same strategy pipeline evaluates it on the same data at the same times. Its orders fill at live Hyperliquid mids under one published fill model, with real fees and real hourly funding. You need no wallet and no exchange account to start one.

Start a paper run

There are two ways to start one:

  • The Paper button. In the strategy editor, the Paper button sits beside Deploy. Choose your simulated capital ($1,000, $10,000 or $100,000; it stays fixed for the run) and start.
  • The in-app chat. Ask the chat in the app to paper trade your strategy. It can start the run for you, or point you to the Paper button.

Your paper runs are listed under the app's Paper tab, apart from your live runs.

Lifecycle

A paper run has the same lifecycle as a live one: deploy, pause, resume, stop, and update to a newer version of its strategy. Stopping a run never deletes it: its record stays, frozen with its open positions at their final marks.

Slots and plan capacity

Each paper run that is running or paused uses one of your plan's paper slots. Stopping a run frees its slot.

PlanPaper slots
Free1
Starter5
Trader20
Pro50

See Pricing for the plans.

Auto-pause

Keel pauses a paper run on its own in two cases. It never stops or deletes one, and it never touches a live run. You can resume a paused run when your plan has room for it.

  • Over your plan's capacity for at least 7 days. If you move to a plan with fewer slots and have more running paper runs than it allows, Keel waits 7 days, then pauses your least recently viewed runs until you are within the limit.
  • Idle for 28 days. A run nobody has visited for 28 days is paused. Opening the run in the app, or asking the in-app chat about it, counts as a visit.

Tracking its backtest

Each paper run is compared against a backtest of the same strategy. The run's page shows the result as one line, for example "Tracking its backtest · residual 3 bps": a status (tracking, drifting from its backtest, or under review) and the residual in basis points. During its first few evaluations the line reads "Collecting data". The comparison backtest charges the same fee schedule and applies the same $10 minimum order as the fill model.

Going live

The run's page shows how it is going: its return since it started, how closely it tracks its backtest over the same window, and how many bars it has run. There is no countdown and no required length of record. "Deploy live" opens the live deploy flow for the same strategy, prefilled from the paper run, whenever you choose. Keeping the run on paper is always an option.

Through the API

keel-api serves paper runs through the /v1/paper routes, listed under Paper runs in the API reference. Every deployment read, such as GET /v1/deployments/{id}, serves a paper run the same way it serves a live one, with a venue block whose capital_class is practice for paper and real for live.

The deployments list keeps live and paper runs apart:

  • GET /v1/deployments with no capital_class returns live runs only.
  • capital_class=practice returns paper runs.
  • capital_class=all returns every run, each labelled by its venue block.
curl -X POST https://api.usekeel.io/v1/paper \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"strategy_id": "YOUR_STRATEGY_ID", "simulated_capital": 10000}'

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.usekeel.io/v1/deployments?capital_class=practice"