Skip to main content
US market 18 min read

ETF Rotation Strategy Backtest: One Risk-On/Risk-Off Signal, Two Leverage Levels

ETF rotation strategy backtest, 2016-2026: a QQQ risk-on/risk-off signal drives a 2x rotation (24.3% CAGR, -19.3% drawdown) and a 3x version (41.0% CAGR).

Rerun this strategy with AI, no install

FinLab Studio opens in your browser: AI reruns the backtest with this article's rules, then you can change them and test again.

Rerun in Studio
Same signal, two risk budgets

ETF rotation strategy backtest equity curves: conservative 2x rotation and aggressive 3x regime system vs QQQ and SPY, 2016-2026

Reproduce it

Run this strategy

Copy the prompt to reproduce the evidence above with the article’s data, assumptions, and risk checks.

Tell your AI:

Help me set up FinLab and reproduce the ETF rotation strategy backtests in this article. Please read: https://finlab.finance/en/setup?relatedUrl=/en/blog/us-etf-rotation-strategy

No install, open FinLab Studio

An ETF rotation strategy backtest usually shows one set of rules and one equity curve. This one tests a single risk-on/risk-off signal at two different risk budgets, because the signal and the leverage are separate decisions and deserve separate evidence. The signal is read entirely from QQQ: risk-on when QQQ closes above its 200-day moving average and its trailing 126-day return is positive, risk-off otherwise. The conservative version expresses that signal through two 2x index ETFs (QLD and SSO); the aggressive version holds a single 3x growth ETF (TQQQ or TECL). In risk-off, both rotate into the same defensive sleeve of treasuries, gold, or cash-like bonds.

Over May 2016 to October 2026, the conservative rotation compounded at a 24.3% CAGR with a -19.3% maximum drawdown, a little over half of QQQ's -35.1% buy-and-hold loss. The aggressive version compounded at 41.0% with a -32.4% drawdown, turning 1intoabout1 into about 36.6 versus QQQ's $7.2. Both versions pass all three robustness checks further down (neighbouring parameters, two halves of the sample, and 0.1% trading costs), the aggressive one with much less margin. The numbers come from finlab backtests with downloadable code, and the most useful finding is about the signal itself: it does not predict lower returns in risk-off months. What it predicts is volatility, and that distinction decides whether leveraged ETFs are survivable at all. These two systems are part of a ten-strategy family that shares one execution model; the US quant trading strategies overview explains that shared engine in full and compares all ten.

The numbers at a glance

Metric Conservative (QLD/SSO) Aggressive (TQQQ/TECL) QQQ (buy & hold) SPY (buy & hold)
CAGR 24.3% 41.0% 20.7% 15.1%
Total return 874% 3,556% 619% 336%
Monthly Sharpe 1.30 1.18 1.09 1.01
Monthly Sortino 3.16 2.72 1.75 1.45
Max drawdown -19.3% -32.4% -35.1% -33.7%
Annualized volatility 19.2% 36.2% 22.0% 17.5%
Turnover (per year) 2.5x 4.9x — —
Trades 185 107 — —
Holdings at a time 2 1 1 1

Benchmarks use total-return (dividend-adjusted) prices over the identical 2016-05-02 to 2026-10-26 window. Every Sharpe and Sortino ratio in this article is computed without a risk-free rate, the same way for the strategies and the benchmarks. The leveraged ETF series already embed each fund's daily-reset behavior and expense ratio, so the volatility drag of 2x and 3x products is in the results rather than assumed away.

These figures replace the June 2026 version of this article, which reported 30.5% (conservative) and 55.1% (aggressive) CAGR over June 2016 to June 2026. Since then FinLab corrected its US price history (missing dividends were added to adjusted prices on 2026-10-10, and split and spin-off adjustments were fixed in October), and finlab 2.2.20 changed how a stop-loss that fires on a rebalance day is costed. The whole history was re-run, so the numbers moved for every year, not only for the four new months. The aggressive version moved the most: its CAGR fell from 55.1% to 41.0% and its maximum drawdown deepened from -29.3% to -32.4%.

The two systems are deliberately one idea at two leverage levels, and you should read them that way. They share the identical regime signal and the identical defensive sleeve; only the risk-on holdings and the stop differ. Running both does not diversify the signal risk: if the regime call is wrong, both are wrong together.

What "ETF rotation" means here

Rotation in this design has two layers. The first layer is the risk-on/risk-off switch: hold equity exposure when the trend regime supports it, rotate to defensive assets when it does not. Rules of this shape have a long public record: Faber (2007) showed that a simple 10-month moving-average switch on major asset classes historically cut drawdowns dramatically while keeping equity-like returns, and the positive 126-day-return condition used here is a direct application of the time-series momentum effect documented across assets by Moskowitz, Ooi & Pedersen (2012). The economic motivation for switching at all is that market returns and risk cluster into regimes, and ignoring regime shifts is costly for allocation, as modeled by Ang & Bekaert (2002).

The second layer is rotation within each sleeve. In risk-on, the conservative system ranks QLD (2x Nasdaq-100) against SSO (2x S&P 500) by 126-day return and holds the two strongest; with only two candidates, that means it held both 50/50 almost whenever it was invested. One naming clarification matters: despite the "sector rotation" label this system carries in the family table, its instruments are index ETFs, so it is an index-relative rotation between growth-tilted and broad-market exposure, with no sector SPDR funds involved. The aggressive system ranks TQQQ (3x Nasdaq-100) against TECL (3x technology) by 3-month-minus-1-month momentum and holds only the strongest. In risk-off, both systems rank IEF (7-10 year treasuries), GLD (gold), and SHY (short-term treasuries) by the same 3-month-minus-1-month momentum and hold the single strongest; in practice that defensive time went mostly to gold. Measured at the monthly rebalance snapshots, GLD was held in 11.8% of months, SHY in 6.3%, and IEF in 3.9%.

For rotation among industry funds, the sector rotation strategy backtest ranks the 11 SPDR sector ETFs using signals from their underlying stocks. To adjust equity exposure without leveraged ETFs, the QQQ volatility targeting backtest scales QQQ against short-term Treasuries instead.

For rotation among unleveraged funds that select momentum stocks, the momentum ETF study of SPMO, MTUM and four peers tests relative-strength rotation and trend filters against QQQ. Its instruments and validation results differ from the leveraged index rotation here.

See the U.S. ETF rotation strategy page for more details.

Copy this prompt to your AI agent

FinLab's setup path is now one prompt. Paste it into Codex app or Claude cowork, and the AI will read https://finlab.finance/en/setup, install the FinLab skill when needed, then run or modify the strategy in this article.

Show Code
Help me set up FinLab and build an ETF rotation strategy: https://finlab.finance/en/setup

The setup page is https://finlab.finance/en/setup.

What the signal actually knows

These are ETF-timing systems with no stock universe underneath, so the stock-level decile sorts used in the US momentum strategy study do not apply here. The equivalent test is to interrogate the signal directly: when the regime flag flips, what does QQQ actually do next?

Risk-off regime spells shaded over QQQ and the aggressive 3x system, 2016-2026 ETF timing backtest

The timeline above shades the 9 risk-off spells that lasted at least 10 trading days. The signal stepped aside for the late-2018 correction, most of the 2022 bear market, and the March-May 2025 sell-off, and it also went risk-off briefly in March-April 2026. The March 2020 crash shows the limit of a trend filter: the flag turned risk-off only in March, partway into the fall, so the aggressive system still lost 25.5% from its February 2020 peak.

The next chart is the part most rotation write-ups skip, and it cuts against the intuitive story. Sorting every month by its month-end regime state and measuring QQQ's next month:

QQQ forward returns by risk-on vs risk-off regime state: return, volatility and hit rate, ETF rotation signal analysis

Next-month QQQ behavior Risk-on months (99) Risk-off months (30)
Annualized return 19.6% 23.4%
Annualized volatility 15.6% 26.7%
Positive-month hit rate 68% 57%
Worst single month -8.7% -13.6%

Risk-off months averaged a higher QQQ return than risk-on months, 23.4% versus 19.6% annualized, because the most violent rebounds start while the trend signal is still negative. Anyone selling this signal as a return predictor is misreading it. Its real product is risk filtering: risk-off months ran 26.7% annualized volatility against 15.6% in risk-on, hit a positive month only 57% of the time against 68%, and produced the deeper worst month (-13.6% versus -8.7%). For an unleveraged index investor, that trade-off is debatable. For a holder of 2x and 3x daily-reset ETFs it is decisive, because volatility drag grows with the square of volatility. Avoiding the high-volatility months is precisely what makes leveraged compounding survivable, even at the price of missing some rebound upside.

How often does the signal actually let you stay invested?

Rolling 12-month share of risk-on days vs QQQ, ETF rotation regime occupancy 2016-2026

The signal was risk-on 78% of all trading days. The yearly extremes tell the story: 100% of 2017, 2021, and 2024 were risk-on, while 2022 collapsed to 6.4%, and the system spent almost that entire bear market in gold and treasuries. The sample splits into 19 risk-on and 19 risk-off spells. The mean risk-on spell lasted 112 trading days (the longest ran 571), but the median risk-on spell lasted only 4 days and the median risk-off spell 9: regime boundaries come with whipsaw clusters where the signal flips repeatedly before a trend establishes itself. Those whipsaws, not the deep bear markets, are where this family of systems pays its tuition.

The data behind it

Both systems need only FinLab's US fund market: eight ETF price series (QQQ for the signal plus the seven traded funds) and nothing else.

Show Code
import finlab
from finlab import data
 
finlab.login()  # finlab guides you through login automatically
 
data.set_market("us_fund")
tickers = ["QQQ", "QLD", "SSO", "TQQQ", "TECL", "IEF", "GLD", "SHY"]
close = data.get("us_fund_price:adj_close")[tickers]
 
# Regime signal: QQQ above its 200-day average AND a positive 126-day return
qqq_trend = close["QQQ"] > close["QQQ"].rolling(200, min_periods=100).mean()
qqq_momentum = close["QQQ"] / close["QQQ"].shift(126) - 1
risk_on = qqq_trend & (qqq_momentum > 0)

us_fund_price:adj_close is total-return adjusted, so dividends and splits do not distort the signal or the benchmark. The full position construction (ranking the risk sleeve, ranking the defensive sleeve, and the monthly sim() call with the touched stop) is in the downloadable strategy.py, which switches between the two versions with a single STRATEGY = "conservative" or "aggressive" line and runs the robustness checks below with python strategy.py --validate.

Results: the conservative rotation

The equity curves at the top of this article show both systems against QQQ and SPY, all rebased to 1atthecommon2016−05−02start:theconservativerotationreachedabout1 at the common 2016-05-02 start: the conservative rotation reached about 9.7 and the aggressive system about 36.6,against36.6, against 7.2 for QQQ and $4.4 for SPY. Here is the interactive finlab report for the conservative system (drawdowns, monthly returns, and the trade list) so you can inspect it directly rather than trust a summary:

Drawdown is where the regime gate earns its keep:

Drawdown comparison: conservative ETF rotation -19.3%, aggressive 3x system -32.4%, QQQ -35.1%

The conservative rotation's worst loss was -19.3%, from March to September 2022, which is still the shallowest drawdown in the entire ten-strategy family, achieved while holding 2x leveraged funds for most of the decade. The aggressive system bottomed at -32.4%, the deepest drawdown in the family, in a slide that ran from a February 2021 peak to a September 2023 trough. Both stayed shallower than QQQ's unleveraged -35.1% in the 2022 bear market: in calendar 2022 the conservative system lost 9.6% and the aggressive system 12.2%, against 32.6% for QQQ. That year is the cleanest single illustration of what the regime switch buys.

What each system actually held also confirms the "one idea, two budgets" framing:

Share of months each ETF is held: QLD/SSO vs TQQQ/TECL vs the shared GLD/SHY/IEF defensive sleeve

The conservative system held QLD and SSO simultaneously in 76% of months, so it behaves like a 2x index basket with a regime exit rather than an active picker. The aggressive system split its risk-on months between TECL (43%) and TQQQ (29%). Both parked in the same defensive sleeve for about 22% of months. The small remainder is cash after stop exits: 2.4% of monthly snapshots for the conservative system and 6.3% for the aggressive one. (Occupancy is measured at the 127 month-end rebalance snapshots, which approximates but is not literally the share of trading days.)

Out-of-sample: 2022 onward, untouched

Both systems were calibrated on 2016-2021 data and then left untouched on 2022-present, an unseen stretch that includes the 2022 bear market and the recovery after it.

ETF rotation strategy backtest: research 2016-2021 vs out-of-sample 2022-present CAGR and monthly Sharpe

Period Conservative CAGR / Sharpe Aggressive CAGR / Sharpe QQQ CAGR / Sharpe
Research (2016-2021) 32.6% / 1.65 49.1% / 1.36 27.2% / 1.53
Out-of-sample (2022-present) 14.8% / 0.95 31.2% / 1.02 13.3% / 0.82

Sharpe here is monthly. Both systems earned much less out of sample than in the research window: the conservative rotation fell from 32.6% to 14.8% CAGR and the aggressive one from 49.1% to 31.2%. QQQ's own CAGR roughly halved over the same stretch (27.2% to 13.3%), so the conservative system's return lead out of sample is thin (14.8% versus 13.3%), while its risk-adjusted lead held (monthly Sharpe 0.95 versus 0.82). The aggressive system kept a wider lead on both (31.2% CAGR, Sharpe 1.02), mostly because sitting in gold and treasuries through 2022 avoided the period that crushed everything leveraged. Note what the research column says about the benchmark: simply holding QQQ delivered a 1.53 monthly Sharpe in 2016-2021, ahead of the aggressive system's 1.36 and 0.12 behind the conservative system's 1.65, so in a strong bull market the rotation's risk-adjusted edge over buy-and-hold was thin. The most recent stretch has also been weak: from the end of 2025 to 2026-10-26 the conservative system gained 3.0% and the aggressive one 7.1%, against 16.3% for QQQ. One unseen market cycle is supportive evidence, and it is still only one cycle.

Robustness checks: neighbouring parameters, two halves, trading costs

A system that only works at one lucky setting, in one lucky period, or before costs is not much use. Each version therefore faces three checks. "Beats QQQ" means a higher daily Sharpe ratio (mean daily return divided by its standard deviation, annualized with √252, no risk-free rate) than buying and holding QQQ with dividends over exactly the same dates. This is a daily measure, so its values differ from the monthly Sharpe used in the tables above.

ETF rotation robustness check heatmap: daily Sharpe of the conservative QLD/SSO and aggressive TQQQ/TECL versions across 9 combinations of QQQ trend average and momentum lookback, each compared with QQQ

Neighbouring parameters. Both settings that define the regime signal were moved one step either side of the original: the length of QQQ's trend average (150, 200, or 250 days; original 200) and the lookback of QQQ's momentum test (63, 126, or 189 days; original 126), for 9 combinations per version. The pass mark is 7 of 9.

  • Conservative: 9 of 9 beat QQQ, with daily Sharpe between 1.03 and 1.38 against QQQ's 0.95 to 0.96.
  • Aggressive: 7 of 9 beat QQQ, exactly the pass mark. The two losers both use the 63-day momentum lookback, with the 200-day average (0.93 versus 0.95) and the 250-day average (0.94 versus 0.95). The third 63-day cell, with the 150-day average, only edges QQQ at 0.97 versus 0.95.

Two halves. The backtest was cut in half by trading days, and each half has to beat QQQ on its own:

Half Dates Conservative Sharpe Aggressive Sharpe QQQ Sharpe
First half 2016-05-02 to 2021-07-08 1.59 1.31 1.20
Second half 2021-07-08 to 2026-10-26 0.84 0.92 0.71

Both versions beat QQQ in both halves. Every Sharpe in the second half is lower than in the first, QQQ's included, which matches the out-of-sample split above.

Trading costs. finlab's US market defaults are zero commission and zero tax, matching commission-free brokers, so the headline run carries no trading cost at all. The check charges 0.1% on every buy and every sell (fee_ratio=0.001) as a stand-in for spreads and slippage. With that cost the conservative version's CAGR is 23.3% (24.3% cost-free) and its daily Sharpe 1.17 versus QQQ's 0.95; the aggressive version's CAGR is 39.3% (41.0% cost-free) and its daily Sharpe 1.08 versus 0.95. Turnover of 2.5x and 4.9x a year keeps the drag to about 1.0 and 1.7 percentage points of CAGR.

Verdict: both versions pass all three checks. The conservative version passes each one with room to spare. The aggressive version passes with less margin: it sits exactly on the 7-of-9 line, and with the shorter 63-day momentum lookback its daily Sharpe lands within 0.02 of QQQ's or below it.

To reproduce every number in this section, run python strategy.py --validate with the downloadable script; it runs the three checks for both versions.

Backtest method and limits

Item These backtests
Transaction costs None in the headline run: finlab's US defaults are zero commission and zero tax (fee_ratio=0, tax_ratio=0). The cost check above charges 0.1% per buy and per sell for spreads and slippage; CAGR falls to 23.3% (conservative) and 39.3% (aggressive), and both still beat QQQ on daily Sharpe.
Leverage decay Already reflected: the QLD/SSO/TQQQ/TECL price series include daily-reset drag and expense ratios.
Instruments A fixed set of 7 traded ETFs; no stock universe and no survivorship issue in the signal, which reads QQQ only.
Rebalance / execution Monthly rebalance at the close; touched stop of 6% (conservative) or 10% (aggressive) on the held ETF.
Sample 2016-05 to 2021-12 calibration; 2022-01 to 2026-10 out-of-sample. The May 2016 start reflects the 200-day moving-average and 126-day momentum warmup; benchmark statistics use this identical window.
Robustness 9 neighbouring parameter sets, two halves, and 0.1% per-side costs; both versions pass all three (aggressive: 7 of 9 parameter sets).
Benchmark QQQ total return over the identical window, with SPY as a broad-market reference.
Capacity Not estimated. Leveraged ETF liquidity is large, but real impact depends on your size.

Each strategy in this family is judged against a risk-adjusted gate of at least 1.5, measured here on monthly returns without a risk-free rate. Both systems clear it on monthly Sortino: 3.16 full-period and 2.72 out-of-sample for the conservative rotation, 2.72 and 2.69 for the aggressive system. The conservative system's research-period monthly Sharpe of 1.65 clears it as well, though QQQ itself posted 1.53 over the same research window, so that figure says more about the 2016-2021 bull market than about the strategy. The full-period monthly Sharpe figures alone (1.30 and 1.18) sit below 1.5, so the Sortino and drawdown numbers, not the Sharpe, are the risk-adjusted case here. That reads as: the volatility these systems do retain is concentrated on the upside, while symmetric volatility-per-unit-return is only moderately better than QQQ's 1.09.

The leveraged-ETF risk you must understand

Everything above rides on 2x and 3x daily-reset products, and the leverage is the main thing that can hurt you:

  • Daily reset and volatility drag. Leveraged ETFs compound daily, so a choppy, sideways market erodes value even if the index ends flat; the rebalancing mechanics are laid out in Cheng & Madhavan (2009). The regime filter reduces the time spent in exactly those high-volatility conditions; it does not repeal the mechanism.
  • 3x path dependency and gaps. The aggressive system holds a single 3x fund. A fast crash inside a month is taken at full leverage until the stop or the next monthly rebalance reacts, and a large overnight gap can fill well below the 10% touched-stop level assumed in the backtest. Its -32.4% maximum drawdown ran from February 2021 to September 2023 and was not recovered until January 2024, and it was one of six separate drawdowns of 25% or more (in 2018-2019, 2020, 2021-2023, 2024, 2024-2025, and 2025-2026). Drawdowns of that depth are a recurring cost of this risk budget, not a one-off.
  • Whipsaw cost on the stops. Both systems' touched stops can force exits during volatile but ultimately profitable risk-on recoveries; at the month-end snapshots the conservative system was in cash 2.4% of the time and the aggressive system 6.3%. The conservative system traded 185 times against the aggressive system's 107, partly because every entry and exit involves two funds.
  • Concentration. One or two ETFs means single-theme (large-cap US growth) exposure; the defensive sleeve was in gold for just over half of its 22% of months.

If a -32.4% drawdown at 36% annualized volatility is outside what you can hold, the conservative version exists for exactly that reason, and an unleveraged variant of the same signal (QQQ in risk-on, defensive otherwise) is a one-line change in the downloadable script your AI agent can run.

Who this is for

The conservative rotation fits an investor who wants index-like simplicity with a rules-based exit, accepts 2x leverage, and values the shallowest drawdown in this strategy family over the highest return. The aggressive version fits someone who can genuinely tolerate losing about a third of the account and a single 3x holding in exchange for the family's second-highest compounding, which also comes with its deepest drawdown. Neither fits anyone who needs capital stability, cannot monitor a monthly rebalance, or is uncomfortable holding leveraged products at any time.

FAQ

What is a risk-on/risk-off ETF rotation strategy? A rules-based system that holds equity ETFs while a market-regime signal is positive and rotates into defensive ETFs (treasuries, gold, cash-like funds) when it turns negative. Here the signal is QQQ above its 200-day moving average with a positive 126-day return, checked at a monthly rebalance.

Does the signal predict crashes? No. Risk-off months actually averaged higher QQQ returns (23.4% versus 19.6% annualized) because rebounds begin inside risk-off. What the signal filters is volatility (26.7% versus 15.6%) and tail risk (worst month -13.6% versus -8.7%), which is what matters for holding leveraged ETFs.

Which version should I look at first? The conservative one. It has the shallower drawdown (-19.3%), the higher full-period monthly Sharpe (1.30), held simple 2x index exposure 76% of the time, and passed the robustness checks with more room. The aggressive version is the same signal with a bigger risk budget, and its extra 17 points of CAGR were paid for with a -32.4% drawdown and 36% volatility.

Is the result sensitive to the 200-day and 126-day settings? Less for the conservative version than the aggressive one. Across 9 neighbouring combinations (150/200/250-day averages with 63/126/189-day momentum), the conservative version beat QQQ's daily Sharpe in all 9 and the aggressive version in 7, losing in two of the three 63-day combinations.

Why monthly rebalancing instead of daily? Monthly checking keeps turnover at 2.5x to 4.9x per year and avoids reacting to every whipsaw; the median regime spell lasted only 4 trading days on the risk-on side and 9 on the risk-off side. The cost is that fast crashes inside a month are absorbed at full leverage until the stop triggers.

What data do I need to run it? Only FinLab's us_fund_price:* ETF series; there is no single-stock data in either system. A standard FinLab account covers it.

Can I run this myself? Yes. Use the AI-assisted setup flow, or download the script below and run it after setup.

Reproduce it yourself

Two files reproduce everything above:

  • strategy.py: both systems in one script; set STRATEGY = "conservative" or "aggressive" and run it once the FinLab setup is done, or run python strategy.py --validate for the three robustness checks.
  • data.csv: daily rebased equity curves for both systems, QQQ, and SPY, plus the daily risk-on flag.

The fastest path is to use the AI-assisted setup flow and ask your AI agent to modify it: drop the leverage, swap GLD for IEF in the defensive sleeve, or change the 126-day lookback, and let the agent re-run the backtest. To see how these two systems compare with the other eight in the family, read the US quant trading strategies overview; the stock-factor side of the family starts with the US momentum strategy. Definitions for the metrics used here are in the glossary. For more write-ups, browse the FinLab research blog, the use cases, and the team behind FinLab.


Last updated: 2026-10 | Backtest window: 2016-05 to 2026-10 | Benchmark: QQQ total return | Author: FinLab Quant Research (reviewed by a quantitative researcher)

Investing involves risk, and past performance does not represent future results. Leveraged ETFs carry additional risks including volatility decay and amplified losses. This content is for educational purposes only and is not investment advice and does not constitute investment advice; evaluate any strategy against your own risk tolerance.

FinLab AI

Want to build your own strategy?

Describe your stock-picking ideas in natural language. AI automatically validates, backtests, and gives you answers

Start Free

More Technical Indicators research

View all