Markets › FX · EURUSD spot (broker data), daily candles
5 SMA Daily Strategy Backtest: the Forex Factory “Monthly Profit” System on 22 Years of EUR/USD
A 5-period simple moving average on the daily chart, a candle whose body crosses it, a Bollinger band it must not touch, and fifteen minutes a day. We turned the popular Forex Factory thread into fixed rules and backtested its three exits on EUR/USD daily candles from 2004 to 2026, with costs, swap and against random days.
Buried · No proven edgeThe five-day average turned. The price did not follow.
Variants tried: 3 · Passed every gate: 0 · Best: 2 of 6 · Holdout opened: yes (already used)
Short answer: not in our test. The Forex Factory “Monthly Profit” system (a bullish daily candle crossing a rising 5-day SMA without touching the upper Bollinger band, a stop under the candle minus 15 pips) made -0.007 R a trade on EUR/USD from 2004 to 2026 closed at the end of the day, -0.041 R with a 3R target and -0.040 R with a trailing stop, after a 1-pip cost. The same trades on random days did as well.
00The verdict in three lines
- Does the 5 SMA daily strategy work? Not in our test: buying when a bullish daily candle crosses a rising 5-day SMA without touching the upper Bollinger band (and selling the mirror) made -0.007 R a trade on EUR/USD from 2004 to 2026 when closed at the end of the day (822 trades), -0.041 R with a 3R target (593) and -0.040 R with a trailing stop (742).
- Not a cost problem: on a daily chart the stop was about 107 pips, so 1 pip of cost was 0.010 R. Before costs the signal made +0.003 R a trade held for a day, and lost with the other two exits.
- Buried with no proven edge: the same trades on random days did as well, all three lost in 2004 to 2012, and two lost again from 2020.
01The “Monthly Profit” rules from Forex Factory
The system comes from the Forex Factory thread “Monthly Profit - Daily Trading using SMA”, started in July 2016 and still running in 2026, over 600 pages long. Its first post sells it as “the simplest strategy for stress free day trading”: fifteen minutes a day after the daily close.
- Chart: daily only (the post warns that even 4-hour charts are not reliable), with a 5-period SMA and Bollinger Bands, marked optional.
- Direction: long only when the SMA points up, short only when it points down, nothing when it is flat.
- Entry: long when the previous daily candle is bullish, its body has clearly crossed the SMA and it did not touch the upper band; short is the mirror.
- Stop: the previous candle's low minus 15 pips (high plus 15 for a short), or the candle before it if the candle is too short.
- Exits: take two positions; close the first after taking profit the same day; let the second run, moving its stop “as per S&R”; you may exit when a candle touches the opposite band, or after a 1:3 move; exit at breakeven if the trade turns against you.
One setting changed early in the thread. The author's first charts, in July and August 2016, drew the SMA shifted three days to the right (period 5, shift 3), so a candle had to cross the 5-day average as it stood three days earlier; by late September 2016 the thread had moved to no shift, which is what the first post says today (“SMA 5,0”). We tested the rule as it is written now.
The post also suggests risking up to 5% of the account a trade and argues that if enough traders used the system, they would push the market their way. We test the rules, not the sizing; results are in R, the risk of each trade.
02How we made the rules mechanical
- Daily candles close at 17:00 New York, as the broker's chart does (Sunday evening belongs to Monday). SMA 5 of the closes; Bollinger 20 days, 2 standard deviations; ATR(14) only to turn the post's words into numbers.
- Flat = the SMA moved less than 0.05 ATR from the day before. Clearly crossed = the candle opened below the SMA and closed at least 0.1 ATR above it. Did not touch the band = its high stayed below the upper band. Too short = a range under half an ATR; then the stop goes under the lower of the two last lows.
- Entry at the next day's open; one position at a time; an opposite signal closes the trade and opens the new one.
- Three exits, one for each the post describes: SMA-1D closes at the end of the entry day (the first position); SMA-3R takes 3R and moves the stop to the entry after +1R (the “1:3” and breakeven rules); SMA-TRAIL moves the stop to each day's low minus 15 pips, our reading of “S&R”, and exits on the close of a day that touches the opposite band (the second position).
The numbers for “flat”, “clearly” and “too short” are ours, written down before any result; the thread does not define them. Of 5,908 daily closes, 824 gave a signal:
| The first condition that failed at a daily close | Days |
|---|---|
| The SMA was flat (slope within 0.05 ATR) | 814 |
| The candle was the wrong colour for the slope | 1,778 |
| The candle opened on the wrong side of the SMA | 2,003 |
| It closed across the SMA, but by less than 0.1 ATR | 254 |
| It touched the Bollinger band | 216 |
| A signal | 824 |
03How we tested it
EUR/USD, the 1-minute bid history of an IC Markets MetaTrader 4 demo server, January 2004 to 28 September 2026, built into daily candles; stops and targets checked minute by minute. Costs: 1 pip a round trip, as in our other EUR/USD tests, with 2.5 pips and two overnight financing scenarios shown too. Results in R: the result of a trade divided by its risk, entry to stop. Periods: 2004 to 2012, 2013 to 2019, and a holdout from 2020 already used by our earlier EUR/USD tests; first-period bar t ≥ 2.5, because average and trend rules have been tried several times on this pair. Control: every trade moved to another day, with the same direction, stop distance and exit rule, 500 times. Engine check: 50 checks, among them hand-worked SMA, band and ATR values, each entry condition failing on its own and each exit on hand-made days, and an independent re-implementation that matched every trade of all three versions; of five deliberate bugs put into the engine, four were caught and the fifth turned out to change nothing (sma5_selftest_result.txt).
04Results: does the 5 SMA daily strategy work?
| Variant | Exit | Trades | Win rate | Before costs per trade | Net per trade | Net total | Profit factor | Verdict |
|---|---|---|---|---|---|---|---|---|
| SMA-1D | The first position: closed at the end of the entry day | 822 | 46.6% | +0.003 R | -0.007 R | -6 R | 0.97 | Buried |
| SMA-3R | Target 3R ("1:3"), stop to breakeven after +1R, an opposite signal reverses | 593 | 25.0% | -0.031 R | -0.041 R | -24 R | 0.92 | Buried |
| SMA-TRAIL | The second position: stop moved to each day's low - 15 pips, exit when a day touches the opposite band, an opposite signal reverses | 742 | 37.2% | -0.030 R | -0.040 R | -30 R | 0.89 | Buried |
Cumulative net R by month. * Holdout already used before this test.
How the trades ended
| Variant | Day close | Target | Breakeven | Initial stop | Trailing stop | Band | Opposite signal | Median days held | Largest drawdown (closed trades) |
|---|---|---|---|---|---|---|---|---|---|
| SMA-1D | 89.5% | -- | -- | 10.5% | -- | -- | -- | 0 | -25.1 R |
| SMA-3R | -- | 11.5% | 19.6% | 37.8% | -- | -- | 31.2% | 4 | -41.7 R |
| SMA-TRAIL | -- | -- | -- | 11.3% | 55.4% | 29.9% | 3.4% | 1 | -34.1 R |
The 3R target was reached in only 11.5% of the trades; most ended at the stop, at breakeven or on an opposite signal. Without their ten best trades the three versions lost -30.7 R, -56.5 R and -63.6 R. Longs and shorts gave no consistent picture: with the 3R exit the shorts lost more (-0.075 R against -0.010 R), with the trailing stop the longs did (-0.052 R against -0.027 R).
05SMA cross or random day?
| Variant | Trades | Real net per trade | Moved trades, median | Moved, 5th to 95th | Percentile (95 needed) |
|---|---|---|---|---|---|
| SMA-1D | 822 | -0.007 R | -0.007 R | -0.050 R to +0.036 R | 48.2 |
| SMA-3R | 593 | -0.041 R | -0.011 R | -0.114 R to +0.090 R | 31.8 |
| SMA-TRAIL | 742 | -0.040 R | -0.025 R | -0.085 R to +0.040 R | 34.6 |
Moving every trade to another day, with the same stop and the same exit, did as well as the real signal or better. The cross of the 5-day SMA, the colour of the candle and the band did not pick better days than chance.
06Costs, swap and the optional Bollinger filter
| Variant | Before costs | 1 pip (base) | 2.5 pips | 1 pip + financing A | 1 pip + swap B | Without the band condition (trades) |
|---|---|---|---|---|---|---|
| SMA-1D | +0.003 R | -0.007 R | -0.023 R | -0.014 R | -0.007 R | -0.001 R (1,038) |
| SMA-3R | -0.031 R | -0.041 R | -0.056 R | -0.087 R | -0.064 R | -0.015 R (645) |
| SMA-TRAIL | -0.030 R | -0.040 R | -0.055 R | -0.058 R | -0.047 R | -0.026 R (957) |
With a stop of about 107 pips, even 2.5 pips of cost is small. Positions held over several nights pay financing: A charges 2% a year of the price per day held, B uses today's IC Markets EUR/USD swap; both make the multi-day versions worse. The post calls the Bollinger Bands optional: without the band condition the three versions made -0.001 R, -0.015 R and -0.026 R a trade, no better.
07By period and by year
| Variant | 2004 to 2012 (trades) | 2013 to 2019 (trades) | Holdout* 2020 to Sep 2026 (trades) | t, first period | PF, second period |
|---|---|---|---|---|---|
| SMA-1D | -0.027 R (358) | +0.014 R (244) | +0.001 R (220) | -0.79 | 1.06 |
| SMA-3R | -0.006 R (253) | +0.005 R (180) | -0.148 R (160) | -0.07 | 1.01 |
| SMA-TRAIL | -0.062 R (328) | +0.022 R (215) | -0.071 R (199) | -1.36 | 1.06 |
| Year | SMA-1D net (trades) | SMA-3R net (trades) | SMA-TRAIL net (trades) |
|---|---|---|---|
| 2004 | -6.7 R (46) | -4.3 R (31) | -10.2 R (44) |
| 2005 | -2.0 R (40) | -6.6 R (29) | -5.3 R (38) |
| 2006 | -5.9 R (35) | -8.1 R (28) | -5.3 R (34) |
| 2007 | -6.8 R (48) | -8.4 R (34) | -11.2 R (44) |
| 2008 | +0.4 R (41) | +11.1 R (30) | +1.9 R (37) |
| 2009 | +2.9 R (45) | +5.0 R (28) | +4.4 R (37) |
| 2010 | +12.1 R (33) | +6.7 R (19) | +13.1 R (29) |
| 2011 | -2.2 R (37) | -1.4 R (29) | -1.6 R (33) |
| 2012 | -1.6 R (33) | +4.4 R (25) | -6.1 R (32) |
| 2013 | -3.6 R (42) | +3.8 R (29) | +1.7 R (37) |
| 2014 | -2.0 R (36) | +2.6 R (24) | -4.7 R (34) |
| 2015 | -0.6 R (26) | +3.6 R (23) | -0.5 R (23) |
| 2016 | +3.4 R (35) | -4.2 R (28) | +2.9 R (32) |
| 2017 | -1.0 R (38) | -0.5 R (26) | -2.9 R (33) |
| 2018 | +5.2 R (33) | +0.8 R (24) | +5.3 R (28) |
| 2019 | +2.0 R (34) | -5.3 R (26) | +2.9 R (28) |
| 2020 | -1.0 R (30) | +4.6 R (23) | +1.5 R (27) |
| 2021 | -2.1 R (35) | +4.8 R (21) | -2.6 R (32) |
| 2022 | +2.7 R (29) | -4.5 R (24) | -0.4 R (26) |
| 2023 | +1.2 R (39) | -8.9 R (26) | -0.0 R (31) |
| 2024 | -5.6 R (33) | -12.2 R (27) | -12.4 R (32) |
| 2025 | +4.9 R (26) | -3.4 R (19) | +1.1 R (25) |
| 2026 (to 28 Sep) | +0.2 R (28) | -4.1 R (20) | -1.2 R (26) |
* The holdout years were already used by our earlier EUR/USD tests.
SMA-1D lost in 13 of the 23 years, SMA-3R in 13 and SMA-TRAIL in 14. From 2017, the thread's first full year, to September 2026 the day-close version made +6.5 R on 325 trades, a few hundredths of R each, while the 3R and trailing versions lost -28.7 R and -8.8 R. The daily breakout rules of the Turtle traders were buried on the same data: Turtle trading on EUR/USD.
08The gates
| Variant | Trades | 1. PF ≥ 1.2 in validation | 2. ≥ 50 trades in each period | 3. t ≥ 2.5 on development | 4. Above the 95th percentile of the moved-trade control | 5. Positive without the 10 best trades | 6. Holdout net positive (already used) |
|---|---|---|---|---|---|---|---|
| SMA-1D | 822 | fail | pass | fail | fail | fail | pass |
| SMA-3R | 593 | fail | pass | fail | fail | fail | fail |
| SMA-TRAIL | 742 | fail | pass | fail | fail | fail | fail |
| Variant | Cause | Gates failed | Verdict |
|---|---|---|---|
| SMA-1D | Costs | 1, 3, 4, 5 | Buried |
| SMA-3R | No proven edge | 1, 3, 4, 5, 6 | Buried |
| SMA-TRAIL | No proven edge | 1, 3, 4, 5, 6 | Buried |
The data-gap check removed 13, 33 and 21 trades open across a known gap in the data; no verdict changed. SMA-1D is labelled Costs by the protocol's rule (positive before costs, negative after), but +0.003 R a trade before costs is nothing: its moved trades did as well, so cheaper execution would not make it a proven edge.
TWhat this shows, and what to take into your own tests
What the results show
- The 5-day SMA cross from the Forex Factory thread, made mechanical on EUR/USD daily candles, lost money from 2004 to 2026 with all three exits the first post describes: -0.007 R, -0.041 R and -0.040 R a trade.
- Costs were not the problem. On a daily chart the stop was about 107 pips, so 1 pip cost only 0.010 R; the signal made almost nothing before costs (+0.003 R a trade held for a day) or lost.
- The same trades moved to random days did as well or better (the 48th, 32th and 35th percentiles), and leaving out the Bollinger condition changed nothing.
What remains unknown
- The thread's judgement calls: what "clearly crossed", "flat" and "S&R" mean to each member. Our numbers for them were fixed before the test, but a trader reading the chart may choose differently.
- Other pairs and the members' own variations (an EMA instead of the SMA, a CCI filter), which we did not test.
- Position sizing: the thread suggests risking up to 5% of the account a trade, which changes how far the account swings, not the average per trade.
Why it was buried
2013 to 2019 was the only period with a profit, and a small one; 2004 to 2012 was a loss for SMA-1D, SMA-3R and SMA-TRAIL, and the last two lost again from 2020. None beat the same trades placed on random days, and without the ten best trades all three were clearly negative. A cost of 1 pip is a hundredth of the risk on a daily stop, so cheaper execution would not change the verdict.
What you can apply to your own tests
- A daily chart makes costs small, which removes an excuse: if a daily rule loses, it is the signal, not the spread.
- When a system leaves "clearly", "flat" or "S&R" to the trader, write a number down for each before looking at the results; otherwise every losing trade can be explained away.
- Test the optional filter both ways: here the Bollinger condition removed up to a fifth of the trades and made no difference.
A note on the numbers: drawdown figures are measured on closed trades unless a table says it includes open losses. Open losses inside a trade are not counted in a closed-trade drawdown, so real account risk is higher, especially for systems with no stop. Backtests are not live trading.
FAQCommon questions
Does the 5 SMA daily strategy work?
Not in our backtest on EUR/USD daily candles from 2004 to 2026: 822 trades at -0.007 R each with the one-day exit, 593 at -0.041 R with a 3R target and 742 at -0.040 R with a trailing stop. None beat the same trades placed on random days.
Is the cost the problem with a daily SMA strategy?
No. With a stop of about 107 pips, a 1-pip cost is about 0.010 R a trade. The signal itself made almost nothing before costs (+0.003 R a trade held for a day) and lost with the longer exits.
Does the Bollinger Band filter help the 5 SMA strategy?
Not here. The thread calls the bands optional; without the band condition the three versions made -0.001 R, -0.015 R and -0.026 R a trade.
What is the win rate of the 5 SMA daily strategy?
46.6% with the one-day exit, 25.0% with a 3R target and 37.2% with the trailing stop on EUR/USD, none enough to pay for the losers.
How was the 5 SMA strategy tested?
On EUR/USD 1-minute data from 2004 to 2026 built into daily candles closing at 17:00 New York, with the meaning of “clearly crossed”, “flat” and “too short” written down as numbers before any result, and rules written and dated before the data was run, costs included on every trade, results split into development, validation and holdout periods, a random-entry control as the benchmark, and every variant reported. Read the protocol.
09Check our arithmetic
sma5_spec.md
sma5_lib.js · sma5_ref.js · sma5_selftest.js · sma5_run.js
control_audit_lib.js · fb_clock.js · fx_data.js · gx_lib.js · hourly_lib.js · ma_lib.js · rsi2_protocol.js · data_holes_eur.json · data_manifest.md
sma5_selftest_result.txt · sma5_results.txt · sma5_summary.json
Code provenance: our own code, written from the rules in the first post of the thread and the readings in the specification. The thread is cited for its rules only.
10Data notes
Source. A broker's demo history of spot EUR/USD (bid prices) on the New York clock; gaps longer than 30 minutes inside the week are listed in data_holes_eur.json and never filled. Our clock audit found the labels an hour early in many weeks of 2004 to 2014; there a daily candle closes at 16:00 instead of 17:00, which moves one hour between neighbouring candles. Fills: entries at the day's first minute; stops and targets at their level, or at a minute's open if it opened beyond it; a flat 1 pip a round trip, which understates the wider spread at the 17:00 rollover, where every entry of this system happens.
11Corrections
29 Oct 2026, correction: section 01 said the thread started in December 2016; it started on 26 July 2016, the date of its first post (18 December 2016 is when that post was last edited). Section 07 said “since the thread started (2017 to September 2026)”; it now says from 2017, the thread's first full year, with the same numbers. Added in section 01: the author's first charts used the SMA shifted three days, and the thread moved to no shift by late September 2016; we tested the rule as written now. The specification carries the same correction as a dated note; its rules are unchanged. No result changed.