Strasmore Research
學習 Matt Connor作者: Matt Connor · 更新於 2026-09-13

選擇權 Stop Order 如何觸發?

選擇權 stop order 通常由券商監控最後成交價、bid、ask 或 mark price,達到 stop price 後才送出;價格來源會影響是否觸發與最終成交。

什麼會觸發 option 的 stop order?在多數零售帳戶中,交易所根本看不到 stop:券商會將其留在自己的系統內,等契約的最後成交價、買價、賣價或 mark price 達到 stop price 後,才轉換成有效訂單。券商監看的價格類型,會決定 stop 是否在你預期的價位觸發,甚至是否會觸發;而 bid-ask spread 則決定觸發後的成交結果。

Option 的 stop order 實際上放在哪裡?

Options exchanges 仍定義 stop order 類型。Cboe Exchange 規則手冊截至2026年8月14日的版本,在 Rule 5.6(c) 下列出「Stop (Stop-Loss)」order 與「Stop-Limit」order,並說明交易所自身的觸發條件:

「『Stop (Stop-Loss)』order 是一項買進(賣出)訂單;當特定 option contract 的綜合最後成交價(若複合訂單交易價格位於 NBBO 之外,則不包括該價格),或 NBB(NBO)等於或高於(低於)User 指定的 stop price 時,該訂單會轉為 market order。User 不得將 Stop Order 指定為 All Sessions、RTH 或 Curb。」(Rules of Cboe Exchange, Inc., Rule 5.6(c),截至2026年8月14日更新)

有兩項細節適用於每家券商。交易所的觸發條件是最後成交價或全國最佳買價/賣價(NBB/NBO),因此 sell stop 可能因 bid 觸及 stop price 而觸發,即使完全沒有成交。其次,該訂單不能指定為全時段或 Curb session:在交易所層級,stop 是僅適用於正常交易時段的工具。

零售訂單幾乎不會直接適用這項規則。多數零售券商會把 stop 留在自己的伺服器上,等自有觸發條件成立後,才將 market order 或 limit order 送往交易所或 wholesaler。訂單介面雖然寫著「stop」,但觸發邏輯屬於券商,並記載於其 order-type disclosure,而非任何交易所規則手冊。

什麼價格會觸發 option stop:last、bid、ask,還是 mark?

幾乎所有券商都採用以下三種慣例之一。假設一張 long put 以 $1.80 設定 sell stop,設定時該 put 的報價為 $1.90 bid/$2.10 ask。

  • Last trade。 只有在出現 $1.80 或更低的成交價時,stop 才會觸發。如果該契約沒有成交,無論報價跌得多深,都不會發生任何事。
  • Bid 或 ask。 當 bid(部分券商監看 ask,或任一側)觸及 $1.80 時,stop 便會觸發。不需要成交;只要一個 market maker 下調報價就足以觸發。
  • Mark。 當 bid 與 ask 的中間價達到 $1.80 時,stop 便會觸發。在 $0.40 寬的報價中,即使兩側都沒有成交,mark 也可能移動 $0.20。

為什麼在交易清淡的契約上,last trade 不可靠

Options chain 在螢幕上看似連續,但其中多數契約每天只成交數次。下方面板將2026年7月15日曾有成交的所有 AAPL contract,依全天成交量分組;一口代表一張 contract。

查詢AAPL 2026年7月15日選擇權合約,按全天成交量分組
成交量區間合約數占比
1 to 5 lots41423.4
6 to 25 lots32318.2
26 to 100 lots35820.2
101 to 1,000 lots48627.4
over 1,000 lots19010.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% 的契約成交六至25口。一張成交量為三口的契約,最多只會產生三筆成交,因此以 last trade 為觸發依據的 stop,全天最多只有三次觸發機會,而且成交價取決於這些成交的價格。在兩筆成交之間,報價可能從你的 stop price 直接移動到遠低於該價位,而完全沒有被觀察到。表格另一端有 190 的契約各自成交超過1,000口;對這些契約而言,last-trade stop 的表現比較接近股票 stop。

為什麼 stop-market 會在 spread 的遠端成交

現在假設某 put 的報價為 $1.60 bid/$2.00 ask,市場寬度為 $0.40,並以 mark 為觸發依據設定 $1.80 的 sell stop-market。報價滑落至 $1.55/$1.95。此時 mark 為 $1.75,stop 觸發,券商送出 market order 賣出。Market order 會成交於可得的最佳 bid,即 $1.55,因此成交價比 stop price 低 $0.25,約低14%;而且 $1.80 附近從未出現成交。如果 bid 在訂單送達時因一次報價更新短暫跌至 $1.20,成交價就會是 $1.20。在交易清淡的契約上,bid-ask spread 是 stop-market 必然承受的最低滑價;一般的 market order vs limit order 取捨,也會因 options 報價寬度而被放大。

為什麼 stop-limit 可能讓部位無法平倉

將 market order 改為限價 $1.75 的 stop-limit。報價滑落至 $1.55/$1.95,stop 觸發後,產生一筆以 $1.75 或更高價格賣出的訂單;該訂單比 bid 高 $0.20,沒有任何人有義務以這個價格買進。如果 put 繼續下跌,訂單會維持未成交,部位仍然開放,損失持續擴大,這正好與 stop 原本的目的相反。兩種類型的比較請見 stop order vs stop-limit order;resting limit leg 無法成交的情況則見 why options orders don't get filled

為什麼對 option 而言,20% 的 stop 距離只是正常的一天

對股票而言看似寬鬆的 stop 距離,例如低於進場價10%或20%,對 option 來說可能只落在日常波動範圍內。下方追蹤一張 SPY put:截至2026年7月6日,其履約價最接近平值,距到期日25至35天;圖中同時列出接下來兩週的收盤價,以及 ETF 本身每日的變動。

查詢一口接近平價的 SPY 賣權,2026年7月6日至7月17日:每日收盤價及與 SPY 並列的日變動
交易日期日曆標籤Put 收盤價Put 變動幅度SPY 變動幅度
2026-07-06Jul 68.79-41.30.66
2026-07-07Jul 711.2127.5-0.6
2026-07-08Jul 812.037.3-0.11
2026-07-09Jul 98.31-30.90.82
2026-07-10Jul 106.5-21.80.45
2026-07-13Jul 139.2842.8-0.88
2026-07-14Jul 147.49-19.30.66
2026-07-15Jul 155.92-210.21
2026-07-16Jul 167.9434.1-0.74
2026-07-17Jul 1711.544.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 date
自己執行這個查詢

該 put 在 Jul 6 收於 $8.79,在 Jul 17 收於 $11.5。將兩個百分比欄並列比較:ETF 的日對日變動只有百分之幾,put 的變動則可達完整的百分點,且經常達到數十個百分點。這項差距表示,將 stop 設在 put 價格下方20%,可能落在單日波動區間內。若將觀察範圍擴大至2026年7月期間所有距平值且距到期日20至45天的 SPY put,便能將單一契約轉化為分布。

查詢接近平價的 SPY 賣權(距到期20–45天),2026年7月:每日收盤價變動幅度
變動幅度區間合約天數占比
under 5%39616.7
5% to 10%33914.3
10% to 20%59125
20% or more103943.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% 的 contract-days 較前一日收盤價變動20%或以上,另有 16.7% 的變動低於5%。若 stop 設在前一日收盤價下方20%,約有 43.9 的每100個 contract-days 會觸及該價位;而這還未計入逐日收盤價序列無法呈現的盤中波動。

下單前應查閱的券商限制

券商對 options stop 的規則各不相同,也可能變更。因此,以下應視為你需要在自家券商 order-type disclosure 中確認的類別,而非任何單一券商的固定規則:

  • 是否完全接受 options 的 stop-market order。有些券商在 options 上只接受 stop-limit order;這雖可避免在 spread 遠端成交,卻會引入部位無法平倉的問題。
  • 適用哪一種觸發慣例(last、bid、ask 或 mark),以及是否可逐筆訂單選擇。
  • 是否只在正常交易時段評估觸發條件。Cboe 規則中的交易所層級 stop 僅適用於正常交易時段,券商代持的 stop 也常有相同限制;對具有延長交易時段的指數 options 而言,這點尤其重要。
  • 是否允許 multi-leg order 使用 stop;若允許,觸發條件監看哪一種價格(通常是 spread 的 net mark),以及 stop 可採用哪些 time-in-force 選項。

普通 stop 以外的做法

  • 設定 debit target 的 bracket 或 OCO exit。 一筆訂單在獲利目標平倉,另一筆是 stop-limit,且將限價設得足夠寬,以穿過正常 spread;其中一筆成交後,另一筆便會取消。Bracket and OCO orders 說明相關機制;在 options 上,獲利那一腿是以特定 debit 或 credit 報價,而不是百分比。
  • 以標的資產價格為依據的 contingent order。 該訂單監看股票,而不是每天只成交十多次的 put。股票每小時可產生成千上萬筆成交;當股票交易至指定價位時,訂單便送出 option 的 limit order。上方走勢圖說明了這種觸發方式為何更清楚:ETF 是平滑的序列,put 則充滿雜訊。
  • 對 defined-risk spread 完全不設定 stop。 Vertical spread 在進場時便已確定最大損失。Spread 的 stop 監看兩個寬幅報價的綜合 mark,該價格可能因雜訊大幅波動,並在最差的價格組合下同時平倉兩腿。改以調整交易取代 stop,例如 how to roll an option position,可維持既定風險。

常見問答

Stop order 對 options 有效嗎?

有效,但有一項限制。Cboe 規則手冊仍定義 options 的交易所層級 stop 與 stop-limit order,但多數零售券商會自行持有 stop,並根據自己的觸發條件執行:last trade、bid 或 ask,或 mark。實際採用的方式取決於券商慣例,並會寫在你帳戶適用的 order-type disclosure 中。

什麼會觸發 option stop order:bid、ask,還是 last trade?

取決於券商。常見慣例包括 last trade price、bid 或 ask,以及 mark(報價的中間價)。Cboe 自行持有於交易所的 stop,則會在綜合最後成交價或全國最佳買價/賣價達到條件時觸發。

為什麼我的 options stop order 會在遠低於 stop price 的位置成交?

Stop-market 觸發後會立即轉為 market order,而賣出的 market order 會以當時的 bid 成交。如果報價寬度為 $0.40,且觸發依據是 mark,那麼在 $2 的契約上,成交價會落在 bid,約比觸發價低10%,之後還可能進一步滑價。

我可以對 options spread 設定 stop-loss 嗎?

部分券商允許對 multi-leg order 設定 stop,通常以 spread 的 net mark 為觸發依據;也有券商不允許。Defined-risk spread 本身已具有固定的最大損失,stop 可能因報價雜訊觸發,並以不利價格同時平倉兩腿。許多交易人會改以 roll 或調整 spread 來管理部位。


上方每個面板都附有產生該面板的 SQL。若要在不同 ticker 或日期上執行相同的逐契約成交量統計,請以自然語言在 Strasmore terminal 中提出要求。

#stop order#stop-limit#options orders#trigger price#order types#bid-ask spread