Как работают стоп-заявки по опционам и их активация
Стоп-заявка по опциону обычно хранится у брокера, а не на бирже. Исполнение зависит от того, использует ли система цену последней сделки, бид или марк для активации приказа.
Что именно активирует стоп-заявку по опциону? В большинстве розничных счетов биржа никогда не видит стоп-приказ: брокер удерживает его в своей системе и преобразует в рыночную заявку, когда последняя сделка по контракту, его бид, аск или марк достигают стоп-цены. От того, какой именно показатель отслеживает брокер, зависит, сработает ли стоп по ожидаемой цене и сработает ли он вообще, а спред bid-ask определяет качество исполнения после активации.
Где фактически находится стоп-заявка по опциону?
Опционные биржи по-прежнему определяют типы стоп-заявок. В своде правил Cboe Exchange, обновленном 14 августа 2026 года, в пункте 5.6(c) перечислены как заявки «Stop (Stop-Loss)», так и «Stop-Limit», а также указан собственный триггер биржи:
«Заявка "Stop (Stop-Loss)" — это заявка на покупку (продажу), которая становится рыночной, когда консолидированная цена последней сделки (за исключением цен по сложным заявкам, если они вне NBBO) или NBB (NBO) для конкретного опционного контракта становится равной или выше (ниже) стоп-цены, указанной пользователем. Пользователи не могут назначать стоп-заявку как All Sessions или RTH and Curb». (Правила Cboe Exchange, Inc., пункт 5.6(c), обновлено 14 августа 2026 г.)
Две детали применимы к любому брокеру. Биржевой триггер — это последняя сделка или национальный лучший бид/оффер (NBB/NBO), поэтому стоп на продажу может сработать при достижении бидом стоп-цены даже без совершения сделки. Кроме того, заявка не может быть назначена для сессий all-sessions или curb: на уровне биржи стоп является инструментом для основной торговой сессии.
Розничная заявка почти никогда не доходит до этого правила. Большинство розничных брокеров хранят стоп на собственных серверах и выпускают рыночную или лимитную заявку на биржу или маркет-мейкеру только после срабатывания собственного триггера. В тикете написано «stop», но логика триггера принадлежит брокеру и прописана в его регламенте по типам заявок, а не в биржевых правилах.
Какая цена активирует стоп по опциону: last, bid, ask или mark?
Существуют три общепринятых подхода, охватывающих почти всех брокеров. Рассмотрим стоп на продажу по цене $1,80 для длинного put-опциона, выставленный при котировках $1,90 (bid) / $2,10 (ask).
- Последняя сделка (Last trade). Стоп срабатывает только при прохождении сделки по цене $1,80 или ниже. Если сделок по контракту нет, ничего не произойдет, как бы сильно ни упала котировка.
- Бид или аск (Bid or ask). Стоп срабатывает, когда бид (некоторые брокеры следят за аском или любой из сторон) достигает $1,80. Сделка не требуется; достаточно того, чтобы один маркет-мейкер снизил свою котировку.
- Марк (Mark). Стоп срабатывает, когда средняя точка между бидом и аском достигает $1,80. При спреде в $0,40 марк может сместиться на $0,20 без совершения сделок.
Почему «последняя сделка» ненадежна для низколиквидных контрактов
Опционная цепочка на экране выглядит непрерывной, однако большинство контрактов совершают лишь несколько сделок в день. В таблице ниже представлены все контракты AAPL, по которым прошли сделки 15 июля 2026 года, сгруппированные по объему за день (один лот — это один контракт).
| Диапазон объема | Контракты | Доля (%) |
|---|---|---|
| 1 to 5 lots | 414 | 23.4 |
| 6 to 25 lots | 323 | 18.2 |
| 26 to 100 lots | 358 | 20.2 |
| 101 to 1,000 lots | 486 | 27.4 |
| over 1,000 lots | 190 | 10.7 |
Точный SQL-код для каждого числа
WITH traded AS
(
SELECT
ticker,
max(volume) AS contracts_traded
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date = toDate('2026-07-15')
AND volume > 0
GROUP BY ticker
)
SELECT
multiIf(contracts_traded <= 5, '1 to 5 lots',
contracts_traded <= 25, '6 to 25 lots',
contracts_traded <= 100, '26 to 100 lots',
contracts_traded <= 1000, '101 to 1,000 lots',
'over 1,000 lots') AS volume_bucket,
count() AS contracts,
round(100 * count() / (SELECT count() FROM traded), 1) AS share_pct
FROM traded
GROUP BY volume_bucket
ORDER BY min(contracts_traded)23.4% контрактов, по которым прошли сделки в тот день, имели объем пять лотов или меньше за всю сессию, а еще 18.2% — от шести до двадцати пяти. Контракт с объемом в три лота имел максимум три сделки, поэтому стоп, привязанный к последней сделке, имел максимум три шанса сработать за весь день по ценам этих сделок. Между сделками котировка может уйти от вашего стопа далеко вниз, оставаясь незамеченной. С другой стороны, 190 контрактов имели объем более тысячи лотов каждый, и стоп по последней сделке для них работает почти так же, как для акций.
Почему стоп-маркет исполняется по дальней стороне спреда
Представим put-опцион с котировкой $1,60 (bid) / $2,00 (ask) — спред $0,40 — и стоп-маркет на продажу по $1,80, привязанный к марку. Котировка опускается до $1,55 / $1,95. Марк составляет $1,75, стоп срабатывает, и брокер отправляет рыночную заявку на продажу. Рыночная заявка забирает лучший доступный бид — $1,55, поэтому исполнение происходит на $0,25 ниже стоп-цены (примерно на 14%), при этом сделок вблизи $1,80 не было. Если в момент поступления заявки бид на одно обновление котировок упадет до $1,20, исполнение будет по $1,20. Для низколиквидного контракта спред bid-ask — это минимальное проскальзывание, которое допускает стоп-маркет, и здесь действует стандартный компромисс рыночной заявки против лимитной, усиленный шириной опционных котировок.
Почему стоп-лимит может оставить позицию незакрытой
Заменим рыночную заявку на стоп-лимит с лимитом $1,75. Котировка падает до $1,55 / $1,95, стоп срабатывает, и полученная заявка на продажу по $1,75 или лучше остается в стакане на $0,20 выше бида. Никто не обязан ее исполнять. Если put-опцион продолжает падать, заявка остается неисполненной, а позиция — открытой с растущим убытком, что противоположно цели стоп-заявки. Сравнение этих типов приведено в стоп-заявка против стоп-лимита, а причины, по которым лимитная заявка может не исполниться, — в почему опционные заявки не исполняются.
Почему дистанция стопа в 20% — это норма для опциона
Дистанция стопа, которая кажется щедрой для акций (10% или 20% ниже цены входа), для опциона находится внутри обычного дневного шума. На графике ниже показан один put-опцион на SPY (страйк ближайший к деньгам, до экспирации от 25 до 35 дней по состоянию на 6 июля 2026 года) за две недели, рядом с дневным движением самого ETF.
| Дата сессии | Календарная метка | Цена PUT | Изменение PUT (%) | Изменение SPY (%) |
|---|---|---|---|---|
| 2026-07-06 | Jul 6 | 8.79 | -41.3 | 0.66 |
| 2026-07-07 | Jul 7 | 11.21 | 27.5 | -0.6 |
| 2026-07-08 | Jul 8 | 12.03 | 7.3 | -0.11 |
| 2026-07-09 | Jul 9 | 8.31 | -30.9 | 0.82 |
| 2026-07-10 | Jul 10 | 6.5 | -21.8 | 0.45 |
| 2026-07-13 | Jul 13 | 9.28 | 42.8 | -0.88 |
| 2026-07-14 | Jul 14 | 7.49 | -19.3 | 0.66 |
| 2026-07-15 | Jul 15 | 5.92 | -21 | 0.21 |
| 2026-07-16 | Jul 16 | 7.94 | 34.1 | -0.74 |
| 2026-07-17 | Jul 17 | 11.5 | 44.8 | -0.88 |
Точный SQL-код для каждого числа
WITH pick AS
(
SELECT ticker
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND lower(toString(option_type)) IN ('put', 'p')
AND date = toDate('2026-07-06')
AND days_to_expiry BETWEEN 25 AND 35
AND volume > 0
ORDER BY abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) ASC,
expiration_date ASC,
ticker ASC
LIMIT 1
),
daily AS
(
SELECT
date,
max(toFloat64(option_close)) AS put_close_raw,
max(toFloat64(underlying_close)) AS spy_close_raw
FROM global_markets.options_greeks
WHERE ticker IN (SELECT ticker FROM pick)
AND date >= toDate('2026-07-02')
AND date < toDate('2026-07-18')
AND volume > 0
GROUP BY date
),
chained AS
(
SELECT
date,
put_close_raw,
spy_close_raw,
lagInFrame(put_close_raw, 1) OVER (ORDER BY date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS prev_put,
lagInFrame(spy_close_raw, 1) OVER (ORDER BY date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS prev_spy
FROM daily
)
SELECT
toString(date) AS session_date,
concat(formatDateTime(date, '%b'), ' ', toString(toDayOfMonth(date))) AS calendar_label,
round(put_close_raw, 2) AS put_close,
round(100 * (put_close_raw / prev_put - 1), 1) AS put_move_pct,
round(100 * (spy_close_raw / prev_spy - 1), 2) AS spy_move_pct
FROM chained
WHERE prev_put > 0
AND prev_spy > 0
AND date >= toDate('2026-07-06')
ORDER BY datePut-опцион закрылся на уровне $8.79 Jul 6 и $11.5 Jul 17. Сравните два процентных столбца: дневные изменения ETF составляют доли процента, в то время как изменения опциона исчисляются целыми процентами, а часто и десятками процентов. Этот разрыв помещает стоп на 20% ниже цены опциона в диапазон одного дня. Расширение выборки до всех околоденежных put-опционов на SPY со сроком до экспирации от 20 до 45 дней за июль 2026 года превращает один контракт в распределение.
| Диапазон изменения | Срок контракта (дней) | Доля (%) |
|---|---|---|
| under 5% | 396 | 16.7 |
| 5% to 10% | 339 | 14.3 |
| 10% to 20% | 591 | 25 |
| 20% or more | 1039 | 43.9 |
Точный SQL-код для каждого числа
WITH daily AS
(
SELECT
ticker,
date,
max(toFloat64(option_close)) AS put_close,
max(toFloat64(underlying_close)) AS spy_close,
max(toFloat64(strike_price)) AS strike,
max(days_to_expiry) AS dte
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND lower(toString(option_type)) IN ('put', 'p')
AND date >= toDate('2026-06-29')
AND date < toDate('2026-08-01')
AND days_to_expiry BETWEEN 15 AND 50
AND volume > 0
GROUP BY ticker, date
),
chained AS
(
SELECT
date,
put_close,
spy_close,
strike,
dte,
lagInFrame(put_close, 1) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS prev_put,
lagInFrame(date, 1) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS prev_date
FROM daily
),
moves AS
(
SELECT abs(100 * (put_close / prev_put - 1)) AS move_pct
FROM chained
WHERE prev_put > 0
AND dateDiff('day', prev_date, date) <= 4
AND date >= toDate('2026-07-01')
AND dte BETWEEN 20 AND 45
AND abs(strike / spy_close - 1) < 0.02
)
SELECT
multiIf(move_pct < 5, 'under 5%',
move_pct < 10, '5% to 10%',
move_pct < 20, '10% to 20%',
'20% or more') AS move_bucket,
count() AS contract_days,
round(100 * count() / (SELECT count() FROM moves), 1) AS share_pct
FROM moves
GROUP BY move_bucket
ORDER BY min(move_pct)43.9% таких контракт-дней показали изменение на 20% и более от предыдущего закрытия, против 16.7%, которые изменились менее чем на 5%. Стоп на 20% ниже предыдущего закрытия был задет примерно в 43.9 из каждых ста контракт-дней, не считая внутридневных колебаний, которые не видны при сравнении цен закрытия.
Ограничения брокеров, которые стоит проверить перед выставлением заявки
Правила брокеров по опционным стопам различаются и меняются, поэтому рассматривайте это как категории для проверки в регламенте вашего брокера, а не как факты о конкретной компании:
- Принимаются ли вообще стоп-маркет заявки по опционам. Некоторые брокеры принимают только стоп-лимиты, что исключает исполнение по худшей цене, но создает проблему «зависания» позиции.
- Какая конвенция триггера применяется (last, bid, ask или mark) и можно ли выбирать ее для каждой заявки.
- Оцениваются ли триггеры только в основное торговое время. Биржевой стоп в правилах Cboe действует только в основное время, и брокерские стопы часто имеют такое же ограничение, что важно для индексных опционов с продленными сессиями.
- Разрешены ли стопы для многоногих (multi-leg) заявок, и если да, то за какой ценой следит триггер (обычно это чистый марк спреда), а также какие опции времени действия может иметь стоп.
Что использовать вместо обычного стопа
- Брекет-заявка или OCO-выход с целевым дебетом. Одна заявка на закрытие с прибылью, другая — стоп-лимит с достаточно широким лимитом, чтобы перекрыть обычный спред; исполнение одной автоматически отменяет другую. Брекет и OCO-заявки описывают механику; для опционов целевой уровень котируется как конкретный дебет или кредит, а не как процент.
- Условная заявка, привязанная к цене базового актива. Заявка следит за акцией, по которой проходят тысячи сделок в час, а не за put-опционом, по которому сделок десяток в день, и отправляет лимитную заявку по опциону, когда акция достигает вашего уровня. График выше показывает, почему этот триггер надежнее: ETF — это плавный ряд, а put — шумный.
- Отсутствие стопа для спредов с ограниченным риском. Максимальный убыток вертикального спреда фиксируется при входе. Стоп по спреду следит за совокупным марком двух широких котировок, который может колебаться из-за шума и закрыть обе «ноги» по наихудшему сочетанию цен. Корректировка сделки, как описано в как роллировать опционную позицию, позволяет сохранить заданный риск.
Часто задаваемые вопросы
Работают ли стоп-заявки по опционам?
Да, с оговоркой. Свод правил Cboe по-прежнему определяет биржевые стоп-заявки и стоп-лимиты для опционов, но большинство розничных брокеров удерживают стоп у себя и активируют его по собственному триггеру: последней сделке, биду, аску или марку. Поведение заявки зависит от конвенции вашего брокера, прописанной в регламенте по типам заявок для вашего счета.
Что активирует стоп-заявку по опциону: бид, аск или последняя сделка?
Зависит от брокера. Распространенные конвенции — цена последней сделки, бид или аск, а также марк (средняя точка котировки). Биржевой стоп Cboe срабатывает либо по консолидированной последней сделке, либо по национальному лучшему биду или офферу.
Почему моя опционная стоп-заявка исполнилась намного ниже стоп-цены?
Стоп-маркет становится рыночной заявкой в момент срабатывания, а рыночная заявка на продажу забирает текущий бид. Если спред составляет $0,40, а триггером был марк, исполнение произойдет по биду — примерно на 10% ниже триггера для контракта по $2, без учета дополнительного проскальзывания.
Можно ли установить стоп-лосс на опционный спред?
Некоторые брокеры разрешают стопы на многоногие заявки, обычно привязанные к чистому марку спреда, некоторые — нет. Спред с ограниченным риском уже имеет фиксированный максимальный убыток, а стоп по нему может сработать из-за рыночного шума и закрыть обе «ноги» по невыгодным ценам. Многие трейдеры управляют спредами путем роллирования или корректировки.
Каждая панель выше поставляется с SQL-кодом, который ее создал. Чтобы запустить такой же подсчет объема по контрактам для другого тикера или даты, запросите его на терминале Strasmore простым языком.