Protective Put vs Stop-Loss Order
Protective put vs stop-loss order on one 100-share position: how each sets a floor, what an overnight gap does to a stop, and what the put premium costs.
A protective put and a stop-loss order both aim to put a floor under 100 shares of stock, and they are not interchangeable. A stop-loss order is a free instruction that becomes a market order the moment the stock touches your price. A protective put is a contract you pay for, giving you the right to sell at a fixed strike until a fixed date, and it leaves the shares in your account rather than selling them.
Protective put vs stop-loss order on one 100-share position
Take 100 shares of a $100 stock, a $10,000 position, and a floor somewhere near $90.
The stop-loss version is an instruction held at the broker: if the stock trades at or below $90, sell all 100 shares at the market. Placing it is free, carrying it is free, and it does nothing at all until the price is touched.
The protective put version is a purchase: one 90-strike put, which carries the right to sell 100 shares at $90 until the expiration date printed on the contract. One contract covers 100 shares. The premium is paid up front and is spent whether the stock falls or not.
One asymmetry sets up everything below. The stop is an exit instruction that has to be filled at whatever price exists when it wakes up. The put is a right you own, struck at a number that cannot move.
What does a protective put cost?
Protection is priced on a curve, not at a point. Three inputs set the premium on a put, and all three are visible before the trade.
The first is the distance between the strike and the share price. An at-the-money strike covers losses from the first cent down and carries the most premium. A strike well below the market pays nothing until the stock has already fallen that far, and it carries the least. Walking the strike down walks the premium down with it.
The second is time to expiry. A six-month contract contains six months of possible declines and is priced against all of them. A one-month contract costs a fraction of that, and it covers one month.
The third is the expected volatility priced into the name, which is what the contract's implied volatility quotes. The same strike on the same stock prices higher in a stretch when wider moves are being priced, and that is often the stretch in which a hedger wants a floor.
None of those three inputs produces a free point on the line. Closer floors cost more than distant ones, longer floors cost more than short ones, and the stop-loss order sitting beside the put costs nothing to place at any distance. That is the trade the rest of this post describes.
Difference 1: the stop price is not the fill price
A stop at $90 does not sell at $90. It releases a market order once $90 prints, and that order takes the best bid available at that instant. On a quiet tape the difference is pennies. On a fast one the sale can land well under the number you typed, which is walked through in why stop orders fill below the stop price. Attaching a limit, covered in stop order vs stop limit order, removes the bad-fill risk and adds a different one: the order can sit unfilled while the stock keeps going.
The 90-strike put has no equivalent distance between intent and outcome. Exercise delivers $90 per share from the assigned counterparty whatever the tape is doing. Equity options settle physically: shares out, strike price in.
Difference 2: a stop is asleep while the gap forms
Overnight gaps form between one close and the next open, in hours when no order can execute at all. A resting stop has no presence in that window. If the open is below the stop price, the order releases into the opening print and the fill is struck against the post-gap price.
How often that happens is a property of the individual stock, and it is measurable in advance.
| ticker | gap_down_2pct_rate_pct | worst_gap_down_pct | gap_down_day_count | session_count |
|---|---|---|---|---|
| NVDA | 7.21 | 19.3 | 181 | 2509 |
| AAPL | 3.27 | 12.96 | 82 | 2510 |
| MSFT | 2.39 | 11.86 | 60 | 2511 |
| SPY | 1 | 10.45 | 25 | 2511 |
| JNJ | 0.96 | 7.98 | 24 | 2511 |
| KO | 0.64 | 12.85 | 16 | 2511 |
The exact SQL behind every number
SELECT
ticker,
round(countIf(overnight_move_pct <= -2) * 100.0 / count(), 2) AS gap_down_2pct_rate_pct,
round(abs(min(overnight_move_pct)), 2) AS worst_gap_down_pct,
countIf(overnight_move_pct <= -2) AS gap_down_day_count,
count() AS session_count
FROM
(
SELECT
ticker,
round((toFloat64(open) / toFloat64(prev_close) - 1) * 100, 3) AS overnight_move_pct
FROM
(
SELECT
ticker,
date,
open,
any(close) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_close
FROM
(
SELECT
ticker,
date,
any(open) AS open,
any(close) AS close
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO', 'JNJ')
AND date >= '2016-10-01'
AND date <= '2026-09-30'
AND (ticker, date) NOT IN (SELECT ticker, execution_date FROM global_markets.stocks_splits)
GROUP BY ticker, date
)
)
WHERE prev_close > 0
)
GROUP BY ticker
ORDER BY gap_down_2pct_rate_pct DESCOver ten years of sessions, NVDA opened at least 2% below its prior close on 7.21% of them, the highest rate of the six names here, with a worst single overnight move of 19.3%. At the other end of the panel, KO did it on 0.64% of sessions. The depth of the worst moves matters more than the count.
| date | gap_date_label | gap_down_pct | session_low_below_prev_close_pct |
|---|---|---|---|
| 2019-01-03 | Jan 3, 2019 | 8.83 | 10.08 |
| 2020-02-28 | Feb 28, 2020 | 5.94 | 6.27 |
| 2020-03-09 | Mar 9, 2020 | 8.75 | 9.01 |
| 2020-03-12 | Mar 12, 2020 | 7.08 | 9.96 |
| 2020-03-16 | Mar 16, 2020 | 12.96 | 13.66 |
| 2020-09-08 | Sep 8, 2020 | 5.8 | 6.84 |
| 2024-08-05 | Aug 5, 2024 | 9.45 | 10.85 |
| 2025-04-03 | Apr 3, 2025 | 8.2 | 10.11 |
| 2025-04-07 | Apr 7, 2025 | 5.94 | 7.3 |
| 2026-07-31 | Jul 31, 2026 | 8.58 | 10.03 |
The exact SQL behind every number
SELECT
toString(session_date) AS date,
formatDateTime(session_date, '%b %e, %Y') AS gap_date_label,
round(abs(overnight_move_pct), 2) AS gap_down_pct,
round(abs(low_vs_prev_close_pct), 2) AS session_low_below_prev_close_pct
FROM
(
SELECT
session_date,
round((toFloat64(open) / toFloat64(prev_close) - 1) * 100, 3) AS overnight_move_pct,
round((toFloat64(low) / toFloat64(prev_close) - 1) * 100, 3) AS low_vs_prev_close_pct
FROM
(
SELECT
session_date,
open,
low,
any(close) OVER (ORDER BY session_date ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_close
FROM
(
SELECT
date AS session_date,
any(open) AS open,
any(low) AS low,
any(close) AS close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2016-10-01'
AND date <= '2026-09-30'
AND date NOT IN (SELECT execution_date FROM global_markets.stocks_splits WHERE ticker = 'AAPL')
GROUP BY date
)
)
WHERE prev_close > 0
ORDER BY overnight_move_pct ASC
LIMIT 10
)
ORDER BY session_dateThose ten sessions run from Jan 3, 2019 to Jul 31, 2026. On the earliest of them the stock opened 8.83% under the prior close, and the session low reached 10.08% under it. A session low is never above that session's open, so a stop elected at the opening print is filled somewhere inside that band, with the gap already in the price. The 90-strike put passes through the same morning untouched: the strike is still $90, and the contract is worth more than it was the night before.
Difference 3: once the stop fills, the position is gone
A stop that fills does its whole job in a single print. The shares are sold, the loss is booked, and whatever the stock does over the following month belongs to someone else. Getting back in is a new decision at a new price.
The put holder stands somewhere different after the identical decline. The shares are still in the account, any dividend still arrives, and the put has gained value against the fall. Selling the put back collects that gain and keeps the stock. Exercising sells the stock at the strike. That choice stays open until expiration, and it is the part a stop cannot copy: a floor under the position that does not remove the position.
The premium is a known, recurring cost
The put's floor is the strike minus what you paid for it. A 90-strike put bought for $3 floors a $100 stock at $87, not $90, and the $300 leaves the account the moment the trade prints. Protection also expires, so a floor you want all year is a series of purchases rather than one. Twelve monthly contracts are twelve premiums, and each roll is priced at the share price and the expected volatility standing in front of it on the day it is bought.
That arithmetic decides which tool loses. On a slow drift the stop may never fire and costs nothing, while the put expires worthless and the premium is a straight deduction, repeated at every roll. On a cliff the ranking flips: a stock that closes at $100 and opens at $70 fills the stop near $70 and pays the put holder $90. The put is insurance, with a premium and a deductible, priced like insurance.
How to choose between them
Four inputs settle most cases.
- Holding period. A floor needed for one week is a different purchase from a floor needed for a year, and the put's cost scales with the calendar.
- Gap history of the name. The frequency and depth of its overnight moves, measured as in the panels above, is the exposure a stop does not cover.
- Premium as a percentage of position value. Price the strike you actually want against the position, then set it beside the size of the loss you are trying to cap.
- Whether keeping the shares matters. A dividend, a long-held low cost basis, or a position you intend to hold through a drawdown all point toward a floor rather than an exit.
When the premium is the sticking point, selling a call above the market funds part of it and turns the structure into a collar, which trades away gains above the call strike for a cheaper floor. Sizing the hedge across a whole portfolio rather than one lot is worked through in how many puts to hedge a portfolio.
Data notes
An overnight move is each session's open measured against the prior session's close, from daily bars. Split execution dates are excluded from both panels, since a split changes the price level without a market move. The $100 stock, the $90 stop and the $3 premium in the text are round hypotheticals for the arithmetic, not quoted prices.
FAQ
Does a protective put guarantee a $90 exit?
It guarantees the right to sell at $90 at any point before expiration. The net floor sits lower than the strike: strike minus the premium paid. After the contract expires there is no floor at all.
Why does a stop-loss order fill below the stop price?
The stop price releases a market order rather than naming a sale price. That order takes the best bid available at the moment it goes live, which on a gap or a fast move can be far below the stop.
Which one protects against an overnight gap?
The put. Its strike is fixed and the contract is unaffected by the gap. A stop cannot execute while the market is closed, so the gap is already in the price by the time the order releases.
Is a protective put more expensive than a stop-loss order?
A stop costs nothing to place. The put costs premium up front, a known cash amount set by the strike's distance from the share price, the time to expiry and the expected volatility priced into the name. What the premium buys is a fixed strike and the shares retained.
Can I hold both at the same time?
Yes, they are separate instruments on the same shares. A stop that fills under a put-protected position sells the stock and leaves a long put standing alone, which turns a hedge into an outright bearish position, so it is worth confirming how your broker handles the open contract.
Every panel here ships with the exact SQL beneath it. To count a name's overnight gaps, or price a put on a position you hold, ask the question in plain English on the Strasmore terminal.