Pattern Day Trader Rule: What Replaced It
US trading sessions per month, January 2025 through June 2026series ·
2026-08-01 · 18×3
SPY share volume by half hour, week of July 6, 2026 (Eastern time)series ·
2026-08-01 · 32×2
Median and 90th percentile full day range, eight names, H1 2026ranking ·
2026-08-01 · 8×3
US trading sessions per month, January 2025 through June 2026
US trading sessions per month, January 2025 through June 2026
| month | month_label | sessions |
|---|---|---|
| 2025-01 | January 2025 | 20 |
| 2025-02 | February 2025 | 19 |
| 2025-03 | March 2025 | 21 |
| 2025-04 | April 2025 | 21 |
| 2025-05 | May 2025 | 21 |
| 2025-06 | June 2025 | 20 |
| 2025-07 | July 2025 | 22 |
| 2025-08 | August 2025 | 21 |
| 2025-09 | September 2025 | 21 |
| 2025-10 | October 2025 | 23 |
| 2025-11 | November 2025 | 19 |
| 2025-12 | December 2025 | 22 |
| 2026-01 | January 2026 | 20 |
| 2026-02 | February 2026 | 19 |
| 2026-03 | March 2026 | 22 |
| 2026-04 | April 2026 | 21 |
| 2026-05 | May 2026 | 20 |
| 2026-06 | June 2026 | 21 |
the exact SQL behind every number
WITH trading_days AS (
SELECT DISTINCT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2025-01-01 05:00:00')
AND window_start < toDateTime('2026-07-01 04:00:00')
)
SELECT formatDateTime(toStartOfMonth(session_date), '%Y-%m') AS month,
formatDateTimeInJodaSyntax(toStartOfMonth(session_date), 'MMMM yyyy') AS month_label,
count() AS sessions
FROM trading_days
GROUP BY month, month_label
ORDER BY month
More from this analysisPattern Day Trader Rule: What Replaced It
SPY share volume by half hour, week of July 6, 2026 (Eastern time)
series 32×2
→
Median and 90th percentile full day range, eight names, H1 2026
ranking 8×3
→
SPY typical and largest daily move, month by month since 2019
series 91×4
→
Short term Treasury yields, the reference a stock margin loan is priced off
series 91×4
→
See all 2,173 queries →