The 7-5-3-1 Rule in Mutual Funds, Tested
What the 7-5-3-1 rule for SIPs actually says, and a test of its 7-year claim against rolling seven-year S&P 500 returns, with the step-up arithmetic shown.
The 7-5-3-1 rule in mutual funds is a memory aid that Indian fund houses attach to systematic investment plans, or SIPs (a fixed purchase of fund units every month): stay invested for at least 7 years, spread the money across 5 equity buckets, expect 3 emotional phases along the way, and raise the instalment once a year. It is a marketing heuristic, and no part of it is a return guarantee. Three of the four digits are habits; only the 7 makes a claim that history can check, and the panels below run that check on rolling seven-year windows of the S&P 500.
What does the 7-5-3-1 rule mean?
Asset management companies (AMCs, the firms that run mutual funds) use the four digits as a script for new SIP investors.
7 years is the holding horizon. The pitch is that an equity SIP held for seven years or more has rarely finished with a loss in the past, and that an investor who commits to seven years up front is less likely to quit during a drawdown (a fall from a prior peak).
5 buckets is a diversification recipe, often called the five-finger framework: quality large caps, value stocks, growth at a reasonable price (GARP), mid and small caps, and international equity. The rule proposes roughly equal sleeves rather than one concentrated fund.
3 phases describes the emotional arc the AMC decks expect a SIP investor to pass through, and the decks name the phases exactly this way: the disappointment phase, when early returns land below what the investor imagined; the irritation phase, when the running return sits near what a bank deposit would have paid; and the panic phase, when the running return turns negative during a market fall. The rule's message is that all three are expected stops on the route rather than exits.
1 step-up is the instruction to raise the monthly instalment once a year, usually by 10% or by a fixed amount, in step with rising income.
The rule shares a family with the 8-4-3 rule of compounding, another AMC mnemonic. Both are sales-floor shorthand for the same habits (invest regularly, stay long, spread out, add more) dressed up as numbers.
Is 7 years long enough? The claim, tested on the S&P 500
The 7 is the only digit with a claim that data can test. The rule's home benchmark is India's Nifty 50, which sits outside the US-listed record behind this page, and the test here uses the S&P 500 through SPY, the exchange-traded fund that tracks it, on every daily close the record holds.
The method is a rolling window. Take the first trading session of each calendar month, note the SPY close, and compare it with the close on the first session of the month exactly 84 months later. Repeat for every month with a full seven years of history ahead of it. Two returns are shown per window: the price change alone, and the price change with every SPY cash dividend that went ex-dividend inside the window added back at face value. The second figure understates a true total return, which would have compounded those dividends into more units, and it is the one used for the counts below.
| start_date | opened | closed | price_return_pct | with_dividends_pct |
|---|---|---|---|---|
| 2003-09-10 | Sep 2003 | Sep 2010 | 6.4 | 14.8 |
| 2003-10-01 | Oct 2003 | Oct 2010 | 12.3 | 21.3 |
| 2003-11-03 | Nov 2003 | Nov 2010 | 11.8 | 20.5 |
| 2003-12-01 | Dec 2003 | Dec 2010 | 12.5 | 21 |
| 2004-01-02 | Jan 2004 | Jan 2011 | 14.2 | 23.1 |
| 2004-02-02 | Feb 2004 | Feb 2011 | 14.7 | 23.4 |
| 2004-03-01 | Mar 2004 | Mar 2011 | 12.7 | 21.2 |
| 2004-04-01 | Apr 2004 | Apr 2011 | 17 | 26.2 |
| 2004-05-03 | May 2004 | May 2011 | 21.5 | 30.8 |
| 2004-06-01 | Jun 2004 | Jun 2011 | 17 | 26.2 |
| 2004-07-01 | Jul 2004 | Jul 2011 | 18.6 | 28.4 |
| 2004-08-02 | Aug 2004 | Aug 2011 | 15.9 | 25.9 |
| 2004-09-01 | Sep 2004 | Sep 2011 | 8.6 | 18.6 |
| 2004-10-01 | Oct 2004 | Oct 2011 | -3.3 | 7 |
| 2004-11-01 | Nov 2004 | Nov 2011 | 7.5 | 17.8 |
| 2004-12-01 | Dec 2004 | Dec 2011 | 4.8 | 14.6 |
| 2005-01-03 | Jan 2005 | Jan 2012 | 6 | 16.3 |
| 2005-02-01 | Feb 2005 | Feb 2012 | 11.4 | 21.9 |
| 2005-03-01 | Mar 2005 | Mar 2012 | 13.6 | 23.9 |
| 2005-04-01 | Apr 2005 | Apr 2012 | 20.8 | 31.9 |
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
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_startThe series holds 193 seven-year windows, the first opening in Sep 2003 and the latest in Sep 2019. The first window returned 14.8% with dividends counted; the latest returned 177.6%. The line is the shape the rule is betting on: a seven-year return that swings widely with the start month and spends most of its time above zero.
How many 7-year windows lost money?
Sorting every window into return bands answers the rule's central question directly.
| bucket | window_count | share_pct |
|---|---|---|
| Below 0% | 0 | 0 |
| 0% to 25% | 17 | 8.8 |
| 25% to 50% | 34 | 17.6 |
| 50% to 100% | 13 | 6.7 |
| Above 100% | 129 | 66.8 |
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
),
windows AS
(
SELECT
((e.first_close + e.cash_before - s.cash_before) / s.first_close - 1) * 100 AS ret
FROM grid AS s
INNER JOIN grid AS e ON e.month_start = s.end_month
),
stats AS
(
SELECT
count() AS total,
countIf(ret < 0) AS below_zero,
countIf(ret >= 0 AND ret < 25) AS to_25,
countIf(ret >= 25 AND ret < 50) AS to_50,
countIf(ret >= 50 AND ret < 100) AS to_100,
countIf(ret >= 100) AS above_100
FROM windows
)
SELECT
tupleElement(band, 1) AS bucket,
tupleElement(band, 2) AS window_count,
tupleElement(band, 3) AS share_pct
FROM stats
ARRAY JOIN
[
('Below 0%', below_zero, round(below_zero / total * 100, 1)),
('0% to 25%', to_25, round(to_25 / total * 100, 1)),
('25% to 50%', to_50, round(to_50 / total * 100, 1)),
('50% to 100%', to_100, round(to_100 / total * 100, 1)),
('Above 100%', above_100, round(above_100 / total * 100, 1))
] AS bandOf the 193 windows, 0 finished below their starting value with dividends counted, a 0% share. At the other end, 129 windows more than doubled.
Two cautions on reading that count. First, the sample begins in Sep 2003; a window that opened before that date is not in the test, and a small number here means "few in this sample" rather than "few in all of history". Longer US records do contain losing seven-year stretches, and the windows that opened in 2001 and 2002 and closed into the 2008 to 2009 bear market are the usual modern examples. Second, overlapping windows are not independent trials. A single bear market pulls down every window that ends inside it, and a cluster of losing windows usually describes one episode rather than several.
What was the worst 7-year window?
| start_label | end_label | start_close | end_close | price_return_pct | with_dividends_pct |
|---|---|---|---|---|---|
| Oct 2004 | Oct 2011 | 113.65 | 109.93 | -3.3 | 7 |
| Dec 2004 | Dec 2011 | 119.23 | 124.97 | 4.8 | 14.6 |
| Sep 2003 | Sep 2010 | 101.96 | 108.46 | 6.4 | 14.8 |
| Jan 2005 | Jan 2012 | 120.3 | 127.5 | 6 | 16.3 |
| Jun 2005 | Jun 2012 | 120.5 | 128.16 | 6.4 | 17.2 |
| Nov 2004 | Nov 2011 | 113.51 | 122 | 7.5 | 17.8 |
| Sep 2004 | Sep 2011 | 111.32 | 120.94 | 8.6 | 18.6 |
| Nov 2003 | Nov 2010 | 105.99 | 118.53 | 11.8 | 20.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 8The weakest window in the sample opened in Oct 2004 and closed in Oct 2011. SPY moved from $113.65 to $109.93, a price return of -3.3%, and 7% once dividends are added back. The gap between those two columns, visible on every row, is the part of a seven-year return that a price chart never shows.
One more point about what a rolling window measures: it is the return on a single lump sum held for the full seven years. A SIP spreads the money over 84 purchases, and the last of those has been invested for a month rather than seven years, so the SIP's seven-year outcome is a blend of windows of shrinking length, weighted toward the recent ones. Dollar-cost averaging describes the same mechanism, and it cuts both ways: a fall late in the seven years hits most of the money, a fall early hits little of it. The lump-sum test above is a generous version of the rule's claim rather than a strict one.
What does a 10% annual step-up do to a SIP?
The 1 in the rule is arithmetic, and it holds whatever markets do. Start with 500 a month, in any currency, and raise it 10% each year. The panel below sets ten years of that against a flat 500.
| year | step_up_instalment | flat_invested_k | step_up_invested_k | extra_invested_pct |
|---|---|---|---|---|
| 1 | 500 a month | 6 | 6 | 0 |
| 2 | 550 a month | 12 | 12.6 | 5 |
| 3 | 605 a month | 18 | 19.9 | 10.3 |
| 4 | 666 a month | 24 | 27.8 | 16 |
| 5 | 732 a month | 30 | 36.6 | 22.1 |
| 6 | 805 a month | 36 | 46.3 | 28.6 |
| 7 | 886 a month | 42 | 56.9 | 35.5 |
| 8 | 974 a month | 48 | 68.6 | 42.9 |
| 9 | 1072 a month | 54 | 81.5 | 50.9 |
| 10 | 1179 a month | 60 | 95.6 | 59.4 |
The exact SQL behind every number
SELECT
year,
concat(toString(toUInt32(round(500 * pow(1.10, year - 1)))), ' a month') AS step_up_instalment,
round(6000 * year / 1000, 1) AS flat_invested_k,
round(6000 * (pow(1.10, year) - 1) / 0.10 / 1000, 1) AS step_up_invested_k,
round(((pow(1.10, year) - 1) / 0.10 / year - 1) * 100, 1) AS extra_invested_pct
FROM
(
SELECT arrayJoin(range(1, 11)) AS year
)
ORDER BY yearBy year ten the instalment has grown to 1179 a month. Total contributions reach 95.6 thousand against 60 thousand for the flat plan, 59.4% more money put to work; at the halfway mark, year five, the gap is 22.1%. Every unit of that extra total is a contribution, and no return is assumed anywhere in the table. The step-up changes how many fund units the investor buys and keeps the instalment in step with a salary that also rises; the return on each unit is unaffected. AMC illustrations usually add an assumed growth rate on top, and that layer is an assumption rather than arithmetic.
What the three phases describe, and what they do not
Disappointment, irritation and panic are labels from AMC decks rather than measurements. They describe how a running SIP return feels at different levels, and the rule names them in advance as a way of making them feel expected. The rolling series above shows why the labels find an audience: the same seven-year holding reads as a triumph or a letdown depending on the month it began. The missing the best days argument is the other half of the same script, a case for staying put built on how concentrated index returns are in a few sessions.
Two practical notes round this out. SIP purchases fill at that day's net asset value (NAV), the once-a-day price at which a fund transacts, and when mutual funds trade walks through the cut-off mechanics. The 7% sell rule sits at the opposite pole, a rule for exiting fast rather than holding long. Both are heuristics, and neither carries a forecast.
FAQ
What is the 7-5-3-1 rule in mutual funds?
A SIP mnemonic used by Indian fund houses: invest for at least 7 years, diversify across 5 equity buckets, expect 3 emotional phases (disappointment, irritation, panic), and step up the instalment once a year. It is a behavioural guide and carries no performance promise.
Does the 7-5-3-1 rule guarantee no loss after 7 years?
No. In the S&P 500 sample above, 0 of 193 monthly seven-year windows ended below their starting value with dividends counted, and the sample only reaches back to Sep 2003. Longer records include losing seven-year stretches. A longer horizon lowers the odds of a loss without removing them.
What are the three phases in the 7-5-3-1 rule?
The disappointment phase (early returns below expectations), the irritation phase (a running return close to a bank deposit) and the panic phase (a negative running return during a market fall). They describe investor mood at different return levels and have no fixed dates.
How much more does a 10% step-up SIP invest over 10 years?
About 59.4% more in contributions. A 500-a-month plan stepped up 10% a year puts in 95.6 thousand over ten years against 60 thousand for a flat plan. That is contributions only; investment returns are a separate question.
How is the 7-5-3-1 rule different from the 8-4-3 rule?
The 8-4-3 rule describes a compounding pattern: how a balance growing at an assumed rate accelerates across three blocks of years. The 7-5-3-1 rule is about behaviour: horizon, diversification, temperament and contributions. Neither is a forecast.
Every panel above carries its SQL underneath. To rerun the seven-year test on another ticker or change the step-up rate, open the query on the Strasmore terminal and edit the constants.