FINRA Margin Debt Statistics, Explained
Largest month-over-month declines in SPY month-end closesranking ·
2026-08-22 · 10×2
What the market does between the month-end as-of date and a third-week releaseseries ·
2026-08-22 · 21×5
Month-end closes that set a new high for the window, by year (SPY)ranking ·
2026-08-22 · 21×4
How far SPY travels between month end and the third-week release windowranking ·
2026-08-22 · 6×3
When Are 13F Filings Due? 2026 Deadlines
Share of reported volume marked short, Q1 2026 disclosure windowranking ·
2026-08-06 · 5×3
The four 13F deadlines for the 2026 quartersseries ·
2026-08-06 · 4×7
AAPL: quarter-end snapshot price vs the price on the 13F deadlineseries ·
2026-08-06 · 8×7
Trading during the Q1 2026 disclosure window, five household namesranking ·
2026-08-06 · 5×4
Largest month-over-month declines in SPY month-end closes
Largest month-over-month declines in SPY month-end closes
| calendar_label | spy_change_pct |
|---|---|
| Oct 2008 | -16.74 |
| Mar 2020 | -12.99 |
| Feb 2009 | -10.53 |
| Sep 2022 | -9.6 |
| Sep 2008 | -9.32 |
| Dec 2018 | -9.3 |
| Apr 2022 | -8.77 |
| Jun 2008 | -8.77 |
| Jun 2022 | -8.63 |
| Jan 2009 | -8.4 |
the exact SQL behind every number
WITH daily AS
(
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMax(close, window_start) AS px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2006-01-01 00:00:00')
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
GROUP BY d
),
month_close AS
(
SELECT
toStartOfMonth(d) AS m,
toFloat64(argMax(px, d)) AS close_px
FROM daily
GROUP BY m
),
chained AS
(
SELECT
m,
close_px,
lagInFrame(close_px, 1) OVER (ORDER BY m ASC
ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prior_close
FROM month_close
)
SELECT
formatDateTime(m, '%b %Y') AS calendar_label,
round(100 * (close_px / prior_close - 1), 2) AS spy_change_pct
FROM chained
WHERE prior_close > 0
ORDER BY spy_change_pct ASC
LIMIT 10
More from this analysisFINRA Margin Debt Statistics, Explained
Month-end closes that set a new high for the window, by year (SPY)
ranking 21×4
→
How far SPY travels between month end and the third-week release window
ranking 6×3
→
What the market does between the month-end as-of date and a third-week release
series 21×5
→
Annualized volatility vs total return, 25 large caps, calmest to wildest (~2 years)
ranking 25×3
→
See all 2,170 queries →