{"slug":"the-7-5-3-1-rule-mutual-funds","qid":"worst_windows","label":"worst_windows","post_title":"the-7-5-3-1-rule-mutual-funds","post_url":"/blog/the-7-5-3-1-rule-mutual-funds#q-worst_windows","columns":["start_label","end_label","start_close","end_close","price_return_pct","with_dividends_pct"],"rows":[{"start_label":"Oct 2004","end_label":"Oct 2011","start_close":113.65,"end_close":109.93,"price_return_pct":-3.3,"with_dividends_pct":7},{"start_label":"Dec 2004","end_label":"Dec 2011","start_close":119.23,"end_close":124.97,"price_return_pct":4.8,"with_dividends_pct":14.6},{"start_label":"Sep 2003","end_label":"Sep 2010","start_close":101.96,"end_close":108.46,"price_return_pct":6.4,"with_dividends_pct":14.8},{"start_label":"Jan 2005","end_label":"Jan 2012","start_close":120.3,"end_close":127.5,"price_return_pct":6,"with_dividends_pct":16.3},{"start_label":"Jun 2005","end_label":"Jun 2012","start_close":120.5,"end_close":128.16,"price_return_pct":6.4,"with_dividends_pct":17.2},{"start_label":"Nov 2004","end_label":"Nov 2011","start_close":113.51,"end_close":122,"price_return_pct":7.5,"with_dividends_pct":17.8},{"start_label":"Sep 2004","end_label":"Sep 2011","start_close":111.32,"end_close":120.94,"price_return_pct":8.6,"with_dividends_pct":18.6},{"start_label":"Nov 2003","end_label":"Nov 2010","start_close":105.99,"end_close":118.53,"price_return_pct":11.8,"with_dividends_pct":20.5}],"shape":"table","sql":"WITH\n    monthly AS\n    (\n        SELECT\n            toStartOfMonth(date)            AS month_start,\n            toDate(min(date))               AS first_session,\n            argMin(toFloat64(close), date)  AS first_close\n        FROM global_markets.stocks_daily_aggs\n        WHERE ticker = 'SPY'\n        GROUP BY month_start\n    ),\n    divs AS\n    (\n        SELECT\n            toStartOfMonth(ex_dividend_date) AS month_start,\n            sum(cash)                        AS month_cash\n        FROM\n        (\n            SELECT\n                ex_dividend_date,\n                max(toFloat64(cash_amount)) AS cash\n            FROM global_markets.stocks_dividends\n            WHERE ticker = 'SPY'\n            GROUP BY ex_dividend_date\n        )\n        GROUP BY month_start\n    ),\n    grid AS\n    (\n        SELECT\n            m.month_start                AS month_start,\n            m.first_session              AS first_session,\n            m.first_close                AS first_close,\n            addMonths(m.month_start, 84) AS end_month,\n            sum(ifNull(d.month_cash, 0)) OVER (ORDER BY m.month_start ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS cash_before\n        FROM monthly AS m\n        LEFT JOIN divs AS d ON d.month_start = m.month_start\n    )\nSELECT\n    formatDateTime(s.first_session, '%b %Y')             AS start_label,\n    formatDateTime(e.first_session, '%b %Y')             AS end_label,\n    round(s.first_close, 2)                              AS start_close,\n    round(e.first_close, 2)                              AS end_close,\n    round((e.first_close / s.first_close - 1) * 100, 1)  AS price_return_pct,\n    round(((e.first_close + e.cash_before - s.cash_before) / s.first_close - 1) * 100, 1) AS with_dividends_pct\nFROM grid AS s\nINNER JOIN grid AS e ON e.month_start = s.end_month\nORDER BY with_dividends_pct ASC, s.month_start ASC\nLIMIT 8","computed_at":"2026-09-17T15:41:34.152907+00:00","elapsed":0.004940271}