Why Stop Orders Fill Below Your Stop
Why stop orders fill below your stop price: the trigger becomes a market order, and overnight gaps, fast markets, halts and thin sessions set the fill.
Stop orders fill below your stop price for one mechanical reason: the stop level is a trigger, and once the market touches it the order becomes a plain market order that takes whatever the book is showing. A sell stop resting at $50 can print at $44 if $44 is the best bid available when the order arrives. Four situations open that gap, and a stop-limit order closes one of them while opening a different hole.
Why stop orders fill below your stop price
A stop order is a resting instruction with a condition attached. The condition is a price level, your stop. Nothing about the order is live in the market until a trade prints at or through that level. At that moment the order releases as a market order: an instruction to trade immediately at the best price available, with no floor and no ceiling on what that price turns out to be.
The best price available comes from the order book, the stack of resting bids and offers at each price. The top of the book, the inside quote, holds a limited number of shares. A market order larger than the size resting there fills part of its quantity at that price and the rest at the next level, and the next. The distance between the price you expected and the price you got is slippage.
A stop answers the question "when do I trade?" and leaves "at what price?" entirely to the book. For the plain comparisons of each order type, our stop order versus limit order and market order versus limit order guides sit beside this one.
Situation one: the overnight gap
A stop cannot act on a price that never traded. Between the 4:00 p.m. ET close and the 9:30 a.m. ET open there is no continuous regular-session trading, and an order resting overnight meets the first print of the new session. When that print sits far from the previous close, the stop's condition is satisfied at the open and the market order fills near the opening price rather than near the stop.
The panel below pins the twelve deepest gap-down opens in SPY, the large S&P 500 ETF, since January 2021. Each row measures the open, the session low and the close against the previous session's closing price.
| session_date | open_vs_prev_close_pct | low_vs_prev_close_pct | close_vs_prev_close_pct |
|---|---|---|---|
| 2022-02-24 | -2.59 | -2.68 | 1.5 |
| 2022-06-13 | -2.55 | -4.23 | -3.8 |
| 2022-06-16 | -2.29 | -3.99 | -3.31 |
| 2022-09-13 | -2.22 | -4.64 | -4.35 |
| 2022-10-13 | -2.06 | -2.37 | 2.64 |
| 2024-08-05 | -3.99 | -4.25 | -2.91 |
| 2025-01-27 | -2.16 | -2.19 | -1.41 |
| 2025-04-03 | -3.44 | -4.93 | -4.93 |
| 2025-04-04 | -2.43 | -5.9 | -5.85 |
| 2025-04-07 | -3.18 | -4.65 | -0.18 |
| 2025-04-10 | -3 | -7.16 | -4.38 |
| 2026-03-03 | -1.65 | -2.44 | -0.88 |
The exact SQL behind every number
WITH sessions AS
(
SELECT
date,
toFloat64(any(open)) AS open_px,
toFloat64(any(low)) AS low_px,
toFloat64(any(close)) AS close_px
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2021-01-01'
AND date < '2026-10-01'
GROUP BY date
),
with_prev AS
(
SELECT
date,
open_px,
low_px,
close_px,
any(close_px) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_close
FROM sessions
),
ranked AS
(
SELECT
date,
round((open_px / prev_close - 1) * 100, 2) AS open_vs_prev_close_pct,
round((low_px / prev_close - 1) * 100, 2) AS low_vs_prev_close_pct,
round((close_px / prev_close - 1) * 100, 2) AS close_vs_prev_close_pct
FROM with_prev
WHERE prev_close > 0
ORDER BY open_vs_prev_close_pct ASC
LIMIT 12
)
SELECT
toString(date) AS session_date,
open_vs_prev_close_pct,
low_vs_prev_close_pct,
close_vs_prev_close_pct
FROM ranked
ORDER BY dateOn 2022-02-24, the earliest session in that set, SPY opened at -2.59% against the prior close and traded to a low of -2.68% on the same measure. Every sell stop sitting below the prior close and above that opening print had its condition met in the same instant, and each one became a market order into the same opening book. SPY is among the most heavily traded instruments in the world, and a gap of this depth still appears 12 times in under six years.
Single names gap further and more often. The next panel counts, for six household tickers, how many sessions since January 2021 opened at least 1% and at least 3% under the previous close.
| symbol | session_count | opens_1pct_below | opens_3pct_below | deepest_gap_down_abs_pct |
|---|---|---|---|---|
| NVDA | 1441 | 305 | 47 | 14.18 |
| XOM | 1441 | 173 | 18 | 6.34 |
| AAPL | 1441 | 151 | 14 | 9.45 |
| MSFT | 1441 | 149 | 12 | 8.65 |
| SPY | 1441 | 83 | 4 | 3.99 |
| KO | 1441 | 31 | 2 | 5.29 |
The exact SQL behind every number
WITH sessions AS
(
SELECT
ticker,
date,
toFloat64(any(open)) AS open_px,
toFloat64(any(close)) AS close_px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'XOM')
AND date >= '2021-01-01'
AND date < '2026-10-01'
GROUP BY ticker, date
),
gaps AS
(
SELECT
ticker,
round((open_px / prev_close - 1) * 100, 2) AS gap_pct
FROM
(
SELECT
ticker,
date,
open_px,
any(close_px) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_close
FROM sessions
)
WHERE prev_close > 0
)
SELECT
ticker AS symbol,
count() AS session_count,
countIf(gap_pct <= -1) AS opens_1pct_below,
countIf(gap_pct <= -3) AS opens_3pct_below,
round(abs(min(gap_pct)), 2) AS deepest_gap_down_abs_pct
FROM gaps
GROUP BY ticker
ORDER BY opens_3pct_below DESCNVDA leads the group with 47 sessions that opened 3% or more under the prior close, out of 1441 sessions measured, and its deepest gap-down open ran 14.18%. At the milder 1% threshold the same name shows 305 sessions. Scheduled events cluster these opens: a quarterly report after the bell, a dividend or split taking effect at the open, an index change. Our guide to overnight gaps walks through that calendar.
Situation two: a fast market
A fast market is a stretch where quotes update faster than any single order can be routed and matched. The condition is met at one price, the order travels to a venue, and the book it meets is not the book that satisfied the condition. That sequence is ordinary order handling, measured in milliseconds, against a quote that is moving.
Picture a sell stop at $50 in a name whose inside bid is stepping down a penny or two at a time while each resting bid gets taken. A print at $50 releases the order, and by the time it reaches a matching engine the best bid is lower, so the fill lands against whatever size is still resting. Nothing has malfunctioned in that sequence. The room between trigger and fill is the time the order spends in transit plus the depth of the book underneath the trigger, and both of those are at their least forgiving in exactly the minutes when a stop is most likely to fire.
Situation three: a halt and its reopening auction
US equities carry limit-up/limit-down bands around a rolling reference price. When the national best bid or offer sits at a band edge for 15 seconds without the price moving back inside, the stock pauses for five minutes and reopens with an auction rather than with continuous trading. Our limit up limit down explainer covers the band widths and the timers.
The pause touches a stop order twice. Orders cannot execute while trading is paused, so a stop whose condition was met in the final seconds before the halt can be sitting unexecuted when the halt begins. And the reopening auction prints one price for a large accumulated quantity, which can land well away from the last continuous print. A market order queued into that auction takes the auction price, whatever it is. The halt protects the market from a disorderly price. It gives one order no protection at all.
Situation four: the thin session before and after the bell
Premarket and after-hours sessions run with a fraction of the participation of the regular session. The quoted spread is wider, the displayed size is smaller, and a market order of ordinary retail size can walk through several price levels. The panel below takes one ordinary session, 15 September 2026, in KO and measures the median quoted spread for each 15-minute block of the New York clock, from 04:00 to 20:00 ET. The ratio column compares each block against the median spread for the whole day.
| et_time | median_spread_bps | spread_vs_day_median | median_quoted_size |
|---|---|---|---|
| 05:00 | 43.83 | 38.76 | 200 |
| 09:30 | 2.26 | 2 | 600 |
| 09:45 | 1.13 | 1 | 600 |
| 10:00 | 1.13 | 1 | 700 |
| 10:15 | 1.13 | 1 | 700 |
| 10:30 | 1.13 | 1 | 700 |
| 10:45 | 1.13 | 1 | 800 |
| 11:00 | 1.13 | 1 | 900 |
| 11:15 | 1.13 | 1 | 800 |
| 11:30 | 1.13 | 1 | 800 |
| 11:45 | 1.13 | 1 | 900 |
| 12:00 | 1.13 | 1 | 1000 |
| 12:15 | 1.13 | 1 | 900 |
| 12:30 | 1.13 | 1 | 900 |
| 12:45 | 1.13 | 1 | 900 |
| 13:00 | 1.13 | 1 | 900 |
| 13:15 | 1.13 | 1 | 900 |
| 13:30 | 1.13 | 1 | 1000 |
| 13:45 | 1.13 | 1 | 1000 |
| 14:00 | 1.13 | 1 | 1000 |
The exact SQL behind every number
WITH quotes AS
(
SELECT
toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 15 MINUTE) AS et_bucket,
toFloat64(ask_price - bid_price) / toFloat64(ask_price) * 10000 AS spread_bps,
toFloat64(bid_size + ask_size) AS quoted_size,
toUInt64(sequence_number) AS det
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'KO'
AND sip_timestamp >= '2026-09-15 08:00:00'
AND sip_timestamp < '2026-09-16 00:00:00'
AND bid_price > 0
AND ask_price > bid_price
)
SELECT
formatDateTime(et_bucket, '%H:%i') AS et_time,
round(quantileDeterministic(0.5)(spread_bps, det), 2) AS median_spread_bps,
round(quantileDeterministic(0.5)(spread_bps, det)
/ (SELECT quantileDeterministic(0.5)(spread_bps, det) FROM quotes), 2) AS spread_vs_day_median,
round(quantileDeterministic(0.5)(quoted_size, det), 0) AS median_quoted_size
FROM quotes
GROUP BY et_bucket
HAVING count() > 200
ORDER BY et_bucketThe first block the panel reports, 05:00 ET, carried a median spread of 43.83 bps, which is 38.76 times the median spread across the whole day, with a median displayed size of 200 across the two sides of the quote. The final block, 15:45 ET, ran at 1 times the day's median. The middle of the chart is the regular session.
A second issue in these windows has nothing to do with price. A stop order may not be eligible to activate outside regular hours at all. Some brokers hold stop orders inactive until 9:30 a.m. ET, some make extended-hours eligibility a choice on the order ticket, and some release an after-hours stop as a limit order instead. As of October 2026 there is no single market-wide answer, and the answer at your broker today is a setting rather than a law. Our overnight trading guide covers which sessions exist.
What a stop-limit fixes, and what it does not
A stop-limit order carries two prices: the stop, which is the trigger, and the limit, which is the worst price you will accept. When the condition is met, the order releases as a limit order. In the opening gap above, a sell stop-limit with its limit at the stop would not have filled at the open at all. The opening print was through the limit, no resting bid stood at or above it, and the order would wait with the position still open.
That is the whole trade. A stop market order owns price risk and keeps fill certainty. A stop-limit owns fill risk and keeps price control. Widening the distance between stop and limit buys back some fill probability and gives up some price protection, and against a gap of the depth in the first panel no realistic offset covers the distance. Our stop order versus stop limit order comparison lays the two tickets side by side.
Where your stop actually rests
Two stops that look identical on two screens can behave differently. Four questions worth answering at your own broker:
- Does the order rest at an exchange, or on the broker's server until the condition is met and it routes?
- Is it eligible in the premarket and after-hours windows, or only between 9:30 a.m. and 4:00 p.m. ET?
- What satisfies the condition: a trade printing at or through the stop, or a quote reaching it?
- Inside a bracket or an OCO pair, what happens to the sibling order when the stop fills only part of its quantity?
A broker-held stop is invisible to the market until it routes. An exchange-native stop waits at the venue and reaches the book sooner, and it converts to a market order on the same terms. Neither version sits in the book as displayed liquidity, which is why nobody can see your stop level, and also why nothing is holding a price for you when it fires.
Which failure would you rather own
That is the decision in front of a trader, and it is not a ranking of order types.
- A stop market order is a commitment to exit at an unknown price. The failure mode is slippage, at its worst exactly when the move is largest.
- A stop-limit order is a commitment to a price with an unknown exit. The failure mode is still holding a position you intended to close.
Order size interacts with both. A quantity that is small against the displayed size at the inside quote walks far less of the book than one several times that size, which makes sizing a separate exercise from picking the order type. No order type removes gap risk, and any description that suggests one does is describing a product feature rather than a market mechanism.
FAQ
Why did my stop order fill below my stop price?
The stop was a trigger, and the fill came from a market order. Once a trade printed at or through your stop level, the order released as a market order and executed against the best prices resting in the book at that moment. If that moment was an opening print after a gap, a fast-moving quote, or a thin extended-hours book, the best available price can sit well under the stop.
Can a stop loss guarantee my exit price?
No. A standard stop order guarantees only that an order is sent once the level trades. The execution price is whatever the book offers. Some brokers outside US cash equities advertise guaranteed stops as a paid feature of their own product, which is a contractual promise rather than an exchange mechanism.
Does a stop-limit order protect me in a gap?
It protects the price, and it can leave you unfilled. If the market opens through your limit, no execution happens and the position stays open with a live order attached to it. Both the protection and the leftover position are real outcomes of the same choice.
Do stop orders work in premarket and after-hours trading?
That depends on the broker and on the order ticket, and the rules change over time. Some stop orders stay inactive until the regular session opens, which means an extended-hours move can pass straight through the level while the order sleeps, and the order then meets the 9:30 a.m. open. Check the current order-entry rules where you trade.
How far below my stop can a fill land?
The mechanics set no limit. The panels above show SPY opening -2.59% against the prior close on 2022-02-24, and one household name reaching 14.18% on its deepest gap-down open. A market order that fires into an open like that fills there.
Every panel on this page ships with the SQL that produced it, and the clock-bucket panel works the same way for any symbol. Swap the ticker and the date on the Strasmore terminal to see how the instrument you trade behaves at the edges of the session.