Stops in the pre-market: why they cannot sit on the book
Intermediate, 10 min read. Checked with Scalpel 1.12.8 on .
In short
Before 09:30 and after 16:00 New York time, US exchanges accept limit orders only. A plain stop order becomes a market order when it triggers, so it cannot protect you in the pre-market, and a stop-limit can be jumped when price gaps through its limit. So Scalpel keeps your stop in the app: it watches every trade, and when price trades through your stop it sends a limit sell 5 cents under the last trade, flagged for extended hours, which the exchange accepts at 06:00 as at 11:00, and re-prices it if the market runs away. The trade-off: it only works while Scalpel is running and connected, and no fill is guaranteed.
Scalpel is built first for the pre-market, 04:00 to 09:30 ET, because that is when small-cap gappers make many of their biggest moves. It is also when the usual protection, a stop order resting at your broker, quietly stops working. This guide explains why, exactly what Scalpel does instead, and what to do on the day an exit does not fill.
Before you start
How the three levels work: working stop, catastrophe net and take-profit (guide 5.1).
Scalpel connected to TWS or IB Gateway (guide 1.4).
Why a normal stop cannot sit on the book before the open
Outside regular trading hours (09:30 to 16:00 ET), US exchanges run limit-only sessions. Every order needs a price, and there are no market orders (glossary: pre-market, limit order). That breaks the two stop orders most traders know:
Accepted, but in a thin, fast book price can gap straight through your limit. The order then sits unfilled while the stock keeps falling
A mental stop
Whatever you do in the moment
Works only if you act, at the exact moment you are busiest
Scalpel's app stop
Scalpel sends a limit sell 5c under the last trade, flagged for extended hours
Accepted from 04:00, priced off the trade that broke your stop
How a stop-limit gets jumped
You hold 400 shares of ABCD from 5.50 at 07:45. You set a stop-limit: trigger 5.38, limit 5.36. A seller hits the stock and the prints go 5.40, then 5.31. Nothing traded between them: in a pre-market book there may be only a few hundred shares on each level. The 5.31 print triggers your order, which becomes a sell limit at 5.36, above the market. It cannot fill. By the time you notice and replace it, the stock is 5.20.
The mental-stop problem
The alternative most pre-market traders fall back on is a stop in their head. It fails at exactly the wrong moment: you are reading Level 2, watching the tape and judging the next move, the stock drops through your number, and you freeze, hesitate, or tell yourself it will come back. Holding a mental stop while doing everything else is when traders lose the most.
What Scalpel does instead
07:41:12 ETPre-market
D1TRADERABCDPRE
CHART
10s1m5m1h1d
Above VWAP, EMAs upBroke the range high
BuyShares v$571100 sh$1.4k250 sh$2.9k500 sh$5.7k1000 sh
Offset-10c+
SellFull1/21/41/2 Ask1/2 MidB/ETrailCancel
Offset-10c+
07:41 ET, before the open: the PRE badge on the desk, and 400 ABCD from 5.50 with the working stop at 5.38 (-48.00, -1.0R) and the target at 5.74. Nothing is resting at the broker. Demo data.
Every entry arms a working stop, a wider catastrophe net and a take-profit (guide 5.1). None of them is an order. Scalpel holds them and checks them against every new last-trade price of the symbol on your desk:
Price trades at or through a level. The take-profit is checked first (at or above it), then the catastrophe net, then the working stop (at or below them).
Scalpel sends one exit for the whole position. In LIVE it is a sell limit priced 5 cents under the last trade, with the outside-regular-hours flag set, so the exchange accepts it in the pre-market and after hours. It sells every share you hold: if a sell of yours is already working, such as a resting 1/2 Ask, Scalpel cancels it and sends this one exit for everything instead.
It fills at the best bids down to that limit. A limit 5c under the last trade is marketable: it takes the bids that are there, best first, and only stops at 5c under.
The level is used up, the exit is not. Scalpel disarms the stop the moment it sends the exit, so it cannot fire twice, and then keeps working the exit until you are out (below).
You hear and see it. A red toast ABCD stopped out (working stop) (or (catastrophe stop)) and the voice: "Stopped out." or "Catastrophe stop."
Worked through with the earlier example: prints go 5.40, 5.39, then 5.37. The 5.37 print is through your 5.38 stop, so Scalpel sends SELL 400 LMT 5.32 straight away. The bids are 300 at 5.36 and 200 at 5.35, so you fill 300 at 5.36 and 100 at 5.35, an average of about 5.358. The loss is about $57 plus fees instead of the $48 you planned at the stop: about 1.2R. In the jumped-stop-limit case, prints 5.40 then 5.31, Scalpel sends a limit at 5.26 and takes whatever bids remain down to there.
ORDERS & POSITIONS
PositionsOrdersNET P&L-$59.80
ORDERS
TIMEQTYSIDEFILLFEESTATUS
07:52:31400SELL5.361.40Filled
07:41:07400BUY5.501.40Filled
ABCD stopped out (working stop)
The Orders tab after the stop fired: the 400-share SELL filled at 5.36 average, NET P&L -$59.80 with fees, and the toast. Order times are New York time. Demo data.
Two side benefits: your stop never shows on the book, so nobody can see where it is or run price into it, and it can do things a broker stop cannot, such as trail the low of each 1-minute candle (guide 5.3).
The catastrophe net
The catastrophe net is a second, wider level under the working stop (3 x ATR by default, or twice the stop distance on a risk entry). It is checked before the working stop, so if one print gaps through both, the exit goes out as a catastrophe stop. In LIVE both send the same exit, 5c under the last trade. It is a backstop for a gap, not a second chance: once either fires, both are disarmed.
SIM and LIVE
In LIVE the exit is a real order at Interactive Brokers, priced as above, and it can fill worse than the stop or not fill at all.
In SIM a stop-out fills like a real stop: at the price that crossed your stop or the inside bid, whichever is worse, less your SIM slippage (c), with your plan's commission (guide 6.1). In the example SIM fills at 5.36, the bid under the 5.37 print, not at 5.38. A take-profit fills at its own price. SIM still cannot show you an exit that does not fill at all, so treat SIM stop-outs as the better case and size so the LIVE version is still fine.
Flatten All
Esc (or the red Flatten All button) sells every position on every desk. In LIVE it is priced about 1% under the inside bid, deliberately aggressive so one press clears the position: with a 5.20 bid the limit is 5.15, and IBKR fills at the best bids down to that floor. It is also a limit order, so it works in the pre-market too (guide 4.5). If a stop's exit is still working when you press it, Flatten All replaces that order instead of adding a second one: Scalpel cancels it, waits for IBKR to confirm, then sends one sell for everything you hold at the lower of the two limits.
Lets entries fill in the pre-market and after hours. Exits (stops, targets, sells and Flatten All) can always fill outside regular hours, so a stop that fires before the open can get you out. Orders go to IBKR SMART routing.
CancelApply
Settings, Trading: Extended-hours fills is on by default. Its note: exits can always fill outside regular hours.
Settings > Trading > Extended-hours fills (on by default) controls your entries: on, a buy can fill in the pre-market and after hours; off, buys are regular-hours only and IBKR holds them until 09:30. Exits always may fill outside regular hours, whatever this switch says: stops, targets, sells and Flatten All are all sent with the outside-regular-hours flag, so a stop that fires at 07:52 can get you out at 07:52 (guide 11.2).
If an exit does not fill
A limit 5c under the last trade fills when there are bids down to it. In a very fast fall there may not be: the bids vanish, the next print is 15c lower, and the exit sits above the market. So in LIVE Scalpel keeps working a stop or target exit until you are out:
If price trades under the exit's limit once the order is half a second old, or the exit has not filled after 5 seconds, Scalpel cancels it, waits for IBKR to confirm, and sends a new sell for whatever you still hold, priced off the latest trade at 5c under it or about 1% under it, whichever is lower.
It does this up to 5 times. After that it leaves the last order working and tells you: ABCD: exit still not filled after 5 re-prices. Check it in TWS.
At no point are two exits working at once, and every sell is capped to the shares you hold, so re-pricing can never put you short.
Continuing the example: the stop fires on a 5.37 print and sends a limit at 5.32, but the next print is 5.25 and the bids above it are gone. Half a second later Scalpel cancels the 5.32 order and sends a new one at 5.20 (5c under 5.25 is 5.20; 1% under is 5.1975, rounded to 5.20).
ORDERS & POSITIONS
PositionsOrdersNET P&L-$100.00
ORDERS
TIMEQTYSIDEFILLFEESTATUS
07:52:32400SELL0-Working
07:52:31400SELL0-Cancelled
07:41:07400BUY5.501.40Filled
ABCD stopped out (working stop)
Price fell through the stop's first exit: that SELL reads Cancelled, and the re-priced SELL sent a second later is Working. Demo data.
What you can do while it works:
01
Watch the Orders tab
On the desk's ORDERS & POSITIONS pane, open Orders. Each re-price shows as a cancelled SELL and a new one Working above it.
02
Flatten with Esc if you want out now
Press Esc. Flatten All replaces the working exit with one sell 1% under the bid for everything you hold. It is not refused and it does not stack a second sell on top.
03
If the re-prices run out, go to TWS
After the exit still not filled toast, the last order stays working and Scalpel stops chasing. The stock has no bids near the price, often because it is halted or collapsing. Check the order and the position in TWS, and decide there.
What survives a restart
LIVE stops are saved. Every change to a LIVE level (the fill, a drag, breakeven, a trail) is written to live_stops.json in Scalpel's data folder. After a restart they come back exactly where they were.
LIVE positions come from IBKR. When Scalpel connects, it reconciles with your account: a position that is still open is adopted with its saved stop, and one that was closed in TWS while Scalpel was off is closed in Scalpel too. A position Scalpel has no saved stop for, for example one you bought in TWS, gets a stop at the default distance under IBKR's average cost, so check it.
SIM stops are saved too, in sim_stops.json beside the SIM ledger, so open SIM positions come back with the levels you had.
While Scalpel is closed or disconnected, nothing is watching. If price went through your stop in the meantime, the first price after Scalpel reconnects fires the exit, at whatever the market is by then.
The trade-offs, plainly
A stop order at your broker
Scalpel's app stop
Works before 09:30
Usually not
Yes, from 04:00
Visible on the book
Can be
Never
Priced off
Your trigger
The trade that broke your stop
Can trail candle lows, breakeven by key
No
Yes
Works with your computer off
Yes
No. Scalpel must be running and connected, with the symbol on a desk
So keep Scalpel open and connected while you hold anything, keep every symbol you hold on a desk (a position on no desk has no prices, so its stop is not watched), and close your trades before you close the app.
Questions
Can I use a stop loss order in the pre-market?
Usually not a plain one. US exchanges accept only limit orders outside regular hours, and a stop becomes a market order when it triggers. A stop-limit is accepted but can be jumped when price gaps through its limit. Scalpel's app stop sends a limit sell 5 cents under the last trade, which is accepted from 04:00.
Why does Scalpel not place my stop at Interactive Brokers?
Because a resting stop cannot protect a pre-market trade, and a stop-limit can be skipped in a thin book. Scalpel watches every trade itself and sends a marketable limit the moment price trades through your level. The cost is that Scalpel must be running and connected.
Is my stop price guaranteed?
No. The exit goes out on the first trade at or through your stop, priced 5 cents under the last trade, and fills at the bids that are there. In a fast drop it can fill well below your stop. If price runs away from it, Scalpel re-prices it up to 5 times, and Esc replaces it with a sell 1% under the bid.
What happens if my stop's exit does not fill?
In LIVE, Scalpel cancels it and sends a new one priced off the latest trade, at least about 1% under it, when price trades under its limit or after 5 seconds, up to 5 times. Then it tells you to check the order in TWS. Pressing Ctrl+Q stops this and leaves you with no stop.
Do I need Extended-hours fills on for my stops to work pre-market?
No. Exits always go out flagged for extended hours. The switch decides whether your buys can fill outside regular hours. If you are on 1.12.4 or earlier, update, or keep it on.
What happens to my stop if Scalpel crashes?
Nothing watches the position until Scalpel is running and connected again. LIVE stops are saved, so they come back where they were, and the first price after reconnecting fires the exit if the stop was crossed in the meantime.