Skip to main content
Self-trade prevention stops an order from matching against your own resting liquidity. When an incoming order would trade with an order from the same account, the match is suppressed instead of executed. It is always on, on every market, for every account. There is nothing to enable and no parameter to set.

Why it exists

Two reasons, and both matter. Wash trading. Trading with yourself creates volume and prints without transferring risk. It is a way to fabricate activity, and preventing it at the matching layer means the venue’s reported volume reflects trades between different parties. Accidental self-crossing. More common and less sinister. A market maker quoting both sides, or several strategies running under one account, can easily cross their own quotes. Without prevention this costs taker fees on both legs and produces a fill that changed nothing about the position.

What happens

When the matcher detects that an incoming order would take resting liquidity from the same account, the resting order is cancelled and the incoming order continues against the rest of the book.
Incoming order
Would it take your own resting order?
Matches normally
The resting order is cancelled
Your order continues into the rest of the book
Within one accountAlways prevented. Nothing to enable, no parameter to set.
Between sub-accountsNot prevented — they are separate accounts by design.
The maker is cancelled, not the taker — with a distinct status, so an automated system can tell it from an ordinary cancel.
Cancelling the maker rather than the taker means the order you just submitted still does what you asked, while the stale quote standing in its way is removed. Cancelled orders are marked with a distinct status so you can tell a self-trade cancellation from an ordinary one — this is worth surfacing in any automated system, since a quote disappearing for this reason means something in your own strategy set collided.

Scope

Prevention applies within an account. Sub-accounts are treated as separate accounts and are not protected against each other. That is a deliberate boundary rather than an oversight. Sub-accounts exist to isolate strategies — separate risk, separate margin, separate books. Strategies that are genuinely independent may legitimately end up on opposite sides of the same trade, and blocking that would mean one sub-account’s quoting could silently prevent another’s execution.
If you run multiple strategies that must never trade with each other, keep them in the same account so prevention applies. If you run strategies that may legitimately take opposite sides, sub-accounts are the right structure. This is a decision to make deliberately rather than discover.

What it does not do

It does not guarantee your order fills. If your own resting order was the only liquidity at that price, cancelling it does not create a counterparty — your order continues into a book that may not have one. It does not prevent coordinated trading between accounts. Prevention is a matching-layer mechanism scoped to one account. Two separate accounts trading with each other is not something the matcher can distinguish from ordinary trading. It does not reduce your position by cancelling. The cancelled maker was an order, not a position. Nothing about your exposure changes.

Where to go next

Matching

Where the check runs inside block execution.

Order types

Post-only orders, and how they interact with your own book.

Modify orders

Managing quotes without crossing yourself.

Fees

The taker fees a self-trade would otherwise have cost.