STRASMORE/EXPLORE 3,293 QUERIES

Rolling seven-year returns on SPY, one window per start month

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-17, from The 7-5-3-1 Rule in Mutual Funds, Tested.

as of series 193×5read in context →
Rolling seven-year returns on SPY, one window per start month — 193 rows by 5 columns, computed from US exchange, SIP and OPRA data.
start_dateopenedclosedprice_return_pctwith_dividends_pct
2003-09-10Sep 2003Sep 20106.414.8
2003-10-01Oct 2003Oct 201012.321.3
2003-11-03Nov 2003Nov 201011.820.5
2003-12-01Dec 2003Dec 201012.521
2004-01-02Jan 2004Jan 201114.223.1
2004-02-02Feb 2004Feb 201114.723.4
2004-03-01Mar 2004Mar 201112.721.2
2004-04-01Apr 2004Apr 20111726.2
2004-05-03May 2004May 201121.530.8
2004-06-01Jun 2004Jun 20111726.2
2004-07-01Jul 2004Jul 201118.628.4
2004-08-02Aug 2004Aug 201115.925.9
2004-09-01Sep 2004Sep 20118.618.6
2004-10-01Oct 2004Oct 2011-3.37
2004-11-01Nov 2004Nov 20117.517.8
2004-12-01Dec 2004Dec 20114.814.6
2005-01-03Jan 2005Jan 2012616.3
2005-02-01Feb 2005Feb 201211.421.9
2005-03-01Mar 2005Mar 201213.623.9
2005-04-01Apr 2005Apr 201220.831.9
2005-05-02May 2005May 201220.932.1
2005-06-01Jun 2005Jun 20126.417.2
2005-07-01Jul 2005Jul 201214.225.7
2005-08-01Aug 2005Aug 201211.322.4
2005-09-01Sep 2005Sep 201215.126.4
2005-10-03Oct 2005Oct 201217.729.6
2005-11-01Nov 2005Nov 201218.530.6
2005-12-01Dec 2005Dec 201211.723.1
2006-01-03Jan 2006Jan 201315.327.6
2006-02-01Feb 2006Feb 201317.829.9
2006-03-01Mar 2006Mar 201317.629.6
2006-04-03Apr 2006Apr 201320.332.8
2006-05-01May 2006May 201321.433.8
2006-06-01Jun 2006Jun 201327.740.3
2006-07-03Jul 2006Jul 201326.339.6
2006-08-01Aug 2006Aug 201334.147.6
2006-09-01Sep 2006Sep 201325.138.1
2006-10-02Oct 2006Oct 201327.240.7
2006-11-01Nov 2006Nov 201328.841.8
2006-12-01Dec 2006Dec 201328.741.5
2007-01-03Jan 2007Jan 201429.442.8
2007-02-01Feb 2007Feb 201420.433.5
2007-03-01Mar 2007Mar 201431.645.1
2007-04-02Apr 2007Apr 201432.445.9
2007-05-01May 2007May 201426.739.6
2007-06-01Jun 2007Jun 201425.237.6
2007-07-02Jul 2007Jul 201429.842.6
2007-08-01Aug 2007Aug 201431.544.7
2007-09-04Sep 2007Sep 201434.647.6
2007-10-01Oct 2007Oct 20142638.7
2007-11-01Nov 2007Nov 201433.646.6
2007-12-03Dec 2007Dec 201439.352.6
2008-01-02Jan 2008Jan 201541.755.6
2008-02-01Feb 2008Feb 201544.759
2008-03-03Mar 2008Mar 201558.873.8
2008-04-01Apr 2008Apr 201550.665.4
2008-05-01May 2008May 201549.363.7
2008-06-02Jun 2008Jun 201552.366.9
2008-07-01Jul 2008Jul 201561.677.7
2008-08-01Aug 2008Aug 201566.382.7
2008-09-02Sep 2008Sep 201549.866
2008-10-01Oct 2008Oct 201565.583.7
2008-11-03Nov 2008Nov 2015116.7138.3
2008-12-01Dec 2008Dec 2015156.6182.2
2009-01-02Jan 2009Jan 2016116.2139.4
2009-02-02Feb 2009Feb 2016134.5160.6
2009-03-02Mar 2009Mar 2016180.6211.1
2009-04-01Apr 2009Apr 2016155.3182.4
2009-05-01May 2009May 2016136.6161.7
2009-06-01Jun 2009Jun 2016121.9145.1
2009-07-01Jul 2009Jul 2016127.4151.8
2009-08-03Aug 2009Aug 2016116138.5
2009-09-01Sep 2009Sep 2016117139.5
2009-10-01Oct 2009Oct 2016109.6132
2009-11-02Nov 2009Nov 2016102.3124.5
2009-12-01Dec 2009Dec 201697.3118.1
2010-01-04Jan 2010Jan 201798.7119.8
2010-02-01Feb 2010Feb 2017108.7130.6
2010-03-01Mar 2010Mar 2017114.3135.6
2010-04-01Apr 2010Apr 201799.8120.5
2010-05-03May 2010May 201798.3118.6
2010-06-01Jun 2010Jun 2017126.3149
2010-07-01Jul 2010Jul 2017135.7160.1
2010-08-02Aug 2010Aug 2017119.3141.6
2010-09-01Sep 2010Sep 2017128.5151.6
2010-10-01Oct 2010Oct 2017120.2142.6
2010-11-01Nov 2010Nov 2017117.2138.9
2010-12-01Dec 2010Dec 2017118.5139.8
2011-01-03Jan 2011Jan 2018111.5132.3
2011-02-01Feb 2011Feb 2018115.4135.6
2011-03-01Mar 2011Mar 2018104.5124.6
2011-04-01Apr 2011Apr 201893.4113.6
2011-05-02May 2011May 201894.5114.3
2011-06-01Jun 2011Jun 2018107.5127.9
2011-07-01Jul 2011Jul 2018103123.6
2011-08-01Aug 2011Aug 2018118.1139.5
2011-09-01Sep 2011Sep 2018139.6162.4
2011-10-03Oct 2011Oct 2018165.4191.1
2011-11-01Nov 2011Nov 2018124.2147.4
2011-12-01Dec 2011Dec 2018123.5146.1
2012-01-03Jan 2012Jan 201996.2118.9
2012-02-01Feb 2012Feb 2019103.9125.7
2012-03-01Mar 2012Mar 2019103.6124.6
2012-04-02Apr 2012Apr 2019101.5122.4
2012-05-01May 2012May 2019107.3128.3
2012-06-01Jun 2012Jun 2019114.2137.3
2012-07-02Jul 2012Jul 2019116.6138.8
2012-08-01Aug 2012Aug 2019114.3136.3
2012-09-04Sep 2012Sep 2019106.2127.6
2012-10-01Oct 2012Oct 2019103.2124.6
2012-11-01Nov 2012Nov 2019114.3136
2012-12-03Dec 2012Dec 2019120.3142.2
2013-01-02Jan 2013Jan 2020122.4144
2013-02-01Feb 2013Feb 2020114.3135.1
2013-03-01Mar 2013Mar 2020103.2123.9
2013-04-01Apr 2013Apr 202057.778.3
2013-05-01May 2013May 202078.799
2013-06-03Jun 2013Jun 202085.9105.5
2013-07-01Jul 2013Jul 202092.4112.7
2013-08-01Aug 2013Aug 202092.7111.8
2013-09-03Sep 2013Sep 2020114.5134.4
2013-10-01Oct 2013Oct 202099118.6
2013-11-01Nov 2013Nov 202087.4106.2
2013-12-02Dec 2013Dec 2020102.7121.1
2014-01-02Jan 2014Jan 2021101.6120.1
2014-02-03Feb 2014Feb 2021116135.4
2014-03-03Mar 2014Mar 2021110.6128.9
2014-04-01Apr 2014Apr 2021112.8131
2014-05-01May 2014May 2021122.1140.2
2014-06-02Jun 2014Jun 2021117.6135.3
2014-07-01Jul 2014Jul 2021118.5136.1
2014-08-01Aug 2014Aug 2021127.3145.3
2014-09-02Sep 2014Sep 2021125.2142.5
2014-10-01Oct 2014Oct 2021123.4141.5
2014-11-03Nov 2014Nov 2021128145.4
2014-12-01Dec 2014Dec 2021118.9136
2015-01-02Jan 2015Jan 2022132.5149.9
2015-02-02Feb 2015Feb 2022124.3142
2015-03-02Mar 2015Mar 2022102.8119.7
2015-04-01Apr 2015Apr 2022120.2137.7
2015-05-01May 2015May 202296.7113.8
2015-06-01Jun 2015Jun 202293.6110.7
2015-07-01Jul 2015Jul 202283.7101.4
2015-08-03Aug 2015Aug 202295.8113.3
2015-09-01Sep 2015Sep 2022106.7125.8
2015-10-01Oct 2015Oct 202290.8110.2
2015-11-02Nov 2015Nov 202282.8100.5
2015-12-01Dec 2015Dec 202293.4111
2016-01-04Jan 2016Jan 202389.4108.2
2016-02-01Feb 2016Feb 2023112.1131.6
2016-03-01Mar 2016Mar 202399.3118.3
2016-04-01Apr 2016Apr 202398.6117.1
2016-05-02May 2016May 202399.8118.2
2016-06-01Jun 2016Jun 2023100.6118.8
2016-07-01Jul 2016Jul 2023111.4129.9
2016-08-01Aug 2016Aug 2023110.4128.3
2016-09-01Sep 2016Sep 2023107.5125.4
2016-10-03Oct 2016Oct 202398116.2
2016-11-01Nov 2016Nov 2023100.3118.9
2016-12-01Dec 2016Dec 2023109.1127
2017-01-03Jan 2017Jan 2024109.8127.6
2017-02-01Feb 2017Feb 2024114.9132.4
2017-03-01Mar 2017Mar 2024113.9130.5
2017-04-03Apr 2017Apr 2024121.9139.1
2017-05-01May 2017May 2024109.6126.6
2017-06-01Jun 2017Jun 2024116.9133.5
2017-07-03Jul 2017Jul 2024125.2142.1
2017-08-01Aug 2017Aug 2024119.6136.1
2017-09-01Sep 2017Sep 2024122.8139.3
2017-10-02Oct 2017Oct 2024125.4141.8
2017-11-01Nov 2017Nov 2024121.8137.9
2017-12-01Dec 2017Dec 2024128.3144
2018-01-02Jan 2018Jan 2025117.5133.2
2018-02-01Feb 2018Feb 2025112.3127.3
2018-03-01Mar 2018Mar 2025118.1133.8
2018-04-02Apr 2018Apr 2025117.9134.5
2018-05-01May 2018May 2025110.8126.9
2018-06-01Jun 2018Jun 2025116.6132.3
2018-07-02Jul 2018Jul 2025127.2143.1
2018-08-01Aug 2018Aug 2025121.4136.8
2018-09-04Sep 2018Sep 2025120.9135.9
2018-10-01Oct 2018Oct 2025129.1144.1
2018-11-01Nov 2018Nov 2025149.8165.8
2018-12-03Dec 2018Dec 2025143.6159.2
2019-01-02Jan 2019Jan 2026173.1190.8
2019-02-01Feb 2019Feb 2026157.5173.9
2019-03-01Mar 2019Mar 2026144.8160.6
2019-04-01Apr 2019Apr 2026129.2144.9
2019-05-01May 2019May 2026147162.3
2019-06-03Jun 2019Jun 2026176.3192.6
2019-07-01Jul 2019Jul 2026152.2167.6
2019-08-01Aug 2019Aug 2026157172.4
2019-09-03Sep 2019Sep 2026162177.6
Rows × columns
193 × 5
Period covered
to
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for Rolling seven-year returns on SPY, one window per start month, derived from the stored result.
ColumnTypeRangeNotes
start_date date 2003-09-10 to 2019-09-03
opened text 193 distinct values (Apr 2004, Apr 2005, Apr 2006…)
closed text 193 distinct values (Apr 2011, Apr 2012, Apr 2013…)
price_return_pct number -3.3 to 180.6 percent
with_dividends_pct number 7 to 211.1 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.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

WITH
    monthly AS
    (
        SELECT
            toStartOfMonth(date)            AS month_start,
            toDate(min(date))               AS first_session,
            argMin(toFloat64(close), date)  AS first_close
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'SPY'
        GROUP BY month_start
    ),
    divs AS
    (
        SELECT
            toStartOfMonth(ex_dividend_date) AS month_start,
            sum(cash)                        AS month_cash
        FROM
        (
            SELECT
                ex_dividend_date,
                max(toFloat64(cash_amount)) AS cash
            FROM global_markets.stocks_dividends
            WHERE ticker = 'SPY'
            GROUP BY ex_dividend_date
        )
        GROUP BY month_start
    ),
    grid AS
    (
        SELECT
            m.month_start                AS month_start,
            m.first_session              AS first_session,
            m.first_close                AS first_close,
            addMonths(m.month_start, 84) AS end_month,
            sum(ifNull(d.month_cash, 0)) OVER (ORDER BY m.month_start ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS cash_before
        FROM monthly AS m
        LEFT JOIN divs AS d ON d.month_start = m.month_start
    )
SELECT
    toString(s.first_session)                            AS start_date,
    formatDateTime(s.first_session, '%b %Y')             AS opened,
    formatDateTime(e.first_session, '%b %Y')             AS closed,
    round((e.first_close / s.first_close - 1) * 100, 1)  AS price_return_pct,
    round(((e.first_close + e.cash_before - s.cash_before) / s.first_close - 1) * 100, 1) AS with_dividends_pct
FROM grid AS s
INNER JOIN grid AS e ON e.month_start = s.end_month
ORDER BY s.month_start
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysisThe 7-5-3-1 Rule in Mutual Funds, Tested
A flat 500-a-month SIP against the same plan stepped up 10% a year, contributions only table 10×5 → The eight weakest seven-year windows on SPY, dividends counted as cash table 8×6 → Where the seven-year windows landed: SPY windows by return band, dividends counted ranking 5×3 → SPY five-minute price marks across one full session series 78×2 → Where an average session's share volume lands on the clock, September 1 to 15, 2026 series 64×2 → Live price against a 15 minute delayed view, one SPY session series 37×5 → See all 3,293 queries →