Back to blogStop Order Desync on Prop Desks: WebSocket, Drop Copy, 7 Step Recovery

Stop Order Desync on Prop Desks: WebSocket, Drop Copy, 7 Step Recovery

T

TradeDupe

10 min read

Prop desk playbook for copy trading: WebSocket event handling, drop copy reconciliation, per account margin checks, and a 7 step recovery plan with a...

Order desync happens when a follower account rejects, partially fills, or delays a trade that the leader account already executed. The immediate response is to stop copying the affected follower, trigger a cancel-on-disconnect or kill switch if one is configured, and reconcile fills before resuming. Most cases trace back to rejects, partial fills, mismatched risk rules, or a connectivity gap between leader and follower.

*

> TL;DR: > > - Most order desyncs stem from reject reasons such as invalid prices, maximum quantity violations, or mismatched risk and margin rules between leader and follower accounts. > - Pre-trade checks should verify each follower’s equity, margin, and size limits, including margin buffers based on worst-case intraday drawdowns, to prevent rejects. > - Using WebSocket event streams for order and fill updates reduces delays and eliminates the need for frequent polling that can cause desync, with designated event types for confirmation. > - Server-enforced safeguards like cancel-on-disconnect, daily loss limits, and per-account toggles are critical to prevent unmanaged orders during connectivity issues, with regular drills recommended. > - In case of desync, immediately stop copying, review logs to identify the divergence point, and only resume once the root cause, such as size limit rejection or missing bracket legs, is addressed.

*

Table of Contents

1. Common causes of order desynchronization

Desync rarely comes from one failure. It is usually a combination of account-level constraints and timing gaps that surface only under live conditions.

The most frequent trigger is an order reject at the follower account, visible in the ExecutionReport or CommandReport with a specific reason code. Community reports on the WebSocket API command confirmations thread show reasons like InvalidPrice, TooLate, and maximum-quantity violations appearing when a follower's local limits don't match the leader's order.

Partial fills create a second failure mode. When a bracket order's stop or target leg fails to fill alongside the entry, the position ends up unprotected, a silent gap that doesn't always trigger an alert.

  • Rejects from mismatched price tolerance, order size, or timing between leader and follower.
  • Partial fills on one leg of an OSO or bracket order, leaving the position exposed.
  • Latency or polling gaps that delay state updates and widen the sync window.
  • Prop-firm or broker rules (daily loss limits, scaling rules, max order size) that apply asymmetrically across accounts.

Each of these produces a different symptom, so the fix starts with identifying which one actually occurred rather than assuming the worst case every time.

2. Pre-copy safety checks keep follower accounts from rejecting trades

Before a trade copies, the system should confirm the follower account can actually absorb it. That means checking equity, margin, and size against the account's own limits, not the leader's.

  1. Confirm available equity covers the planned position's initial margin requirement.
  2. Compare the order against the account's maintenance margin and the broker's house margin, which is often stricter than exchange minimums.
  3. Check planned position size against any scaling rule or max contract limit specific to that prop firm account.
  4. Calculate a margin buffer using a worst-case intraday drawdown multiplier, commonly 1.5 to 2 times the expected move, before approving the copy.
  5. Set an alert threshold so the system flags or blocks copying automatically when the buffer drops below the chosen multiplier.

Pro Tip: Run the buffer calculation per account, not per leader, since two follower accounts can carry very different house margins on the same instrument.

Automated enforcement matters more than manual review here. A per-account toggle that blocks a copy when the buffer check fails prevents the kind of reject that triggers a desync in the first place.

2. Pre-copy safety checks keep follower accounts from rejecting trades — overview diagram
2. Pre-copy safety checks keep follower accounts from rejecting trades — overview diagram

3. Technical fixes: WebSockets, drop copies, and ExecutionReport handling

Polling for order status is one of the most common root causes of desync, and it's avoidable. Repeated REST calls introduce delay between the actual fill and when the follower system learns about it, and high-frequency polling against Tradovate's API risks rate-limit penalties, as detailed in Tradovate API automation guidance. The supported alternative is subscribing once to the user/syncrequest WebSocket channel and processing pushed events as they arrive.

Statistic callout: Tradovate's documented pattern pushes order and position updates as asynchronous events through user/syncrequest rather than requiring repeated polling, according to Tradovate API automation, which removes the delay window that causes a follower to act on stale state.

Four event types matter most for sync state:

  • ExecutionReport: final confirmation of a fill, partial fill, or reject, including the specific reason code.
  • Order: working status changes, useful for confirming a bracket leg is still live.
  • Fill: the actual execution detail, used to match leader and follower quantities.
  • CommandReport: confirms whether a submitted command succeeded or failed at the gateway level.

Drop-copy feeds or exchange data serve as the authoritative source for reconciliation, since they reflect what actually happened at the exchange rather than what the local system assumes happened. Every event should trigger a reconciliation check against internal state, and a reject should trigger a defined response: retry with adjusted price or size, a scaled re-send, an immediate alert to the operator, or a conditional pause on that account until a human reviews it.

4. Operational safeguards: kill switches and per-account controls

Technical fixes handle real-time sync. Operational safeguards handle what happens when something still goes wrong, and they need to be tested before they're needed.

Cancel-on-disconnect is the baseline safeguard recommended across FIA and CFTC materials on exchange risk controls, which call for drop-copy reconciliation and automatic cancellation of working orders when a connection drops. The logic is straightforward: once an operator loses visibility into an account, any order still working on that account is effectively unmanaged, so canceling it removes the risk rather than hoping it resolves favorably.

  • Server-side kill switches and daily loss limits enforced at the broker level, not just a client-side toggle that can fail with the same connection.
  • Per-account copy toggles that let an operator disable one follower instantly without touching the rest of the group.
  • Automatic per-order size scaling that enforces each account's own prop-firm rules rather than applying one global setting.
  • Scheduled connectivity-failure drills, cancel-all verification, and audit-log review to confirm the safeguards actually fire under test conditions.

Pro Tip: Run a disconnect drill monthly, not just at setup, since broker-side rule changes can silently break a cancel-on-disconnect configuration that worked fine last quarter.

Server-enforced limits matter because they survive a local outage. A daily loss limit set only in client software does nothing once that software loses its connection, which is exactly when the limit is needed most.

5. Diagnose and recover when accounts fall out of sync

When desync is confirmed, the order of operations matters more than speed. Acting fast on bad information usually compounds the problem.

  1. Stop copying to the affected follower accounts immediately, before investigating further.
  2. Pull ExecutionReports, CommandReports, and drop-copy logs with timestamps for both leader and follower.
  3. Match leader fills to follower fills by unique identifier and timestamp to find exactly where the two diverged.
  4. Check every bracket leg's working status individually, since a missing stop or target leg is a common silent failure.
  5. Identify the specific reject reason on any failed order rather than assuming a generic connectivity issue.
  6. Choose a recovery path: a manual offset or hedge for an exposed position, a controlled re-send at scaled size once the cause is fixed, or a full stop-and-reconcile if the discrepancy is large.
  7. Update margin buffers, throttles, or per-account rules based on what caused the gap, then run a verification pass before re-enabling live copying.
ScenarioRecommended action
Missing bracket leg, position exposedManual hedge or offset immediately
Reject due to size limitScaled re-send at corrected size
Multiple accounts out of syncFull stop-and-reconcile before resuming
Connectivity drop, no fills lostCancel-on-disconnect verification, then resume

Operators who skip the reconciliation step and simply resume copying tend to see the same failure repeat within days, because the underlying cause, whether a margin gap or a rule mismatch, never actually got fixed.

6. How TradeDupe applies these controls in production

TradeDupe mirrors leader fills to enabled follower accounts over live WebSocket streams, typically within 100ms, which keeps the sync window tight enough to limit the kind of drift described above. Connections run through Tradovate's official OAuth flow, so credentials are never stored outside Tradovate itself.

Built-in safeguards map directly onto the operator controls covered earlier: rogue-trade detection flags follower activity the copier didn't initiate, per-account toggles let an operator disable one follower without affecting others, and daily loss limits and profit targets are set on Tradovate so the broker enforces them server-side. The platform works with multiple Tradovate-based prop firms and offers trade journaling, reporting, and AI trade analysis on advanced plans.

Why treating every follower account the same causes desync

The most expensive mistake in multi-account copy trading is assuming all follower accounts behave identically. They don't, because margin, size limits, and scaling rules differ by prop firm and sometimes by account inside the same firm. The safer default is per-account checks on every copy, a conservative margin buffer, and a cancel-on-disconnect drill practiced often enough that it works without anyone remembering the manual.

> — Andres

Reduce desync risk with built-in safeguards

The controls covered in this guide, real-time event handling, per-account margin checks, and cancel-on-disconnect protection, are the same ones TradeDupe builds into its mirroring engine, so an operator doesn't have to assemble them from scratch. Rogue-trade detection and per-account toggles handle the enforcement side automatically, while server-enforced daily loss limits remove the single point of failure a client-side setting creates.

TradeDupe
TradeDupe

Every plan, starting with the Standard plan at $20 per month billed yearly, includes a 7-day free trial with one-click cancellation, which makes it straightforward to test the setup against a live follower account before committing. Operators running larger desks can review the Tradovate trade copier page for implementation detail or start a trial directly.

Sources

FAQ

Why is my copy trading not working?

Copy trading usually breaks down because of an order reject, a partial fill on a bracket leg, or a connectivity gap between leader and follower accounts. Check the ExecutionReport or CommandReport for a specific reject reason, such as InvalidPrice or a maximum-quantity violation, before assuming it's a connection issue.

Is copy trading illegal?

Copy trading itself is not illegal; it is a trade-execution method, not a regulated activity on its own. Legality depends on the broker, the prop firm's own rules, and whether the account holder has authority to trade the account, so operators should confirm their specific setup complies with their firm's terms.

How does copy trading work in the forex market?

In forex and futures copy trading, a leader account's fills are mirrored to one or more follower accounts, typically through an API connection that pushes order and execution events in real time. The follower's own margin, size limits, and risk rules still apply independently, which is why pre-copy checks matter as much as the mirroring itself.

What causes order desync between leader and follower accounts?

The most common causes are order rejects, partial fills on bracket legs, latency or polling delays, and mismatched risk rules such as different margin requirements or size limits between accounts. Identifying which one occurred, using the ExecutionReport's reject reason, is the first step toward fixing it.

How can I prevent desync before it happens?

Run pre-copy margin and size checks on every follower account, subscribe to WebSocket events instead of polling for status, and enable cancel-on-disconnect so a dropped connection doesn't leave orders unmanaged. Testing these safeguards with a disconnect drill before going live catches gaps that only show up under real conditions.

For educational purposes only. Not financial advice. Futures trading involves substantial risk of loss and is not suitable for every investor.