Backtests · US100 · trend_ema20_vs_ema50 · long
Does trend_ema20_vs_ema50 above 0 work on US100? 2023 to 2026 backtest
US100 long when EMA20 above EMA50 is above the threshold, tested at five thresholds taken from the feature’s own distribution on US100 over this window: its 10th, 25th, 50th, 75th and 90th percentiles. Window 2023-09-30 to 2026-09-30, the last 30 percent held out of sample; stop 2 ATR, target 2.5 R, held overnight, max spread 30 pips, one-minute confirmation 25 pips, no hour filter. Fills and spread as measured on a demo fleet (how a result is judged). The direction and the exit are the ones the research catalogue carried for this pair; the thresholds are not.
Five thresholds, one rule shape
| Percentile | Condition | In sample R / trades | Out of sample R / trades | t | Trades to confirm | Last quarter R / trades | Verdict |
|---|---|---|---|---|---|---|---|
| p10, p25 | trend_ema20_vs_ema50 > 0 | -298.7 R / 3320 | -77.7 R / 1331 | -1.3 | 3,046 | -34.1 R / 386 | No edge shown |
R is the risk on one trade. The out-of-sample split carries the verdict: below 100 trades it is “no edge shown” whatever the t; a positive mean with t below 2 is “net positive, not yet distinguishable from chance”; the last column is how many trades that mean would need to reach t = 2.
Each threshold in full
trend_ema20_vs_ema50 > 0 (p10, p25)
No edge shown out of sample: -77.7 R over 1331 trades is -0.058 R per trade, within what chance produces (t = -1.3); about 3,046 trades would be needed to confirm this mean at t = -2, shown: 1331.
Entry: stop order 2 pips past the signal close, cancelled after 4 bars; 4,703 signals placed, 4,651 filled, 52 expired; trigger state, an entry on every bar the conditions hold while flat.
Exit: stop 2 ATR (mean 381.0 pips, 2.00 ATR); target 2.5 R; exits 66% at the stop, 28% at the target, 6% at the day end.
Filters: signals on every weekday; no entries 22:00 to 01:00 broker time (7,645 bars); max spread 30 pips (0 bars over it); M1 confirmation 25 pips (2,021 signals rejected).
What trend_ema20_vs_ema50 measures
EMA20 above EMA50 (flag), on M5 bars. 1 when the 20-bar exponential average is above the 50-bar average on M5, else 0.
Equals 1 exactly when ema_spread_norm is above 0, so the two are one condition, not two.
Test your own variant
Rule Collider runs one rule on one symbol over years of broker M5 data with the fills and the spread a demo fleet measured, and shows the out-of-sample figure first. Early access goes to the waitlist in signup order.
Historical simulation on broker M5 data with a measured fill offset, a measured spread factor, swap and a one-minute confirmation model. Past results do not predict future results. This is a research tool, not investment advice. Hours are broker time, the chart time in MT5. Built 2026-11-04 from runs ending 2026-09-30; refreshed monthly.