Microstructure and Execution · Execution
25Circuit Breakers and Halts
On 9 March 2020 the S&P 500 fell seven per cent minutes after the open and all US equity trading stopped for fifteen minutes; it happened three more times that month. Whether stopping a falling market calms it or makes it fall faster toward the stop is an old argument with new data. This chapter sets out the designs, builds them as venue-side policies for the exchange simulator (firm.halts), and runs a crash through each, measuring in particular whether sellers rush toward a band before it stops them: the magnet effect.
25.1 Designs: bands, pauses, halts, limits
Definition 25.1 (Static and dynamic price bands)
A static price band limits trading to a range around a fixed reference (the previous close, the opening price) for the session. A dynamic price band limits it to a range around a reference that follows recent trades, such as their average over the last minutes.
Definition 25.2 (Trading pause, reopening auction)
A trading pause suspends continuous trading in an instrument for a short, set time while orders may still be entered, modified and cancelled; it ends with a reopening auction, a call auction (One Quant Book 1, chapter 13) that sets the price at which trading resumes.
A band stops trades from printing outside a range; a pause stops them altogether for a while; a halt (One Quant Book 8, chapter 17) stops them until the venue or the regulator decides; a price limit (One Quant Book 1, chapter 12) is a band that holds all day. They differ in what they protect against: a band against an erroneous or runaway order, a pause against a price moving faster than liquidity can return, a halt against news the market has not digested.
firm.halts implements them as policies that firm.exchsim loads (the halts field of the venue’s configuration): the policy watches the venue’s engine every half second through a scheduled call and sends the engine’s own controls, R to set a band (orders priced outside it are rejected and matching stops at it) and P to change the phase (halted, reopening call, trading). Leaving the call uncrosses it with chapter 10’s auction.
if self.trades:
ref = sum(p for _, p, _ in self.trades) / len(self.trades)
else:
ref = self.ref if self.ref is not None else st.ref_price
if self.ref is not None and abs(ref / self.ref - 1) < self.update:
ref = self.ref # the reference moves only by update_pct or more
self.ref = ref
self._set_band(t_ns, ref)
lo, hi = self.band
bid, ask = st.book.best(1), st.book.best(-1)
if bid is not None and ask is not None:
self.dist.append((t, (bid - lo) / st.tick, (ask - lo) / st.tick))
limit = (ask is not None and ask <= lo) or (bid is not None and bid >= hi)
if self.shadow:
if limit and self.limit_since is None:
self.log.append((t, "limit", lo))
self.limit_since = t if limit else None
return
if limit:
if self.limit_since is None:
self.limit_since = t
self.log.append((t, "limit", lo if ask is not None and ask <= lo else hi))
elif t - self.limit_since >= self.ls:
self._send(t_ns, CTL["P"](self.locate, "U", "LULD"))
self.paused_until = t + self.pause
self.limit_since = None
self.log.append((t, "pause", self.pause))
else:
self.limit_since = None
25.2 Single-stock and market-wide mechanisms
In the United States, single stocks trade inside limit up-limit down bands (One Quant Book 1, chapter 31), and the whole equity market stops when the S&P 500 falls far enough from the previous close.
As of September 2026 — Market-wide circuit breakers in March 2020
The market-wide circuit breaker halts all US cash equity and equity options markets for 15 minutes when the S&P 500 falls 7% (Level 1) or 13% (Level 2) from the prior day’s close before 3:25 p.m., each at most once a day, and for the rest of the day at 20% (Level 3). Level 1 halts occurred on 9, 12, 16 and 18 March 2020; on 9 March the index crossed the threshold at 9:34:13 a.m. and reopening auctions began at 9:49:13 a.m.; on 18 March it crossed at 12:56:17 p.m. and reopened at 1:11:17 p.m. (report of the industry working group submitted to the SEC in March 2021).
The simulation scales the mechanisms down to its five-minute sessions: a stock at USD 100.00 with a one-cent tick, a crash in which a seller sends 40 000 shares as sixty market orders over a minute, and four regimes: no mechanism; a dynamic band of 0.15% around the last minute’s average trade price, with a limit state (the best offer at or below the lower band, or the best bid at or above the upper) that pauses the stock for 20 seconds if it lasts 3; velocity logic (below); and a market-wide halt of 30 seconds at falls of 0.1%, 0.2% and 0.3%.
25.3 Futures: velocity logic and stop logic
Definition 25.3 (Velocity logic)
Velocity logic pauses matching in a futures contract for a few seconds when its price moves by more than a set number of ticks within a set short time; during the pause orders may be entered, modified and cancelled, and matching resumes with an auction.
CME’s Globex describes velocity logic as detecting market movement of a predefined number of ticks up or down within a predefined time, and moving the instrument into a reserved state in which customers can submit, modify and cancel orders. Stop logic does the same when the triggering of stop orders (chapter 2) would move the price by more than a set amount. The simulation’s velocity policy pauses for 10 seconds after a move of 8 ticks within 2 seconds (firm_halts.Velocity).
| mechanism | fall (ticks) | halted (s) | seller’s fills | seller’s cost (ticks) |
|---|---|---|---|---|
| none | 27.4 | 0 | 17 580 | 12.2 |
| dynamic band and pause | 20.0 | 0 | 16 440 | 9.6 |
| velocity logic | 24.9 | 79 | 11 752 | 13.2 |
| market-wide halt | 18.9 | 48 | 9 279 | 6.6 |
mx_halts.mechanisms_study.Each mechanism shortens the fall by taking orders out of the market (Table 25.1). The band does it without a single pause: market orders stop at its lower edge and the rest of each order is cancelled, so the seller sells fewer shares at better prices. Velocity logic pauses often (79 seconds of five minutes) and helps least: each reopening auction meets the same selling. The market-wide halt cuts the fall most and the seller’s volume most, which is the policy question in one line: a mechanism that protects prices does so by refusing trades.
mx_halts.example.25.4 Magnet effects in the evidence
Subrahmanyam (1994) showed in a model that circuit breakers may cause agents to advance trades in time, and so increase price variability and exacerbate the moves they are meant to stop; Cho, Russell, Tiao and Tsay (2003) looked for this magnet effect of price limits in high-frequency data from the Taiwan Stock Exchange. The simulation adds the mechanism behind the argument: sellers who, when a band is published and enforced, sell faster the closer the best bid is to its lower edge (up to twice their base rate within one tick of it), for fear of being unable to sell once it binds.
The measure is a first passage: for each session and each distance from the lower band, the first time the best bid comes within ticks; did it come within one tick of the band in the next 30 seconds? Three conditions, 80 sessions each: the band enforced with the anticipating sellers, the band enforced without them, and no band (the same band computed but not enforced, and no anticipation).
mx_halts.magnet_study.Figure 25.2 separates two effects. The magnet effect, the anticipators’ contribution (band and anticipators minus band alone), averages over distances of 3 to 7 ticks: at 5 ticks, 0.66 against 0.63, with standard errors of 0.05 and 0.06. It has the sign the theory predicts at nine of the eleven distances and is too small to tell from zero in 80 sessions. The band’s own effect (band alone minus no band) averages , and is negative at ten of the eleven distances: at 5 ticks, 0.63 against 0.75. In this market the band repels more than it attracts, because it takes the sellers’ market orders out of the book at its edge, which is stronger than the extra selling it invites. A real magnet needs more traders who anticipate, or a band that is not also a barrier; the simulation says how to look for one: condition on the distance, compare with a market without the mechanism, and separate the behaviour from the mechanics.
25.5 Reopening
A pause or halt ends in a reopening auction, and its design decides whether the pause did any good. Chapter 10’s auctions apply: an indicative price published during the call, collars that stop the reopening price from jumping too far, and extensions when imbalance is too large. Brugler, Linton, Noss and Pedace (2018), with London Stock Exchange data, found that single-stock circuit breakers improved the liquidity and reduced the volatility of the other stocks that kept trading: the pause’s benefit may be felt outside the paused stock. In the simulation, the velocity pauses’ reopenings met the same selling and the fall resumed: a pause that ends before the other side of the market has arrived only postpones.
25.6 Tutorial: stopping a crash
Goal. Run a crash through bands, pauses, velocity logic and a market-wide halt in firm.exchsim, and measure the magnet effect. End state: Table 25.1, Figures 25.1 and 25.2.
- Policies.
firm_halts.LULD(pct, window_s, limit_state_s, pause_s),Velocity,MarketWide,Combined;ExchangeConfig(halts=policy); the simulator’sschedule_call. - Crash.
mx_halts.crash(policy, seed, anticipate),Anticipator. - Measure.
first_passage(policy.dist);magnet_study(),mechanisms_study(),example(); draw withfig_halts.py.
What to change next. Let more agents anticipate the band; make the band a pause-only trigger (no rejections) to remove its barrier; replay a session’s pause with Book 1’s feed monitors.
25.7 Build: halts
Purpose. The venue-side stability mechanisms of firm.exchsim, for this chapter and for the stress scenarios of Books 11 to 13.
Interface. LULD(pct, window_s, limit_state_s, pause_s, check_s, locate, shadow), MarketWide(levels, halt_s, check_s, reference), Velocity(ticks, window_s, pause_s, check_s), Combined(*policies); policy.log, .bands, .dist; Simulator.schedule_call(t_ns, fn, *args).
Rules. Policies act only through the engine’s controls R and P; bands on the tick grid; a pause is a reopening call ended by an uncross; a shadow policy computes without acting.
Acceptance tests. code/firm/halts/tests/: a band rejects orders outside it; a persistent limit state pauses and resumes the stock; the market-wide policy halts and resumes every instrument once per level; velocity logic pauses after a fast move.
Stretch. Stop logic; collars on the reopening auction; LULD’s own reference-price rules.
Sources and further reading
- A. Subrahmanyam, “Circuit breakers and market volatility: a theoretical perspective”, Journal of Finance 49(1), 1994.
- K. Cho, J. R. Russell, G. C. Tiao and R. Tsay, “The magnet effect of price limits: evidence from high-frequency data on Taiwan Stock Exchange”, Journal of Empirical Finance 10(1–2), 2003.
- A. Brugler, O. Linton, J. Noss and L. Pedace, “The cross-sectional spillovers of single stock circuit breakers”, Market Microstructure and Liquidity 4(3–4), 2018.
- Report of the Market-Wide Circuit Breaker Working Group regarding the March 2020 MWCB events, submitted 31 March 2021 (SEC file, Release 34-92428).
- CME Group, Velocity Logic (client systems wiki).
25.8 Exercises
Exercise 25.1 ★
The minute’s average trade price is USD 99.93. Where are the chapter’s 0.15% bands, on a one-cent grid?
Solution
Solution of Exercise 25.1.
rounded down to 99.78, and rounded up to 100.08.
Exercise 25.2 ★
From the dated box, how long did the 9 March 2020 halt last, and when would a Level 2 decline after 3:25 p.m. have halted the market?
Solution
Solution of Exercise 25.2.
15 minutes: the threshold was crossed at 9:34:13 a.m. and the reopening auctions began at 9:49:13 a.m. A Level 2 decline at or after 3:25 p.m. would not have halted the market.
Exercise 25.3 ★
From the table, what share of its 40 000 shares did the crash seller sell under each mechanism?
Solution
Solution of Exercise 25.3.
43.9% with no mechanism, 41.1% with the band, 29.4% with velocity logic, 23.2% with the market-wide halt.
Exercise 25.4 ★★
Why does the dynamic band shorten the fall without ever pausing the stock?
Solution
Solution of Exercise 25.4.
Its lower edge is a barrier: bids below it are rejected and market sell orders stop at it, their remainder cancelled. The selling that would have walked the book further never trades, so the price cannot fall past the band while the band itself only follows the minute’s average price down.
Exercise 25.5 ★★
Why does velocity logic help least in this crash?
Solution
Solution of Exercise 25.5.
Its pauses are short and each reopening auction meets the same one-sided selling: the pause stops trading without bringing new buyers, and the fall resumes; meanwhile the seller’s orders sent during the pause wait for the reopening and add to its imbalance.
Exercise 25.6 ★★
How would you design a study of the magnet effect on real data, given what the simulation separates?
Solution
Solution of Exercise 25.6.
Condition on the distance to the limit, measure the speed of approach or the probability of reaching the limit, and compare with a control that lacks the mechanism (another market, a period before the rule, a limit that was not in force); separate the mechanical barrier (orders refused at the limit) from behaviour (orders advanced in time), for example with order-level data on who sends orders near the limit.
Exercise 25.7 ★★★
Coding. Measure the magnet and barrier effects at a distance of 3 ticks with the chapter’s 80 sessions. Are they distinguishable from zero?
Solution
Solution of Exercise 25.7.
At 3 ticks: magnet with a standard error of about 0.09; barrier with about 0.09. Neither is beyond two standard errors at one distance; the barrier’s sign is the same at ten of the eleven distances.
Exercise 25.8 ★★★
Find the flaw. “After the band was introduced, stocks reached their limits less often, so the band calmed the market.”
Solution
Solution of Exercise 25.8.
Fewer stocks reach their limits may mean the band blocks trades at its edge (the barrier effect), not that the market is calmer; volume and fills refused at the band, and the prices after it, say whether risk was reduced or postponed. A before-after comparison also ignores what else changed.
25.9 Problem: Fifteen Minutes of Silence
Problem 25.1
Weekend problem — fifteen minutes of silence
A regulator asks whether its price bands and halts calm markets or pull prices toward them.
Part I — Designs.
- Define static and dynamic bands, a pause and a reopening auction.
- How do bands, pauses, halts and limits differ in what they protect against?
- How does
firm.haltsact on the simulated venue? - State the market-wide circuit breaker’s levels and halt times, and the March 2020 events.
Part II — The crash.
- Describe the crash and the four regimes.
- Give each regime’s fall, time halted, seller’s fills and cost.
- Why does the market-wide halt cut the fall most?
- Define velocity logic and CME’s reserved state.
Part III — The magnet.
- What did Subrahmanyam argue?
- Describe the anticipating sellers.
- Define the first-passage measure and the three conditions.
- State the named result: the probability of reaching the band conditional on the distance to it, with and without the band, and the size of the simulated magnet effect.
- Why does the band repel more than it attracts here?
Part IV — Reopening and judgement.
- What makes a reopening auction work?
- What did Brugler, Linton, Noss and Pedace find?
- Why did the velocity pauses fail to stop the fall?
- What would make a magnet effect visible in the simulation?
- What trade-off does the table show?
- What would you tell the regulator?
- In one sentence: what does a circuit breaker buy, and at what price?
Solution
Solution of Problem 25.1.
1. See the definitions. 2. Bands against runaway or erroneous prices, pauses against moves faster than liquidity returns, halts against undigested news, limits all day. 3. Through the engine’s controls: R sets a band, P changes the phase; the policy checks every half second. 4. 7%, 13% (15 minutes, before 3:25 p.m.) and 20% (rest of the day); Level 1 halts on 9, 12, 16 and 18 March 2020. 5. 40 000 shares sold as sixty market orders over a minute; no mechanism, a dynamic band with pauses, velocity logic, a market-wide halt. 6. Falls of 27.4, 20.0, 24.9 and 18.9 ticks; 0, 0, 79 and 48 seconds halted; 17 580, 16 440, 11 752 and 9 279 shares filled; costs 12.2, 9.6, 13.2 and 6.6 ticks. 7. It stops all trading at the first level and takes the most orders out of the market. 8. A pause after a move of a set number of ticks within a set time; orders may be entered, modified and cancelled in the reserved state. 9. Circuit breakers may make agents advance trades and so increase variability and exacerbate moves. 10. Sellers who, when a band is enforced, sell faster the closer the best bid is to its lower edge. 11. For each session and distance, the first time within ticks and whether the band is reached within 30 seconds; band with anticipators, band alone, no band. 12. Named result: at 5 ticks from the lower band, the probability of reaching it within 30 seconds is 0.66 with the band and anticipating sellers, 0.63 with the band alone and 0.75 without a band; the simulated magnet effect averages over 3 to 7 ticks (not distinguishable from zero in 80 sessions), the band’s barrier effect . 13. It removes the sellers’ orders at its edge, which outweighs the extra selling it invites. 14. Indicative prices during the call, collars on the reopening price, extensions when imbalance is large, and enough time for the other side to arrive. 15. London single-stock circuit breakers improved the liquidity and reduced the volatility of the stocks that kept trading. 16. They ended before new buyers arrived. 17. More anticipating traders, or a band that pauses instead of refusing trades. 18. Protecting prices by refusing trades: shorter falls, fewer shares sold. 19. That the bands and halts limit falls mainly by refusing trades, that any magnet effect is small next to that, and that a pause helps only if liquidity can arrive before it ends. 20. Time for liquidity to return, paid for with trades that do not happen.
25.10 Interview questions
Interview question 25.1 ★ trader
Your stock enters a limit state and then pauses with your sell order half done. What do you do?
Solution
Solution of Interview question 25.1.
Stop the algorithm’s clock, decide whether to take part in the reopening auction (and at what limit, given the indicative price), and re-plan the rest of the order for after the reopening; do not send market orders into the call.
What the interviewer is looking for: Participation in the reopening; re-planning.
Interview question 25.2 ★★ researcher
What is the magnet effect, and how would you test for it?
Solution
Solution of Interview question 25.2.
The acceleration of prices toward a limit because traders rush before it binds; test by conditioning on the distance to the limit and comparing with a market or period without it, separating the barrier from behaviour.
What the interviewer is looking for: Conditioning on distance; a control; mechanics against behaviour.
Interview question 25.3 ★★ risk
The market-wide circuit breaker triggers. What happens to your firm’s hedges and risk limits during the fifteen minutes?
Solution
Solution of Interview question 25.3.
Cash equities and options stop but futures may keep trading within their own limits, so hedges can be adjusted only where markets are open; risk limits must use the last prices with care, and margin calls may come before the reopening.
What the interviewer is looking for: Cross-market differences; stale prices.
Interview question 25.4 ★★ developer
How should an execution algorithm handle a halt, a pause and a band rejection?
Solution
Solution of Interview question 25.4.
A halt: stop and wait for the reopening, cancel or hold orders per policy; a pause: participate in the reopening auction or wait; a band rejection: re-price within the band or wait, never retry blindly; log and alert in every case.
What the interviewer is looking for: State-aware handling; no blind retries.
Interview question 25.5 ★★ researcher
Compare velocity logic in futures with limit up-limit down in equities.
Solution
Solution of Interview question 25.5.
Velocity logic reacts to speed (ticks per second) with a pause of seconds; limit up-limit down reacts to distance from a moving reference with a limit state and a five-minute pause: one is about fast moves, the other about large ones.
What the interviewer is looking for: Speed against distance; pause lengths.
Interview question 25.6 ★★★ bank
A regulator proposes wider bands and shorter pauses. What evidence would you bring, and what would you expect?
Solution
Solution of Interview question 25.6.
Evidence on how often bands bind and pauses trigger, on price continuation after reopenings, and on spillovers to other stocks; expect fewer triggers and less refused volume, but larger moves inside the bands and less time for liquidity to return.
What the interviewer is looking for: Trade-offs; the measures to watch.