Adding a filter to a strategy that already works
A filter that keeps half the trades needs a 41% lift in average R to draw level, which is the bar to design against.
- Verdict
- Works under the right conditions
- Decided by
- Sub-sampling deficit
- The number
- Keep 50% of trades, need +41% avg R
The hypothesis, as pre-registered
Declining the worst trades should improve a strategy: fewer losers, a higher win rate, a smoother curve. A filter that removes bad trades can only help.
What the test found
Declining trades at random and keeping a fraction f of them scales total return by f, but scales daily standard deviation by only the square root of f. Measured at f = 0.40, 0.50, 0.60, 0.75 and 0.90, the realised standard-deviation ratios were 0.630, 0.705, 0.772, 0.865 and 0.949, against square roots of 0.632, 0.707, 0.775, 0.866 and 0.949. An exact match, not an approximation.
So the break-even for any filter is that the trades it keeps must average at least the original average R divided by the square root of f. Keep half the trades and you need a 41% lift in average R before the filter has paid for itself against simply running the unfiltered strategy at matched risk.
That hurdle is why a skill-free filter does not merely fail to help — it loses. On the deployed streams the permutation null for a random filter centres 17 to 20 R below zero. Comparing a filter's result against zero, which is the natural thing to do, scores it against the wrong reference and makes a losing filter look marginal.
It also explains a run of failures that had looked unrelated: a pullback-entry rule (0 of 50 cells), a confirmation rule (0 of 3 streams), and a meta-label that lifted average R from +0.278 to +0.343 when it needed +0.388.
What would make this work
Compute the required lift from the fraction the filter will keep, before building it. If the mechanism cannot plausibly deliver that much, it cannot pay — and it has to be scored against matched-risk leverage, not against zero.
Every insight ends with this line: the exact condition that would turn the finding into a tradeable edge. That is what makes each entry a next experiment rather than a full stop.
Screened September 2, 2026
Testing something similar?
The screener puts your version of this idea through the same gate stack, on your market, and answers in seconds. Your first verdict is free.
Related insights
Adding contracts to a position that is already winning
Every add earns less per unit of risk than the first lot and is correlated with it. Across forty-two schemes, flat sizing came out ahead.
SettledFiltering a signal by a state variable from the same bars
Regime conditioning works when the state is exogenous and lagged; measured on the same bars it becomes arithmetic.