Copy trading
mirror one account onto another.
A copy link mirrors the positions of a master account onto a follower account, with the follower's own size caps and filters. In SaaS mode users can also publish a live account as a provider that others follow.
01How a copy link works
Every pass (every 3 seconds, COPY_INTERVAL_MS) the server reads each master once, works out each follower's target per symbol and moves the follower toward it with market orders (server/src/copy/runner.ts).
- Futures are read from the master's positions; spot from the master's fills since the link began, so trades made in the exchange's own app are copied too.
- Positions the master already held when the link was made are not copied. Copying starts with that symbol's next new position.
- Reductions are always reduce-only. The link only sells or closes what it bought itself; spot coins the follower already held are never sold.
- A master that cannot be read is never treated as flat, so a read error never closes the follower.
- Every order is saved before it is sent with a deterministic client id, so after a crash it is found again instead of being sent twice.
- If the follower no longer holds what the link copied (closed by hand, liquidated, now on the other side) while the master still holds it, the link does not re-enter: it pauses and notifies the user. After Resume it copies only the master's next new position.
02Create a link
Copy trading, New link. A link needs two accounts (a paper account works as either).
| Setting | Meaning |
|---|---|
| Master (copied from), Follower (copied to) | One follower account follows one master. |
| Sizing | Ratio: follower amount = master amount × value. Fixed quote: each new position opens with this quote amount. Equity %: the follower takes the same share of its equity as the master, × value / 100. For fixed and equity sizing the ratio is frozen when the master opens, so later increases and reductions keep it. |
| Max position per symbol | Notional cap per symbol |
| Only these symbols / Never these symbols | Filters; empty = every symbol |
| Copy exits | On by default. Off: the follower closes its positions itself. |
| Slippage guard | Skip an increase when the follower's price is more than this % worse than the master's average entry (default 1 %) |
| Leverage cap | Leverage = the lowest of the master's, this cap (default 5) and the market maximum |
| Reverse (futures only) | Opens the opposite side of the master |
Slide to start copying. A live follower asks for confirmation.
A link converges the follower's net position, so two links into one account, or a link and a bot on the same symbol, would undo each other's orders. The server refuses such a link (follower_in_use), pauses the newer of two links if it ever finds both, and skips a symbol that a running bot or live Smart Trade trades on the follower.
03Pause, edit, delete
- Pause and Resume. A stopped link cannot be resumed.
- Edit settings at any time.
- Delete never trades: positions already copied stay on the follower.
- The Log lists copied orders, skips with their reason (each reason once until the target changes) and failures.
- The kill switch on the follower blocks increases only; exits still go through. A panic with "stop bots" pauses the links into the accounts in scope.
04Providers (SaaS mode)
With Tenancy set to SaaS, a user can Publish my live account as a provider with a public name and description. Other users then see it under Providers and press Follow.
- Only live accounts can be published: a paper record costs nothing to fake.
- A provider shares only its name, description, exchange, mode and a feed of percentages (position share of equity, share closed). Never balances, amounts, keys or its account id.
- The follower must be in the same mode (live, testnet or paper) as the provider, and ratio sizing is not available for providers.
- Unpublish stops every link that follows it. Followers keep their positions.
In self-hosted mode the Providers part is hidden. No fee is attached to following a provider in the code; see Revenue options.