How Risky Is Options Trading? The Mechanics
Weekend gaps: prior close to next open, six widely held names, August 2024 to July 2026table ·
2026-08-01 · 6×5
One AAPL call through its final month: closing premium split into intrinsic value and time valueseries ·
2026-08-01 · 23×5
Same AAPL call, same window: session moves for the contract and for the stockseries ·
2026-08-01 · 23×3
AAPL contracts trading on their own expiration day: share finishing out of the money, six monthly cyclesranking ·
2026-08-01 · 6×4
Weekend gaps: prior close to next open, six widely held names, August 2024 to July 2026
Weekend gaps: prior close to next open, six widely held names, August 2024 to July 2026
| ticker | gap_count | median_weekend_gap_pct | p95_weekend_gap_pct | largest_weekend_gap_pct |
|---|---|---|---|---|
| TSLA | 104 | 1.44 | 6.46 | 10.81 |
| NVDA | 104 | 1.17 | 4.29 | 14.19 |
| AAPL | 104 | 0.44 | 2.58 | 9.42 |
| MSFT | 104 | 0.51 | 1.9 | 4.73 |
| SPY | 104 | 0.38 | 1.51 | 4 |
| KO | 104 | 0.24 | 0.98 | 5.3 |
the exact SQL behind every number
WITH sessions AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS session_date,
argMin(toFloat64(open), window_start) AS session_open,
argMax(toFloat64(close), window_start) AS session_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'TSLA', 'KO', 'SPY')
AND window_start >= toDateTime('2024-08-01 00:00:00')
AND window_start < toDateTime('2026-08-01 00:00:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY ticker, session_date
),
linked AS (
SELECT ticker,
session_date,
session_open,
any(session_close) OVER (PARTITION BY ticker ORDER BY session_date
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_close,
any(session_date) OVER (PARTITION BY ticker ORDER BY session_date
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_date
FROM sessions
),
gaps AS (
SELECT ticker,
session_date,
abs(session_open / prev_close - 1) * 100 AS gap_pct
FROM linked
WHERE prev_close > 0
AND dateDiff('day', prev_date, session_date) >= 3
)
SELECT ticker,
count() AS gap_count,
round(quantileDeterministic(0.5)(gap_pct, cityHash64(session_date)), 2) AS median_weekend_gap_pct,
round(quantileDeterministic(0.95)(gap_pct, cityHash64(session_date)), 2) AS p95_weekend_gap_pct,
round(max(gap_pct), 2) AS largest_weekend_gap_pct
FROM gaps
GROUP BY ticker
ORDER BY p95_weekend_gap_pct DESC
More from this analysisHow Risky Is Options Trading? The Mechanics
One AAPL call through its final month: closing premium split into intrinsic value and time value
series 23×5
→
Same AAPL call, same window: session moves for the contract and for the stock
series 23×3
→
AAPL contracts trading on their own expiration day: share finishing out of the money, six monthly cycles
ranking 6×4
→
AAPL's final half hour on its tightest monthly expiration close since 2025
series 30×5
→
See all 2,173 queries →