How to Read the COT Report: Columns Explained
SPY move from Tuesday close to Friday close, the age of a COT snapshotranking ·
2026-08-22 · 11×4
Latest days to cover, and where it sits in five years of the same name's historytable ·
2026-08-22 · 6×5
AAPL days to cover and its rank inside the three-year windowseries ·
2026-08-22 · 72×4
Net calls minus puts on AAPL, raw contracts and as a share of volumeseries ·
2026-08-22 · 30×6
Local A-Share Data Lake for AI Agents
Who left the tape: March 2021 symbols by daily dollar volume, checked against late July 2026ranking ·
2026-08-05 · 5×4
Survivorship, measured: March cohorts of US symbols still trading in late July 2026table ·
2026-08-05 · 10×5
One week of the US minute tape: symbols and bars per session, Jul 20-24, 2026series ·
2026-08-05 · 5×4
Market Data Skills for AI Agents
Trading sessions per month: SPY bars, July 2025 through June 2026series ·
2026-08-01 · 12×4
Where the volume sits: share of June 2026 volume by half hour, New York timeseries ·
2026-08-01 · 32×3
One company, two tickers: share class volume split, June 2026ranking ·
2026-08-01 · 6×4
Minute bars per session: nine widely held names, June 2026series ·
2026-08-01 · 9×4
SPY move from Tuesday close to Friday close, the age of a COT snapshot
SPY move from Tuesday close to Friday close, the age of a COT snapshot
| year | session_pair_count | median_gap_move_pct | p90_gap_move_pct |
|---|---|---|---|
| 2016 | 51 | 0.88 | 2.2 |
| 2017 | 50 | 0.33 | 1.11 |
| 2018 | 50 | 1.14 | 2.71 |
| 2019 | 51 | 0.88 | 2.35 |
| 2020 | 48 | 1.24 | 4.21 |
| 2021 | 50 | 0.75 | 2.08 |
| 2022 | 51 | 1.72 | 4.32 |
| 2023 | 50 | 0.88 | 2.8 |
| 2024 | 52 | 1.04 | 2.17 |
| 2025 | 50 | 0.84 | 2.43 |
| 2026 | 23 | 1.26 | 2.92 |
the exact SQL behind every number
WITH spy AS
(
SELECT
date,
toFloat64(close) AS close_px
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2016-01-01'
AND date < '2026-07-01'
)
SELECT
toString(toYear(tue.date)) AS year,
count() AS session_pair_count,
round(quantileDeterministic(0.5)(abs(fri.close_px / tue.close_px - 1) * 100,
toUInt64(toUnixTimestamp(tue.date))), 2) AS median_gap_move_pct,
round(quantileDeterministic(0.9)(abs(fri.close_px / tue.close_px - 1) * 100,
toUInt64(toUnixTimestamp(tue.date))), 2) AS p90_gap_move_pct
FROM spy AS tue
INNER JOIN spy AS fri ON fri.date = tue.date + 3
WHERE toDayOfWeek(tue.date) = 2
GROUP BY year
ORDER BY year
More from this analysisHow to Read the COT Report: Columns Explained
AAPL days to cover and its rank inside the three-year window
series 72×4
→
Net calls minus puts on AAPL, raw contracts and as a share of volume
series 30×6
→
Latest days to cover, and where it sits in five years of the same name's history
table 6×5
→
Units versus dollars: seven funds tracking the markets the COT covers, July 2026
ranking 7×4
→
See all 2,173 queries →