Trend / Momentum · Original research · June 1, 2025 – June 1, 2026 (12 months)

HTF trend filter + 20 EMA pullback: 12-month backtest on real data

This is the strategy every educator recommends: identify the trend on a higher timeframe, then enter on a pullback in the trade timeframe — buy the dip to a moving average only when the bigger picture is pointing up, sell the rally only when it is pointing down. The combination is meant to fix the two great weaknesses of the strategies elsewhere in this batch: a trend filter is supposed to keep you out of the chop that destroys breakouts and fades, and a pullback entry is supposed to give you a tight stop and a good location instead of chasing.

We pinned the textbook reading and ran it mechanically: a higher-timeframe trend filter plus a pullback to the 20 EMA in the trend’s direction, with a structure stop and a 2R target, on 15-minute candles from 12 months of real Binance 1-minute data on BTC and ETH — both directions, 1% risk, 0.05% commission per side, the same deterministic engine behind Secuora’s AI backtester. The honest and slightly uncomfortable headline: the most-recommended recipe in trading still lost on both symbols after costs, with low-30s win rates and large drawdowns. The trend filter helped the shape but did not manufacture an edge from a generic entry. Full numbers below.

Secuora Verification

Verified Result

24/ 100
No Edge

No edge: net negative after costs across 2 markets.

Markets tested
2
Markets profitable
0 / 2
Total trades
1,252
Win rate
31.5%
Profit factor
0.68
Avg net P&L
-78.9%
Avg max drawdown
79.7%
Best market
ETH -69.1%
MarketTFTradesWinPFMax DDNet
ETH15m58232.6%0.7670.3%-69.1%
BTC15m67030.6%0.5789.2%-88.7%
How the SVS 24 breaks down ▾
Edge (profit factor)
3.1 / 35
Robustness (markets)
0 / 20
Sample size
20 / 20
Drawdown control
0 / 15
Consistency
1.3 / 10

12 months of real 1-minute data, fees on (0.05%/side), $10k start, 1% risk. How the score works →

The exact rules we tested

  1. Determine the higher-timeframe trend and only trade in its direction — longs in an uptrend, shorts in a downtrend.
  2. Compute the 20 EMA on the 15-minute trade timeframe.
  3. Enter on a pullback to the 20 EMA in the trend’s direction (buy the dip to the EMA in an uptrend; sell the rally to it in a downtrend).
  4. Stop beyond the last opposing swing (structure stop, fractal lookback 3); target 2R.
  5. No session filter beyond the trend gate — crypto trades 24/7, so every qualifying in-trend pullback is taken.
  6. Risk 1% of equity per trade; 0.05% commission per side; 10× max notional leverage.

Results

Binance spot 1-minute klines (data-api.binance.vision), aggregated per strategy timeframe · starting balance $10,000 · risk 1%/trade · Commission 0.05% per side; no spread/slippage modeled (BTC/ETH spot spreads are sub-basis-point); position size capped at 10× notional leverage. Generated 2026-06-12 by the Secuora ai-strategy deterministic runner (same engine as the in-app AI backtester).

BTCUSDT
15m candles · 35,040 bars
Trades
670
Win rate
30.6%
Profit factor
0.57
Net P&L
-88.7%
Expectancy / trade
−$13
Avg R multiple
-1.22
Max drawdown
-89.2%
Fees paid
$7,906
MonthTradesWin rateNet P&L
2025-063523%−$2,068
2025-073222%−$1,500
2025-087029%−$1,624
2025-094033%−$510
2025-105038%−$199
2025-117039%$84
2025-126111%−$1,852
2026-016133%−$340
2026-026832%−$269
2026-037033%−$233
2026-047729%−$394
2026-053647%$38
ETHUSDT
15m candles · 35,040 bars
Trades
582
Win rate
32.6%
Profit factor
0.76
Net P&L
-69.1%
Expectancy / trade
−$12
Avg R multiple
-0.27
Max drawdown
-70.3%
Fees paid
$7,746
MonthTradesWin rateNet P&L
2025-061619%−$806
2025-077337%−$678
2025-086838%−$279
2025-091839%−$5
2025-10560%$297
2025-113829%−$930
2025-125730%−$1,352
2026-016133%−$642
2026-026130%−$635
2026-035028%−$696
2026-047529%−$920
2026-056037%−$267

Assumptions (how loose terms were pinned down)

  • Higher-timeframe trend filter + 20 EMA pullback in trend direction; structure stop; 2R

The most-recommended recipe still needs more than "with the trend"

The result is a useful corrective to a piece of advice that gets repeated as if it were a guarantee. "Trade with the higher-timeframe trend and buy the pullback" is genuinely sound principle — but principle is not an edge, and the mechanical version of it lost on both BTC and ETH after costs, with low-30s win rates and large drawdowns. The reason is that "pullback to the 20 EMA" is a very loose entry: in a real trend price touches the 20 EMA constantly, including right before it rolls over, so the rule fires often and a meaningful share of those touches are not the start of the next leg but the start of the reversal that ends the trend. The trend filter genuinely helped — it kept the strategy from shorting strength and buying weakness, which is why the drawdowns, though large, were not the total wipeouts some unfiltered rules produced — but a filter that removes bad trades is not the same as an entry that finds good ones.

What the textbook version is missing is a trigger. "Price is near the 20 EMA in an uptrend" is a condition, not a signal; the discretionary traders who run this successfully wait for something to actually happen at the EMA — a bullish engulfing or pin-bar rejection, a break of a small lower-timeframe structure back in the trend direction, a fair value gap at the level — so they enter on confirmation that the pullback is ending rather than on mere proximity. Each of those confirmations cuts the trade count hard and, the thesis goes, lifts the quality of what remains. That is the right experiment to run against this baseline: keep the trend filter, keep the location, and add a confirmation trigger at the EMA — then see whether expectancy crosses zero.

How to backtest the HTF trend pullback on Secuora

A higher-timeframe trend filter, the 20 EMA and the candlestick confirmations are all built-in primitives of the AI backtester, so you can build this in layers and watch each one move the result.

  • Open /backtest/ai and describe it in plain English: "only trade in the direction of the higher-timeframe trend; enter on a pullback to the 20 EMA on the 15-minute chart; structure stop; 2R target." It compiles to the same engine that produced this page.
  • Run it on BTC and ETH with costs on and confirm you reproduce the net-negative result above — proof that the trend filter alone does not turn a loose entry into an edge.
  • Add a confirmation trigger at the EMA one at a time: a bullish engulfing or pin bar, a lower-timeframe structure break, or a fair value gap at the level — and watch the trade count fall and the win rate respond.
  • Sign up free and use the replay terminal — plot the 20 EMA, set a higher-timeframe bias, and replay a trending stretch bar by bar with simulated orders to feel which pullbacks resumed the trend and which ended it.
  • Journal the in-trend pullbacks you would actually take, with confluences and screenshots, so the confirmation-gated version you trade live is the one you tested.

Methodology, in one paragraph

Data: Binance spot 1-minute klines (data-api.binance.vision), aggregated per strategy timeframe, June 1, 2025 – June 1, 2026 (12 months). Execution: Secuora’s deterministic strategy runner (the same engine behind the in-app AI backtester) — single position at a time, entries at the close of the signal candle, commission 0.05% per side; no spread/slippage modeled (btc/eth spot spreads are sub-basis-point); position size capped at 10× notional leverage, starting balance $10,000, 1% risk per trade. Swings are confirmed fractals with no look-ahead. These are mechanical results: no discretion, every signal taken. Past performance does not predict future results; this is research, not financial advice.

Frequently asked questions

What is the higher-timeframe trend pullback strategy?

A multi-timeframe approach: read the trend on a higher timeframe and only trade in its direction, then enter on a pullback in the trade timeframe — typically a dip to a moving average like the 20 EMA in an uptrend, or a rally to it in a downtrend — aiming to join an established trend at a good location with a tight stop.

What win rate does the trend pullback have?

Low-30s on 15-minute BTC and ETH in our test, with a 2R target. That is acceptable arithmetic for 2R in principle, but after costs both symbols lost with large drawdowns, because a bare "pullback to the 20 EMA" entry fires too often, including right before trends reverse. The exact figures are in the results table above.

Does the trend pullback strategy work on crypto?

Not in this bare form — the most-recommended recipe in trading still lost on both BTC and ETH after costs in our test. The higher-timeframe trend filter helped the shape (it avoided the worst self-inflicted trades) but did not create an edge on its own, because proximity to the 20 EMA is a condition, not a trigger. Adding a confirmation signal at the EMA is the standard and necessary next step.

How do I backtest a trend pullback strategy myself?

Two ways on Secuora: describe it in plain English at /backtest/ai — higher-timeframe trend filters, the 20 EMA and candlestick confirmations are all built-in primitives that compile to the same deterministic engine used here — or sign up free, plot the 20 EMA with a higher-timeframe bias in the replay terminal, and trade the in-trend pullbacks bar by bar with simulated stop-loss and take-profit orders.

Run your own version of this test

Change the window, the stop, the target, the instrument — describe it in plain English and Secuora’s AI backtester runs it through the same engine that produced these numbers. Or replay the chart bar by bar and trade it yourself.

More strategy research

ICT / Smart Money
ICT Silver Bullet: backtest results on 12 months of real data
ICT / Smart Money
Fair Value Gap strategy: 12-month backtest stats
Breakout
Opening Range Breakout: 12-month backtest, win rate and stats
ICT / Smart Money
Liquidity sweep reversal: 12-month backtest results
Trend / Momentum
EMA 50/200 golden cross: what it does intraday (real results)
Sessions
London session breakout: 12-month backtest results
Sessions
Trading the New York open: two mechanical readings, 12 months of data
Sessions
NY opening drive: 12-month backtest results
Sessions
Power hour (15:00–16:00 NY): 12-month backtest results
ICT / Smart Money
Turtle Soup: backtest results for the intraday failed-breakout fade
ICT / Smart Money
Golden pocket: the 0.618–0.65 zone, pinned to testable rules
Price Action
Supply and demand zones: exact rules and the backtest plan
Price Action
Break and retest: exact rules and the backtest plan
Indicators
MACD cross: 12-month backtest results (zero-line vs signal-line)
Indicators
RSI divergence strategy: exact rules and the backtest plan
Candlestick Patterns
Inside bar breakout: exact rules and the backtest plan
Candlestick Patterns
Engulfing candle strategy: exact rules and the backtest plan
Mean Reversion
Mean reversion with RSI: 12-month backtest results on real data
Scalping
Momentum scalping on 1-minute charts: what fees actually do
Indicators
VWAP bounce: the rules, the anchor problem, and the backtest plan
Breakout
Donchian 20-bar channel breakout: 12-month backtest on real data
Indicators
Stochastic %K/%D cross in oversold/overbought zones: 12-month backtest
Trend / Momentum
VWAP cross trend on 5-minute charts: what 24/7 markets do to it
Breakout
Previous-day high/low break: the closest-to-breakeven result in our research
Mean Reversion
Fading the stretch: 3% from the 50 SMA, mean reversion backtest
Trend / Momentum
Rate-of-change momentum: trading the 24-bar surge, 12-month backtest
Breakout
Bollinger squeeze breakout: trading the volatility expansion, 12-month test