septembers_by_year
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-09-18, from the-september-effect.
| year | sep_return_pct |
|---|---|
| 2004 | 0.59 |
| 2005 | 0.38 |
| 2006 | 2.25 |
| 2007 | 3.38 |
| 2008 | -9.94 |
| 2009 | 3.05 |
| 2010 | 8.38 |
| 2011 | -7.42 |
| 2012 | 1.99 |
| 2013 | 2.66 |
| 2014 | -1.84 |
| 2015 | -3.06 |
| 2016 | -0.5 |
| 2017 | 1.51 |
| 2018 | 0.14 |
| 2019 | 1.48 |
| 2020 | -4.13 |
| 2021 | -4.97 |
| 2022 | -9.62 |
| 2023 | -5.08 |
| 2024 | 1.79 |
| 2025 | 3.28 |
- Rows × columns
- 22 × 2
- 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 |
|---|---|---|---|
year |
number | 2,004 to 2,025 | |
sep_return_pct |
number | -9.94 to 8.38 | percent |
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
WITH month_ends AS
(
SELECT
toStartOfMonth(date) AS month_start,
argMax(toFloat64(close), date) AS month_end_close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date < toStartOfYear(today())
GROUP BY month_start
),
monthly_returns AS
(
SELECT
month_start,
month_end_close,
lagInFrame(month_end_close, 1) OVER (ORDER BY month_start ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS prev_close
FROM month_ends
)
SELECT
toYear(month_start) AS year,
round((month_end_close / prev_close - 1) * 100, 2) AS sep_return_pct
FROM monthly_returns
WHERE prev_close > 0
AND toMonth(month_start) = 9
ORDER BY year
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 analysisthe-september-effect
worst_septembers
ranking 3×2
→
decades
ranking 3×4
→
monthly
table 12×6
→
Top 25 weekly-options underlyings by distinct contracts traded, with expiration weekdays
ranking 25×4
→
Annualized volatility vs total return, 25 large caps, calmest to wildest (~2 years)
ranking 25×3
→
SPY options median spread by expiration date, near-the-money strikes only
ranking 25×4
→
See all 2,358 queries →