Understanding Auctions on Bullish
An auction is a scheduled event where buy and sell orders are collected over a period of time and then matched all at once at a single clearing price. Unlike continuous trading, where orders match instantly as they arrive, the auction gathers all orders first and executes them together at the end. Bullish runs a daily auction for supported trading pairs at 4:00 PM ET.
How the auction works
The auction order book is fully separate from the continuous trading order book. Orders placed in the auction do not interact with orders on the continuous market, and vice versa.
The auction runs through four phases every day. Each phase has different rules about what you can do with your orders.
Phase | Time (ET) | What happens | What you can do |
|---|---|---|---|
Accumulation | 4:00 PM - 3:55 PM (next day) | The main window for building auction volume. | Create, amend, or cancel orders. |
Lockdown | 3:55 PM - 4:00 PM (next day) | Final price discovery. Indicative prices and imbalances are broadcast every 10 seconds. | Create new orders only. No amendments or cancellations. |
The Cross | 4:00 PM (next day) | All orders are matched at a single price. | No orders accepted. |
After the cross, the cycle repeats — accumulation begins again immediately for the next day's auction.
Auction order types
There are two types of auction orders. Both use Time in Force = GTX (Good Til Cross) and are kept in a separate order book from continuous trading.
Auction market order — An order to buy or sell at whatever the clearing price turns out to be. You do not specify a price. This gives you the highest chance of being filled, but you accept whatever price the auction determines.
Auction limit order — An order to buy or sell only if the clearing price meets your limit. For example, if you place an auction limit buy at 70,000 USDC, your order will only fill if the clearing price is 70,000 or below. This gives you price control, but your order may go unfilled if the clearing price moves beyond your limit.
Self-trade prevention
Self-trade prevention applies to auction orders. The system checks for potential self-trades at the time you submit your order. If a conflict is detected, the incoming order is rejected and your existing order remains unchanged. For full details, see Understanding Self-Trade Prevention.
Price protection
Bullish applies two layers of price protection to keep auction prices fair.
Price band (at order entry) — When you submit an auction limit order, the system checks that your limit price is within a reasonable range of the current Index Price. If your price is too far away, the order is rejected. This is the same price band check that applies to limit orders on the continuous order book.
priceBuffer = 10%
At the price entry, index price = 100,
Max buy limit price = 100 * (1 + 10%) = 110
Min sell limit price = 100 * (1 - 10%) = 90
Price collar (at the cross) — Even if your auction limit order was accepted at entry, the system applies a second check at cross time. If the Index Price has moved and your limit price now falls outside the collar range (Index Price +/- price collar percentage), your order is excluded from the cross. These orders receive an "Auction order excluded by price collar" status.
auctionPriceCollar = 5%
At the cross, index price = 100,
final matched price will be capped between 95 - 105 and ignore all the price beyond the range.
To check the priceBuffer & auctionPriceCollar, you can refer to market API endpoint.
Market | Price Band (%) | Price Collar (%) |
|---|---|---|
BTC/USDC | 10% | 1% |
USD/USDC | 10% | 0.1% |
USDT/USDC | 10% | 0.1% |
How the clearing price is determined
The system tests every auction limit price level in the order book and selects the price that produces the highest paired quantity — the total volume that can be matched between eligible buy and sell orders at that price. Auction market orders are eligible at every price level since they accept any price.
If multiple price levels produce the same paired quantity, the system applies tie-breakers in order:
Step | Rule | Example |
|---|---|---|
| Choose the price with the smallest imbalance, where imbalance = max(totalBuyQuantity, totalSellQuantity) - pairedQuantity. | Two prices both pair 100 BTC. At 99,000 the imbalance is 10 BTC; at 101,000 the imbalance is 30 BTC. The system picks 99,000. |
| If the imbalance is also equal, choose the price closest to the reference price (the last traded price on the continuous order book). | Two prices both pair 100 BTC with 10 BTC imbalance. Reference price is 100,000. Price 99,500 is 500 away; price 101,000 is 1,000 away. The system picks 99,500. |
| If both prices are equidistant from the reference price, choose the higher price. | Two prices both pair 100 BTC with 10 BTC imbalance. Reference price is 100,000. Price 99,000 and 101,000 are both 1,000 away. The system picks 101,000. |
These tie-breakers are applied in sequence, so a single clearing price is always produced.
Special cases
Case | Condition | Clearing Price |
|---|---|---|
Only auction market orders | No auction limit orders are submitted. | Reference price |
Auction market orders dominate both sides | Auction market orders on both sides are large enough to fully match each other. Auction limit orders are excluded because they add zero incremental paired volume. | Reference price |
No crossed orders | Best buy limit price is lower than the best sell limit price. No orders can match. | No fills. Paired quantity is zero. |
Net Order Imbalance Indicator (NOII)
During the 5-minute Lockdown phase, the system broadcasts an update every 10 seconds to help you assess the auction before the cross. Each update includes:
Indicative price (Far price) — The price the auction would clear at if the cross happened right now.
Paired quantity — The predicted matched volume at the indicative price.
Imbalance direction — Whether there are more buyers or sellers (BUY, SELL, or NONE) at the indicative price (Far Price).
Imbalance quantity — The size of the imbalance.
Reference price — The last traded price on the continuous order book.
You can use this information to decide whether to submit additional orders to take advantage of the imbalance before the cross.
Fill priority
When there is more volume on one side than the other, not all orders can be fully filled. The system allocates fills in the following order:
Auction market orders first, by submission time (earliest first).
Auction limit orders next, by best price first, then by submission time.
This means auction market orders have a higher chance of being filled compared to auction limit orders. Any unfilled orders or remaining quantity from partially filled orders are automatically canceled after the cross.
What happens after the cross
After the cross executes, every auction order receives one of the following outcomes:
Filled — Your entire order was matched at the clearing price.
Partially filled — Part of your order was matched. The remaining quantity was not matched.
Unfilled — Your order received no match.
Unfilled (outside price collar) — Your auction limit order was excluded because its price fell outside the collar range. This does not apply to auction market orders.
All unfilled or partially filled orders are automatically closed after the cross. They do not carry over to the next auction.
Example: A typical auction
Reference price: 99,000 USDC (last traded price on the continuous order book).
Orders submitted:
Time (ET) | Phase | Client | Order |
|---|---|---|---|
4:30 PM | Accumulation | Alex | Auction market buy — 100 BTC |
10:30 PM | Accumulation | Bob | Auction limit buy — 50 BTC @ 100,000 |
3:56 PM (next day) | Lockdown | Chris | Auction limit sell — 100 BTC @ 99,000 |
3:58 PM (next day) | Lockdown | David | Auction limit sell — 20 BTC @ 101,000 |
NOII during Lockdown:
After | Indicative Price | Paired Quantity | Imbalance Direction | Imbalance Quantity |
|---|---|---|---|---|
Chris's order | 99,000 | 100 BTC | BUY | 50 BTC |
David's order | 101,000 | 100 BTC | SELL | 20 BTC |
At the cross (4:00 PM EST) — Clearing price: 101,000 USDC
Client | Order | Outcome | Reason |
|---|---|---|---|
Alex | Market buy — 100 BTC | Filled | Market orders are filled first. |
Chris | Limit sell — 100 BTC @ 99,000 | Filled | Clearing price is above his limit. |
Bob | Limit buy — 50 BTC @ 100,000 | Unfilled | His limit is below the clearing price. |
David | Limit sell — 20 BTC @ 101,000 | Unfilled | Not enough remaining buy demand. |
API & connectivity
Auction orders can be submitted via REST API, FIX, or the Web UI. For full API documentation including endpoints, request schemas, and WebSocket topics, see the Bullish API Documentation.
How to view & trade auctions on Bullish
For a step-by-step guide on how to place auction orders and monitor the auction on the Bullish website, see How to view & trade auctions on Bullish.
Key details
|
|
|---|---|
Market | BTC/USDC |
Cross time | 4:00 PM ET (daily) |
Order types | Auction market order, Auction limit order |
Amendable | Auction limit orders only (price only, during Accumulation) |
Cancellable | During Accumulation only |
Price protection | Price band at entry + Price collar at cross |
NOII updates | Every 10 seconds during Lockdown |
Order book | Fully separate from continuous trading |
Connectivity | REST API, FIX & Web UI |
How auctions impact your margin
At order entry, the exchange reserves funds (non-margin accounts) or available margin (margin-enabled accounts) to cover the worst-case clearing price. The reservation uses the Index Price plus a 10% buffer — the same Auction Price Collar Threshold used at the cross.
Non-margin-enabled accounts (spot-only)
Buys lock quote currency; sells lock the base asset being delivered.
Order type | Side | Funds locked at entry |
|---|---|---|
LOC | Buy |
|
LOC | Sell |
|
MOC | Buy |
|
MOC | Sell |
|
The 10% buffer only applies to MOC buys, because there is no limit price to anchor the lock.
30-minute repricing check (MOC buys only). Every 30 minutes the system rechecks that the locked quote currency still covers the current Index Price × 1.10. If not, the order is cancelled and the funds released. LOC orders and MOC sells are not subject to this check.
Margin-enabled accounts
An auction order has two effects on your margin at order entry:
Available margin decrease — a buffer reserved on top of the order's normal margin requirement, symmetric for buy/sell and identical for LOC/MOC:
available margin decrease = quantity × Index Price × 10%Spot margin requirement — the unfilled order also contributes to your overall BPM margin requirement. The
orderPriceused to value it depends on the order type:
Order type | Available margin decrease |
|
|---|---|---|
LOC |
|
|
MOC |
|
|
Margin scenario shifts (spot up/down, vol shifts, etc.) continue to use the Index Price.
Example: MOC buy, 1 BTC, Index Price = 100,000 USDC
| Non-margin-enabled | Margin-enabled |
|---|---|---|
At order entry | 110,000 USDC locked ( | 10,000 USDC available margin reserved; order valued in BPM at 110,000 |
If Index Price moves to 105,000 | Repricing check at 30-min mark requires 115,500 → order cancelled, 110,000 released | BPM recomputes continuously — no separate check, no auto-cancellation |