三重巫術 成交量 波動率
三重巫術是每季一次的交易時段,股指期貨、指數選擇權和個股選擇權同時到期,成交量與波動率在真實交易數據上的表現。
三重巫術是每季一次的交易時段,發生在3月、6月、9月和12月的第三個星期五,屆時股指期貨、指數選擇權和個股選擇權會同時到期。一年四次,所有到期的衍生性商品必須同時結算、平倉或展期,指數基金也會在同一收盤價執行定期再平衡。以下為過去八次巫術時段在真實交易數據上的表現:成交量、波動率、收盤競價與執行價。如需查看完整行事曆,包括因六月節(Juneteenth)而將2026年6月移至星期四的每季到期日,請參閱2026年三重巫術日期。
三巫日會有哪些商品到期?
三種合約家族會在這一天同時到期:股價指數期貨(及指數期貨選擇權)、指數選擇權,以及個股選擇權。個股選擇權其實每個月的第三個星期五都會到期,但季月之所以特別,是因為指數期貨與指數選擇權的到期週期也疊加在同一日。
兩種結算方式將這一天分成兩半。許多指數期貨與指數選擇權屬於上午結算:它們在前一天下午就停止交易,並根據成分股開盤價計算出的價格進行結算,這會將大量資金導向當天早上的開盤集合競價。個股與ETF選擇權則屬於下午結算,會一直交易到下午4:00收盤為止。
這一天的第三個要素其實根本不是衍生性商品。各大指數家族會將成分股調整、新增、刪除、股數更新等事項,安排在這些相同的季月日期執行,而指數型基金則會在收盤時進行這些調整的交易。指數調整的資金流與到期部位,會在當天下午的同一場收盤集合競價中匯聚。
為什麼稱為「魔咒」?
這個名稱借用民間傳說中的「魔幻時刻」,據說此時會發生怪異之事。1980年代,指數期貨(標普500指數期貨於1982年上市)與指數選擇權,加入個股選擇權(自1973年起在交易所掛牌)的行列,共同採用相同的季度行事曆。在這些日期的最後交易時段,市場波動劇烈,因而獲得「三重魔咒時刻」的綽號。交易所後來將主要指數合約的結算時間,從收盤改為開盤價,大幅降低了最後一小時的戲劇性。「四重魔咒」則是在2000年代初期,美國掛牌個股期貨時出現;承載這些期貨的交易所在2020年關閉,如今這兩個術語描述的是相同的四個日期。
三重巫術日:2024–2027年
規則很簡單:每年3月、6月、9月和12月的第三個星期五。若該星期五適逢交易所休市日,則到期日提前至前一個交易日。完整行事曆(含週期與每日週期)請參閱選擇權到期日。
- 2024年: 3月15日、6月21日、9月20日、12月20日
- 2025年: 3月21日、6月20日、9月19日、12月19日
- 2026年: 3月20日、6月18日(因6月19日六月節美國交易所休市,從星期五提前)、9月18日、12月18日
- 2027年: 3月19日、6月18日、9月17日、12月17日
下一個日期是2026年9月18日星期五。
四巫日交易量到底有多重?
自2024年底以來,我們盤面上每個季度四巫日的交易量,旁邊附上同月其他交易日的中位數交易量。最後一欄是「當月最重交易日」說法的憑證:它減去當月非四巫日中最重交易日的數字,因此正數代表四巫日勝出該月,負數則代表有其他交易日超越它。
每個數據背後的精確 SQL 語法
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
sum(toFloat64(volume)) / 1e9 AS shares_b
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2024-09-01 04:00:00'
AND window_start < '2026-07-01 04:00:00'
AND toMonth(toTimeZone(window_start, 'America/New_York')) IN (3, 6, 9, 12)
GROUP BY day
),
witching AS (
SELECT toStartOfMonth(day) AS m,
maxIf(day, day <= addDays(toStartOfMonth(day),
((5 - toDayOfWeek(toStartOfMonth(day)) + 7) % 7) + 14)) AS witching_day
FROM daily
GROUP BY m
)
SELECT toString(w.witching_day) AS witching_session,
round(anyIf(d.shares_b, d.day = w.witching_day), 1) AS witching_shares_b,
round(quantileDeterministicIf(0.5)(d.shares_b, cityHash64(toString(d.day)), d.day != w.witching_day), 1) AS other_days_median_b,
round(anyIf(d.shares_b, d.day = w.witching_day)
/ quantileDeterministicIf(0.5)(d.shares_b, cityHash64(toString(d.day)), d.day != w.witching_day), 2) AS times_median,
round(anyIf(d.shares_b, d.day = w.witching_day) - maxIf(d.shares_b, d.day != w.witching_day), 2) AS gap_to_next_heaviest
FROM daily AS d
INNER JOIN witching AS w ON toStartOfMonth(d.day) = w.m
GROUP BY w.witching_day
HAVING countIf(d.day != w.witching_day) > 0
ORDER BY w.witching_day交易量溢價是真實且可重複出現的。最近一次四巫日,2026-06-18,交易量為 26.7 億股,相較於該月其他交易日的中位數 20.1 億股,是 1.33 倍於一般交易日,並且比6月次重的交易日多出 1.15 億股。第一列 2024-09-20 也呈現類似的 1.34 倍。
但這並非定律,表格也說明了這點。2025-03-21 的交易量是其當月中位數的 0.97 倍,略低於一般交易日,並且比當月最重交易日少了 -4.03 億股。最後一欄同時出現兩種跡象:四巫日有很大機會成為當月最忙碌的交易日,但並非必然。指數調整、季末資金流動以及總體經濟數據發布,都會產生超越它的交易日。
為何2026年6月的三巫日落在星期四
2026年6月的第三個星期五是6月19日,適逢六月節,美國交易所休市,因此整個季度合約到期日提前至2026年6月18日星期四。選擇權交易記錄顯示了未平倉部位的分布:6月1日至18日期間交易的合約數量,按合約本身所載的到期日分組。
每個數據背後的精確 SQL 語法
SELECT toString(expiry) AS expiry,
round(sum(vol) / 1e6, 1) AS contracts_mm
FROM (
SELECT toDateOrNull(concat('20', substring(ticker, length(ticker) - 14, 6))) AS expiry,
toFloat64(volume) AS vol
FROM global_markets.options_minute_aggs
WHERE window_start >= '2026-06-01 04:00:00'
AND window_start < '2026-06-19 04:00:00'
)
WHERE expiry IS NOT NULL
GROUP BY expiry
ORDER BY contracts_mm DESC
LIMIT 8在2026-06-18到期的合約,於那十四個交易日中吸引了193.7百萬口合約的交易量,而次大的到期日2026-06-12則有113.1百萬口。未平倉量會隨著時間累積在季度到期日上;交易量也隨之集中於該日。
合約還是股票,真正暴衝的是什麼?
這裡有一個多數「四巫日」解說文章刻意跳過的區別。部位是累積到季度到期日的,但當天實際換手的選擇權合約數量並不特別突出。以下將四巫日當天的交易時段,與其前兩個普通星期五並列比較,並分別列出各時段當天到期的零日期權(0DTE)股票交易量。
四巫日當天處理了 79.2 百萬張合約;而 2026-06-05 的普通星期五則處理了 103.1 百萬張,更多。真正改變的是組合結構:四巫日當天的交易量中,有 48.7% 是集中在當天到期的合約,而普通星期五的這個比例分別是 43.9% 與 44.7%。四巫日的特徵並非「大家交易更多選擇權」,而是股票市場變得活絡。指數結算與基金再平衡,是透過股票來執行,而非合約。
三巫日是否會加劇波動?
成交量與波動性是兩個不同的問題,而後者鮮少被檢驗。此圖表衡量SPY在每次三巫日交易時段內的盤中高點至低點區間(以開盤價的百分比計算),加上絕對的開盤至收盤變動,並分別與同月份其他交易時段的中位數進行比較。
每個數據背後的精確 SQL 語法
WITH daily AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
toFloat64(max(high) - min(low)) / toFloat64(argMin(open, window_start)) * 100 AS range_pct,
abs(toFloat64(argMax(close, window_start)) - toFloat64(argMin(open, window_start)))
/ toFloat64(argMin(open, window_start)) * 100 AS net_move_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2024-09-01 04:00:00'
AND window_start < '2026-07-01 04:00:00'
AND toMonth(toTimeZone(window_start, 'America/New_York')) IN (3, 6, 9, 12)
AND toHour(toTimeZone(window_start, 'America/New_York')) >= 9
AND toHour(toTimeZone(window_start, 'America/New_York')) < 16
AND NOT (toHour(toTimeZone(window_start, 'America/New_York')) = 9
AND toMinute(toTimeZone(window_start, 'America/New_York')) < 30)
GROUP BY day
),
witching AS (
SELECT toStartOfMonth(day) AS m,
maxIf(day, day <= addDays(toStartOfMonth(day),
((5 - toDayOfWeek(toStartOfMonth(day)) + 7) % 7) + 14)) AS witching_day
FROM daily
GROUP BY m
)
SELECT toString(w.witching_day) AS witching_session,
round(anyIf(d.range_pct, d.day = w.witching_day), 2) AS witching_range_pct,
round(quantileDeterministicIf(0.5)(d.range_pct, cityHash64(toString(d.day)), d.day != w.witching_day), 2) AS other_days_median_range_pct,
round(anyIf(d.net_move_pct, d.day = w.witching_day), 2) AS witching_net_move_pct,
round(quantileDeterministicIf(0.5)(d.net_move_pct, cityHash64(toString(d.day)), d.day != w.witching_day), 2) AS other_days_median_net_move_pct
FROM daily AS d
INNER JOIN witching AS w ON toStartOfMonth(d.day) = w.m
GROUP BY w.witching_day
HAVING countIf(d.day != w.witching_day) > 0
ORDER BY w.witching_day答案是:並非系統性如此。三巫日交易時段落在其月份中位數的兩側。2024-12-20的區間為2.55%,而當月中位數為0.61%,這確實是一個劇烈波動的時段。但最近一次三巫日(2026-06-18)的區間為0.58%,當月中位數為1.12%,其開盤至收盤的淨變動為0.16%,而中位數為0.55%:該月份成交量最大的交易日,同時也是價格走勢最平穩的交易日之一。
這就是整個主題最誠實的結論。三巫日集中了預定且機械性的資金流動,而機械性資金流動本質上就是雙向的:每一個被展期的持倉都在一個合約中平倉,並在另一個合約中開倉;每一檔指數成分股納入都伴隨著一檔剔除。巨大的成交量伴隨著普通的價格路徑,正是這種情況所產生的結果。
收盤競價時段內部解析
這一天唯一真正與眾不同的地方,就是收盤。此處將收盤競價時段獨立出來,也就是美東時間下午3:59與4:00這兩根K線,它們承載著競價交易的成交結果,並衡量四巫日當天在此時段易手的資金量,與典型的六月交易日進行比較。
每個數據背後的精確 SQL 語法
WITH sessions AS (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS day,
sumIf(toFloat64(close) * toFloat64(volume),
toHour(toTimeZone(window_start, 'America/New_York')) = 16
OR (toHour(toTimeZone(window_start, 'America/New_York')) = 15
AND toMinute(toTimeZone(window_start, 'America/New_York')) = 59)) AS close_dollars,
sum(toFloat64(close) * toFloat64(volume)) AS day_dollars
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= '2026-06-01 04:00:00'
AND window_start < '2026-07-01 04:00:00'
AND toHour(toTimeZone(window_start, 'America/New_York')) >= 9
AND toHour(toTimeZone(window_start, 'America/New_York')) <= 16
AND NOT (toHour(toTimeZone(window_start, 'America/New_York')) = 9
AND toMinute(toTimeZone(window_start, 'America/New_York')) < 30)
AND NOT (toHour(toTimeZone(window_start, 'America/New_York')) = 16
AND toMinute(toTimeZone(window_start, 'America/New_York')) > 0)
GROUP BY day
)
SELECT round(anyIf(close_dollars, day = '2026-06-18') / 1e9, 1) AS witching_close_dollars_b,
round(quantileDeterministicIf(0.5)(close_dollars, cityHash64(toString(day)), day != '2026-06-18') / 1e9, 1) AS other_june_median_close_dollars_b,
round(anyIf(close_dollars, day = '2026-06-18')
/ quantileDeterministicIf(0.5)(close_dollars, cityHash64(toString(day)), day != '2026-06-18'), 2) AS times_median,
round(anyIf(close_dollars / day_dollars, day = '2026-06-18') * 100, 1) AS witching_close_pct_of_day,
round(quantileDeterministicIf(0.5)(close_dollars / day_dollars, cityHash64(toString(day)), day != '2026-06-18') * 100, 1) AS other_june_median_close_pct_of_day
FROM sessions
HAVING countIf(day != '2026-06-18') > 0四巫日當天,該時段吸收了 $56.1 億美元 的股票交易量,而六月典型交易日的中位數則為 $36.1 億美元,兩者相差 1.56 倍。此外,四巫日當天該時段佔其全日交易金額的 4.9%,而典型交易日則為 3.7%。僅僅兩分鐘的時鐘時間,卻佔了全天二十分之一的資金流:這就是持有數十億美元資產、需要進行再平衡的指數型基金,找到交易對手的地方。
平倉風險:價格是否會向大量未平倉合約的履約價靠攏?
「平倉風險」及其相關概念「最大痛點」,是一種市場傳說,認為即將到期的股票價格會被拉向未平倉合約量最大的履約價,因為交易商在收盤前會對這些選擇權進行避險。以下是實際交易數據顯示的狀況:SPY 2026年6月18日到期的系列合約,按成交量排序,並列出每個履約價與SPY常規交易時段收盤價的距離。
每個數據背後的精確 SQL 語法
WITH spy_close AS (
SELECT toFloat64(argMax(close, window_start)) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2026-06-18 09:30:00', 'America/New_York')
AND window_start < toDateTime('2026-06-18 16:00:00', 'America/New_York')
),
strikes AS (
SELECT toFloat64(substring(ticker, length(ticker) - 7, 8)) / 1000 AS strike,
sum(toFloat64(size)) AS contracts
FROM global_markets.options_trades
WHERE ticker LIKE 'O:SPY260618%'
AND sip_timestamp >= '2026-06-18 08:00:00'
AND sip_timestamp < '2026-06-19 01:00:00'
GROUP BY strike
)
SELECT concat('$', toString(toInt32(s.strike))) AS strike,
round(s.contracts / 1000, 1) AS contracts_k,
round(s.strike - c.px, 2) AS strike_minus_close,
round(abs(s.strike - c.px) / c.px * 100, 2) AS pct_from_close
FROM strikes AS s
CROSS JOIN spy_close AS c
ORDER BY s.contracts DESC, s.strike ASC
LIMIT 12SPY的收盤價恰好落在兩個交易最活躍的到期履約價之間。成交量最大的履約價 $746 成交了 1488.3 萬口合約,距離收盤價 -0.56 點(0.08% 的差距);第二大的履約價 $747 成交了 1482.4 萬口,位於收盤價另一側 0.44 點的位置。
請避免直接推論出顯而易見的結論。交易者自然會將成交量集中在價平附近的履約價,因為這些合約承載著實際的結算結果,並且擁有最窄的 買賣價差。因此,「成交量最大的履約價落在收盤價兩側」在任何到期日幾乎都是同義反覆的現象,並非收盤價被拉向某處的證據。單憑一個交易日,無法區分這是磁吸效應還是純屬巧合。這張圖表真正顯示的是:一檔即將到期的選擇權,若其履約價與價平價格相差不到1美元,其全部價值將在最後那擁擠的一分鐘內決定。
四巫日實際操作上該如何應對
- 降低相對成交量指標的權重。 當天所有股票都會同時出現異常成交量。在四巫日當天,相對成交量達到2倍只是日曆效應,而非個股催化劑。
- 預期市場深度增加,而非波動趨緩。 流動性會變深,大額訂單更容易執行,但上方的區間表顯示,四巫日的波動幅度可能落在正常交易日兩側。
- 留意收盤前即將到期的持倉。 以收盤價結算的個股與ETF選擇權,其最終價格取決於收盤報價;接近價平的合約會在最後幾分鐘內,於價外與價內之間快速切換。
- 切勿將收盤報價解讀為市場情緒。 當天有二十分之一的成交金額,集中在一個夾雜大量機械式再平衡委託的兩分鐘窗口內。
- 提前掌握四個日期。 交易中最便宜的策略,就是準備一份日曆。
常見問題
下一次三巫日是什麼時候?
三巫日落在3月、6月、9月和12月的第三個星期五。下一次是 2026年9月18日星期五,接著是2026年12月18日,然後是2027年的3月19日、6月18日、9月17日和12月17日。
三巫日與四巫日有何不同?
「四巫日」在三種經典到期合約(指數期貨、指數選擇權、個股選擇權)之上,加入了個股期貨。這些美國產品在承載該產品的交易所於2020年關閉後已不復存在,如今兩個詞都指相同的四個季度日期。
為什麼三巫日的交易量特別高?
到期日迫使每個未平倉衍生性商品部位必須做出決定:結算、平倉或轉倉;同時,指數供應商會將成分股調整安排在相同交易日,指數基金則在收盤時以股票執行調整。最近一次三巫日的交易量是該月日均成交量的 1.33 倍,僅收盤集合競價時段就吸收了 56.1 億美元。
三巫日會讓股市波動更大嗎?
不一定。以SPY衡量,三巫日的波動幅度有時高於、有時低於該月的中位數日內區間:2024-12-20 的區間為 2.55%,而該月中位數為 0.61%;2026-06-18 的區間僅 0.58%,該月中位數則為 1.12%。大量成交與價格大幅波動是兩回事。
到期日的釘住風險是什麼?
釘住風險是指選擇權結算價非常接近其履約價時的曝險:在收盤前,沒有人知道該選擇權是到期無價值還是價內,空頭部位可能因此被指派股票。在2026年6月18日,SPY交易量最大的兩個到期履約價,距離收盤價分別為 -0.56 點和 0.44 點。
每個面板都是針對真實交易資料的已儲存版本化查詢,可展開SQL以審核任何數字,或自行在Strasmore終端機上測量下一次三巫日。