Market microstructure & order books

Continuous trading vs auctions

structural
Reviewed 4 June 2026. As of 2026: a permanent feature of the market, not an edge that decays.

Continuous matching trades whenever orders cross; auctions batch orders and clear at one price. Opens, closes and volatility auctions exist for a reason, and they change the game for a fast trader.

The idea

Continuous trading vs auctions annotated diagramfigure
Continuous matching trades whenever orders cross; auctions batch orders and clear at one price. Opens, closes and volatility auctions exist for a reason, and they change the game for a fast trader.

Reference figure. This concept is explained in prose and diagram; the interactive widgets live on the flagship pages it links to under Where this fits.

What is continuous trading?

Continuous trading (the continuous double auction) matches orders the moment they cross. Every incoming order is checked against the resting book immediately, and trades print one by one throughout the session. It is the default state of a lit market: price discovery is ongoing, and every microstructure signal in this atlas (queue position, imbalance, the microprice) is computed against this live, ever-updating book.

The intuition is that the book is "live". An order either crosses (and trades now) or rests (and waits its turn). Price-time priority and the matching engine govern each individual match as it happens, one print at a time. This is the regime almost everything else on the site assumes: a continuously updating limit order book you can place into, cancel from, and trade against at any instant. Speed matters precisely because the next match could happen at any microsecond, and being first to react to a new quote is the whole continuous game.

In continuous trading each order is matched on arrival against the resting book, so trades stream out one at a time and time priority decides every individual print.
order arrives at t    {trade nowif it crossesrest in queueotherwise\text{order arrives at } t \;\Longrightarrow\; \begin{cases} \text{trade now} & \text{if it crosses} \\ \text{rest in queue} & \text{otherwise} \end{cases}

What is a call auction, and how is the price found?

A call auction collects buy and sell orders over a window without matching any of them, then crosses them all at once at a single uncrossing price: the price that maximises the volume that can be matched. Everyone who trades in the auction trades at that one price, simultaneously. There is no continuous queue and no time race for the print: it is a batch, not a stream.

The intuition is that instead of a live counter, everyone hands in sealed orders; the auctioneer finds the single price at which the most shares can change hands and fills everyone eligible there. The uncrossing rule (the price-determination algorithm) runs in order: first maximise executable volume; if several prices tie, minimise the residual order imbalance; and if still tied, fall back to a reference price, such as the last continuous price or the midpoint. The exact tie-break ladder differs by exchange, so you must read the specific venue's auction algorithm. The key property for HFT is that time priority barely matters inside the auction: what matters is your price and whether you sit inside the clearing cross. That neutralises the speed race for the auction itself and shifts the contest to order placement and imbalance estimation during the indicative-auction phase, when the venue publishes an indicative price and imbalance that update as orders arrive.

The uncrossing price is the one that maximises matched volume: the highest point of the minimum of cumulative demand and cumulative supply across all candidate prices.
p=argmaxp  min ⁣(D(p),S(p))p^{*} = \arg\max_{p} \; \min\!\big(D(p),\, S(p)\big)
Show the uncrossing construction optional

Build cumulative demand as a step function: sort the bids from the highest limit price down, and at each candidate price pp let D(p)D(p) be the total size willing to buy at pp or higher. Build cumulative supply the mirror way: sort asks from the lowest price up, and let S(p)S(p) be the total size willing to sell at pp or lower.

D(p)=bids b:pbpqb,S(p)=asks a:papqaD(p) = \sum_{\text{bids } b:\, p_b \geq p} q_b, \qquad S(p) = \sum_{\text{asks } a:\, p_a \leq p} q_a

At each candidate price the volume that can actually trade is the smaller of the two: you cannot match more buys than there are sells, or vice versa. The auction crosses at the price that maximises this matched volume.

V(p)=min ⁣(D(p),S(p)),p=argmaxpV(p)V(p) = \min\!\big(D(p),\, S(p)\big), \qquad p^{*} = \arg\max_{p} V(p)

If several prices give the same maximum VV, the venue applies the tie-break ladder: minimise the residual imbalance D(p)S(p)\lvert D(p) - S(p) \rvert first, then fall back to a reference price. Every filled order, buyer or seller, then trades at the single price pp^{*}, regardless of the more aggressive limit it submitted.

Which auctions run, and when?

Lit equity venues typically run an opening auction to establish the day's first price, a closing auction to set the official close (now a large share of daily volume) and volatility (intraday) auctions that automatically replace continuous trading when a price moves too fast, acting as a cooling-off circuit breaker. Some venues also run scheduled periodic auctions through the day.

The opening auction aggregates overnight order flow into a single, robust first print, avoiding a chaotic continuous open, and sets the reference for the early session. The closing auction sets the official closing price used for index calculation, NAVs, derivatives settlement and benchmarks, which is exactly why passive, index and benchmark flow concentrates there. As of 2026 the close is one of the highest-volume and most contested moments of the equity day. Because it is a single-price cross, it neutralises latency but rewards imbalance prediction and accurate close-price estimation. Volatility auctions (and the US LULD regime) kick in when a continuous price would breach a band: the venue halts continuous trading and runs a short auction to re-establish an orderly price, the microstructure side of circuit breakers. Periodic auctions are frequent short scheduled crosses, from sub-second to a few seconds, that proliferated in the EU under MiFID II as a lit alternative for executing without full continuous-book leakage; their semantics, too, are venue-specific.

A trading day is bracketed and punctuated by auctions: an opening cross, the continuous session, volatility auctions if triggered, and the closing cross that sets the official price.
open auction    continuous session    [volatility auctions]    closing auction\text{open auction} \;\to\; \text{continuous session} \;\to\; [\text{volatility auctions}] \;\to\; \text{closing auction}

Why do auctions exist, and what do they mean for HFT?

Auctions exist to concentrate liquidity in time and produce a single, robust, manipulation-resistant price when continuous trading is fragile: at the open, at the official close, and after a shock. Continuous trading is efficient when flow is steady but brittle when it is not: the open carries stale overnight information, the close needs one official number, and a shock needs a pause. Batching to a single price aggregates dispersed liquidity and dampens the incentive to win a race by a microsecond.

For HFT this changes the game completely. Speed is neutralised inside the auction: the single price and simultaneous fill mean the latency-arbitrage and queue games that dominate continuous trading do not apply to the cross itself. The new arena is the indicative phase: estimating the uncrossing price and imbalance, and timing and sizing your auction order, often informed by the continuous book right up to the cut-off. Cross-phase strategies follow naturally: trading the continuous book into the close to position for the auction, and exploiting statistical relationships between the indicative imbalance and the realised close. (Where that edges into deliberately distorting the close it becomes marking the close / momentum ignition, recognition only, not an operational how-to.) A structural note for crypto: most centralised crypto venues run continuously, 24/7, with no scheduled auctions, so the close-auction game simply does not exist there, a real difference worth flagging.

The continuous game is won on speed and queue position; the auction game is won on imbalance estimation and close-price prediction. The auction trades one competitive arena for another.
{latency,queue position}continuous edge    {imbalance,close estimate,order placement}auction edge\underbrace{\{\text{latency},\,\text{queue position}\}}_{\text{continuous edge}} \;\longrightarrow\; \underbrace{\{\text{imbalance},\,\text{close estimate},\,\text{order placement}\}}_{\text{auction edge}}

Worked example

Take a synthetic closing auction, as of 2026; reproduce it in the uncrossing diagram above. Orders submitted during the call window give cumulative demand (bids high to low) of 100 at 50.02 or better, 250 at 50.01 or better, and 400 at 50.00 or better; and cumulative supply (asks low to high) of 150 at 50.00 or better, 300 at 50.01 or better, and 500 at 50.02 or better. Everything here is synthetic. Find the uncrossing price by maximising matched volume, min(D,S)\min(D, S), at each candidate price.

At 50.00 the match is min(400,150)=150\min(400, 150) = 150. At 50.01 it is min(250,300)=250\min(250, 300) = 250. At 50.02 it is min(100,500)=100\min(100, 500) = 100. Matched volume is maximised at 50.01, where 250 units can cross.

Matched volume peaks at 50.01, so the auction crosses 250 units there. Every filled order, buyer or seller, trades at that single price, regardless of the limit it submitted.
min(400,150)=150  <  min(250,300)=250max  >  min(100,500)=100    p=50.01\min(400,150)=150 \;\lt\; \underbrace{\min(250,300)=250}_{\text{max}} \;\gt\; \min(100,500)=100 \;\Longrightarrow\; p^{*} = 50.01

So the auction crosses 250 units at a single price of 50.01; every filled order trades at 50.01 provided its limit was at least that aggressive, and the residual imbalance (the un-matched buys or sells) carries into the next phase or goes unfilled. Note the speed-neutrality the whole page has been building toward: arriving first in the window gained you nothing. What mattered was submitting at or through 50.01 with enough aggressiveness to land inside the cross. The numbers here are synthetic and rounded; real uncrossing algorithms, tie-breaks and auction schedules are venue-specific and must be verified against the exchange's auction spec and dated.

Where this fits