gap_buckets
Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-10-16, from tase-vs-us-trading-days.
| gap_bucket | spy_rate | qqq_rate | aapl_rate |
|---|---|---|---|
| 0.0-0.5% | 70.9 | 62.1 | 46.7 |
| 0.5-1% | 18.3 | 24.8 | 28.7 |
| 1-2% | 8.1 | 10.4 | 16.5 |
| 2-3% | 1.4 | 1.3 | 4.9 |
| 3%+ | 1.2 | 1.4 | 3.2 |
- Rows × columns
- 5 × 4
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
gap_bucket |
text | 5 distinct values (0.0-0.5%, 0.5-1%, 1-2%…) | |
spy_rate |
number | 1.2 to 70.9 | ratio or rate |
qqq_rate |
number | 1.3 to 62.1 | ratio or rate |
aapl_rate |
number | 3.2 to 46.7 | ratio or rate |
Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.
Run it yourself
This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.
WITH deduped AS
(
SELECT
ticker,
date,
max(toFloat64(open)) AS open_px,
max(toFloat64(close)) AS close_px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'QQQ', 'AAPL')
GROUP BY ticker, date
),
chained AS
(
SELECT
ticker,
date,
open_px,
lagInFrame(close_px) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close,
lagInFrame(date) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_date
FROM deduped
),
weekend AS
(
SELECT
ticker,
abs(100 * (open_px / prev_close - 1)) AS abs_gap_pct
FROM chained
WHERE prev_close > 0
AND open_px > 0
AND toDayOfWeek(prev_date) = 5
AND toDayOfWeek(date) = 1
),
bucketed AS
(
SELECT
ticker,
multiIf(abs_gap_pct < 0.5, 1,
abs_gap_pct < 1, 2,
abs_gap_pct < 2, 3,
abs_gap_pct < 3, 4,
5) AS bucket_order,
multiIf(abs_gap_pct < 0.5, '0.0-0.5%',
abs_gap_pct < 1, '0.5-1%',
abs_gap_pct < 2, '1-2%',
abs_gap_pct < 3, '2-3%',
'3%+') AS gap_bucket
FROM weekend
),
counted AS
(
SELECT
ticker,
bucket_order,
gap_bucket,
count() AS n
FROM bucketed
GROUP BY ticker, bucket_order, gap_bucket
),
shares AS
(
SELECT
ticker,
bucket_order,
gap_bucket,
round(100 * n / sum(n) OVER (PARTITION BY ticker), 1) AS share_pct
FROM counted
)
SELECT
gap_bucket,
maxIf(share_pct, ticker = 'SPY') AS spy_rate,
maxIf(share_pct, ticker = 'QQQ') AS qqq_rate,
maxIf(share_pct, ticker = 'AAPL') AS aapl_rate
FROM shares
GROUP BY gap_bucket, bucket_order
ORDER BY bucket_order
עבדו עם הנתונים האלה בעוזר ה-AI שלכם
נפתח מוכן לשאילתות, עם הנתונים של העמוד הזה. בחינם, בלי חשבון.