Three-Fund Portfolio with a trend filter: drawdowns, whipsaws and 2022
The portfolio
34% VTI, 33% VXUS, 33% BND; rebalanced yearly. See Bogleheads Three-Fund in the portfolio app and the Bogleheads 3-Fund guide.
What the filter did here
- The 10-month filter cut the worst drawdown from -37.2% (Oct 2007–Feb 2009) to -14.4% (Dec 2019–Mar 2020).
- It gave up 0.4 points a year (7.1% versus 6.7%).
- The Sharpe ratio was 0.69 for the plain portfolio and 0.86 with the filter (with a risk-free rate of 0%, which flatters the time in cash).
- It was in cash in 23% of months and switched 28 times (about 1.0 a year); the longest stretch out was 18 months (Oct 2000–Mar 2002).
- In the months it sat out, the plain portfolio itself returned 12.5% in total, so being out cost those gains.
- 6 exits were reversed within three months while the portfolio rose; together those sat out a gain of 43.6%.
- In the 2007–09 financial crisis the plain portfolio returned -37.2% and the filtered one -12.9%; in the 12 months after, 40.9% versus 15.6%. In 2022: -16.3% plain, -3.7% filtered.
- The 6-month window switched 2.4 times a year (CAGR 5.7%, max drawdown -18.4%); the 12-month window 0.9 (6.7%, -14.4%).
Here the filter traded some return for markedly shallower drawdowns.
Growth of $10,000
Drawdowns
Plain versus filtered, side by side
| Plain | 10-month filter | 6-month filter | 12-month filter | |
|---|---|---|---|---|
| Growth of $10,000 | $74,430 | $66,155 | $51,499 | $66,358 |
| CAGR | 7.1% | 6.7% | 5.7% | 6.7% |
| Volatility (annualized) | 10.7% | 7.8% | 7.6% | 8.0% |
| Sharpe ratio (risk-free 0%) | 0.69 | 0.86 | 0.78 | 0.85 |
| Max drawdown | -37.2%Oct 2007 → Feb 2009; recovered Jan 2011 | -14.4%Dec 2019 → Mar 2020; recovered Dec 2020 | -18.4%Mar 2000 → Jan 2003; recovered Jan 2004 | -14.4%Dec 2019 → Mar 2020; recovered Dec 2020 |
| Worst calendar year | 2008 (-24.9%) | 2008 (-9.9%) | 2008 (-9.2%) | 2008 (-9.9%) |
| 2022 calendar year | -16.3% | -3.7% | -6.5% | -3.7% |
| Months in cash | 0% | 23%81 of 352 months | 28%100 of 352 months | 22%77 of 352 months |
| Switches per year | none | 1.028 in 29.3 years | 2.470 in 29.3 years | 0.926 in 29.3 years |
| Longest time out of the market | n/a | 18 monthsOct 2000–Mar 2002 | 10 monthsJul 2008–Apr 2009 | 17 monthsNov 2000–Mar 2002 |
| Plain portfolio's return while the filter was out | n/a | 12.5%gains it gave up | 44.5%gains it gave up | 12.2%gains it gave up |
| Quick reversals (out for 3 months or less, then back in, while the plain portfolio rose) | n/a | 6sat out 43.6% combined | 26sat out 127.2% combined | 5sat out 41.1% combined |
All columns cover Jun 1997–Sep 2026, the months for which the 6-, 10- and 12-month filters all have data, so they are directly comparable. Sharpe uses a risk-free rate of 0%, which flatters the columns that sit in cash. The worst calendar year counts full years only.
The S&P 500's major declines and the year after
| Compounded return over | Plain | 10-month filter | 6-month filter | 12-month filter |
|---|---|---|---|---|
| 1998 LTCM sell-off (S&P 500 -15.3%)Jul 1998–Aug 1998 | -9.8% | -9.8% | -9.8% | -9.8% |
| The next 12 monthsSep 1998–Aug 1999 | 21.9% | 12.9% | 12.9% | 12.9% |
| 2000–02 dot-com bear (S&P 500 -44.7%)Sep 2000–Sep 2002 | -25.0% | -6.9% | -10.6% | -8.2% |
| The next 12 monthsOct 2002–Sep 2003 | 19.9% | 10.5% | 6.7% | 10.5% |
| 2007–09 financial crisis (S&P 500 -50.8%)Nov 2007–Feb 2009 | -37.2% | -12.9% | -12.2% | -12.9% |
| The next 12 monthsMar 2009–Feb 2010 | 40.9% | 15.6% | 23.4% | 15.6% |
| 2020 COVID crash (S&P 500 -19.4%)Jan 2020–Mar 2020 | -14.4% | -14.4% | -4.7% | -14.4% |
| The next 12 monthsApr 2020–Mar 2021 | 35.6% | 22.0% | 22.0% | 22.0% |
| 2022 inflation bear (S&P 500 -23.9%)Jan 2022–Sep 2022 | -22.0% | -3.7% | -3.7% | -3.7% |
| The next 12 monthsOct 2022–Sep 2023 | 13.5% | -0.6% | 2.6% | -0.6% |
The decline windows are computed, not chosen: every peak-to-trough fall of at least 15% (month-end) in the S&P 500. Each row compounds the portfolio's monthly returns from the month after the S&P 500's peak through its trough. The 1987 crash falls before this comparison window starts (Jun 1997) and is not shown.
Three-Fund Portfolio's own deepest drawdowns
| Three-Fund Portfolio's deepest drawdowns (peak → trough) | Plain | 10-month filter, same months | 10-month filter, next 12 months | Plain, next 12 months |
|---|---|---|---|---|
| Oct 2007–Feb 2009recovered Jan 2011 | -37.2% | -12.9% | 15.6% | 40.9% |
| Mar 2000–Sep 2002recovered Feb 2004 | -25.7% | -7.8% | 10.5% | 19.9% |
| Dec 2021–Sep 2022recovered Mar 2024 | -22.0% | -3.7% | -0.6% | 13.5% |
The three deepest declines of the plain portfolio inside the comparison window. A bond-heavy portfolio's deepest decline is usually 2022, an equity-heavy one's 2008; the filter behaves differently in each.
Cash that earns interest
The builder's filter earns nothing while it is out of the market. If the cash had been in short Treasuries instead, the 10-month filter's numbers over the same months would have been:
| 10-month filter, cash at 0% | 10-month filter, cash in short Treasuries | |
|---|---|---|
| Growth of $10,000 | $66,155 | $82,779 |
| CAGR | 6.7% | 7.5% |
| Max drawdown | -14.4% | -14.5% |
| Sharpe ratio (risk-free 0%) | 0.86 | 0.96 |
With cash in short Treasuries the filtered portfolio earned 7.5% a year against 7.1% for the plain portfolio, so it ended ahead of the plain portfolio.
Short Treasuries = BIL, extended with SHV (from Feb 2007) and the Vanguard Short-Term Treasury fund VFISX (1–3 year Treasuries, from Nov 1991). Before 2007 that is more duration than T-bills. Not available in the builder; computed for this page only.
Why these three windows
10 months is the window Mebane Faber published in 2007 and the monthly equivalent of the 200-day moving average. 6 and 12 months bracket it. We fixed these three before computing any page and use the same three for every portfolio; we did not search for the window that looks best on each one. Choosing the best of many windows after the fact makes any filter look better than it would have been in real time.
Windows of 8, 9, 11 and 12 months keep 99% of the 10-month filter's Sharpe ratio (robust).
Try it in the builder
Open Bogleheads Three-Fund in the portfolio app and apply the same filter:
- Customize
- Add Overlay
- Set Trend length to 10 months (the default)
- Add overlay
You should see what this page shows. Without the overlay the builder reports May 1996–Sep 2026: $10,000 grew to $84,554, max drawdown -37.2%, CAGR 7.3%. With the 10-month overlay its figures start Apr 1997 (the tables above start 2 months later, Jun 1997, so that the 12-month column covers the same months): $10,000 grew to $70,844, max drawdown -14.4%, CAGR 6.9%.
Frequently asked questions
- Does a trend filter help Three-Fund Portfolio?
- The 10-month filter cut the worst drawdown from -37.2% (Oct 2007–Feb 2009) to -14.4% (Dec 2019–Mar 2020). It gave up 0.4 points a year (7.1% versus 6.7%). The Sharpe ratio was 0.69 for the plain portfolio and 0.86 with the filter (with a risk-free rate of 0%, which flatters the time in cash). Here the filter traded some return for markedly shallower drawdowns.
- How often does a 10-month trend filter trade Three-Fund Portfolio?
- It was in cash in 23% of months and switched 28 times (about 1.0 a year); the longest stretch out was 18 months (Oct 2000–Mar 2002). 6 exits were reversed within three months while the portfolio rose; together those sat out a gain of 43.6%. The 6-month window switched 2.4 times a year (CAGR 5.7%, max drawdown -18.4%); the 12-month window 0.9 (6.7%, -14.4%).
- What did Three-Fund Portfolio with a trend filter do in 2022?
- In calendar 2022 Three-Fund Portfolio returned -16.3% without a filter, -3.7% with the 10-month filter, -6.5% with the 6-month and -3.7% with the 12-month filter. Over the S&P 500's 2022 inflation bear (Jan 2022–Sep 2022, -23.9%) the plain portfolio returned -22.0% and the 10-month filtered one -3.7%; in the 12 months after the trough, 13.5% versus -0.6%.
Caveats
- Cash earns 0% in the builder's filter. With cash in short Treasuries the 10-month filter's CAGR is 7.5% instead of 6.7% (see the Treasury-cash table).
- Signals are month-end only: a crash inside one month (October 1987 is the classic case) is not seen until that month's close, and trades are assumed to execute at the closing level that produced the signal.
- Every exit is a sale. In a taxable account each of the 14 exits to cash over this window could realise capital gains; no taxes or trading costs are modelled.
- On re-entry the simulation resumes the portfolio's own path, as if its weights had drifted and been rebalanced on schedule while the filter was out; an investor would instead buy back at the target weights. The difference is small for a yearly-rebalanced book.
- Sharpe ratios use a risk-free rate of 0%, which flatters the columns that spend time in cash.
- Holdings before their ETF's launch use older funds or indexes as proxies (VTI, VXUS and BND); see their fund-history pages for how closely each proxy tracked.
- One historical path; past results do not predict future results. Not investment advice.
Methodology
- Source
- Yahoo Finance via MarketHeist, monthly adjusted close (dividends reinvested), to the last complete calendar month. Holdings before their ETF's launch use proxy funds, spliced on returns; see each holding's fund-history page.
- The filter
- The filter looks at the whole portfolio's own value at each month-end. If it is above its average of the last N month-ends the portfolio is held for the next month, otherwise it sits in cash (earning 0%). N is 10 for the headline column, 6 and 12 for the sensitivity columns. It is the same rule the builder's Add Overlay applies, and the same function (the portfolio engine's trend-filter overlay) computes every number here. The same rule on a single fund is on the trend-timing strategy page.
- Comparison window
- The filter needs N months of history for its average, plus one month for the next-month execution, so each filtered series starts N+1 months after the plain portfolio. Every column here is cut to Jun 1997–Sep 2026, the months all three filters have, and measured with the same engine functions the app uses after an overlay. The builder's own numbers start earlier for shorter windows (10 months: Apr 1997).
- Columns
- Plain: the portfolio as simulated by the portfolio engine (yearly rebalancing), cut to the comparison window. Filtered: the same monthly returns while in the market, 0 while out. Growth of $10,000, CAGR, volatility, Sharpe (risk-free 0%) and drawdowns are computed on the cut series, month-end.
- Activity
- Months in cash, switches (changes between in and out), out-of-market stretches and the plain portfolio's return while out are computed from an independent recomputation of the signal that is checked against the engine month by month before a page is published.
- Treasury cash
- A page-only variant that replaces each out-of-market month's 0% with the return of short Treasuries (BIL, extended with SHV and VFISX).
- Window stability
- Windows of 8, 9, 11 and 12 months keep 99% of the 10-month filter's Sharpe ratio (robust).
- Generated
- 2026-10-10; data through Sep 2026. Reproduce hash of the 10-month-filtered portfolio over its own window (Apr 1997–Sep 2026):
d2ac397ee164a78d - Related
- All trend-filtered portfolios · Bogleheads Three-Fund in the portfolio app
All trend-filtered portfolios →
Historical simulation, not investment advice.