異常なオプション取引:直近セッション
米国オプション全体の取引記録を分析し、過去20セッション平均を大幅に上回った原資産を順位付け。コールとプットの内訳も確認できます。
異常なオプション取引とは、ある原資産で、一回のセッションに通常の最近の水準を大幅に上回るオプション契約が取引されることを指す。この一覧では、直近で完了したオプション取引セッションについて、Sep 3、つまり各原資産の取引契約総数を、同じ原資産の過去20セッションの平均と比較した倍率で順位付けしている。オプション取引情報は株式取引情報より確定が遅れる。そのため、ここで示すセッションは当日ではなく、当社のデータで最新の完了済みセッションとなる。
表を見る前に、明確にしておきたい点がある。これは出来高のスクリーニングである。一般に公開されている異常なオプション取引のアラートの多くは、1日の出来高を、取引終了後も残っている契約数である建玉と比較する。当社が保存しているオプション取引情報には取引記録が含まれるが、ポジションは含まれず、建玉の項目も存在しない。以下のすべての倍率は、各原資産の出来高を、その原資産自身の出来高履歴と比較している。オプション出来高と建玉の比較では、それぞれの指標が示す内容を説明している。
異例のオプション取引:直近の完了セッション
| ティッカー | 出来高比率 | セッション出来高 k | 基準出来高 k | 前回高値出来高 k | セッション名 | セッションID | 基準セッション数 |
|---|---|---|---|---|---|---|---|
| DPRO | 27.9 | 204.9 | 7.4 | 96.4 | Sep 3 | 20260903 | 20 |
| IOT | 9.1 | 45.9 | 5 | 16.6 | Sep 3 | 20260903 | 20 |
| ZS | 7.5 | 123.7 | 16.5 | 29.6 | Sep 3 | 20260903 | 20 |
| DOCU | 7 | 59 | 8.4 | 21.2 | Sep 3 | 20260903 | 20 |
| SNOW | 7 | 274.5 | 39 | 184.7 | Sep 3 | 20260903 | 20 |
| VFC | 6.3 | 48.9 | 7.8 | 16.2 | Sep 3 | 20260903 | 20 |
| CPB | 5.9 | 47.2 | 8 | 48.7 | Sep 3 | 20260903 | 20 |
| LULU | 5.4 | 153.1 | 28.3 | 47 | Sep 3 | 20260903 | 20 |
| PL | 5.1 | 92.8 | 18.2 | 35.9 | Sep 3 | 20260903 | 20 |
| HPE | 4.6 | 254.4 | 55.2 | 213.3 | Sep 3 | 20260903 | 20 |
各数値の背後にある正確なSQL
WITH tape AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
GROUP BY d
),
ranked AS (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS raw_rn
FROM tape
),
cal AS (
SELECT d, vol, rn, sum(if(rn BETWEEN 2 AND 21, 1, 0)) OVER () AS baseline_sessions
FROM (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS rn
FROM ranked
WHERE vol >= 0.75 * (SELECT quantileExact(0.5)(vol) FROM ranked WHERE raw_rn > 1)
)
),
day_root AS (
SELECT substring(ticker, 3, length(ticker) - 17) AS root,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
GROUP BY root, d
),
scored AS (
SELECT r.root AS root,
sumIf(r.vol, c.rn = 1) AS last_vol,
avgIf(r.vol, c.rn BETWEEN 2 AND 21) AS base_vol,
maxIf(r.vol, c.rn BETWEEN 2 AND 21) AS prior_high,
countIf(c.rn BETWEEN 2 AND 21) AS root_sessions,
max(c.baseline_sessions) AS baseline_session_count,
maxIf(toYYYYMMDD(c.d), c.rn = 1) AS session_id,
maxIf(formatDateTime(c.d, '%b %e'), c.rn = 1) AS session_label
FROM day_root r INNER JOIN cal c ON r.d = c.d
WHERE c.rn <= 21
AND r.root NOT IN ('SPCX')
AND r.root NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
GROUP BY r.root
HAVING last_vol >= 25000 AND base_vol >= 5000 AND root_sessions >= 18
)
SELECT root AS ticker,
round(last_vol / base_vol, 1) AS vol_ratio,
round(last_vol / 1000, 1) AS session_volume_k,
round(base_vol / 1000, 1) AS baseline_volume_k,
round(prior_high / 1000, 1) AS prior_high_volume_k,
session_label,
session_id,
baseline_session_count
FROM scored
ORDER BY vol_ratio DESC, ticker ASC
LIMIT 10読み取るべき指標は三つある。倍率は、原資産の取引量が通常の水準をどれだけ上回ったかを示す。基準値は通常の水準を示す。取引量の少ないオプションチェーンで大きな倍率が出ても、活発なチェーンで中程度の倍率が出る場合より、事象としては小さい。20セッション高値は、そのセッションが前月のいずれのセッションも上回ったかを示す。最後の三列は監査用の記録である。集計対象となったセッションを、ラベルと単純な数値で示す。さらに、基準値の算定に使った適格セッション数も示す。この数が20に達していなければ、ページは公開されない。
DPROは、自身の平均の27.9倍で首位となった。取引量は204.9千枚で、基準値は7.4千枚、過去20セッション高値は96.4千枚だった。
- IOTは9.1倍。取引量は45.9千枚で、基準値は5千枚だった。
- ZSは7.5倍。123.7千枚を取引し、基準値は16.5千枚だった。
- DOCUは7倍。取引量は59千枚で、20セッション高値は21.2千枚だった。
- SNOWは7倍で、取引量は274.5千枚だった。
ボードの最終行にあるHPEも、自身の平均の4.6倍を取引した。倍率と取引規模は別の指標であるため、両方を掲載している。同じ考え方を株式市場に適用したものは、今週の異例の出来高銘柄で確認できる。計算方法は相対出来高で説明している。
コールかプットか:売買の方向
アラートが実際に示しているのは、コールとプットの出来高比率です。同じ銘柄、同じ取引日で、コール比率の高い順に並べています。
| ティッカー | コール出来高 k | プット出来高 k | コール比率 % | セッションID |
|---|---|---|---|---|
| DPRO | 201.1 | 3.8 | 98 | 20260903 |
| IOT | 36 | 9.9 | 78 | 20260903 |
| HPE | 182.3 | 72.1 | 72 | 20260903 |
| PL | 57.3 | 35.5 | 62 | 20260903 |
| SNOW | 163.6 | 110.9 | 60 | 20260903 |
| ZS | 73.7 | 49.9 | 60 | 20260903 |
| CPB | 25.8 | 21.4 | 55 | 20260903 |
| DOCU | 31 | 28 | 53 | 20260903 |
| LULU | 72.7 | 80.4 | 47 | 20260903 |
| VFC | 5.5 | 43.4 | 11 | 20260903 |
各数値の背後にある正確なSQL
WITH tape AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
GROUP BY d
),
ranked AS (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS raw_rn
FROM tape
),
cal AS (
SELECT d, vol, rn, sum(if(rn BETWEEN 2 AND 21, 1, 0)) OVER () AS baseline_sessions
FROM (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS rn
FROM ranked
WHERE vol >= 0.75 * (SELECT quantileExact(0.5)(vol) FROM ranked WHERE raw_rn > 1)
)
),
day_root AS (
SELECT substring(ticker, 3, length(ticker) - 17) AS root,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol,
sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'C') AS calls,
sumIf(toFloat64(volume), substring(ticker, length(ticker) - 8, 1) = 'P') AS puts
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
GROUP BY root, d
),
scored AS (
SELECT r.root AS root,
round(sumIf(r.vol, c.rn = 1) / avgIf(r.vol, c.rn BETWEEN 2 AND 21), 1) AS vol_ratio,
sumIf(r.calls, c.rn = 1) AS calls,
sumIf(r.puts, c.rn = 1) AS puts,
maxIf(toYYYYMMDD(c.d), c.rn = 1) AS session_id
FROM day_root r INNER JOIN cal c ON r.d = c.d
WHERE c.rn <= 21
AND r.root NOT IN ('SPCX')
AND r.root NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
GROUP BY r.root
HAVING sumIf(r.vol, c.rn = 1) >= 25000
AND avgIf(r.vol, c.rn BETWEEN 2 AND 21) >= 5000
AND countIf(c.rn BETWEEN 2 AND 21) >= 18
),
board AS (
SELECT root, vol_ratio, calls, puts, session_id
FROM scored
ORDER BY vol_ratio DESC, root ASC
LIMIT 10
)
SELECT root AS ticker,
round(calls / 1000, 1) AS call_volume_k,
round(puts / 1000, 1) AS put_volume_k,
round(100.0 * calls / (calls + puts), 0) AS call_share_pct,
session_id
FROM board
WHERE calls + puts > 0
ORDER BY call_share_pct DESC, ticker ASCコールが最も多かった銘柄では、DPROが契約の98%をコールに振り向けました。コールは201.1千枚、プットは3.8千枚でした。同じ表の反対側では、VFCがコール11%枚を記録しました。コールは5.5千枚、プットは43.4千枚でした。
この比率は読む価値がありますが、過大解釈もしやすい指標です。約定したすべての契約には買い手と売り手がいます。しかし、売買のどちら側が取引を始めたかは、売買情報からは分かりません。コールの出来高が多くても、単純な買いポジションとは限りません。売り手がすでに保有している株式に対して、カバードコールを組んでいる可能性もあります。コールオプションの買いと売りでは、こうした取引で双方が負うことになるリスクを説明しています。売買が活発な銘柄では、通常、オプション価格も大きく動きます。これを扱うのがインプライド・ボラティリティが最も高い銘柄の一覧です。
セッションで成立した契約の内訳
| 満期までの日数区分 | 契約数 m | 出来高比率 | セッションID |
|---|---|---|---|
| same day | 18 | 25 | 20260903 |
| 1 to 7 days | 22.59 | 31.4 | 20260903 |
| 8 to 30 days | 17.1 | 23.7 | 20260903 |
| 31 to 90 days | 7.52 | 10.4 | 20260903 |
| 91 to 365 days | 5.51 | 7.7 | 20260903 |
| over a year | 1.29 | 1.8 | 20260903 |
各数値の背後にある正確なSQL
WITH tape AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
GROUP BY d
),
ranked AS (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS raw_rn
FROM tape
),
cal AS (
SELECT d, vol, rn, sum(if(rn BETWEEN 2 AND 21, 1, 0)) OVER () AS baseline_sessions
FROM (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS rn
FROM ranked
WHERE vol >= 0.75 * (SELECT quantileExact(0.5)(vol) FROM ranked WHERE raw_rn > 1)
)
),
bars AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
toFloat64(volume) AS v,
toDate(concat('20', substring(ticker, length(ticker) - 14, 2), '-',
substring(ticker, length(ticker) - 12, 2), '-',
substring(ticker, length(ticker) - 10, 2))) AS expiry
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 12, 'America/New_York')
AND toDate(toTimeZone(window_start, 'America/New_York')) IN (SELECT d FROM cal WHERE rn = 1)
),
scored AS (
SELECT multiIf(expiry - d <= 0, 1, expiry - d <= 7, 2, expiry - d <= 30, 3,
expiry - d <= 90, 4, expiry - d <= 365, 5, 6) AS bk,
v, d
FROM bars
)
SELECT arrayElement(['same day', '1 to 7 days', '8 to 30 days', '31 to 90 days', '91 to 365 days', 'over a year'], bk) AS dte_bucket,
round(sum(v) / 1e6, 2) AS contracts_m,
round(100.0 * sum(v) / sum(sum(v)) OVER (), 1) AS pct_of_volume,
toYYYYMMDD(max(d)) AS session_id
FROM scored
GROUP BY bk
ORDER BY bk ASC当日満期の契約はセッション全体の25%を占め、契約数は18百万件でした。さらに31.4%は1週間以内に満期を迎えました。一方、満期まで1年超ある契約は1.8%を占めました。
この内訳を踏まえると、異常な取引活動を示す見出しの読み方も変わります。このような一覧の出来高の大半は短期契約によるもので、当日満期の契約は持ち越されず、取引終了時までに決済されます。0DTEオプションは、オプションチェーンのこの部分を指します。
これは満期日だったのか
月次満期日には、上場契約の最大のまとまりが一斉に満期を迎えるため、市場全体でオプション取引高が増加する。満期日にレシオ・スクリーニングを実行すると、市場の半数が該当する。そのため、下のパネルでは対象期間内のすべてのセッションにラベルを付けている。
| セッション | 契約数 m | セッション種別 | 月次満期 m | セッションID |
|---|---|---|---|---|
| Jul 31 | 75.5 | ordinary | 75.1 | 20260731 |
| Aug 3 | 72.7 | ordinary | 75.1 | 20260803 |
| Aug 4 | 78.9 | ordinary | 75.1 | 20260804 |
| Aug 5 | 69.5 | ordinary | 75.1 | 20260805 |
| Aug 6 | 63.2 | ordinary | 75.1 | 20260806 |
| Aug 7 | 73.2 | ordinary | 75.1 | 20260807 |
| Aug 10 | 61.4 | ordinary | 75.1 | 20260810 |
| Aug 11 | 54.6 | ordinary | 75.1 | 20260811 |
| Aug 12 | 55.4 | ordinary | 75.1 | 20260812 |
| Aug 13 | 66.6 | ordinary | 75.1 | 20260813 |
| Aug 14 | 66 | ordinary | 75.1 | 20260814 |
| Aug 17 | 60.9 | ordinary | 75.1 | 20260817 |
| Aug 18 | 56.9 | ordinary | 75.1 | 20260818 |
| Aug 19 | 67.2 | ordinary | 75.1 | 20260819 |
| Aug 20 | 64.9 | ordinary | 75.1 | 20260820 |
| Aug 21 | 75.1 | monthly expiration | 75.1 | 20260821 |
| Aug 24 | 61 | ordinary | 75.1 | 20260824 |
| Aug 25 | 52.8 | ordinary | 75.1 | 20260825 |
| Aug 26 | 49.4 | ordinary | 75.1 | 20260826 |
| Aug 27 | 66.1 | ordinary | 75.1 | 20260827 |
各数値の背後にある正確なSQL
WITH tape AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(volume)) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= toDateTime(today() - 45, 'America/New_York')
GROUP BY d
),
ranked AS (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS raw_rn
FROM tape
),
cal AS (
SELECT d, vol, rn, sum(if(rn BETWEEN 2 AND 21, 1, 0)) OVER () AS baseline_sessions
FROM (
SELECT d, vol, row_number() OVER (ORDER BY d DESC) AS rn
FROM ranked
WHERE vol >= 0.75 * (SELECT quantileExact(0.5)(vol) FROM ranked WHERE raw_rn > 1)
)
),
w AS (
SELECT d, vol,
toStartOfMonth(d) + toIntervalDay(((5 - toDayOfWeek(toStartOfMonth(d)) + 7) % 7) + 14) AS third_friday
FROM cal
WHERE rn <= 25
),
marked AS (
SELECT d, vol,
(d = max(if(d <= third_friday, d, toDate('1970-01-01'))) OVER (PARTITION BY toStartOfMonth(d)))
AND (third_friday <= max(d) OVER ()) AS is_expiry
FROM w
),
latest AS (
SELECT d, vol, is_expiry,
max(if(is_expiry, d, toDate('1970-01-01'))) OVER () AS last_expiry_d
FROM marked
)
SELECT formatDateTime(d, '%b %e') AS session,
round(vol / 1e6, 1) AS contracts_m,
multiIf(is_expiry, 'monthly expiration', 'ordinary') AS session_type,
round(max(if(d = last_expiry_d, vol, 0)) OVER () / 1e6, 1) AS monthly_expiry_m,
toYYYYMMDD(d) AS session_id
FROM latest
ORDER BY d ASCこのパネルで最も新しいセッションが、ボードで報告されているセッションである。両方の表で日付は同じで、ラベルはordinaryとなっている。米国市場全体で72百万契約が約定した。同じ期間内で直近の月次満期日に約定したのは75.1百万契約だった。ボード上の各レシオの基準となる20セッションは、通常、月次満期日をちょうど一つ含む。そのため、分母にはセッションごとに同じ大きな取引高が含まれる。満期日については、この出来高スクリーニングでは答えられない行使価格の問題もある。max painは、契約決済時にオプション保有者の受取額が最も少なくなる行使価格を算出する。計算の基礎となるのは、ここで測定している売買高ではなく建玉である。
異例のオプション取引は株価を先導するのか
答える価値があるのは、オプション取引が膨らんだセッションの後に、原資産が大きく動くのかという点です。過去200日を対象に測定しました。一定の出来高水準をいずれも満たした銘柄・セッションを、出来高比率ごとに分類し、翌セッションの原資産の終値の絶対変化率と照合しています。標準列は、対象期間における各銘柄固有の1日当たり変化率の中央値です。そのため、各バケットは同じ銘柄内で比較されます。
| 相対出来高区分 | イベント数 | 次回変動中央値 (%) | 典型変動中央値 (%) | 差(ポイント) | 次回符号付き中央値 (%) |
|---|---|---|---|---|---|
| 5x or more | 624 | 2.51 | 1.96 | 0.55 | -0.16 |
| 3x to 5x | 1212 | 2.35 | 2.15 | 0.2 | -0.21 |
| 2x to 3x | 1852 | 2.28 | 2.21 | 0.07 | -0.22 |
| 1x to 2x | 8380 | 1.98 | 2.23 | -0.25 | -0.05 |
| below 1x | 11559 | 1.89 | 2.06 | -0.17 | -0.01 |
各数値の背後にある正確なSQL
WITH daily AS (
SELECT underlying_symbol AS sym,
date AS d,
sum(volume) AS vol,
max(underlying_close) AS px
FROM global_markets.options_greeks
WHERE date >= today() - 200
AND underlying_close > 0
AND underlying_symbol NOT IN ('SPCX')
AND underlying_symbol NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND underlying_symbol NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 230 AND today())
GROUP BY sym, d
),
seq AS (
SELECT sym, d, vol, px,
avg(vol) OVER (PARTITION BY sym ORDER BY d ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS base,
count() OVER (PARTITION BY sym ORDER BY d ROWS BETWEEN 20 PRECEDING AND 1 PRECEDING) AS base_n,
any(px) OVER (PARTITION BY sym ORDER BY d ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) AS next_px,
any(px) OVER (PARTITION BY sym ORDER BY d ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
FROM daily
),
moves AS (
SELECT sym, vol, base, base_n,
if(next_px > 0, 100 * abs(next_px / px - 1), -1) AS next_abs,
if(next_px > 0, 100 * (next_px / px - 1), -999) AS next_signed,
if(prev_px > 0, 100 * abs(px / prev_px - 1), -1) AS own_abs
FROM seq
),
typical AS (
SELECT sym, quantileExact(0.5)(own_abs) AS typ
FROM moves
WHERE own_abs >= 0
GROUP BY sym
)
SELECT arrayElement(['5x or more', '3x to 5x', '2x to 3x', '1x to 2x', 'below 1x'], bk) AS rvol_bucket,
count() AS event_count,
round(quantileExact(0.5)(next_abs), 2) AS median_next_move_pct,
round(quantileExact(0.5)(typ), 2) AS median_typical_move_pct,
round(quantileExact(0.5)(next_abs) - quantileExact(0.5)(typ), 2) AS gap_pp,
round(quantileExact(0.5)(next_signed), 2) AS median_next_signed_pct
FROM (
SELECT m.sym AS sym,
multiIf(m.vol / m.base >= 5, 1, m.vol / m.base >= 3, 2, m.vol / m.base >= 2, 3,
m.vol / m.base >= 1, 4, 5) AS bk,
m.next_abs AS next_abs,
m.next_signed AS next_signed,
t.typ AS typ
FROM moves m INNER JOIN typical t ON m.sym = t.sym
WHERE m.base_n = 20 AND m.base >= 5000 AND m.vol >= 25000 AND m.next_abs >= 0
)
GROUP BY bk
ORDER BY bk ASC通常の水準の5倍以上となったセッションの翌日について、絶対変化率の中央値は2.51%でした。同じ銘柄の通常日の1.96%に対して、差は0.55ポイントです。表の静かな側では、2列の数値は1.89%と2.06%で、差は-0.17ポイントでした。
率直な答えは小さいということです。差は方向ではなく、値動きの大きさに表れます。オプション取引が活発だったセッションの後は、絶対値ベースでやや大きな値動きが続きます。ただし、中央値で見た差は1パーセントポイント未満です。通常の5倍となった日の翌セッションの符号付き変化率の中央値は-0.16%で、基準を下回った日の翌日は-0.01%でした。いずれも、見出しが示唆するほどの値動きではありません。発生頻度も考慮すべきです。調査期間中、通常の5倍となった銘柄・セッションは624でした。一方、基準を下回ったものは11559でした。
このスクリーニングの算出方法
ルールが見えないスクリーニングは、データに見えて実際には主観になり得ます。そのため、ここではすべてのルールを示します。
- データソース。 米国オプションの全分足テープを使用します。原資産は各コントラクトのOCCシンボルから抽出するため、指数オプションのルートや当日満期も、通常の株式・ファンドのチェーンとともに含まれます。
- 比率。 直近の完了セッションにおける総コントラクト出来高を、同じ原資産の過去20適格セッションの平均で割ります。そのうち少なくとも18セッションには出来高が必要です。ボードには対象期間の長さを独立した列で表示します。20セッションに満たない場合は、20セッション平均というラベルの下で短い平均を公開せず、ページの掲載を保留します。
- 下限。 対象セッションの出来高を25,000コントラクト以上、基準値を5,000コントラクト以上とします。これがないと、1件の注文だけで10倍という数値になるチェーンでボードが埋まるためです。
- セッションの適格性。 このページの各パネルは、同じテープから45日間の一つの期間内のセッションを読み込み、次の一つのルールを適用します。その期間内の過去セッションの中央値に対して、市場全体の出来高が75%に達した時点で、そのセッションを算入します。最新日については、判定対象となる中央値の計算から外します。これにより、データが一部しか取り込まれていない日が、自身の基準値を引き下げて判定を通過することを防ぎます。テープは期間の先頭から分割されて到着するため、通常セッションの4分の3未満しか取り込まれていない日は、データが揃うまでボードに掲載しません。各パネルには採用されたセッションを表示するため、四つすべてを相互に比較できます。
- 除外対象。 レバレッジ型ファンドとインバース型ファンドは、名称に基づいて除外します。3倍型商品はその倍率に応じてチェーンが動くため、毎週リストを占有する可能性があります。また、同じティッカーシンボルが二つの企業に再利用され、ベンダーの履歴上で両社がつながっているものも除外します。
- 建玉は使用しません。 データウェアハウスに建玉の項目がないため、このページでは出来高と未決済ポジションを比較していません。競合のスクリーニングが「出来高が建玉を上回った」と示す場合でも、こちらでは「出来高が過去20セッション平均を上回った」と示します。
- 満期日。 月次満期日は市場全体のオプション出来高を押し上げます。セッションパネルにはこの条件を表示します。満期日に基づくボードは、他の満期日セッションと比較して読む必要があります。
その後の値動きの調査には、日次オプション・グリークスファイルという別のテーブルを使用します。このファイルには、整合性のある原資産シンボルと原資産の終値が収録されています。当日満期と指数オプションは除外され、分足テープより数セッション遅れて確定するため、対象銘柄はボードより狭い範囲になります。調査期間内に株式分割があった銘柄も除外します。株式分割によって非常に大きな値動きが生じたように見えるためです。
よくある質問
異常なオプション取引活動とは何ですか?
ある原資産で、直近の平均を大幅に上回る数のオプション契約が一セッションで取引されることです。このページの基準は恣意的なものではなく、算術的に定めています。セッションの契約出来高を、同じ原資産における直前20セッションの平均で割って算出します。セッションの出来高は最低25,000契約、基準となる平均は最低5,000契約としています。
異常なオプション取引活動は株価の動きを予測しますか?
予測力は弱く、方向性も示しません。当社データの直近200日では、原資産の通常のオプション出来高の基準値に対して5倍の出来高となったセッションの後、絶対値ベースの値動きの中央値は2.51%でした。同じ銘柄が通常のセッションを迎えた場合は1.96%でした。次のセッションにおける変化率の中央値は-0.16%でした。つまり、出来高は株価がどの程度動くかについては一定の情報を示しましたが、どちらの方向に動くかについてはほとんど示しませんでした。
オプション出来高データは何時に更新されますか?
セッション中は、約定した契約出来高が統合オプションテープにリアルタイムで表示されます。ただし、このページの基盤となる保存テープの確定には遅れがあります。そのため、ボードには進行中のセッションではなく、直近の完了したセッションを表示し、その日付を記載しています。ここにリアルタイム配信はありません。
なぜこの異常なオプション取引活動スキャナーは建玉を使用しないのですか?
建玉は取引終了後に清算機関から公表されます。また、当社が保有するデータには建玉の項目がありません。セッションの出来高を、同じ原資産の過去の出来高と比較することは、テープから直接測定できます。これは同様の問いに答えるものです。つまり、そのオプションチェーンが通常より活発かどうかを判定できます。
上記の数値はすべて、保存・バージョン管理されたクエリに基づいています。各パネルの下にあるSQLを開けば、測定内容を検証できます。Strasmore terminalでは、任意の期間を指定して同じスクリーニングを実行できます。