TL;DR: the answer box
- The most popular volume filter is the worst one tested. Requiring volume above its 50-day average improved profit factor in 28.1% of the 96 matched configurations it was applied to. Its opposite, volume below 0.8 times average, improved it in 71.9%.
- The best filter in the study is a volatility filter, and what makes it best is that it keeps trading. ATR percentage below its own 100-day median improved profit factor in 75.0% of pairings, cut the worst drawdown by 5.6 percentage points, and still let 50.8% of signals through. The best volume filter improved profit factor in 71.9% of pairings, by a larger median gain, but keeps only 15.4% of the signals.
- Improving risk-adjusted return was the exception. Return per unit of drawdown got better in 12.5% of 1,365 reliable single-filter variants and 5.5% of 3,664 stacked ones.
- Nothing came close to a 48% improvement. Across 5,029 like-for-like pairings, the largest net-profit improvement any filter produced was 11%. The median pairing lost 62% of its net profit, because filtering means trading less.
- The 15% rule is real, and now measured. Filters keeping under 15% of signals posted the biggest median gain (+0.20 profit factor) and the widest spread (0.80 against 0.39), and only 25.6% of their variants ever reached 50 trades.
How we tested
The base strategy never changes. Enter long when the 2-period RSI closes below a lower threshold, exit when it closes back above an upper one, with an optional time exit as a backstop. That is Connors' RSI(2) as published in Short Term Trading Strategies That Work (2008), and I have written up the underlying mean-reversion logic in more depth before.
What changes is one thing: whether an entry signal is allowed through.
Two markets. SPY, 8,398 daily bars from 1993-02-02 to 2026-06-12, which is 33.4 years. E-mini S&P 500 futures, 4,947 bars from 2007-01-03 to 2026-08-17, 19.6 years, as a ratio-adjusted continuous contract. Same index, two instruments, and agreement between them is a consistency check rather than out-of-sample proof.
Eighty filters plus an unfiltered control. Eight volume filters, eight volatility filters, and all 64 pairs of one with the other. Each of them is applied to all 48 base parameter settings, in both markets, on both sides. That is 15,552 variants, and it means every filter gets scored on 96 matched pairings rather than on the one configuration where it happens to shine.
Three design rules do most of the work here, and each closes a way this could have lied:
- The filter gates entries only. Filtering the exit would change what the strategy does rather than how selective it is, and the comparison would stop being like for like.
- Most filters ship with their mirror. ATR rising is only in the table because ATR falling is too. A filter and its opposite cannot both be right, so the pair is what proves the direction was measured rather than chosen after the fact.
- All 64 pairs, not a chosen few. Picking which combinations to show after seeing the singles is exactly the selection this study exists to rule out.
$35,000 per position, no compounding, flat-only, signals read at the close and filled at the next open. No commission, no slippage, no exchange fees anywhere on this page. 11,347 of the 15,552 variants clear the 50-trade reliability floor; the rest are flagged in every table and never dropped. The full per-variant results file sits behind this article.
Does RSI(2) even work before you filter anything?
Yes, and knowing how well is the whole point of the control.
| Market | Side | Configs | Profitable | Median trades | Median net profit | Profit factor | Win rate | Max drawdown | Return/drawdown |
|---|---|---|---|---|---|---|---|---|---|
| SPY | Long | 48 | 100.0% | 464 | $74,184 | 1.81 | 70.6% | 11.9% | 0.52 |
| ES | Long | 48 | 100.0% | 264 | $155,010 | 1.77 | 69.4% | 50.1% | 0.09 |
| SPY | Short | 48 | 4.2% | 858 | -$24,756 | 0.92 | 48.0% | 81.8% | -0.04 |
| ES | Short | 48 | 0.0% | 512 | -$108,719 | 0.86 | 46.4% | 214.8% | -0.02 |
Every long configuration made money. All 96 of them. That is not because RSI(2) is magic. Buying short-term weakness in an index that rose over these 33.4 years paid on every long configuration, and the short side of the same table is what the same bet looks like from the other direction.
Against the honest baselines on SPY: buy-and-hold made $551,738.32 at an 8.82% annual rate with a 56.47% worst drawdown, scoring 0.156 of annual return per unit of drawdown. A seeded random control, firing as often as this study's median variant and holding as long, made $10,186.26 and scored 0.044, with a spread of 0.047 across ten seeds. The unfiltered strategy's median of 0.52 beats both, comfortably.
So the base strategy made money across the whole grid on this history. Now: can a filter make it better?
Do volume filters improve RSI(2)?
Mostly no, and the ones that do work in the opposite direction to the advice.
| Filter | Signals kept | Profit factor | vs no filter | Improved profit factor in | Max drawdown change | Annual return change |
|---|---|---|---|---|---|---|
| Volume below 0.8x average | 15.4% | 2.44 | +0.75 | 71.9% of 96 | -3.3 pts | -2.35 pts |
| Volume above 2x average | 13.8% | 1.94 | +0.23 | 91.7% of 96 | +3.5 pts | -2.21 pts |
| Volume above 1.5x average | 36.8% | 2.00 | +0.20 | 79.2% of 96 | +0.6 pts | -1.53 pts |
| 5-day volume above 50-day | 64.6% | 1.83 | +0.07 | 63.5% of 96 | +1.5 pts | -0.74 pts |
| 5-day volume below 50-day | 49.3% | 1.68 | -0.01 | 46.4% of 96 | -3.1 pts | -1.70 pts |
| Volume z-score above 1 | 58.8% | 1.79 | -0.03 | 38.5% of 96 | +1.8 pts | -1.20 pts |
| Volume above 50-day average | 83.2% | 1.74 | -0.04 | 28.1% of 96 | +2.6 pts | -0.53 pts |
| OBV rising over 5 days | 14.6% | 1.67 | -0.05 | 39.6% of 96 | +3.5 pts | -3.60 pts |
Long side. Each filter applied to all 96 matched base configurations and scored against its own unfiltered control.
The standard advice is that volume confirms a move: heavy volume means real participation, light volume means a fake-out. LuxAlgo puts it that way, and QuantifiedStrategies measured a version of it, reporting an average gain of 0.63% per trade after a huge-volume day against about half that after a below-average one.
On this setup the direction reverses. Buying on quiet volume improved profit factor in 71.9% of pairings; buying on above-average volume improved it in 28.1%.
I do not think that makes the confirmation logic wrong. I think it makes it a breakout rule. When you buy a breakout you want participation behind the move, because the move is the thesis. When you buy a two-day washout you are betting the selling has run out of people, and a heavy-volume bar is evidence that it has not. Same indicator, opposite trade, opposite reading. I tested a related version of this question on video too, in Volume Confirms Pullbacks? I Tested It 33,000 Times.
One column deserves suspicion. Volume above 2x average improved profit factor in 91.7% of pairings, the best hit rate on the board, and it keeps 13.8% of the signals. Hold that thought until the section on the 15% rule, because that combination is the single most reliable warning sign in this whole study.
Do volatility filters do better?
Yes, clearly, and the mirror test is what makes the result trustworthy.
| Filter | Signals kept | Profit factor | vs no filter | Improved profit factor in | Max drawdown change | Annual return change |
|---|---|---|---|---|---|---|
| ATR% below its 100-day median | 50.8% | 2.31 | +0.52 | 75.0% of 96 | -5.6 pts | -1.60 pts |
| 20-day volatility below median | 53.6% | 2.02 | +0.33 | 74.0% of 96 | -5.5 pts | -1.71 pts |
| ATR(20) rising vs 5 days ago | 67.0% | 1.83 | +0.07 | 70.8% of 96 | +0.5 pts | -0.73 pts |
| Bollinger width above median | 53.8% | 1.80 | +0.05 | 56.2% of 96 | +2.4 pts | -1.12 pts |
| Bollinger width below median | 56.8% | 1.76 | -0.01 | 46.9% of 96 | -6.1 pts | -1.91 pts |
| 20-day volatility above median | 52.3% | 1.75 | -0.04 | 33.3% of 96 | +0.8 pts | -1.22 pts |
| ATR% above its 100-day median | 53.2% | 1.60 | -0.10 | 26.0% of 96 | +0.3 pts | -1.48 pts |
| ATR(20) falling vs 5 days ago | 47.7% | 1.46 | -0.30 | 1.2% of 96 | +1.9 pts | -2.38 pts |
The same 96 matched pairings, long side.
ATR percentage below its 100-day median is the best filter in the study. It raises profit factor by 0.52 in three pairings out of four, takes 5.6 points off the worst drawdown, and it is not doing that by refusing to trade: it keeps 50.8% of the entry signals. Three filters keep more and still improved profit factor in most pairings: ATR(20) rising, at 67.0% kept and 70.8% improved; 5-day volume above its 50-day, at 64.6% and 63.5%; and Bollinger width above median, at 53.8% and 56.2%. None of the three improved profit factor in as many pairings as this one's 75.0%.
That is broadly what Algomatic Trading found on a single configuration of the same base strategy, reporting a 0.3 profit-factor gain for an ATR filter that cut trades by about 20%. Across 96 pairings the gain is a bit larger. The number their post does not carry is the one in the last column here: it costs 1.60 percentage points of annual return.
Look at the top and bottom rows together. ATR rising helps in 70.8% of pairings, ATR falling in 1.2%. That is what a real effect looks like when you test both directions of it. If both had landed near 50%, the filter would have been noise with a name.
I covered the volatility-filter idea on the channel in The #1 Volatility Filter You're NOT Using, and this study is the version with the cost column attached.
What does every filter actually cost you?
Return. Every single one of them.
Across all 16 single filters the median change in annual return is -1.56 percentage points. Not one raised it. The arithmetic is not subtle: a filter removes entries, capital is fixed and does not compound, so fewer trades means less total profit. A filter has to make each surviving trade better by more than it shrinks the account, and only 10 of the 5,029 matched pairings managed it at all.
A filter is a sieve, and it is worth being blunt about what a sieve does. A finer mesh does not improve what comes through. It just passes less. Whether that is an upgrade depends entirely on what you were sieving out and whether you had a use for what you lost, and almost every filter article ever written skips both halves of that question.
Which is why the honest question is never "does this filter improve my backtest". It is "what am I buying, and what am I paying". The upper-left region of that chart is the only place worth being: better trades, smaller account. Eight of the sixteen filters are there. Eight are not.
Does stacking two filters compound the edge?
No. Stacking mostly buys a better-looking number on a smaller sample.
| Pair | Signals kept | Profit factor | vs no filter | Improved in | Reliable variants | Median trades |
|---|---|---|---|---|---|---|
| Volume below 0.8x average + 20-day volatility above median | 4.8% | 3.65 | +1.97 | 100.0% | 12.5% | 58 |
| Volume below 0.8x average + Bollinger width above median | 5.8% | 3.61 | +1.95 | 100.0% | 12.5% | 65 |
| Volume below 0.8x average + ATR% above its 100-day median | 5.3% | 3.54 | +1.88 | 100.0% | 12.5% | 50 |
| Volume below 0.8x average + ATR(20) rising vs 5 days ago | 5.3% | 3.36 | +1.80 | 100.0% | 12.5% | 51 |
The four best-looking pairs of the 64 tested.
A profit factor of 3.65, improving in 100% of pairings. It is the single most impressive number on this page and it is worth almost nothing: the pair keeps 4.8% of the entry signals, and only 12.5% of its 96 variants ever reach 50 trades. You are not looking at a better strategy. You are looking at a median of 58 trades.
27 of the 64 pairs fall below the 15% coverage floor. Apply both tests, coverage and reliability, and 37 pairs survive. Here are the best of them:
| Pair | Signals kept | Profit factor | vs no filter | Improved in | Max drawdown change | Annual return change |
|---|---|---|---|---|---|---|
| Volume z-score above 1 + ATR% below its 100-day median | 30.1% | 2.46 | +0.76 | 97.6% | -5.3 pts | -2.11 pts |
| 5-day volume below 50-day + ATR(20) rising vs 5 days ago | 20.6% | 2.36 | +0.62 | 91.7% | -3.5 pts | -2.23 pts |
| 5-day volume below 50-day + ATR% below its 100-day median | 31.7% | 2.24 | +0.53 | 84.7% | -9.0 pts | -2.17 pts |
| Volume above 50-day average + ATR% below its 100-day median | 38.8% | 2.12 | +0.48 | 75.0% | -1.3 pts | -2.02 pts |
Pairs keeping at least 15% of signals with at least half their variants reliable.
Two things about that table. Every surviving pair contains a volatility filter, but so does every pair tested: all 64 are one volume filter plus one volatility filter by construction, so the makeup of the survivors attributes nothing. And only one of the six best survivors beats the best single filter on profit factor, while all of them give up annual return too, a median 2.14 points against its 2.35. The second filter is mostly buying you a smaller account.
How many trades should a filter remove?
At least 15% of your signals should survive it. That rule of thumb has been passed around for years. Here it is measured.
| Signals kept | Filters | Variants | Clear the 50-trade floor | Median profit factor gain | Spread of that gain |
|---|---|---|---|---|---|
| Under 15% | 29 | 2,784 | 25.6% | +0.20 | 0.80 |
| 15% to 50% | 39 | 3,744 | 84.5% | +0.01 | 0.52 |
| Over 50% | 12 | 1,152 | 100.0% | +0.00 | 0.39 |
Read the middle two columns together and the whole thing falls out. The thinnest filters post the largest median gain and the widest spread, more than twice that of the filters that keep half the signals. They look best where they are least constrained by evidence, and only a quarter of their variants reach a sample size worth reading.
This is not a special fact about filters. It is the same problem robustness testing exists to catch, arriving through a different door. 29 of the 80 filters tested fall below the line. If a filter takes 90% of your trades away, you have not filtered a strategy. You have found a handful of trades you liked.
Does a volume filter actually lift the returns?
A volume filter is supposed to remove your worst trades and lift what is left. Measured like for like, the lift is not there, and the reason is worth more than any single number.
Measured like for like, with the market, the side and all three base parameters held identical and the filter as the only difference:
- Pairings scored: 5,029.
- Pairings where the filter raised net profit at all: 10, or 0.2%.
- Largest single net-profit improvement any of the 80 filters produced: 11%, from ATR% below its 100-day median, on ES.
- Median change in net profit across all pairings: -62%.
- Pairings improving net profit by 48% or more: zero.
A filter cannot easily raise total profit in this setup, because it can only ever remove trades from a strategy whose capital is fixed and does not compound. To gain net profit it would have to improve the surviving trades by more than the ones it deleted were contributing. It happened ten times out of 5,029.
So where do numbers like 48% come from? From comparing across configurations rather than within one. Take the filtered version's best parameter set, compare it against the unfiltered version's default parameter set, and you can produce an improvement no matched pairing here shows, because you are measuring the parameter change and calling it the filter. The paired design here exists to make that impossible. That is also the difference between a result and a coin flip that looks like one.
Can a filter rescue the short side?
It lifts the profitable share from 2.1% to 17.8%, and most reliable filtered variants still lose money.
- Unfiltered short RSI(2): 2.1% of 96 configurations profitable, median net profit -$53,281, profit factor 0.88.
- With a filter: 17.8% of 6,126 reliable variants turn a profit.
- The best filtered short is volume above the 50-day average combined with Bollinger width above median, at a median $6,666 across its 96 variants, with a median 202 trades each.
Going from 2.1% to 17.8% looks like a rescue until you notice what it bought: a median $6,666 over nineteen to thirty-three years, on an instrument where buy-and-hold made six figures. The filter did not find an edge on the short side. It stopped the strategy from trading often enough to lose properly. This is the same lesson as no single system will save you, stated in filter form: a filter is a modifier, and there is nothing to modify if the direction is wrong.
What is the one filter actually worth keeping?
ATR percentage below its own 100-day median. In plain terms: only take the setup when recent daily movement is calmer than it has usually been over the last five months.
| Filter | Signals kept | Reliable variants | Improved profit factor in | Profit factor | Max drawdown change | Annual return change |
|---|---|---|---|---|---|---|
| Volume z-score above 1 + ATR% below its 100-day median | 30.1% | 87.5% | 97.6% | 2.46 | -5.3 pts | -2.11 pts |
| ATR% below its 100-day median | 50.8% | 100.0% | 75.0% | 2.31 | -5.6 pts | -1.60 pts |
| Volume z-score above 1 + 20-day volatility below median | 30.5% | 87.5% | 94.0% | 2.25 | -4.2 pts | -2.08 pts |
| 20-day volatility below median | 53.6% | 100.0% | 74.0% | 2.02 | -5.5 pts | -1.71 pts |
Four of the eight filters in the stable region: each clears the coverage floor, with at least 80% of its variants reliable and a clear majority of pairings improved.
It is not the highest score in the study and that is the point. It clears the coverage floor with room to spare, 100% of its variants reach 50 trades, and it improves things in three pairings out of four across two instruments and 48 parameter sets. Nothing about it depends on a lucky corner of the grid.
And here is what it is really doing, measured on the raw signals rather than on any strategy. Every SPY bar that closed with RSI(2) under 10, split by whether the filter would have allowed it:
| Signals | Count | Median 5-day outcome | Average | Spread | Worst | Best |
|---|---|---|---|---|---|---|
| Allowed (calm market) | 333 | +0.47% | +0.41% | 2.22% | -7.1% | +7.4% |
| Blocked (volatile market) | 446 | +0.66% | +0.75% | 3.50% | -15.7% | +16.4% |
Measured from the next open to the close five sessions later, with no exit rule involved.
Read that carefully, because it is the opposite of what a filter is supposed to do. The blocked signals have the higher median outcome. The filter is not finding better trades. It is finding narrower ones: a spread of 2.22% against 3.50%, and it gives up the fat right tail along with the fat left one.
That is the entire trade you are making with a volatility filter, and almost nobody states it in those terms.
The verdict, and the honest limits
The hype is half right, and it is right about the wrong half.
Where it is right: filters do something real. Profit factor improved in 51.4% of reliable single-filter variants, and maximum drawdown fell in 44.0% of them. The best filter cut the worst drawdown by 5.6 percentage points, and one pair cut it by 9.0. If your problem is that you cannot sit through the equity curve you already have, a volatility filter is a genuine tool for that.
Where it is wrong: none of that is an upgrade. Return per unit of drawdown improved in 12.5% of reliable single-filter variants and 5.5% of stacked ones. The median filter cost 1.56 percentage points of annual return. And the most widely recommended filter in the category, "wait for volume confirmation", finished dead last of eight.
Limits, stated plainly:
- Frictionless. No costs anywhere. Since filters cut trade counts roughly in half, friction would hurt the unfiltered control more than the filtered variants, so the gap reported here is conservative in the filters' favour.
- One base strategy. Everything here is conditional on RSI(2) mean reversion. A volume filter that does nothing on a pullback entry may well earn its place on a breakout system, where the entry problem is the opposite one. That is a hypothesis this study does not test.
- Two instruments, one market. SPY and ES are the same underlying index. Their agreement is a consistency check, not out-of-sample evidence.
- Fixed capital, no compounding. Every variant risks the same $35,000 per position, and a filter that frees capital for another strategy gets no credit for it here. That is the single biggest reason a filter can be worth more inside a portfolio than it looks in these tables.
- No walk-forward. The whole history is measured at once. This is a like-for-like comparison of conditions, not a claim about what would have been knowable in advance.
What this means for you
- Test the mirror before you keep a filter. If your filter helps and its opposite also helps, you have found noise. ATR rising helped in 70.8% of pairings and ATR falling in 1.2%, and that gap is the only reason I trust the first number.
- Count what survives. If a filter leaves under 15% of your signals, delete it. That is where this study's line fell: the filters below it had the best-looking gains in the entire study and reached a testable sample a quarter of the time.
- Apply it across your whole parameter grid, not your favourite setting. Every filter here was scored on 96 matched configurations. A filter that only helps at one threshold is a parameter, not a filter.
- Write down what it cost. A filter that raises profit factor and lowers annual return has not improved your strategy, it has repriced it. Decide whether you want the smoother ride at that price before you ship it.
- Fix direction before you reach for a filter. Filters did not reliably rescue the losing direction here. They shrank it: 17.8% of 6,126 reliable filtered short variants were profitable, and the best of them made a median $6,666. Filters are modifiers, and a modifier cannot rescue a thesis that is wrong.
- If you only keep one: take the setup when ATR percentage is below its 100-day median. Half the trades, a 2.31 profit factor against 1.79, 5.6 fewer points of drawdown, 1.60 points a year less return.
This is research, not investment advice. Everything above is a backtest on historical data with no trading costs in it, and a backtest is a description of the past, not a promise about the next trade.
Every test I run gets written up like this one, numbers and all, with the losing results left in. StatOasis.com/Overfit








