Strasmore Research
学習 Matt Connor著者: Matt Connor ・更新: 2026-09-13

オプションのストップ注文は何で発動する?

オプションのストップ注文は取引所ではなく、主にブローカーが管理します。直近約定値、bid、ask、markのどれを監視するかで、発動条件と約定価格が変わります。

オプションのストップ注文は何をきっかけに発動するのでしょうか。個人向け口座の大半では、取引所がストップ注文を直接受け付けることはありません。ブローカーが自社システム上で注文を保管し、対象契約の直近約定値、買い気配、売り気配、またはマーク価格がストップ価格に達した時点で、発注可能な注文へ変換します。ブローカーがどの価格を監視するかによって、想定した価格でストップが発動するか、そもそも発動するかが決まります。発動後の約定状況は、bid-ask spreadによって左右されます。

オプションのストップ注文は実際にはどこに置かれるのか

オプション取引所は、現在もストップ注文の種類を定めています。2026年8月14日現在のCboe Exchangeのルールブックでは、Rule 5.6(c)に「Stop (Stop-Loss)」注文と「Stop-Limit」注文の両方が記載され、取引所独自の発動条件も定められています。

「『Stop (Stop-Loss)』注文とは、特定のオプション契約について、複合注文取引の価格がNBBOの範囲外にある場合を除く、統合された直近約定値、またはNBB(NBO)が、利用者の指定したストップ価格以上(売り注文の場合は以下)になると、成行注文へ変換される買い注文(売り注文)をいう。利用者は、Stop OrderをAll Sessions、RTH、Curbとして指定することはできない。」(Rules of Cboe Exchange, Inc., Rule 5.6(c)、2026年8月14日更新)

すべてのブローカーに関係する点は二つあります。取引所の発動条件は、直近約定値、または全国最良買い気配・売り気配(NBB/NBO)です。そのため、売りストップは取引が成立しなくても、買い気配がストップ価格に達すれば発動します。また、注文をAll SessionsやCurbの取引時間に指定することはできません。取引所レベルでは、ストップ注文は通常取引時間の注文です。

個人投資家の注文がこのルールに直接従うことは、ほとんどありません。個人向けブローカーの大半は、ストップ注文を自社サーバー上で保管します。そして自社の発動条件が満たされた後に、成行注文または指値注文を取引所やホールセラーへ送ります。注文画面には「stop」と表示されていても、発動ロジックを決めるのはブローカーです。その内容は取引所のルールブックではなく、注文種類に関する開示資料に記載されています。

オプションのストップを発動させる価格は、直近約定値、bid、ask、markのどれか

ほぼすべてのブローカーは、三つの方式のいずれかを採用しています。ロング・プットを保有し、プットが1.90ドルbid/2.10ドルaskのときに、1.80ドルで売りストップを置いた場合を考えます。

  • 直近約定値。 1.80ドル以下で約定が成立した場合にのみ発動します。契約の取引が成立しなければ、気配がどれだけ下落しても発動しません。
  • bidまたはask。 bid(ブローカーによってはask、または両方)が1.80ドルに達すると発動します。取引の成立は必要ありません。一つのマーケットメイカーが気配を引き下げるだけで発動します。
  • mark。 bidとaskの中間値が1.80ドルに達すると発動します。気配の幅が0.40ドルなら、どちらの側でも取引が成立しないまま、markが0.20ドル動くことがあります。

薄商いの契約で「直近約定値」が信頼しにくい理由

画面上ではオプション・チェーンが連続的に動いているように見えます。しかし、ほとんどの契約は一日に数回しか取引されません。以下のパネルでは、2026年7月15日に一度でも取引されたすべてのAAPL契約を、終日の出来高で分類しています(one lotは一契約です)。

クエリ2026年7月15日のAAPLオプション契約数(終日出来高別)
出来高区分契約数構成比 (%)
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)
自分で実行する

その日に取引された契約のうち、終日の出来高がfive lots以下だったものは23.4%、sixから25 lotsだったものは18.2%でした。出来高がthree lotsの契約では、約定が発生する機会は最大でもthree回です。そのため、直近約定値を基準とするストップが一日に発動する機会も、約定価格次第で最大three回に限られます。約定と約定の間に、気配がストップ価格から大きく離れても、それを捉えられないことがあります。一方、1,000 lots超を取引した契約は190でした。こうした契約の直近約定値を基準とするストップは、株式のストップ注文に近い動きをします。

ストップ成行注文がspreadの反対側で約定する理由

1.60ドルbid/2.00ドルask、つまり気配の幅が0.40ドルのプットを考えます。markを基準に1.80ドルで売りストップ成行注文を置きます。気配が1.55ドル/1.95ドルへ下落すると、markは1.75ドルになり、ストップが発動します。ブローカーは売りの成行注文を送ります。成行注文は利用可能な最良のbid、つまり1.55ドルで約定するため、約定価格はストップ価格を0.25ドル下回ります。乖離率は約14%で、1.80ドル付近で取引が成立していなくても起こります。注文到着時にbidが一度だけ1.20ドルへ動けば、約定価格は1.20ドルです。薄商いの契約では、bid-ask spreadがストップ成行注文で受け入れる最低限のスリッページとなります。また、通常の成行注文と指値注文のトレードオフも、オプションの広い気配によって大きくなります。

ストップリミット注文でポジションが取り残される理由

成行注文を1.75ドルの指値を付けたストップリミット注文に置き換えます。気配が1.55ドル/1.95ドルへ下落するとストップが発動し、1.75ドル以上で売る注文が発注されます。しかし、その注文はbidを0.20ドル上回っています。誰もその価格で買う義務はありません。プットがさらに下落すると、注文は未約定のまま残り、損失が拡大する中でポジションが維持されます。これはストップ注文の本来の目的とは逆です。二つの注文タイプの比較はストップ注文とストップリミット注文で、待機中の指値部分が未約定となる理由はオプション注文が約定しない理由で説明しています。

オプションでは20%のストップ幅が平常日の値動きに収まる理由

株式では余裕があるように見える、エントリー価格から10%または20%下のストップ幅も、オプションでは日常的な値動きの範囲内に収まります。以下の推移は、2026年7月6日時点で満期まで25から35日あり、アット・ザ・マネーに最も近いoneつのSPYプットについて、その後two weeksの終値を追ったものです。ETF自体の日次変動も併記しています。

クエリ2026年7月6日~17日のATM付近のSPYプット:日次終値と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
自分で実行する

このプットの終値は、Jul 6$8.79Jul 17$11.5でした。二つの騰落率の列を並べて見ると、ETFの日々の変動は1%未満である一方、プットは一桁のパーセントからしばしば数十パーセントまで動いています。この差により、プット価格から20%下に置いたストップが一日の値幅内に入ります。対象を広げ、2026年7月中の、満期まで20から45日あるすべてのアット・ザ・マネー近辺のSPYプットを調べると、一つの契約ではなく分布として確認できます。

クエリ2026年7月のATM付近のSPYプット(満期まで20~45日):終値の前日比変動幅
変動区分契約日数構成比 (%)
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)
自分で実行する

前日終値から20%以上動いた契約日数は43.9%でした。一方、5%未満の変動にとどまった契約日数は16.7%でした。前日終値から20%下に置いたストップは、終値ベースでは100契約日あたりおよそ43.9契約日で通過されました。終値から終値までのデータでは捉えられない日中の変動は、ここに含まれていません。

ストップ注文を出す前に確認すべきブローカーの制限

オプションのストップ注文に関するブローカーのルールは異なり、変更されることもあります。以下は特定の一社の事実ではなく、自分のブローカーの注文種類に関する開示資料で確認すべき項目です。

  • オプションでストップ成行注文を受け付けるか。オプションではストップリミット注文しか受け付けないブローカーもあります。その場合、spreadの反対側で約定する問題は避けられますが、ポジションが取り残される問題が生じます。
  • 適用される発動方式が直近約定値、bid、ask、markのどれか。また、注文ごとに選択できるか。
  • 発動条件の判定が通常取引時間中だけ行われるか。Cboeの取引所レベルのストップ注文は通常取引時間のみで、ブローカーが保管するストップ注文にも同じ制限が一般的にあります。これは時間外取引のある指数オプションで重要です。
  • マルチレッグ注文にストップを付けられるか。付けられる場合、どの価格を監視するか。通常はspreadのネットmarkです。また、ストップ注文に付けられるtime-in-forceの選択肢も確認が必要です。

単純なストップ注文の代わりに機能する方法

  • デビットの利確目標を組み込んだブラケット注文またはOCO注文。 利確目標で決済する注文と、通常のspreadを超えられる十分な幅の指値を付けたストップリミット注文を同時に出し、先に約定した注文がもう一方をキャンセルします。仕組みはブラケット注文とOCO注文で説明しています。オプションでは、利確側をパーセンテージではなく、具体的なデビットまたはクレジットで指定します。
  • 原資産価格を基準にしたコンティンジェント注文。 一日に数十回しか約定しないプットではなく、一時間に数千回取引される株式を監視します。株式が指定価格で取引された時点で、オプションの指値注文を送ります。上の推移が、この発動条件のほうが明確な理由を示しています。ETFは滑らかな系列で、プットは変動の大きい系列です。
  • 限定損失spreadではストップを置かない。 バーティカルspreadの最大損失はエントリー時点で決まっています。spreadにストップを置くと、二つの広い気配の合成markを監視することになり、ノイズで動いたうえ、二つのレッグを最も不利な組み合わせの価格で同時に決済する可能性があります。オプション・ポジションのロール方法のように、代わりに取引を調整すれば、限定損失の構造を維持できます。

FAQ

オプションでストップ注文は機能しますか?

はい。ただし注意が必要です。Cboeのルールブックは、現在もオプションの取引所レベルのストップ注文とストップリミット注文を定めています。しかし、個人向けブローカーの大半はストップ注文を自社で保管し、直近約定値、bidまたはask、markのいずれかを基準に自社の発動条件で注文を出します。実際の動作はブローカーの方式に従い、口座の注文種類に関する開示資料に記載されています。

オプションのストップ注文は、bid、ask、直近約定値のどれで発動しますか?

ブローカーによって異なります。一般的な方式は、直近約定値、bidまたはask、mark(気配の中間値)です。Cboeが取引所で保管するストップ注文は、統合された直近約定値、または全国最良買い気配・売り気配のいずれかで発動します。

オプションのストップ注文が、ストップ価格から大きく下で約定したのはなぜですか?

ストップ成行注文は発動した瞬間に成行注文となり、売りの成行注文は現在のbidで約定します。気配の幅が0.40ドルで、markが発動条件だった場合、2ドルの契約では追加のスリッページを考慮しなくても、約定価格は発動価格をおよそ10%下回ります。

オプションspreadにストップロスを設定できますか?

マルチレッグ注文にストップを設定できるブローカーもあります。通常はspreadのネットmarkを基準にしますが、対応していないブローカーもあります。限定損失spreadにはすでに最大損失が設定されており、ストップを付けると気配のノイズで発動し、両方のレッグを不利な価格で決済する可能性があります。多くのトレーダーは、代わりにspreadをロールまたは調整して管理します。


上記の各パネルには、作成に使用したSQLが付属しています。別のtickerや日付について同じ契約別の出来高集計を実行するには、Strasmore terminalで平易な英語により依頼してください。

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