Is buying pullbacks to the 20-day moving average profitable?
Across 214 of 220 tickers between 2015-01-01 and 2024-12-31, average return was 2.56%, average max drawdown -13.48%.
A modest edge: +2.56% mean return across 214 tickers, with -13.48% average drawdown — directional, though execution costs would chew into it.
What we tested
We want to buy controlled pullbacks to the twenty day moving average inside an established uptrend. Enter long the next open when today's low touches or briefly crosses below the 20 day simple moving average, today's close finishes back above that 20 day moving average, and today's close is also above the 200 day simple moving average. On entry, place a protective stop 1.2 ATR below the entry price using the 14 period ATR. Size the position so a stop-out loses exactly 1 percent of account equity. Round down to a whole number of shares. Take profit at 2R, which is twice the distance between entry and stop placed above the entry. Exit at the next open if the close ever falls below the 200 day moving average before the target or stop is hit. If the position has been held for 30 trading days without resolving, exit at the next open as well. Long only. One open position per ticker at a time. No leverage and no pyramiding.
- Window
- 2015-01-01 → 2024-12-31
- Universe
- 220 tickers
- Ranking metric
- return_pct

Overall results
Aggregated across 214 runsEqual-weighted mean of total return across symbols that completed. · 5 codegen refinements on pilot
Unweighted mean across successful runs.
214 completed · 6 failed
Mean of worst peak-to-trough per symbol.
Aggregate gross profit ÷ gross loss.
Summed over successful symbols.
Return distribution
How the 214 tickers split up across return_pct buckets. Reads left to right from worst to best.
- ≤ -10%41 (19.2%)
- -10% to -5%21 (9.8%)
- -5% to -1%26 (12.1%)
- −1% to +1%8 (3.7%)
- +1% to +5%30 (14.0%)
- +5% to +10%29 (13.6%)
- > +10%59 (27.6%)
By sector
Top and flop names per GICS sector, ranked by return_pct.
Communication Services
18 / 20 completed- TMUS24.75%
- NFLX23.25%
- META22.09%
- GOOGL21.74%
- TTWO17.71%
- WBD-16.50%
- DIS-14.86%
- CHTR-12.63%
- OMC-12.41%
- VZ-5.93%
Consumer Discretionary
20 / 20 completed- ROST18.82%
- TJX17.53%
- BKNG15.41%
- ORLY14.92%
- TSLA11.60%
- MAR-22.01%
- GM-16.87%
- ULTA-15.98%
- SBUX-12.77%
- NKE-8.48%
Consumer Staples
20 / 20 completed- KMB16.55%
- PG15.30%
- KO9.91%
- ADM9.67%
- KR6.74%
- SYY-16.40%
- PM-15.03%
- CLX-12.51%
- TGT-11.09%
- MO-5.38%
Energy
17 / 20 completed- WMB15.48%
- MPC12.08%
- EOG10.14%
- PSX7.94%
- KMI5.28%
- VLO-20.38%
- APA-15.81%
- BKR-14.46%
- XOM-12.39%
- CVX-11.63%
Financials
19 / 20 completed- SPGI21.26%
- SCHW19.78%
- MS14.06%
- MCO10.91%
- CME10.32%
- TFC-13.35%
- BK-9.07%
- JPM-6.35%
- WFC-6.30%
- GS-5.10%
Health Care
20 / 20 completed- SYK22.59%
- BMY21.54%
- UNH21.03%
- ISRG20.90%
- TMO14.15%
- CVS-20.89%
- JNJ-11.85%
- REGN-11.42%
- DHR-10.34%
- VRTX-10.33%
Industrials
20 / 20 completed- GE27.39%
- ETN24.07%
- UNP15.94%
- NOC10.10%
- ROK8.81%
- UPS-20.91%
- DE-16.92%
- FDX-14.73%
- CMI-10.24%
- NSC-7.79%
Information Technology
20 / 20 completed- LRCX52.58%
- AMAT38.09%
- ADBE26.48%
- NVDA25.18%
- AVGO21.21%
- IBM-14.85%
- CSCO-14.26%
- QCOM-11.79%
- INTC-9.61%
- AMD-4.05%
Materials
20 / 20 completed- MOS25.42%
- ALB20.51%
- SHW18.37%
- LIN15.59%
- NEM7.81%
- STLD-19.89%
- PPG-16.42%
- APD-12.99%
- FCX-11.37%
- CF-8.95%
Real Estate
20 / 20 completed- INVH39.49%
- PLD27.61%
- ESS27.22%
- MAA22.02%
- EQIX21.33%
- VTR-17.67%
- CCI-16.00%
- O-8.51%
- AMT-7.95%
- VICI-6.22%
Utilities
20 / 20 completed- PPL20.36%
- ES13.55%
- NEE13.40%
- SO12.50%
- PEG9.60%
- PCG-25.88%
- EIX-25.41%
- D-19.98%
- AEE-15.23%
- ED-12.59%
Disclaimer
Past performance does not predict future results. This is a backtest over a fixed historical window and it does not model execution costs, borrowing, taxes, or survivorship of the universe. Nothing here is investment advice.
Generated Apr 23, 2026 · slug pullback-to-20ma