Francesco Castagna

Extended Guide: Opening Auctions, Stop Orders & Gap Dynamics

Deep-Dive Edition

12 min read

1. Introduction

This guide explains, in practical terms:

  • How stop-loss (stop-market) and stop-limit orders behave in gap-down scenarios
  • Why your execution price is often very different from your stop price
  • How the opening auction finds a single clearing price
  • How DAY vs GTC orders behave across the close
  • How to think about ADR fair value vs actual opening print

All formulas below are written in plain text/code style so they preview cleanly.


2. Stop-Market vs Stop-Limit

Stop-Market (Stop-Loss)

  • Triggered when last traded price is at or below your stop.
  • Converts into a market order.
  • Execution: almost always (barring halts).
  • Price: not guaranteed.

Example (gap down):

  • Close: 20.50
  • Your stop: 20.00
  • Next day open (auction price): 19.00

Result: your stop triggers and you sell at ~19.00, not at 20.00.


Stop-Limit

  • Triggered the same way: when last price ≤ stop.
  • Converts into a limit order.
  • Execution: not guaranteed.
  • Price: guaranteed (you won't sell below your limit).

Same example:

  • Stop = 20.00
  • Limit = 20.00
  • Opening auction price = 19.00

Result: no fill at the open. Your order just sits at 20.00 in the continuous session.


3. Why Stops Slip During Gaps

Key idea: A sell stop-loss:

  • Does not rest in the book at your stop price.
  • Only becomes an actual order after the trigger condition is met.
  • Becomes a market sell when triggered.

If the first print of the day is way below your stop (gap down), the first possible execution you can get is that first print, not anything in between.

So:

  • Stop = 20
  • First traded price = 19
  • Your actual execution ≈ 19

4. Order Book Persistence: DAY vs GTC

At the end of the regular session:

  • DAY orders: expire automatically at the close.
  • GTC orders: remain active into the next session (unless canceled).

Most of the tight liquidity around the top of book (best bid/ask) is:

  • Intraday algos
  • HFTs
  • Short-term traders

These orders are usually DAY → they vanish at the bell.

So:

  • The book you saw at 16:00 does not carry into the open.
  • Overnight, a new book is effectively built from:
    • Remaining GTC orders
    • New orders submitted pre-open
    • Cancellations/modifications

5. Opening Auction Deep Dive

5.1 Goal of the Auction

The opening auction tries to find a single price P* that:

  • Maximizes the number of shares traded (matched volume)
  • Respects all limit prices and market orders

We'll describe it with simple functions using plain-text formulas.


5.2 Definitions

For a candidate price P:

  • BuyCum(P) = total buy size at prices ≥ P, plus any market buy orders.
  • SellCum(P) = total sell size at prices ≤ P, plus any market sell orders.

Then the number of shares that can actually trade at P is:

Match(P) = min( BuyCum(P), SellCum(P) )

The opening price P* is the price that gives the largest Match(P).

If there are ties, exchanges apply tie-break rules (more on that in a sec).


5.3 Cumulative Buy / Sell Curves

Visually:

  • As P goes down, BuyCum(P) tends to go up (more buy orders qualify).
  • As P goes up, SellCum(P) tends to go up (more sell orders qualify).

Where the two are closest and both large, the auction can match the most volume.


5.4 Example: Computing Match(P)

We use this example book (ignoring market orders for simplicity):

BUY SIDE

  • 50,000 @ 19.00
  • 30,000 @ 19.10
  • 10,000 @ 20.00

SELL SIDE

  • 70,000 @ 19.00
  • 40,000 @ 19.50
  • 25,000 @ 20.00

Let the candidate prices be: 19.00, 19.10, 19.50, 20.00.

P = 19.00

Buys at or above 19.00:

  • 50k @ 19.00
  • 30k @ 19.10
  • 10k @ 20.00
BuyCum(19.00) = 50k + 30k + 10k = 90k

Sells at or below 19.00:

  • 70k @ 19.00
SellCum(19.00) = 70k

Match:

Match(19.00) = min(90k, 70k) = 70k

P = 19.10

Buys at or above 19.10:

  • 30k @ 19.10
  • 10k @ 20.00
BuyCum(19.10) = 40k

Sells at or below 19.10:

  • 70k @ 19.00
SellCum(19.10) = 70k

Match:

Match(19.10) = min(40k, 70k) = 40k

P = 19.50

Buys at or above 19.50:

  • 10k @ 20.00
BuyCum(19.50) = 10k

Sells at or below 19.50:

  • 70k @ 19.00
  • 40k @ 19.50
SellCum(19.50) = 70k + 40k = 110k

Match:

Match(19.50) = min(10k, 110k) = 10k

P = 20.00

Buys at or above 20.00:

  • 10k @ 20.00
BuyCum(20.00) = 10k

Sells at or below 20.00:

  • 70k @ 19.00
  • 40k @ 19.50
  • 25k @ 20.00
SellCum(20.00) = 70k + 40k + 25k = 135k

Match:

Match(20.00) = min(10k, 135k) = 10k

Summary Table

P       BuyCum   SellCum   Match(P)
-----------------------------------
19.00   90k      70k       70k   <-- max
19.10   40k      70k       40k
19.50   10k      110k      10k
20.00   10k      135k      10k

So the opening price P* is:

P* = 19.00   (because Match(P) is largest at 19.00)

At the open:

  • All trades that participate in the auction execute at 19.00.
  • Buyers with limits at 20.00 do not trade at 20 — they get 19.00 (better price).
  • Sellers with limits at 19.00 or below get 19.00.

5.5 Tie-Break Rules (Conceptual)

If two prices had the same Match(P), typical rules:

  1. Choose the price with the smallest imbalance:
    Imbalance(P) = |BuyCum(P) - SellCum(P)|
  2. If still tied, choose the price closest to the previous close or reference price.
  3. If still tied, apply exchange-specific logic (e.g., NYSE DMM discretion, NASDAQ rules, etc.).

You usually don't need details unless you're doing very low-latency stuff.


6. How Stop Orders Fit Into the Auction

Stop-Market (Sell)

Once triggered pre-open (or at the open), a stop-market becomes:

A market sell order with no price constraint.

In the auction math, it just increases SellCum(P) at all prices P.

Effect:

  • You are guaranteed to be included in the matched volume at the opening price (unless the stock is halted or similar).

Stop-Limit (Sell)

Once triggered, a stop-limit becomes:

A limit sell at your limit price.

In the auction:

  • It only contributes to SellCum(P) for prices ≥ your limit.
  • If the final auction clearing price is below your limit, it does not trade.

Example:

  • Stop = 20, Limit = 20
  • Auction result P* = 19

Then:

  • SellCum(19) does not include your order.
  • You get no fill at the open.

7. Classic Stop-Limit Gap Failure Scenario

Setup:

  • Close: 20.50
  • Overnight bad news.
  • You set: stop-limit sell (stop = 20, limit = 20).

Pre-open book implies the auction will clear around 19.

Auction:

  • P* = 19
  • Your order only wants 20 or better.
  • 19 is worse than 20, so your order is skipped.

After the open:

  • Stock trades through 18.50, 18.00, etc.
  • You're still long, unhedged.

Lesson:

  • Stop-limit protects you from bad fill prices, but not from big moves.
  • Stop-market protects you from staying in the trade, but slippage is possible.

8. Auction Imbalances (High-Level)

Many exchanges publish real-time or delayed pre-open stats:

  • Paired volume: shares that would trade at the current indicative price.
  • Imbalance: excess buy or sell volume that would remain unfilled.
  • Indicative match price: current candidate P* if the auction ran now.

Big patterns:

  • Huge sell imbalance → likely open down.
  • Huge buy imbalance → likely open up.

Traders watch these to:

  • Adjust limit orders.
  • Decide whether to participate in the cross.
  • Anticipate gaps.

9. ADR Pricing & Fair Value

For an ADR like BABA:

ADR_FV = ( Local_Share_Price * ADR_Ratio ) / FX_Rate

Where:

  • Local_Share_Price = price of the share in its home market (e.g., HKD).
  • ADR_Ratio = how many local shares per ADR (e.g., 8).
  • FX_Rate = local currency per 1 USD (e.g., HKD per USD).

Example:

  • Local (HK) price = 80 HKD
  • ADR ratio = 8
  • FX (HKD per USD) = 7.80
ADR_FV = (80 * 8) / 7.80
ADR_FV ≈ 82.05 USD

Interpretation:

  • If ADR closed at 90 and HK session implies ~82, you expect a gap down toward 82.
  • But the exact US opening price is still decided by the US opening auction, using all US order flow.

This is not a guaranteed arbitrage opportunity for a typical retail trader, because:

  • You can't trade both legs (HK + ADR + FX) simultaneously at size with low cost.
  • You can't lock in prices cross-market like a professional arb desk.

10. Practical Trading Takeaways

  1. Stop-loss (stop-market)
    Use when: you absolutely want out, execution is priority.
    Risk: you may get a much worse price in a gap.
  2. Stop-limit
    Use when: price matters more than guaranteed exit.
    Risk: in a big gap, you may not exit at all.
  3. Gaps through stops are normal
    Your stop is a trigger, not a guarantee.
    The market doesn't "owe" you a trade at intermediate levels that never actually printed.
  4. Opening auction price is king
    Everyone in the cross trades at one price P*.
    Buyers with higher limits and sellers with lower limits all transact at P*.
    GTC orders at 20 won't pull the price up to 20 if all supply/demand agrees around 19.
  5. ADR fair value helps forecast, not arbitrage
    ADR opens generally toward FV but not necessarily at it.
    Use it as a reference, not a guarantee.