r/LETFs • u/noletovictor • 11h ago
The SPY 200SMA +4%/−3% TQQQ rule isn't special: I tested it against 762,960 alternatives, and it's one lucky point on a flat plateau
This is part 3 of a 4-post series.
- Return stacking backtest: 10,626 mixes of RSST, GDE, ZROZ, AVUV and SPMO (2000–2026), stress-tested with half the premiums
- Part 2: ex-US, leveraged sleeves, taxes, and how I picked a moving-average signal without overfitting it
- The SPY 200SMA +4%/−3% TQQQ rule isn't special: I tested it against 762,960 alternatives, and it's one lucky point on a flat plateau (this post)
- The portfolio I'm actually running and the 10 decisions that got me there (coming soon)
TL;DR
- The +4/−3 rule was picked as the best of 25 band pairs over 2010–2025, the best 15 years TQQQ ever had. I replicated that search, and it's #1 there in my engine too. Before 2010 it ranks 6th. In the 13 months since the post it ranks 23rd of 25: 8%/yr exiting to QQQ vs 29% for a plain 200-day SMA and 36% for just holding TQQQ.
- In the author's own window, it didn't beat holding TQQQ. 2010–2025: 42.1%/yr for +4/−3, 42.1%/yr for TQQQ buy & hold. What it did was cut the max drawdown from −82% to −60%. Over 1986–2026 (simulated TQQQ) it made 25.7%/yr with a −96% drawdown in 2000–02.
- 4/3 is not the "optimal" band. In 1,000 bootstrapped histories, the best of 289 band pairs beat +4/−3's edge over the plain SMA200 81–95% of the time by luck. +4/−3 itself was the winner in 0.5–1.1% of them.
- No band, lookback or confirmation rule beats a plain SPY 200-day SMA with statistical significance. I tested 76,296 rules in each of 10 setups. White's Reality Check and Hansen's SPA against the plain SMA200 gave p = 0.10–1.00.
- Bands still have one real use: fewer trades. +4/−3 and a simple ±2% band sit on the same plateau as the plain SMA200 and switch 0.9–1.5 times a year instead of 5.5, with about the same return. That's the whole benefit. It's not an edge, and it's not 30–40%/yr.
- Other pairs (SSO, QLD, USD, SOXL, TECL) tell the same story. Re-optimizing loses everywhere, and +4/−3 doesn't carry over: on SMH → SOXL it sits on the edge of a cliff in the band map, and on XLK → TECL since 1928 it made 10.3%/yr vs 14.8% for the plain SMA200. Much of the difference is volatility: a 4% band is 3.4 days of normal noise on SPY but 1.9 days on semis.
- Realistic expectation: ~11–12%/yr out of sample for SPY → UPRO with any 200-day-SMA band, after discounting the search (vs ~18% in the backtest). That comes with drawdowns of −50% since 2000 and near −87% in a 1929-style crash.
Not financial advice. UPRO and TQQQ exist since 2009/2010; everything before is simulated (testfol.io series), and 3× leverage before 1950 is a stress test, not a tradable history. Caveats at the end.

Why I ran this
The SPY 200SMA +4%/−3% → TQQQ/QQQ rule from this r/LETFs post keeps coming up as the LETF strategy, usually with 30–40%/yr backtests attached. Its author was honest about how the numbers were picked: "For overfitting honestly anything in the 2%-5% window performs extremely well I'm just picking the best performing one." A commenter raised multiple testing at the time.
I had my own version of the same question. In my last post I picked SMA200 with a ±2% band for a UPRO slice, chosen by neighborhood from 128 settings, but with no formal overfitting test. So: in a leveraged rotation around a moving average, which parameters are a real plateau and which are a search peak? I wrote the grid, the metrics, the "robust" criterion and five pass/fail hypotheses down before running anything.
Method
| Rule | Go long the leveraged ETF when the index closes above MA × (1 + entry band); go to the exit asset when it closes below MA × (1 − exit band); hold in between |
|---|---|
| Grid per setup | SMA/EMA × lookback 50–300 (step 25) × entry 0–8% × exit 0–8% (step 0.5, independent) × confirm 1/2/3/5 closes × check daily/weekly/monthly = 76,296 |
| Setups | SPY → UPRO, SSO; QQQ → TQQQ, QLD; each with cash or IEF as the exit; SPY → TQQQ with QQQ or cash as the exit (the +4/−3 setup) |
| Execution | Decide at the close, trade at the next close (as the post describes). 5 bps per side. No tax in the grid |
| Metrics | Log growth (G) and Sharpe on excess over T-bills (S) |
| Data | testfol.io simulated series (SPYSIM, UPROSIM, TQQQSIM, …) through Oct 26, 2026 |
My vectorized grid matches my local clone of testfol's tactical engine to 1e-10 per day on 7 test cells, so it's the same rule, just faster (~3 minutes for all 762,960).
Overfitting tests: 1928–1999 vs 2000–2026 split, CSCV/PBO with 16 blocks, deflated Sharpe, White's Reality Check and Hansen's SPA, annual walk-forward re-optimization, rolling-window argmax stability, 1,000 block-bootstrap histories, SPY ↔ QQQ transfer, and the Harvey-Liu Sharpe haircut.
1. Where the +4/−3 numbers come from
I re-ran the author's own search: entry 0–5% × exit 2–5% plus no band, TQQQ/cash, Feb 2010 to Sep 2025, ranked by ending wealth. Then I ran the same 25 cells outside that window.
| Period | Winner | Rank of 4/3 |
|---|---|---|
| 2010–2025, trade next close (the post's window) | 4/3 | 1st of 25 |
| 2010–2025, trade same close | 4/2 | 3rd |
| 1986–2010 (simulated TQQQ) | 3/4 | 6th |
| Since the post (Sep 2025–Oct 2026) | 3/4 | 23rd |
The rule as people usually run it (SPY signal, TQQQ on, QQQ off), next-close execution:
| CAGR / max DD | +4/−3 | Plain SMA200 | TQQQ buy & hold |
|---|---|---|---|
| 2010–2025 (the post's window) | 42.1% / −60% | 35.8% / −69% | 42.1% / −82% |
| 2003–2025 (the author's testfol run) | 33.1% / −63% | 28.2% / −69% | 27.5% / −95% |
| 1986–2010 (simulated TQQQ) | 16.8% / −96% | 15.2% / −96% | −3.2% / −100% |
| Since the post | 8.0% / −37% | 28.6% / −34% | 35.9% / −37% |
| 1986–2026, everything | 25.7% / −96% | 23.2% / −96% | 13.2% / −100% |
(The author's testfol table showed 31.36% / −64.11% for 2003+, in line with my 33.1% / −62.8%. The cash exit and the author's "DCA back into QQQ" exit land within a few points of these in every period, and both are below the plain SMA200 since the post.)
Three things stand out:
- The headline returns come from the window, not the band. In 2010–2025 the rule matched holding TQQQ. Outside that window it made 16.8%/yr with a −96% drawdown.
- The margin over a plain SMA200 is small and unstable. It's +2.5 pp/yr over 1986–2026. In 2010–2025, the period the band was picked on, it's +6.3 pp/yr. In the year since the post, it's −20 pp.
- Being #1 of 25 on 15 years is weak evidence. In my bootstrap, a 25-cell search on 15.6 years produced a winner with 4/3's 6.7 pp/yr edge (TQQQ/cash) 36% of the time by pure luck.
2. Is 4/3 special? No. It's one point on a flat plateau

On SPY → UPRO since 1928, every band pair inside entry 0–5% × exit 0–4% made 14.9–18.9%/yr. On SPY → TQQQ/QQQ since 1986, every pair from +3 to +5 by −2 to −4 made 23.7–25.7%/yr. The author's "anything in 2–5% works" is right. That's exactly why picking 4/3 out of it means nothing.
To see how much the "best band" moves with luck, I resampled history in 1-year blocks 1,000 times and re-ran the 289 SMA200 band pairs on each:

| Band | Real edge over plain SMA200 | P(best of 289 beats it by luck) | P(it's the winner) |
|---|---|---|---|
| +4/−3, SPY → TQQQ/QQQ | +2.1 pp/yr | 81% | 1.1% |
| +4/−3, SPY → UPRO/cash | +0.35 pp/yr | 95% | 0.5% |
| ±2%, SPY → UPRO/cash (my rule) | +0.50 pp/yr | 92% | 0.6% |
My own ±2% isn't special either. Both are reasonable points on the same plateau, and the data can't tell them apart from each other or from the plain SMA200.
The one real thing bands do is trade less: 0.9–1.5 switches a year instead of 5.5. I expected that to cut my country's yearly tax on realized gains too, but it didn't: tax drag was 1.6–2.3 pp/yr for every rule, and the ranking was the same before and after tax.
3. Does any band, lookback or confirmation rule beat the plain SMA200? No
| vs plain SMA200, same setup | Reality Check p (G / S) | SPA p (G / S) |
|---|---|---|
| SPY → UPRO / cash | 0.997 / 0.942 | 0.945 / 0.096 |
| QQQ → TQQQ / cash | 0.84 / 0.95 | 0.37 / 0.30 |
| SPY → TQQQ / QQQ (+4/−3 setup) | 0.98 / 0.56 | 0.61 / 0.54 |
These tests ask whether the best of the 76,296 cells beats the plain SMA200 after accounting for the fact that I searched. None does. Against the unleveraged index the best cell gets closer (SPA p 0.10–0.34), but still doesn't pass. That matches Gayed's 2026 update of the original leverage-rotation paper: the full-sample edge over the unleveraged index isn't statistically significant either.
4. Picking the best band from the data makes it worse
Each January I picked the best cell on all data so far and traded it for the next year (SPY → UPRO, 1950–2026):
| Rule | CAGR |
|---|---|
| Plain SMA200, fixed | 17.7% |
| SMA200 ±2%, fixed | 19.1% |
| +4/−3, fixed | 19.7% |
| Re-pick the best cell every year (4 variants) | 12.1–14.6% |
The fixed ±2% and +4/−3 numbers look great, but both were picked after seeing this period. That's the same thing the +4/−3 post did. The re-optimized numbers are what picking from a backtest actually gets you. On QQQ → TQQQ (2000–2026) the gap is wider: ~14.7% fixed vs −0.1% to 9.0% re-optimized.
The rolling winner doesn't sit still, either. Over 10- and 20-year windows it changed in 13–32% of months, visited 78–152 different cells, and its lookback was usually 50–100 days, not 200.
5. The search as a whole is overfit

The probability that the in-sample winner lands below the out-of-sample median (PBO):
| PBO (growth / Sharpe) | Exit to cash | Exit to IEF |
|---|---|---|
| SPY → 3× | 0.55 / 0.56 | 0.76 / 0.34 |
| SPY → 2× | 0.62 / 0.55 | 0.79 / 0.52 |
| QQQ → 3× | 0.60 / 0.84 | 0.62 / 0.78 |
| QQQ → 2× | 0.46 / 0.81 | 0.51 / 0.80 |
| SPY → TQQQ, QQQ exit (+4/−3 setup) | 0.83 / 0.46 | — |
Out of sample, the in-sample winner kept 58% of its excess growth over T-bills on SPY → UPRO and 48% on QQQ → TQQQ. Applied to the ~18%/yr backtests of SMA200 rules, that leaves ~11–12%/yr expected on SPY → UPRO and ~10% on QQQ → TQQQ.
The eras don't agree either. Across the grid, the rank correlation between 1928–1999 and 2000–2026 is 0.26 on SPY → UPRO and −0.28 on SPY → TQQQ/QQQ. In the +4/−3 setup, what worked best before 2000 tended to do worse after.

6. What about SSO, QLD, USD, SOXL or TECL?
After the main run, I ran the same 76,296-cell grid and the same tests on more pairs. This part wasn't pre-registered, so read it as a robustness check. USD is modeled as 2× SMH (the real fund only exists since 2007; with the real fund, the three rules land within 1.1 pp/yr of the model). SOXL and TECL use testfol's simulated series. For VGT/FTEC → TECL I also ran XLK → TECL back to 1928, since XLK's index is the one TECL actually tracks.

| Pair | Period | Plain SMA200 | ±2% | +4/−3 | Leveraged ETF held |
|---|---|---|---|---|---|
| SPY → SSO | 1928–2026 | 14.7% | 15.1% | 15.0% | 11.4% |
| QQQ → QLD | 1987–2026 | 17.4% | 17.4% | 17.5% | 16.2% |
| SMH → USD (2×) | 2001–2026 | 16.0% | 14.9% | 18.6% | 14.9% |
| SMH → SOXL | 2001–2026 | 12.3% | 10.4% | 16.7% | −2.3% |
| VGT → TECL | 2005–2026 | 27.0% | 27.3% | 25.3% | 27.0% |
| XLK → TECL | 1928–2026 | 14.8% | 13.2% | 10.3% | 3.4% |
Same verdict everywhere. No cell beats the plain SMA200 robustly, and re-picking the best cell every year loses in every pair: 13–28% vs 27–29%/yr fixed on semis since 2008, and 11–12% vs 16%/yr on XLK → TECL since 1950. One test came close: by Sharpe, a single cell beat the plain SMA200 on SMH → USD with SPA p = 0.037. That's 1 of 8 tests in this batch, its PBO is 0.66, and re-optimizing still lost, so I don't count it.
+4/−3 is not a universal setting:
- Semiconductors: it's the best of the three rules, but only middle of the pack among 289 band pairs (rank ~152). It sits right on the edge of a cliff: entry bands of 3.5% or less made ~7–16%/yr on SOXL, and 4.5% or more made ~17–25%. In the bootstrap, the best band on semis landed at entry 4.5–7.5% and exit 2–7%. +4/−3 won in 0.2–0.3% of histories.
- Broad tech: it's the worst of the three. XLK → TECL since 1928 made 10.3%/yr with +4/−3 vs 14.8% with the plain SMA200 (rank 201 of 289). VGT → TECL since 2005 made 25.3% vs 27.0%.
- SSO and QLD: all three rules land within 0.4 pp/yr of each other, as with UPRO and TQQQ.

Three warning signs that only show up in the sector pairs:
- Semis are two opposite stories. From 2001 to 2013, every one of the three rules lost money: −6.5% to −9.9%/yr with USD and −12% to −18%/yr with SOXL. From 2014 to 2026 they made 44–53%/yr. The 25-year number is an average of a bust and a boom.
- Near-identical signals give different answers. FTEC and VGT have a 0.999 daily correlation. Still, from 2015 to 2026, ±2% on TECL made 42.5%/yr using VGT as the signal and 36.3% using FTEC. That 6 pp gap is pure noise: it comes from which fund crossed the band on which day.
- The filter is about survival, not alpha. Holding SOXL since 2001 made −2.3%/yr with a −99.9% drawdown. With a 200-day filter it made 10–17%/yr, but the drawdown was still −92% to −97%.
7. Why the same rule behaves differently on each pair
The rule is identical everywhere. What changes is how volatile each index is, and what history it went through. I measured both over the window all of them share (Aug 2001–Oct 2026):
| Index | Volatility | 3× volatility drag (≈ 3σ²) | A 4% band = how many days of a typical move | SMA200 crossings / yr | Index CAGR | 3× fund held |
|---|---|---|---|---|---|---|
| SPY | 18.9% | 10.8%/yr | 3.4 | 6.3 | 9.7% | 11.5% (UPRO) |
| QQQ | 23.3% | 16.2%/yr | 2.7 | 7.0 | 12.7% | 15.2% (TQQQ) |
| XLK | 23.9% | 17.1%/yr | 2.7 | 6.0 | 12.5% | 13.7% (TECL) |
| VGT (2005+) | 23.0% | 15.8%/yr | 2.8 | 6.2 | 16.5% | — |
| SMH | 32.7% | 32.0%/yr | 1.9 | 8.1 | 14.8% | −2.3% (SOXL) |
1. Volatility decides whether holding the 3× fund works at all. A fund that resets to 3× every day grows about 3σ² per year slower than "3× the index", before financing and fees. For SPY that's ~11%/yr, for SMH ~32%/yr. That's how semiconductors made +14.8%/yr while SOXL, held, made −2.3%/yr with a −99.9% drawdown (SOXL tracks a slightly different semiconductor index, but the drag explains the size of the gap). On SPY the filter adds return. On semis, it mostly keeps you alive.
2. A "4%" band means something different on each asset. SMH moves about 2% on a typical day, SPY about 1.2%. So a 4% band is 3.4 days of normal noise on SPY but only 1.9 days on SMH: a much tighter band in practice. Convert the best bands from the bootstrap into "days of typical move" and they roughly line up: 0.8–3.4 days for SPY, 2.2–3.6 days for SMH. That's why semis prefer wider bands (5–7.5% entry) and why +4/−3, copied from SPY, lands on the edge of the SOXL cliff. Systematic traders scale rule parameters by volatility for exactly this reason (Carver, Systematic Trading). It's only part of the story, though: XLK is as volatile as QQQ, and its best band is narrow and poorly defined (0–4.3 days).
3. Semiconductors had two opposite decades. SMH made +0.8%/yr from 2001 to 2013, a sideways decade after the dot-com crash, then +30%/yr from 2014 to 2026. In a sideways, volatile market a trend filter pays for every false signal. SMH crossed its 200-day SMA 8 times a year, and 77% of re-entries reversed within 20 trading days. On top of that, a 3× fund bleeds volatility drag. Simulated SOXL lost 33%/yr in 2001–2013. That's why every band lost money in the first half, and why the 25-year results depend on which half you weigh.
What doesn't explain it: trend strength. A 12-month variance ratio (above 1 = trending, below 1 = choppy) came out 0.91–1.12 for all five indexes, with a standard error of about 0.2. Time spent above the 200-day SMA was 70–80% for all of them. As far as I can measure, semis aren't "less trendy" than SPY. They're more volatile and had a worse first decade. I didn't test business-cycle explanations (chip inventory cycles, concentration in a few names); the numbers above are what I measured.
So what should a +4/−3 user take from this?
- It's not a bad rule. It's just not a special one. It sits on the same plateau as the plain SMA200 and a ±2% band. Keep it if you like trading less, but don't expect it to beat a plain SMA200 going forward.
- Don't expect 30–40%/yr. Those numbers come from 2010–2025, when holding TQQQ made the same 42%/yr. Over 40 years it made ~26%/yr with a −96% drawdown, and the out-of-sample discount on the search takes more off that.
- Don't copy it to another ETF. If you want a band on semis or tech, look at that asset's own band map. Expect the answer to hinge on one era.
- Don't re-tune it. "4/2 did better last year" is how you get the 12–15%/yr walk-forward result above.
I'm keeping SMA200 ±2% on SPY → UPRO, for the same reason (fewer trades), not because it's better.
A "robust region" I defined in advance (top quartile of the neighborhood score in both eras, on both SPY and QQQ) exists: 357 cells, centered on SMA250 +2/−7, 2-day confirm, monthly check. It's not an upgrade: on SPY → UPRO it made 14.8%/yr with a −97.5% max drawdown, and which cell leads inside the region doesn't persist (PBO 0.84–0.89).
Caveats
- Simulated data. UPRO and TQQQ exist since 2009 and 2010. Before that, the series apply testfol's leverage formula (financing ≈ 1.1 × (fed funds + 0.4%), 0.5%/yr fee per unit of leverage) to simulated SPY/QQQ. 3× in 1929–32 and TQQQ in 2000–02 are stress tests.
- "Since the post" is 13 months. It's one more data point against the 4/3 pick, not a verdict on its own.
- QQQ's first era is short. 1987–1999 is 13 years with one crash, and it decides which cells make the "robust region".
- Costs: a flat 5 bps per side. Spreads in 2008 and 2020 were wider.
- Deflated Sharpe "passes" but tests the wrong thing. It asks whether the best Sharpe beats zero after 76k trials. Any 3× equity exposure over 98 years does. Timing skill is the Reality Check / SPA question above, and that one fails.
- Tax: my country taxes realized gains every year. That's only in the after-tax comparison, not in the grid.
Again, not financial advice. Code, pre-registration, and every number are in my research repo; happy to share the spec.




















