
The 1166 Losing Trades: What Our EA Taught Us About Failure
## What's the Idea?
A beginner-friendly summary of the verification: “The 1166 Losing Trades: What Our EA Taught Us About Failure”.

Breakout entry example (XAUUSD daily, real data): buy when price breaks above the recent high.
What’s the Idea?
We’re always looking for ways to make our algorithmic trading systems (EAs) better, right? One common approach is to identify what makes a trade a loser and then try to avoid those situations. If we can filter out the bad trades, theoretically, our overall performance should improve. That was the core idea behind this research: to dig into the losing trades of our “robust5 FX/H1/HTF” trend-following EA and see if they shared any common characteristics at the moment of entry.
How I Tested It
I took all 1,166 trades made by the robust5 FX/H1/HTF EA – which is our core trend-following system – and meticulously analyzed each one. For every single trade, I looked at a bunch of data points at the exact moment the trade entered the market. This included things like:
- ATR% (Average True Range percentage): How much the price was moving relative to its recent history.
- ADX (Average Directional Index): A measure of trend strength.
- RSI (Relative Strength Index): An oscillator that tells us if a market is overbought or oversold, or simply its momentum.
- “Over-extension”: How far price had moved from its moving average.
- Time of day and day of the week: To see if specific periods were worse.
- Risk-on/Risk-off: A macro sentiment indicator.
- Holding bars: How many price bars the trade stayed open (though this is a result, not an entry condition).
- Year: To check for yearly variations. The goal was to see if any of these “entry characteristics” were consistently linked to a lower win rate or a negative expected value (EV). EV tells us the average profit or loss we can expect per trade.
What Happened?
After crunching all the numbers, two interesting patterns emerged regarding losing trades:
- Short Holding Period: Trades that ended up being losers tended to be held for a very short time. For instance, trades in the lowest 25% for holding duration (less than 12 bars) had a dismal 0.4% win rate and an average loss of -0.445% per trade. In contrast, trades held for a long time (83+ bars, the top 25%) had a fantastic 90.6% win rate and averaged +1.04% profit!
- The catch: While this is a clear correlation, the holding period is something we only know after the trade has closed. It’s a “result,” not an “entry condition.” So, we can’t use this to filter trades before they happen. It’s interesting, but not actionable for pre-trade filtering.
- Low RSI at Entry (Weak Momentum Break): This was the big one! Trades that entered when the RSI was relatively low showed a significantly worse performance. This means the market didn’t have much momentum before our trend-following EA tried to catch a breakout.
- Specifically, trades where the RSI at entry was in the lowest 25% (between 30-60) had a win rate of only 24.4% and an expected value of -0.068%. Ouch!
- Compare that to trades where the RSI was high (72+, the top 25%), which saw a win rate of 45.5% and an expected value of +0.142%. That’s a huge difference!
- Why this matters: Unlike the holding period, RSI is something we do know at the point of entry. This was the only “pre-identifiable” characteristic strongly linked to losing trades. Other factors like ATR%, ADX, over-extension, time, or day of the week didn’t show a consistent link to losing trades.
Testing the “Low RSI” Filter
Given that low RSI at entry seemed to be a clear indicator of a struggling trade, I decided to test a filter: what if we simply avoided trades that entered with a low RSI (let’s call this rsi_min)?
Here’s what we found:
- In-Sample (IS) Improvement, Out-of-Sample (OOS) Flat: When testing this filter on the historical data it was derived from (in-sample), the Profit Factor (PF) improved slightly from 0.98 to 1.02 during weak market periods.
- Quick Jargon Buster: Profit Factor (PF) is simply your gross profit divided by your gross loss. A PF greater than 1 means you’re profitable. A PF below 1 means you’re losing money. So, moving from 0.98 to 1.02 during a weak period is a small but welcome improvement – it means you went from slightly unprofitable to slightly profitable.
- No Overall Improvement: However, when applied to new, unseen data (out-of-sample), the overall Profit Factor remained essentially flat (1.48 before the filter, 1.47-1.48 after). This means the filter didn’t make the system better in real-world, forward testing.
- Fewer Trades: Implementing the
rsi_minfilter also reduced the total number of trades by about 9%. In other words, while the filter seemed to help a tiny bit in specific, historically weak periods, it didn’t improve the system’s overall profitability when looking at new data. Most of the sub-periods tested showed little to no change in performance.
What I Learned
This was a fascinating outcome! We could identify a common characteristic of losing trades (low RSI at entry), but filtering them out didn’t make the system better. Why? The core reason lies in the nature of trend-following systems. Trend followers make most of their money from a few very large “fat tail” wins – those huge, extended trends. The losses, on the other hand, tend to be numerous but small. Imagine you’re fishing for a specific type of big, valuable fish. You cast your net, and sometimes you catch a big one, but often you catch small, less valuable fish (or even just seaweed!). If you try to meticulously filter out every piece of seaweed or every tiny fish, you might also accidentally throw back some of the small-but-still-valuable fish that were mixed in. More importantly, all that filtering effort doesn’t help you catch more of the big, valuable fish that truly drive your profits. That’s what happened here. The low-RSI “losing trades” were indeed more frequent, but their average loss was relatively small. By removing them, we also ended up removing the occasional winning trades that happened to occur under similar low-RSI conditions. The net effect was that we didn’t significantly reduce our overall losses, and we certainly didn’t increase our big wins. This reinforces a fundamental truth about trend following: you can often identify the losing trades, but avoiding them doesn’t necessarily make you more profitable overall. It’s just part of the game. The real profits come from letting the big winners run, not from obsessing over small losses.
The Verdict
Ultimately, this data-driven analysis confirmed that our robust5 FX/H1/HTF EA is already quite robust. There isn’t much “low-hanging fruit” left to pick in terms of filtering out losing trades to boost overall performance.
However, the rsi_min filter isn’t entirely useless. While it didn’t improve the overall PF, it did show a slight improvement during weak market regimes (from PF 0.98 to 1.02). This means it can act as a “conservative option” to slightly increase the system’s survivability during its worst periods. For this reason, the rsi_min filter will remain implemented in the system, but it won’t be part of any major changes for the upcoming v1.4.1 release.