The rank receipt: this June against every prior one (rank 1 = best; self-excluded)
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-07-26, from Market Recap: June 2026.
june 2026 pct
-1.2
rank best
15
junes compared
23
first year
2,004
sessions 2026
21
- Rows × columns
- 1 × 5
- 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 |
|---|---|---|---|
june_2026_pct |
number | every row is -1.2 | percent |
rank_best |
number | every row is 15 | |
junes_compared |
number | every row is 23 | |
first_year |
number | every row is 2,004 | |
sessions_2026 |
number | every row is 21 |
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.
the exact SQL behind every number
SELECT round(anyIf(ret, y = 2026), 1) AS june_2026_pct,
arrayCount(x -> x > anyIf(ret, y = 2026), groupArrayIf(ret, y != 2026)) + 1 AS rank_best,
count() AS junes_compared,
min(y) AS first_year,
anyIf(sessions, y = 2026) AS sessions_2026
FROM (
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS y,
uniqExact(toDate(toTimeZone(window_start, 'America/New_York'))) AS sessions,
(argMax(toFloat64(close), window_start) / argMin(toFloat64(open), window_start) - 1) * 100 AS ret
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY')
AND window_start >= toDateTime('2003-01-01 00:00:00')
AND window_start < toDateTime('2026-07-01 00:00:00')
AND toMonth(toTimeZone(window_start, 'America/New_York')) = 6
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY y
HAVING sessions >= 17
)
Run your own version of this
The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.
More from this analysisMarket Recap: June 2026
21 sessions, verified from the tape (Juneteenth closure receipt included)
scalar 1×3
→
SPY sessions up vs down across the month, one cheap receipt
scalar 1×4
→
June: whole-tape options contract volume and same-day-expiry share (one scan)
scalar 1×3
→
June's corporate calendar: dividends, splits, listings, filings (June 30 index gap disclosed)
scalar 1×6
→
May, recomputed identically for contrast (one scan)
scalar 1×3
→
Advancers vs decliners for June (close vs the last May close), liquidity filter disclosed
scalar 1×4
→
See all 2,170 queries →