STRASMORE/EXPLORE 3,293 QUERIES 22Y EQUITIES · 12Y OPTIONS

3,293 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

The 7-5-3-1 Rule in Mutual Funds, Tested
The eight weakest seven-year windows on SPY, dividends counted as cashtable · 2026-09-17 · 8×6 A flat 500-a-month SIP against the same plan stepped up 10% a year, contributions onlytable · 2026-09-17 · 10×5 Rolling seven-year returns on SPY, one window per start monthseries · 2026-09-17 · 193×5Preview: a 16-point series, ending higher. Where the seven-year windows landed: SPY windows by return band, dividends countedranking · 2026-09-17 · 5×3Preview: 5 ranked values, smallest first.
The eight weakest seven-year windows on SPY, dividends counted as cash

The eight weakest seven-year windows on SPY, dividends counted as cash

most recentas of table 8×6read in context →
The eight weakest seven-year windows on SPY, dividends counted as cash — 8 rows by 6 columns, computed from US exchange, SIP and OPRA data.
start_labelend_labelstart_closeend_closeprice_return_pctwith_dividends_pct
Oct 2004Oct 2011113.65109.93-3.37
Dec 2004Dec 2011119.23124.974.814.6
Sep 2003Sep 2010101.96108.466.414.8
Jan 2005Jan 2012120.3127.5616.3
Jun 2005Jun 2012120.5128.166.417.2
Nov 2004Nov 2011113.511227.517.8
Sep 2004Sep 2011111.32120.948.618.6
Nov 2003Nov 2010105.99118.5311.820.5
the exact SQL behind every number
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
    formatDateTime(s.first_session, '%b %Y')             AS start_label,
    formatDateTime(e.first_session, '%b %Y')             AS end_label,
    round(s.first_close, 2)                              AS start_close,
    round(e.first_close, 2)                              AS end_close,
    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 with_dividends_pct ASC, s.month_start ASC
LIMIT 8
$