October 3, 2026 · research

How do you backtest a strategy that trades around a market halt?

How do you backtest a strategy that trades around a market halt?

A strategy that holds through a trading halt has no ordinary exit until trading resumes. A strategy that sends an order during one may have that order rejected, queued, canceled, or carried into the reopening, depending on the venue and order instructions. If your backtest fills it at the last price before the halt, you have modeled a market that did not exist.

The practical rule is simple: represent the halt as a state change in the venue, preserve the orders and positions the rules say survive it, and model reopening execution separately. A blank patch in a price series cannot tell you any of those things.

Is a trading halt the same as missing or zero-volume data?

No. Missing data says your feed has no observation. Zero volume says the feed reports no trades for an interval. A halt says trading was unavailable or restricted under a specific market event. Those cases have different consequences for orders.

Consider a stock halted at 10:17 after trading at $24.80. Your strategy submits a sell limit at $24.70 at 10:18. There is no ordinary continuous market to execute against. If the stock reopens at $22.10, the backtest cannot quietly award a $24.70 fill just because the limit was marketable against the stale pre-halt quote. The order's fate depends on venue rules, its time-in-force, and whether it is eligible for the reopening process.

Observed conditionWhat it meansWhat the simulator should do
Feed gapMarket state is unknown to your dataMark prices as unavailable; don't assume trading stopped
Zero-volume intervalNo reported trades in the intervalKeep quote and venue status separate from trade volume
Declared haltTrading is paused or restrictedApply the halt's order and reopening rules

A halt also isn't necessarily a full-market event. A security may be paused while related instruments continue trading, or one venue may differ from another. Your event record needs the instrument, venue, halt reason if available, start time, end time, and source. If your data provider supplies only a date or a status snapshot, don't pretend you know the exact transition time.

What happens to orders during a halt?

There is no universal answer. Orders can be canceled by the venue, remain resting, or become eligible for an opening or reopening auction. Order type and time-in-force matter. So do the venue and event. A simulation that carries every order forward is making a policy choice, not applying a natural law.

Write that policy down per order class. For example, a strategy might cancel its own unfilled orders when it learns of a halt, retain a protective stop as an intention rather than a guaranteed execution, and submit a fresh order after trading resumes. Another strategy may deliberately leave eligible orders for the auction. Those are different strategies and should produce different results.

Be particularly careful with stop orders. A stop price is a trigger condition, not a promise of a fill at that price. If a stock reopens below a sell stop, the first executable price may be much lower. Modeling the stop as an automatic fill at its trigger hides the gap risk the order was meant to manage.

How should I model the reopening price and fill?

Use reopening auction data when you have it: the auction price, imbalance or indicative price history if relevant, and the order's eligibility and priority rules. Then apply the strategy's order constraints. A limit order can fill only if the auction price and allocation permit it; a market order may execute at the auction price, subject to venue rules and available quantity.

Without auction data, don't manufacture precision from the last pre-halt trade. A conservative approximation is to delay execution until the first reliable post-reopen observation, then apply a documented spread and impact model. That can still be optimistic: a bar's high and low don't reveal whether your order was ahead in the queue or whether enough volume was available at your price.

$24.80last pre-halt trade
$22.10hypothetical reopening price
10.9%gap through the stale price

That gap is not a forecast. It's an illustration of why carrying forward a mark can make risk look smaller than it is. During the pause, the position still exists, but its current liquidation value may be unknown. Keep the last mark for accounting if needed, label it stale, and avoid treating it as an executable quote.

How can I tell whether halt handling is driving my backtest?

Run a small audit on every simulated order that overlaps a halt or reopening. Keep the event, order state before and after, the chosen fill rule, and the price source in the record. Then compare results under a few plausible policies: cancel orders at halt, preserve eligible orders for reopening, and defer all new execution until regular trading resumes.

If performance changes sharply, the result depends on market mechanics your data may not resolve. That is useful information. It tells you what to investigate in venue documentation or higher-resolution auction data before treating the backtest as evidence.

And keep the position ledger honest. A halt doesn't make exposure disappear while the chart waits for its next candle. The strategy remains exposed to whatever price the market discovers when it opens again.

market haltsbacktestingorder executionequitiesmarket microstructure
← All posts