Halt-State Order-Persistence Assumption Slippage Playbook
Date: 2026-04-09
Category: research
Scope: Modeling the slippage tax from assuming resting orders survive halt / LULD / auction-state transitions with unchanged economics
Why this matters
A lot of execution stacks still compress order state into one dangerously simple question:
"Is the order still working?"
That question is too coarse for halt and auction regimes.
Around LULD pauses, halt auctions, and close-related state transitions, venue handling can change in ways that break naive residual accounting:
- a marketable order can be slid / re-priced because of price-band rules,
- an order can be administratively accepted but no longer have the same executable economics,
- an auction-specific order can expire or be canceled at a cutoff, and
- a previously resting order can lose whatever queue or timing assumptions the controller implicitly credited.
Public venue documentation makes the broader point clear:
- Nasdaq LULD guidance says aggressively priced orders outside the bands are re-priced on entry, and non-IOC orders slid due to LULD receive a timestamp when they are booked.
- Nasdaq's LULD closing-cross materials state that if a security is still halted or in a LULD pause at 16:00, certain on-close and day orders are canceled.
- Cboe LULD FAQs describe pause-period order-entry / cancel / modify behavior for reopening and closing auctions, with closing-auction interest canceled at the conclusion of the auction.
The exact rule set is venue- and order-type-specific. But the operational lesson is general:
accepted is not the same as executable, executable is not the same as auction-eligible, and auction-eligible is not the same as preserving the queue economics your model thinks it owns.
That gap creates a distinct slippage regime:
- the OMS thinks residual risk is partly parked at the venue,
- the venue has changed how that order can participate,
- the strategy delays replacement because it over-credits working quantity,
- then the reopen / close / post-halt book forces an expensive catch-up.
Failure mode in one line
The controller assumes a resting order survives a halt-state transition with materially unchanged participation value, overstates credited working quantity, misses the intended auction or reopen liquidity, and later pays catch-up slippage when the residual is rebuilt under worse conditions.
The key distinction: administrative persistence vs economic persistence
A halt-state order can be "alive" in one sense and dead in another.
Separate these four concepts:
Administrative persistence
Does the venue still show the order as accepted / open / resting in some formal sense?Economic executability
Can the order still execute in the intended regime at the intended price behavior?Auction eligibility persistence
Will the order actually participate in the reopen / close event the strategy is counting on?Queue / timing persistence
Even if it participates, does it still have the same effective queue edge, timestamp meaning, or priority economics the model implicitly assumes?
Most production mishaps happen because the stack tracks (1) and quietly assumes (2)-(4).
Market-structure facts that matter operationally
1) Halt-state transitions are order-semantics transitions
A halt or LULD event is not just a market-state label. It is often a change in how existing and newly entered orders are interpreted.
That means your router should treat venue-state transitions as potential order-state transitions too.
2) Band logic can preserve the order object while changing its economics
If an aggressively priced order is slid or re-priced to fit price-band constraints, your system may still regard it as a working child. But economically it is no longer the same child:
- it may no longer be marketable,
- it may not reach the same liquidity branch you intended,
- and any queue / timing expectation tied to the original intent may be wrong.
3) Auction cutoffs can turn "working" into "gone"
Close-related and halt-related auction handling is not just about fill probability. Some order types have hard participation windows. If the symbol remains halted or paused at the relevant cutoff, what the controller thought was parked liquidity may vanish.
4) Pause-period flexibility does not imply persistence certainty
A venue may allow new orders, cancels, and modifications during the pause. That does not mean previously submitted children retain the same path to execution. It means the order-handling regime is dynamic and venue-specific.
5) Primary-listing state and destination-venue state can diverge in your stack
Execution systems often ingest:
- SIP / primary-market halt status,
- destination venue acks,
- internal OMS order state,
- auction-imbalance or indicative messages,
- and drop-copy reconciliation.
Those channels do not always align in time. So the slippage tax is often caused less by one bad rule and more by a state-coherence lag.
6) The cost usually arrives as residual surprise, not one obvious reject
The dangerous branch is not always:
"the order was rejected immediately."
It is often:
"the order seemed covered, the residual looked smaller than it really was, and we discovered the truth only after the useful liquidity window had passed."
Mechanical path to slippage
Step 1) The strategy parks residual inventory in resting children
These may be day orders, auction-intended orders, or children expected to survive into a reopen / pause-ending event.
Step 2) Market state flips into halt / LULD / auction-transition mode
Now venue handling semantics matter:
- price-band sliding,
- cutoff eligibility,
- pause-period modify behavior,
- cancellation rules,
- and post-transition priority assumptions.
Step 3) The OMS over-credits the working quantity
Because the order still looks present somewhere in the stack, the controller reduces residual urgency.
Step 4) The intended liquidity event does not deliver what was assumed
Typical branches:
- the order never participates,
- it participates with worse economics than expected,
- it loses timing / priority value,
- or it simply gets canceled at the state boundary.
Step 5) Residual-vs-clock gap widens abruptly
The execution schedule that looked healthy suddenly is not.
Step 6) Catch-up aggression happens in a worse regime
Now the strategy pays the real bill:
- thinner post-halt depth,
- wider spreads,
- stale or one-sided auction information,
- elevated toxicity after reopen,
- and greater completion convexity near deadline.
The modeling upgrade
Treat credited working quantity as probability-weighted, not binary.
Let each working child order (i) have size (q_i). Define:
- (A_i): administratively alive,
- (E_i): economically executable in the intended regime,
- (U_i): auction-eligible / reopen-eligible,
- (P_i): queue / timing value preserved enough to matter.
Then credited working size should be:
[ Q^{credited}_t = \sum_i q_i \cdot Pr(A_i=1, E_i=1, U_i=1 \mid \mathcal{F}_t) \cdot \gamma(P_i) ]
where:
- (\mathcal{F}_t) is current state information,
- (\gamma(P_i) \in [0,1]) discounts queue / timing value if persistence is uncertain.
Then effective residual is:
[ R^{effective}t = Q^{parent}{remaining,t} - Q^{credited}_t ]
This is the crucial change. Many controllers effectively use:
[ Q^{credited}_t = \sum_i q_i \cdot \mathbf{1}[A_i=1] ]
and that is exactly how halt-state slippage gets underpriced.
Order Persistence Mismatch Premium (OPMP)
Add an explicit term to the shortfall model:
[ IS = Spread + Impact + Delay + Fees + MissCost + OPMP ]
with
[ OPMP_t = Pr(Mismatch_t \mid \mathcal{F}_t) \cdot C^{rebuild}_t ]
where:
- (Mismatch_t) means the stack's credited working inventory materially exceeds the order's actual executable / auction-eligible value,
- (C^{rebuild}_t) is the expected cost of replacing that missing liquidity later.
This is not the same as generic delay cost. It is specifically the price of believing inventory is parked when it is not.
Features that matter online
Maintain features by symbol × venue × order-type × transition regime.
1) Venue State Regime (VSR)
Current regime label:
- continuous,
- LULD pause,
- regulatory halt,
- reopen auction call,
- close auction call,
- post-reopen fragile.
2) Order Handling Class (OHC)
Order type + TIF bucket:
- DAY,
- IOC,
- auction-only,
- MOC / LOC / IO-like categories,
- pegged vs plain limit,
- market vs limit.
3) Price-Band Distance (PBD)
How far the child price or intended aggressiveness is from current LULD band constraints. Useful because band-slide risk is not binary far from the boundary.
4) State-Transition Age (STA)
Time since the last market-state transition. Execution semantics are most fragile near the transition itself.
5) Order-State Coherence Gap (OSCG)
Lag / disagreement between:
- venue ack state,
- OMS state,
- primary-market state,
- drop-copy state,
- and auction feed state.
6) Auction Eligibility Confidence (AEC)
Model-estimated probability the child will actually participate in the intended reopen / close event.
7) Priority Preservation Score (PPS)
Discount for how much queue / timing value plausibly survives the state change. This is venue- and rule-driven, not just order-age driven.
8) Residual-vs-Clock Pressure (RCP)
How expensive it would be if the child turned out not to count. This is what converts a state mismatch into real slippage.
9) Reconciliation Delay (RD)
Time between venue-side semantic change and internal recognition of that change.
10) Missed-Event Recovery Cost (MRC)
Expected cost of rebuilding inventory if the reopen / close / first post-halt window is missed.
Observable signatures
1) Working inventory looks stable, but realized participation collapses at the transition
The OMS says coverage is fine. The fills say otherwise.
2) Residual surprise spikes immediately after a halt ends or a close cutoff passes
This is one of the clearest diagnostics.
3) Post-transition late aggression clusters after apparently well-covered periods
That usually means working inventory was over-credited just before the catch-up.
4) Expected auction participation repeatedly exceeds actual fill / participation
A model that ignores eligibility semantics will look overconfident exactly here.
5) Child orders near price bands show poor realized queue economics despite clean administrative state
That is a strong hint the order object survived but its economics did not.
6) State mismatch is concentrated in certain order-type / venue combinations
This regime is rarely uniform. Usually a few specific combinations create most of the tail pain.
Controller design
State A — CONTINUITY_CONFIRMED
Order-state and venue-state are coherent. Auction eligibility and executable value look stable.
Policy:
- standard residual credit,
- normal urgency curve,
- no special mismatch premium.
State B — TRANSITION_EXPOSED
A halt / pause / auction transition has occurred, but persistence semantics are not yet clear.
Policy:
- discount credited working quantity,
- widen uncertainty on auction participation,
- slow any passive-confidence increase.
State C — PERSISTENCE_UNCERTAIN
Signals indicate the order may still be administratively alive but economically degraded or cutoff-exposed.
Policy:
- sharply haircut residual credit,
- increase missed-event recovery cost weight,
- pre-stage replacement routes before panic mode.
State D — EVENT_MISSED_REBUILD
The intended reopen / close liquidity branch has effectively failed.
Policy:
- stop counting the parked order,
- switch to rebuild-first logic,
- control aggression with explicit post-halt fragility estimates,
- avoid doubling by reconciling outstanding state before replacement.
Use hysteresis and minimum dwell times so the controller does not thrash across state boundaries.
Practical policy overlay
A simple live adjustment:
[ Q^{credited,adj}_t = Q^{credited,base}_t \cdot (1 - a \cdot MismatchProb_t) ]
[ Urgency_t = Urgency_{base,t} + b \cdot MismatchProb_t \cdot RCP_t ]
[ AuctionTrust_t = AuctionTrust_{base,t} - c \cdot (1 - AEC_t) ]
Interpretation:
- count less of the parked inventory as truly covered,
- make schedule pressure respond to persistence uncertainty,
- and do not let auction reliance stay high when eligibility confidence drops.
Replay / backtest design
This regime is easy to miss in naive replay. Trades alone are not enough.
You need event streams that let you reconstruct:
- venue-state transitions,
- band conditions,
- order-type semantics,
- auction windows / cutoffs,
- internal state-recognition lag,
- and actual versus credited working inventory.
Minimum viable episode label set
For each candidate episode record:
- symbol,
- venue,
- listing venue / primary state,
- order type and TIF,
- working size before transition,
- market-state transition timestamp,
- any known band-slide / re-price indicators,
- whether the order remained eligible for the intended event,
- when internal systems recognized the new semantics,
- residual surprise after the event,
- and catch-up cost paid afterward.
Key counterfactual
Compare:
Binary working-order policy
Counts accepted resting children at nearly full credit.Persistence-aware policy
Discounts working credit based on executable / eligibility / timing persistence probability.
The success metric is not just lower mean shortfall. It is fewer extreme residual surprises and lower post-transition p90 / p95 rebuild cost.
Monitoring KPIs
Track by venue, order type, and event regime:
Credited-to-Realized Participation Gap (CRPG)
Expected participation minus realized participation after state transition.Residual Surprise Rate (RSR)
Fraction of episodes where post-transition residual exceeded the pre-transition modeled residual by a threshold.Auction Miss Attributed to Persistence Error (AMPE)
Missed-event share where the dominant cause was over-credited parked inventory.Band-Slide Economic Drift (BSED)
Performance gap between administratively alive band-slid orders and matched controls without band-slide exposure.State-Coherence Lag (SCL)
Time from venue semantic change to internal state convergence.Post-Transition Catch-up Cost (PTCC)
Impact + spread + delay cost paid to rebuild after the mismatch is discovered.
A particularly useful summary metric is:
[ OPG = E[Q^{credited}{pre} - Q^{realized ext{-}useful}{post}] ]
Call it the Order Persistence Gap. If OPG is consistently positive, your stack is hallucinating usable parked liquidity.
Common mistakes
1) Using one boolean for "working order"
That throws away exactly the semantics that matter during halts and auctions.
2) Treating accepted as equivalent to executable
Administrative survival is the weakest form of survival.
3) Ignoring order-type-specific cutoff rules
The slippage tax often lives in order-type semantics, not just in price dynamics.
4) Assuming venue behavior is uniform
Even broadly similar LULD frameworks differ enough in handling details that one global rule is dangerous.
5) Forgetting that price-band sliding changes economics even without a reject
If the child no longer expresses the original intent, residual credit should change.
6) Backtesting without state-coherence lag
The production pain is often caused by when the system learns the truth, not just by the truth itself.
Minimal pseudocode
features = build_features(
venue_state,
primary_state,
order_type,
tif,
price_band_distance,
transition_age,
reconciliation_lag,
residual_clock_gap,
)
mismatch_prob = persistence_model.predict_proba(features)
auction_eligibility = auction_model.predict_proba(features)
priority_preservation = priority_model.predict_score(features)
credited_qty = sum(
child.qty
* child.admin_alive_prob
* child.exec_prob
* auction_eligibility
* priority_preservation
for child in working_children
)
effective_residual = parent_remaining - credited_qty
if mismatch_prob < th1:
state = "CONTINUITY_CONFIRMED"
elif mismatch_prob < th2:
state = "TRANSITION_EXPOSED"
elif auction_eligibility > a_min:
state = "PERSISTENCE_UNCERTAIN"
else:
state = "EVENT_MISSED_REBUILD"
params = policy_map[state]
submit_or_replace(params, effective_residual)
log_transition(features, mismatch_prob, credited_qty, effective_residual, state)
Bottom line
In halt and LULD regimes, the expensive mistake is usually not just "we had a bad auction fill."
It is earlier than that:
we believed parked liquidity still counted.
A robust slippage stack should separately model:
- whether the order still exists,
- whether it is still economically executable,
- whether it is still eligible for the event you care about,
- and whether any meaningful queue / timing value survived the transition.
Once those are separated, halt-state transitions stop behaving like mysterious execution bad luck and start looking like what they are:
order-semantics regime changes that must be priced before the residual surprise bill arrives.