Quadruple Witching vs Triple Witching
Quadruple witching became triple witching when US single stock futures stopped trading in 2020. What the fourth leg was, and what still moves those Fridays.
Quadruple witching vs triple witching comes down to a single leg that no longer trades. Quadruple witching described the four Fridays a year when index futures, index options, single stock options and single stock futures all expired on the same morning. US single stock futures stopped trading in 2020, which leaves three expiring products on American markets and makes triple witching the accurate name for what happens now.
Is it quadruple witching or triple witching?
For US markets in 2026, it is triple witching. Here are the four contract types the older name counted, one at a time.
- An index future is an agreement to settle the level of a stock index, such as the S&P 500, on a fixed date.
- An index option is the right to buy or sell that index level, settled in cash rather than in shares.
- A single stock option is the right to buy or sell 100 shares of one named company.
- A single stock future was an agreement to settle the price of one named company's shares on a fixed date.
The last item is the leg that vanished. US single stock futures traded almost entirely on OneChicago, a joint venture exchange, and they never approached the size of the listed options market sitting beside them. OneChicago wound down in 2020 and the contracts stopped trading. As of August 2026 no US exchange lists them, which is why a US quarterly expiration carries three products.
Outside the United States the fourth leg is alive. European and Asian derivatives exchanges still list single stock futures, and a quarterly expiration there can genuinely stack four contract types onto one morning. The word is not wrong everywhere. It is wrong about the market most people mean when they type it. A large body of US explainers was written before 2020 and never revised, which is a maintenance gap rather than a misunderstanding. The useful takeaway is a date: if an article aimed at US readers says quadruple, check whether it predates 2020.
The surviving mechanics are unchanged, and they are laid out in what triple witching is. This year's calendar sits in triple witching dates for 2026.
What still happens on those four Fridays
Losing a leg did not make the day quiet. Three expirations still land together on the third Friday of March, June, September and December, and two other things share the date. Several major index families schedule their quarterly reviews to take effect at that same close, so funds tracking those indexes trade the additions and removals at one print. The quarterly expiration is also the largest of the twelve monthly ones, since the index and futures cycles line up with it.
Volume is the plainest way to see the pile up.
The exact SQL behind every number
WITH fridays AS
(
SELECT
date,
toFloat64(volume) AS vol,
(toMonth(date) IN (3, 6, 9, 12) AND toDayOfMonth(date) BETWEEN 15 AND 21) AS is_expiry
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2023-01-01'
AND date < today()
AND toDayOfWeek(date) = 5
),
ordinary AS
(
SELECT avg(vol) AS avg_ordinary_friday
FROM fridays
WHERE is_expiry = 0
)
SELECT
toString(f.date) AS session_date,
formatDateTime(f.date, '%b %Y') AS session_label,
round(f.vol / 1e6, 1) AS spy_volume_millions,
round(f.vol / o.avg_ordinary_friday, 2) AS vs_ordinary_friday_ratio
FROM fridays AS f
CROSS JOIN ordinary AS o
WHERE f.is_expiry = 1
ORDER BY f.dateSPY is the exchange traded fund that tracks the S&P 500, and it is the busiest listing in the US market, which makes it a clean gauge. On the earliest quarterly session in view, Mar 2023, it traded 140.4 million shares, 1.85 times the average ordinary Friday across the window. On the most recent, Mar 2026, it traded 165.6 million, 2.18 times ordinary. The panel plots 13 quarterly sessions.
A quarter can go missing from a chart built this way. When the third Friday lands on an exchange holiday, the monthly expiration moves to the Thursday before it, and there is no Friday session to plot.
When during the day does the volume print?
A daily total hides the shape. Splitting one expiration Friday into half hour buckets, next to an ordinary Friday a week later, shows where the extra activity sits.
The exact SQL behind every number
WITH bars AS
(
SELECT
toTimeZone(window_start, 'America/New_York') AS et,
toDate(toTimeZone(window_start, 'America/New_York')) AS session,
toFloat64(volume) AS vol
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= '2026-03-20 00:00:00'
AND window_start < '2026-03-28 00:00:00'
AND toDate(toTimeZone(window_start, 'America/New_York')) IN ('2026-03-20', '2026-03-27')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) <= 960
),
day_totals AS
(
SELECT
sumIf(vol, session = '2026-03-20') AS expiry_total,
sumIf(vol, session = '2026-03-27') AS ordinary_total
FROM bars
)
SELECT
formatDateTime(toStartOfInterval(b.et, INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(100 * sumIf(b.vol, b.session = '2026-03-20') / any(t.expiry_total), 2) AS expiry_friday_pct,
round(100 * sumIf(b.vol, b.session = '2026-03-27') / any(t.ordinary_total), 2) AS ordinary_friday_pct
FROM bars AS b
CROSS JOIN day_totals AS t
GROUP BY et_time
ORDER BY et_timeBoth sessions open heavy. The 09:30 bucket took 8.07 percent of the expiration session's regular hours volume, against 11.59 percent on the ordinary Friday. The final bucket, 16:00, is one minute long, and it holds the closing auction: 0.54 percent of the expiration day's regular hours volume, against 0.46 percent a week later. On the expiration session that single minute is a small share of the fund's regular hours volume, which is worth stating plainly, since the closing cross is usually described as the moment the day's volume lands. SPY trades in size across all 390 minutes of a regular session, and one crossing does not dominate its tape. What the crossing fixes is the price rather than the day's turnover.
The closing auction is a single crossing run by the primary exchange at 4:00 p.m. ET that produces one official closing price. A fund tracking an index needs that price to match the index it follows, so quarterly index changes and expiring index products converge on that one minute. The same pattern shows up name by name.
The exact SQL behind every number
WITH bars AS
(
SELECT
ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS session,
(toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) AS et_minute,
toFloat64(volume) AS vol
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'JNJ', 'XOM')
AND window_start >= '2026-03-20 00:00:00'
AND window_start < '2026-03-28 00:00:00'
AND toDate(toTimeZone(window_start, 'America/New_York')) IN ('2026-03-20', '2026-03-27')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) <= 960
)
SELECT
ticker AS symbol,
round(100 * sumIf(vol, session = '2026-03-20' AND et_minute = 960)
/ sumIf(vol, session = '2026-03-20'), 2) AS expiry_close_pct,
round(100 * sumIf(vol, session = '2026-03-27' AND et_minute = 960)
/ sumIf(vol, session = '2026-03-27'), 2) AS ordinary_close_pct
FROM bars
GROUP BY symbol
HAVING sumIf(vol, session = '2026-03-20') > 0
AND sumIf(vol, session = '2026-03-27') > 0
ORDER BY expiry_close_pct DESCAAPL put the largest share through the close: 3.4 percent of its regular hours volume on the expiration Friday, against 2.05 percent a week later. The gap between the two bars on each name measures how much more of the day landed in that single minute. Anyone holding an option at a strike sitting near the closing price watches this print closely, which is the subject of pin risk at options expiration.
Why the morning matters too
Not every expiring contract settles off the closing price. Many index products settle in the morning, off a Special Opening Quotation. That value is assembled from the opening print of each index member, and index members do not all open in the same second. The settlement number can land at a level the index itself never displayed on any screen, which is one of the least intuitive features of the day.
An expiration Friday carries two focal points rather than one: an opening print that fixes AM settled contracts, and a closing print that fixes PM settled contracts along with the quarterly index rebalance. Japan runs the same morning idea on its own quarterly schedule, described in Japan's SQ day. The US split between the two conventions is covered in AM settled versus PM settled options.
Does a witching Friday mean a bigger move?
The volume is real. The direction claim usually attached to it is a separate question, and it is easy to check: compare the average size of SPY's open to close move on quarterly expiration Fridays against every other Friday of the same year.
The exact SQL behind every number
WITH fridays AS
(
SELECT
toYear(date) AS y,
abs(100 * (toFloat64(close) - toFloat64(open)) / toFloat64(open)) AS abs_move_pct,
(toMonth(date) IN (3, 6, 9, 12) AND toDayOfMonth(date) BETWEEN 15 AND 21) AS is_expiry
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2016-01-01'
AND date < today()
AND toDayOfWeek(date) = 5
AND toFloat64(open) > 0
)
SELECT
toString(y) AS year,
round(avgIf(abs_move_pct, is_expiry = 1), 2) AS expiry_friday_move_pct,
round(avgIf(abs_move_pct, is_expiry = 0), 2) AS other_friday_move_pct,
countIf(is_expiry = 1) AS expiry_session_count
FROM fridays
GROUP BY y
HAVING countIf(is_expiry = 1) >= 2
AND countIf(is_expiry = 0) >= 2
ORDER BY yThe panel puts the two averages side by side, year by year, from 2016 through 2025, covering 10 years. In 2025 the 4 quarterly expiration Fridays averaged 0.58 percent from open to close, against 0.71 percent for that year's ordinary Fridays.
Two things are worth keeping apart. Heavy volume records how many shares changed hands, and it carries no sign. And the figures above are absolute moves, so they describe size and say nothing about which way any single session went. A session that trades twice its usual volume can close a few basis points from where it opened, where a basis point is one hundredth of a percentage point.
FAQ
Is it quadruple witching or triple witching?
On US markets it is triple witching. The fourth leg, single stock futures, stopped trading in the United States in 2020 when OneChicago wound down. Quadruple witching is still accurate for venues outside the US that continue to list single stock futures.
What was the fourth witching?
Single stock futures: contracts to settle the price of one company's shares on a fixed future date, rather than the level of an index. In the US they were listed mainly on OneChicago, and they stopped trading in 2020.
When is triple witching?
The third Friday of March, June, September and December. When that Friday falls on an exchange holiday, the expiration moves to the Thursday before it. The dated list is in the options expiration calendar for 2026.
Does triple witching move the market?
Volume runs well above an ordinary Friday, most visibly in the closing auction, as the panels above show. Size of a session's move and its direction are separate measurements, and the yearly comparison places expiration Fridays in the same range as ordinary ones.
Why do so many articles still say quadruple witching?
Most were written before 2020 and were never updated after single stock futures left US markets. Checking an article's date against 2020 resolves the discrepancy in a few seconds.
How these panels are built
- The two intraday panels are pinned to a fixed pair of past sessions, a March 2026 quarterly expiration Friday and the ordinary Friday one week later, so the comparison does not shift as new data arrives.
- Percentages are shares of regular hours volume only. The premarket and after hours sessions are excluded from both the numerator and the denominator.
- The 4:00 p.m. bucket in the half hour panel is a single minute of tape, which is where the closing cross prints.
- The quarterly Friday filter selects the third Friday of March, June, September and December by taking the Friday that falls between the 15th and the 21st, which is exactly one date per month.
Every panel here ships with the exact SQL underneath it, expand one to see how a number was counted. To run the same comparison on a different symbol or a different expiration Friday, ask it in plain English on the Strasmore terminal.