Admin console
Running copy trading day to day — the capital dashboard and its four states, approving and suspending leaders, intervening on a subscription, the audit trail, system health, and what each destructive action actually does.
The console lives at /admin/copy-trading behind access.copy_trading. It is
organised around one question: is follower capital safe? Followers hand the
platform real money and then hand the decisions to somebody else, so every
allocation on these pages is money held on trust.
The dashboard
The top of the page splits the allocated book by the state the money is in, not by how large the product has grown. Four bands, computed in one server-side pass over the whole allocation table, summing exactly to the total beside them:
| Band | Means | What to do |
|---|---|---|
| Being copied | Behind an active leader with an active subscription | Nothing |
| Paused | The follower stopped copying themselves, or a limit paused them | Nothing — this is a working state |
| Dormant | The leader has not opened a trade for 7 days but is still ACTIVE |
Ask the leader, or suspend and refund |
| Stranded | Behind a leader who cannot trade — suspended, rejected, pending, removed — or held against a follower who stopped and whose allocation was never released | Reinstate, refund, or finish the teardown |
A leader who last traded a fortnight ago is still marked ACTIVE; no status column
anywhere in the addon shows dormancy. A follower who stopped copying but whose
allocation was never released looks identical to one still in the market. Both are
derived on the server for exactly this reason, and the dormancy threshold is sent
with the figures and printed on the page so the definition you read is the one the
bands were computed with.
Below the meter, a table ranks leaders by how much follower money is sitting still behind them, naming the reason, the follower count, the capital and the days since their last trade — or Never, for a leader who has never traded. When there are more such leaders than the table renders, it says so explicitly ("showing 8 of 23"), because a cap that is not reported reads as "this is everything".
Reading the money figures honestly
Allocations are recorded in the quote asset of their own market, so a book holding BTC/USDT and ETH/BTC contains USDT and BTC. The dashboard reports which quote asset its figures are in: when the whole book agrees on one, the figure carries that ticker; when it spans more than one, the figure renders bare and the page states how many assets it covers.
Look at the quote-asset marker in the top rail before quoting a capital or revenue figure to anyone. A correct sum of a column is still not an amount in any currency.
The provenance rail above the title carries a live / updating / stale indicator and the time the figures were built. The page refreshes every 30 seconds, only while the tab is visible. A failed refresh leaves the last good figures on screen and marks the rail stale rather than clearing the page — a dashboard that is true as of a stated time is worth more than an empty one.
Replication failures
Beside the queue depth and failure rate, the dashboard reports copies that failed today and the five most recent failures with the market, the amount and the engine's own error message. A follower whose copy did not fire has silently missed a trade their leader took; before this panel existed the only sign was a percentage moving.
Leaders
/admin/copy-trading/leader is the registry — every leader in any status, with
pending applications carrying an age in days, oldest first.
| Action | Permission | Effect |
|---|---|---|
| Approve | edit.copy_trading |
Status becomes ACTIVE. Their orders start being replicated |
| Reject | edit.copy_trading |
Status becomes REJECTED with the reason recorded. The applicant may re-apply, which replaces their profile and market list |
| Suspend | edit.copy_trading |
Status becomes SUSPENDED and every follower behind them is paused. Requires a reason |
| Activate | edit.copy_trading |
Reinstates a suspended leader |
| Bulk status | edit.copy_trading |
Applies a status change to several leaders at once |
| Recalculate | edit.copy_trading |
Forces a full recomputation of that leader's statistics |
| Delete | delete.copy_trading |
Deactivates the leader, optionally refunding every follower's unused allocation |
A suspension pauses every follower of that leader, and the overnight daily-limit
reset deliberately skips followers whose leader is not ACTIVE. So reactivating
the leader does not resume their followers — those subscriptions stay paused
until each follower resumes it, or you resume it for them.
Plan the communication before you suspend a leader with a large book.
Delete takes a refundFollowers flag that defaults to true. Refunding moves
each follower's unused allocation out of the copy-trading wallet and back to the
wallet it came from. Repeating the deletion cannot refund a second time.
The leader detail page carries the profile, the headline figures, and tabs for followers and trades — with market type, binary result and expiry shown for binary activity.
Subscriptions
/admin/copy-trading/follower lists every subscription on the install. Three
interventions, all behind edit.copy_trading and all audited:
- Pause — no further leader trades are copied to it. Funds and allocations are left completely untouched. The follower is notified.
- Resume — copying restarts.
- Force stop — the terminal action. It runs the same teardown a follower's own stop runs: live orders cancelled, holds released, unspent capital returned to ECO or SPOT.
Use pause for an investigation and stop for a decision. Pausing leaves the money where it is, which is what you want while you are still working out what happened.
Trades and transactions
/admin/copy-trading/trade shows every leader trade and every follower copy, with
a market-type filter, execution quality and the status the row is actually in.
Statuses worth recognising:
| Status | Means |
|---|---|
PENDING |
A leader trade awaiting replication, or a copy awaiting its fill |
REPLICATED |
Every follower copy of this leader trade succeeded or was a deliberate skip |
REPLICATION_FAILED |
Parked after five attempts, or refused outright — needs a human |
OPEN / PARTIALLY_FILLED |
A live follower position |
CLOSING |
An exit order has been placed and is waiting to fill |
CLOSED |
Settled, with realised profit recorded |
CANCELLED |
Torn down — by a leader cancel, a stop, or the reconciler |
/admin/copy-trading/transaction is the money trail, with a reverse action
behind edit.copy_trading. A reason is required; the reversal is refused if the
transaction was already reversed or if it would take the wallet negative. See
Fees and profit share.
Audit log
/admin/copy-trading/audit is the complete trail — applications, approvals,
rejections, suspensions, follows, pauses, resumes, allocations, deallocations,
trade lifecycle events, stop-loss and take-profit triggers, daily-limit events,
reversals and every administrative action.
Entries carry the entity type and id, the action, the old and new values as JSON, the acting user or admin, the IP and user agent where the request supplied them, and a reason where the action required one.
Two spellings of the follower entity type are in the wild — copyTradingFollower
from the engine and FOLLOWER from the user-facing routes. Filter for both when
you are reconstructing a subscription's history.
System health
/admin/copy-trading/health reports the last 24 hours and polls itself every 30
seconds.
| Metric | Reads |
|---|---|
| Total / executed / failed / pending copies (24h) | Follower trades only |
| Failure rate | Failed as a percentage of total |
| Average, p95 and p99 latency | Measured from the leader's order to the copy being written |
| Active subscriptions, active leaders | Current counts |
| Services | Database reachability and the copy-trading engine |
| Alerts and recent errors | Drawn from the audit log |
Latency here is replication latency, not fill latency. It measures how long the platform took to place the follower's order, not how long the market took to fill it. A healthy p99 with followers complaining about bad prices is a liquidity problem, not a copy-trading one.
The copyTradingMaxCopyLatencyMs setting is read into the settings object but
nothing compares this measurement against it, so it neither alerts nor refuses.
Settings
/admin/copy-trading/settings — five tabs covering platform status, leader
requirements, follower limits, trading types and fees, and risk defaults. It writes
through the platform's own settings endpoint, so it is governed by the core
settings permission, not by edit.copy_trading.
Every key, what reads it, and the six that are read but never enforced, are in Settings.