Understanding Self-Trade Prevention

Understanding Self-Trade Prevention

What is self-trade prevention

Self-trade prevention involves systems and protocols designed to prevent a trader from inadvertently executing trades against themselves, which can distort market data and create an illusion of increased trading activity.

Bullish considers self-trade as:

  • Complementing buy and sell orders in the same market placed by the same trading account;

  • Orders from multiple sub-accounts under the same Institutional trading account matching with each other.

Identification Through endCustomerID

Bullish assigns a unique identifier known as the endCustomerID at the time of account creation. This identifier is crucial as it allows the trading systems to distinguish between different trading accounts including sub-accounts within the same institutional client, and serves as a key element in preventing self-trades.

Preventing Self-Matching: A Two-Scenario Approach

Bullish's matching engine is designed to prevent self-matching of orders, ensuring that orders from the same trading account or sub-accounts with identical endCustomerID values do not execute against each other. Let's explore how this works in two different scenarios:

Scenario 1: Single Trading Account

Consider a situation where you place two opposing orders—one to buy and another to sell—within the same market, such as BTC/USDC, using a single trading account. In this case, the exchange system intervenes to prevent these orders from matching with each other. Instead, both orders remain open, available to match with orders from other clients. This ensures that you do not inadvertently trade with yourself.

Scenario 2: Multiple Sub-Accounts

In a more complex scenario, you might use two sub-accounts to place opposing orders. For instance, Account A might place a sell order for 1 BTC at 10,000 USDC, while Account B places a buy order for 2 BTC at a similar price. Here, the exchange system takes a proactive approach: the original sell order from Account A is canceled, and the buy order from Account B is adjusted to 1 BTC. This automatic netting ensures that only one order is executed, while the other is canceled, preventing self-trading.

 

Self-Trade Prevention in Auctions

Self-trade prevention also applies to auctions. In continuous trading, the system prevents self-matching at the point when orders would execute against each other. In auctions, the system takes a simpler approach — it checks for potential self-trades at the moment you submit your order. If a conflict is detected, the new order is rejected and your existing order stays as it is.

This means that by the time the auction cross takes place, there are no self-trade conflicts left in the book.

Scenario 1: Two Auction Market Orders

Suppose you already have an auction market buy order for 5 BTC. You then submit an auction market sell order for 3 BTC from the same account. Because both are market orders on opposite sides, they would inevitably match at the cross. The system rejects your sell order, and your original buy order for 5 BTC remains active and unchanged.

Scenario 2: Two Auction Limit Orders with Crossing Prices

Suppose you have an auction limit buy order for 2 BTC with a limit price of 70,000 USDC. You then submit an auction limit sell order for 1 BTC with a limit price of 68,000 USDC from the same account. Because your buy price (70,000) is higher than your sell price (68,000), these orders would match at any clearing price between them. The system rejects your sell order, and your original buy order remains active.

However, if your sell limit price were 72,000 USDC instead — higher than your buy price of 70,000 — there is no conflict. Both orders are accepted because they would not match against each other.

Scenario 3: Auction Market Order, Then Auction Limit Order

Suppose you have an auction market buy order for 5 BTC. You then submit an auction limit sell order for 2 BTC from the same account. Because a market order will match at any price, it would always trade against your limit order regardless of the limit price. The system rejects your sell order, and your original auction market buy order remains active.

Scenario 4: Auction Limit Order, Then Auction Market Order

Suppose you have an auction limit sell order for 3 BTC with a limit price of 72,000 USDC. You then submit an auction market buy order for 4 BTC from the same account. Because a market order will match at any price, it would always trade against your existing limit order. The system rejects your market buy order, and your original auction limit sell order remains active.

Price Amendments

If you amend the limit price of an existing auction limit order and the new price would create a conflict with another auction limit order you have on the opposite side, the amendment is rejected. Your order stays at its original price.

For example, if you have an auction limit buy at 68,000 USDC and an auction limit sell at 72,000 USDC, and you amend your buy price to 73,000 USDC, the amendment is rejected because 73,000 is now higher than your sell price of 72,000. Your buy order remains at 68,000 USDC.

Digital assets and related products are high risk. Consult your professional advisor and trade responsibly. Access to our services is prohibited for residents of jurisdictions where trading in virtual assets is restricted or banned, including residents of Mainland China. Visit bullish.com/legal for important information and risk warnings.