オプションの大半は無価値で満期を迎えるのか
オプションの90%が無価値で満期を迎えるという主張を検証します。満期前の手仕舞い、権利行使、無価値満期を分け、実際の結果を説明します。
オプションの大半は無価値で満期を迎えるのか。いいえ。上場オプション契約の大半は、建てた口座で満期日を迎えない。数日または数週間前に反対売買で手仕舞われる。最終取引終了時刻まで残る契約は、イン・ザ・マネーで終わるものとアウト・オブ・ザ・マネーで終わるものに分かれる。個人投資家向けのオプション記事で広まる90%という数字は、複数の異なる結果を一つの数字にまとめたものだ。公表された取引所統計に、その数字を示すものはない。
90%という主張の出所
Options Clearing Corporation(OCC)は、米国上場株式オプションのすべての買い手と売り手の間に立つ清算機関である。公表統計の対象は、契約数量と建玉だ。OCCの表に、いずれかの年にオプションの90%が無価値で満期を迎えたと示すものはない。取引所の発表にも同様の記載はない。
この主張には分母もない。何に占める無価値満期の割合なのか。最終取引終了時刻まで残っていた契約に占める割合なのか、それとも年間に建てられた全契約に占める割合なのか。この二つの答えは大きく異なるが、広まっている数字はどちらも示していない。数値を公表された清算機関または取引所の表までたどれないなら、誠実な対応は、その粒度のデータは存在しないと述べ、利用可能なデータを測定することだ。
オプション契約に起こり得る三つの結果
すべての契約は三つの方法のいずれかで終了する。「無価値で満期を迎える」が指すのは最後のケースだけだ。
- 満期前に手仕舞われる。保有者が買った契約を売るか、売った契約を買い戻す。その日の市場価格で決済される。この結果は、満期に関する統計には表れない。
- 権利行使される。イン・ザ・マネーの契約は、行使価格で株式に転換される。OCCの例外による自動権利行使ルールでは、1セント以上イン・ザ・マネーで終わった契約は、保有者が反対の指示を出さない限り自動的に権利行使される。仕組みについては、オプションがITMで満期を迎えるとどうなるかで説明している。
- 満期まで保有され、権利行使されずに残る。契約はアウト・オブ・ザ・マネーで終わり、誰も権利行使せず、消滅する。この区分だけが「無価値で満期を迎える」に該当する。
これらを一つの割合にまとめることで、誤解が生まれる。
実際に無価値で満期を迎えるオプションの割合は
誰でも計算できる集計がある。満期直前の数日間も取引されていた上場契約をすべて取り出し、最終取引日の原資産の終値と行使価格を比較する。下のパネルは、2026年7月までの12カ月間について、よく知られた6銘柄を対象に集計したものだ。
各数値の背後にある正確なSQL
WITH final_print AS
(
SELECT
underlying_symbol AS symbol,
ticker,
argMax(option_type, date) AS contract_type,
toFloat64(argMax(strike_price, date)) AS strike,
toFloat64(argMax(underlying_close, date)) AS spot_last,
min(days_to_expiry) AS final_dte
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'AMZN', 'KO')
AND (lower(toString(option_type)) LIKE 'c%' OR lower(toString(option_type)) LIKE 'p%')
AND volume > 0
AND expiration_date >= '2025-08-01'
AND expiration_date < '2026-08-01'
AND date >= '2025-06-01'
AND date < '2026-08-01'
GROUP BY symbol, ticker
HAVING final_dte <= 3
)
SELECT
symbol,
round(100 * countIf(
(lower(toString(contract_type)) LIKE 'c%' AND spot_last <= strike)
OR (lower(toString(contract_type)) LIKE 'p%' AND spot_last >= strike)
) / count(), 1) AS pct_expired_otm,
round(100 * countIf(
(lower(toString(contract_type)) LIKE 'c%' AND spot_last > strike)
OR (lower(toString(contract_type)) LIKE 'p%' AND spot_last < strike)
) / count(), 1) AS pct_expired_itm,
count() AS expiring_contracts
FROM final_print
GROUP BY symbol
ORDER BY pct_expired_otm DESCMSFTが最も高く、最終取引時点で満期を迎える契約のうち57.6%がアウト・オブ・ザ・マネーだった。KOが最も低く、47.3%だった。この数字をどこかで引用する前に、注意して読んでほしい。数えているのは契約数であり、ポジション数でも金額でもない。満期ごとに、株価を大きく上回る行使価格から大きく下回る行使価格まで、複数の行使価格が並ぶ。そのため、その大半は構造上アウト・オブ・ザ・マネーになる。ここで高い数字になるのは、行使価格がどのように設定されているかを示すだけだ。どれだけの資金がリスクにさらされていたか、また、その契約を買った投資家がどれだけ保有し続けていたかは示さない。
買い手には無価値、売り手には収入
それぞれの満期には二つの立場がある。買い手はプレミアムを支払い、その金額を失う。売り手は同じプレミアムを受け取り、その全額を保持する。一つの出来事でも、帳簿は二つある。この統計は買い手には警告として、売り手には優位性として引用される。しかし、受け取ったプレミアムや、そのために負ったリスクには触れられない。1契約当たり40ドルを受け取り、逆方向に動いた一契約で900ドルを返す売り手を考えてみよう。無価値満期率は良好だ。しかし、その四半期の成績は良好とは限らない。
早期手仕舞いを含めると、さらに分かりにくくなる。コールを2.00ドルで買い、3週間後に6.00ドルで売れば、その取引は利益を確定して終了する。その契約は別の口座で取引が続き、最終的にアウト・オブ・ザ・マネーになる可能性もある。契約単位で数えれば、無価値満期が一つ増える。取引単位で見れば、あなたにとっては利益だった。カバードコールの売り手は、契約がアウト・オブ・ザ・マネーで終わることを想定している。そのため、この統計はカバードコールの説明で最も頻繁に引用される。
オプション取引の大半は満期を見ない
Zero days to expiry(0DTE)は、同じ取引日に取引され、満期を迎える契約を指す。米国最大の株式オプション市場であるSPYでは、毎取引日に満期が設定されている。この取引量が現在の売買の大部分を占めるため、取引と満期を混ぜた集計は歪む。
各数値の背後にある正確なSQL
WITH
(
SELECT sum(volume)
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND volume > 0
AND date >= '2026-04-01'
AND date < '2026-07-01'
) AS quarter_volume
SELECT
multiIf(days_to_expiry = 0, '0 (expires that day)',
days_to_expiry <= 5, '1 to 5 days',
days_to_expiry <= 21, '6 to 21 days',
days_to_expiry <= 60, '22 to 60 days',
'61 days or more') AS days_to_expiry_bucket,
round(100 * sum(volume) / quarter_volume, 1) AS share_of_volume_pct,
countDistinct(ticker) AS contracts_with_volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND volume > 0
AND date >= '2026-04-01'
AND date < '2026-07-01'
GROUP BY days_to_expiry_bucket
ORDER BY min(days_to_expiry)2026年第2四半期には、最短の区分である1 to 5 daysがSPYオプション取引高の53.8%を占め、15612の異なる契約に分散していた。残存期間が61 days or moreの契約は、全体の8.9%を占めた。
10時に0DTE契約を買い、14時30分に売れば、その契約は満期を迎えない。取引量は、引けまで保有されて失効した契約と同じ区分に入る。オプションの1日の取引量を、満期に向かうポジションの集合として扱う見出しの割合は、同じ契約を何度も数えることになる。取引日の仕組みについては、0DTEオプションの取引時間を参照してほしい。
行使価格までの距離で確率は変わるのか
「無価値で満期を迎える」ことは、オプションに固定された性質ではない。行使価格が株価からどれだけ離れているか、残存期間がどれだけあるかによって変わる。次のパネルでは、満期までおよそ1カ月ある状態で取引されたSPY契約をすべて取り出し、その日のアウト・オブ・ザ・マネーの距離を測定する。その後、同じ契約が満期近くで最後に取引された時点の原資産価格を確認する。
各数値の背後にある正確なSQL
WITH entry AS
(
SELECT
ticker,
argMin(option_type, date) AS contract_type,
toFloat64(argMin(strike_price, date)) AS strike,
toFloat64(argMin(underlying_close, date)) AS spot_30d_out
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND (lower(toString(option_type)) LIKE 'c%' OR lower(toString(option_type)) LIKE 'p%')
AND days_to_expiry BETWEEN 28 AND 32
AND volume > 0
AND date >= '2025-07-01'
AND date < '2026-07-01'
GROUP BY ticker
),
last_print AS
(
SELECT
ticker,
toFloat64(argMax(underlying_close, date)) AS spot_at_last_print,
min(days_to_expiry) AS final_dte
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND volume > 0
AND date >= '2025-07-01'
AND date < '2026-08-01'
GROUP BY ticker
HAVING final_dte <= 3
)
SELECT
multiIf(otm_pct < 2, 'under 2% out',
otm_pct < 5, '2% to 5% out',
otm_pct < 10, '5% to 10% out',
otm_pct < 20, '10% to 20% out',
'20% or more out') AS distance_at_30_days,
round(100 * countIf(finished_itm) / count(), 1) AS pct_finished_itm,
count() AS contracts
FROM
(
SELECT
if(lower(toString(e.contract_type)) LIKE 'c%',
100 * (e.strike / e.spot_30d_out - 1),
100 * (1 - e.strike / e.spot_30d_out)) AS otm_pct,
if(lower(toString(e.contract_type)) LIKE 'c%',
s.spot_at_last_print > e.strike,
s.spot_at_last_print < e.strike) AS finished_itm
FROM entry AS e
INNER JOIN last_print AS s ON s.ticker = e.ticker
)
WHERE otm_pct > 0
GROUP BY distance_at_30_days
ORDER BY min(otm_pct)最も近い区分のunder 2% outは、1629契約を対象にした最後の取引時点で、36.8%の割合でイン・ザ・マネーだった。最も遠い20% or more outは、0%の割合でイン・ザ・マネーだった。一つの割合で、この曲線の両端を説明することはできない。途中で行使価格に触れた場合と、最終的にイン・ザ・マネーで終わる場合の違いについては、タッチ確率とITM確率の違いを参照してほしい。
一つの満期サイクルの動き
一つの満期に焦点を当て、動きを追ってみよう。2026年5月15日金曜日に満期を迎えたSPY契約は、かなり前から上場され、取引可能になっていた。下のパネルは、そのサイクルの最終1カ月について、各取引日にこの満期日を持つ契約がどれだけ取引されたかを集計している。
各数値の背後にある正確なSQL
SELECT
toString(date) AS date,
round(sum(volume) / 1000, 1) AS volume_thousands,
countDistinct(ticker) AS contracts_with_volume
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND expiration_date = '2026-05-15'
AND volume > 0
AND days_to_expiry <= 30
AND date >= '2026-04-01'
AND date < '2026-05-16'
GROUP BY date
ORDER BY date対象期間の初日には、その満期の契約が448.2千契約取引され、281の行使価格にまたがっていた。対象期間の最終日には1685.7千契約が取引された。保有者がポジションを手仕舞ったり、期先へロールしたりするため、サイクルの最後まで取引は活発に続く。これは、ポジションをそのまま保有し続けるのではなく、管理するサイクルの典型的な動きだ。オプションポジションのロールは、その一般的な方法の一つである。
自分の手仕舞い対満期比率を測る
あなたの口座を説明する数字は、統計ページには載っていない。それは手仕舞い対満期比率だ。四半期の間に、反対売買で手仕舞ったオプションポジションがいくつあり、満期日まで保有したものがいくつあったかを示す。どちらの数も、ブローカーの取引履歴で確認できる。
ほぼすべてを早期に手仕舞っているなら、満期に関する集計統計は、あなたがほとんど参加していない市場を説明していることになる。ほぼすべてを最終取引日まで保有するなら、権利行使・割当の仕組みや、取引が集中する行使価格周辺の価格固定の影響を直接受ける。その場合は、最大ペインと早期割当を次に読むとよい。全体像については、オプション取引のリスクを参照してほしい。
これらのパネルの集計方法
マネーネスは、契約が実際に最後に取引された日の原資産終値を基準に測定している。満期前3日以内にも取引されていた契約だけを集計対象とした。決済値そのものはこのデータに含まれないため、最後に取引された日の値を代用している。それより前に取引が止まった契約はサンプル外となる。午前決済の契約や現金決済の指数商品は、別の価格で決済される。ここでのパネルは、午後決済の個別株およびETF契約を対象としている。
各パネルは、対象セッション中に取引された契約を数えている。上場されていても一度も取引されなかった行使価格はサンプル外となる。建玉はこのデータに含まれないため、保有ポジションは数えていない。集計しているのは契約数と取引量であり、これは90%という主張が無視している区別そのものだ。
よくある質問
オプションの90%は無価値で満期を迎えるのか
そのことを示す公表された清算機関または取引所の表はない。この数字には分母がなく、満期前に手仕舞われた契約、権利行使された契約、失効まで残された契約を一つにまとめている。これらは別々の問いに答える、別々の集計だ。
オプションの何%が権利行使されるのか
特定の年について、読者がその粒度で取得し検証できる正確な公表値はない。引用される数字は疑ってかかるべきだ。仕組み自体は検証できる。1セント以上イン・ザ・マネーで終わった契約は、保有者が別の指示を出さない限り自動的に権利行使される。そのため、権利行使される割合は、イン・ザ・マネーで終わる契約の割合に応じて変動する。
無価値で満期を迎えるオプションは必ず損失になるのか
満期まで保有した人にとっては損失であり、ショートしていた人にとっては利益だ。ただし、その契約を以前に買い、数週間前に利益確定して売ったトレーダーについては何も示さない。契約の最終的な結果と、個々のトレーダーの損益は別のものだ。
0DTEオプションは無価値で満期を迎えるのか
0DTEの取引量の多くは日中に手仕舞われ、最終取引終了時刻まで残らない。取引時間中に売買された契約には、満期時の結果自体がない。したがって、日中の取引量と満期を混ぜた集計は、実際に引けまで保有された契約数を過大に見積もる。
自分の比率はどう調べればよいか
ブローカーから四半期分の取引履歴を取得し、二つの項目を数える。反対売買で手仕舞ったポジションと、満期日まで到達したポジションだ。この比率が、あなたの口座に当てはまる統計の形である。
ここに掲載した各パネルには、基礎となるSQLが完全な形で付いている。いずれかを展開すれば、集計対象を確認できる。同じ集計を自分が追っている銘柄で実行するには、Strasmore terminalで平易な英語により依頼すればよい。