Alan Ross

Alan Ross Forex

Free Forex Indicators, MetaTrader Tools and Honest Trading Guides

Indicators

Choppiness Index vs ADX vs GRI: The Filters Beat the Unfiltered Rule 15 Times in 41, and ADX Only 2 in 10

Key takeaways

  • I put three “is the market trending or choppy?” filters on the same three rules and the same bars: the Choppiness Index, ADX 14 and the Gopalakrishnan Range Index (GRI). EURUSD and gold, M5 and M15, spread included.
  • The filters made the unfiltered rule better 15 times in 41 runs, 37%. A coin would have done better at picking which runs to filter.
  • ADX was the worst: better in 2 of 10 runs. The Choppiness Index split at 50 was the best: better in 5 of 12, and 2 of the 3 runs that passed every check.
  • None of the three said anything about the next 24 bars. Their correlation with how straight price moved next was between -0.05 and +0.03 on every chart.
  • The textbook Choppiness zone above 61.8 was rare: 5.3% of EURUSD M5 bars. A range rule that waits for it gets 17 trades in 12 weeks.

Trend rules lose money in sideways markets. Everyone agrees on that, and every platform has an answer: ADX above 25, Choppiness Index below 38.2, and lately “chaos” indexes like GRI. They all claim to tell you which kind of market you are in. Here they go head to head on the same trades, and the question is simple: which one made the rule better more often?

Data: EURUSD from June 3 to August 26, 2026, 16,926 M5 bars and 5,642 M15 bars, and gold over the same weeks. Cost 1 pip per EURUSD trade and $0.30 an ounce per gold trade. How GRI is built and why it behaves like ATR is in the Gopalakrishnan Range Index test.

What does each filter say?

Comparing three trend filters on the same chart
FilterBuilt from“Trending” when“Choppy” when
Choppiness Index 14Sum of 14 true ranges against the 14-bar high-low range, scaled 0 to 100below 38.2above 61.8
Choppiness Index, split at 50the samebelow 50above 50
ADX 14Wilder’s directional movementabove 25below 20
GRI 14log of the 14-bar high-low range over log 14, ranked against the last 288 barsrank above 70%rank below 30%

Two trend rules took trades only when the filter said “trending”: a 20-bar Donchian breakout and an EMA 20/50 cross, both with a 1.5 ATR stop, a 3 ATR target and 48 bars at most. One range rule took trades only when the filter said “choppy”: a Bollinger 20/2 fade back to the middle line with a 1 ATR stop. One trade at a time.

Did the filters agree with each other?

A forex chart with an oscillator below price, the kind of filter compared here
ChartChoppiness vs ADXChoppiness vs GRIADX vs GRI
EURUSD M5-0.31-0.610.39
Gold M5-0.08-0.550.42
EURUSD M15-0.33-0.720.44
Gold M150.01-0.540.31

Correlation bar by bar. A low Choppiness reading means trending, so agreement with ADX shows as a negative number.

Barely. On gold the Choppiness Index and ADX were close to unrelated, -0.08 and +0.01. Three tools that all claim to measure the same thing gave three different answers on the same bar. Choppiness and GRI agreed most, because both are built on the high-low range.

Did any of them predict a trending stretch?

ChartChoppiness vs next 24 barsADX vs next 24 barsGRI vs next 24 barsADX lowest fifthADX highest fifth
EURUSD M5-0.010.010.030.1670.167
Gold M50.01-0.05-0.050.1720.172
EURUSD M15-0.010.030.030.1760.184
Gold M15-0.01-0.05-0.070.2210.206

The next 24 bars are measured by the efficiency ratio: net move divided by the sum of all bar-to-bar moves, 1 for a straight line. The last two columns are its median after the 20% of bars with the lowest and the highest ADX.

This is the core of the result. After the bars with the highest ADX, EURUSD M5 moved exactly as straight as after the lowest, 0.167 both times. On gold M15 the low-ADX bars were followed by slightly straighter moves. All three filters describe the bars you have already seen; none of them knew what came next.

Which filter made the rules better?

FilterRuns with 30+ tradesBetter than no filterPassed every check
Choppiness, split at 501252
Choppiness 38.2 / 61.8840
GRI rank 70% / 30%1141
ADX 25 / 201020
All filters41153
No filter12n/a0

Passed: positive after cost, positive before and after July 15, 2026, and above the best 5% of 200 runs of random entries with the same exit and trade count.

ADX did worst, which matches what I found in the ADX 25 filter test and the ADX vs Supertrend comparison: by the time ADX is above 25, much of the move is behind you. On gold M15 the ADX filter turned the breakout rule from +$0.21 to -$0.74 an ounce a trade.

The three runs that passed:

RunTradesAfter cost1st half2nd halfRandom, best 5%Same rule, no filter
Gold M15 breakout, Choppiness below 50140+$2.18+$4.82+$1.09+$2.07+$0.21
Gold M15 Bollinger fade, Choppiness above 50114+$1.02+$2.23+$0.28-$0.03+$0.41
EURUSD M15 Bollinger fade, GRI rank below 30%84+0.75 pips+0.67+0.82-0.38-0.18 pips

Two of the three are on gold M15, the chart where the unfiltered rules already made money, and where a simple Choppiness split at 50 sent the trend rule to the trending half and the range rule to the choppy half. The breakout cleared its random line by $0.11 an ounce, which is thin. With 53 runs in the whole test, about 2 or 3 would pass this line by luck, so 3 is what luck alone would produce.

Why did the textbook Choppiness levels do worse than 50?

ChartBars below 38.2 (“trending”)Bars above 61.8 (“choppy”)
EURUSD M531.6%5.3%
Gold M512.3%12.2%
EURUSD M1520.7%7.5%
Gold M1514.9%13.3%

The Fibonacci levels leave most bars in the middle, so the filter throws away most trades. The Bollinger fade on EURUSD M5 went from 838 trades to 17, and on EURUSD M15 from 277 to 11. Few trades means the result is mostly noise. Splitting at 50 keeps enough trades to say something, and it was the version with two of the three passes. The settings guide tries other cut-offs: Choppiness Index and GRI settings for MT4.

So which filter should you use?

  • If you use one, use the Choppiness Index at 50, not at 38.2 and 61.8. It was better than no filter in 5 of 12 runs and produced 2 of the 3 passes, both on gold M15.
  • Do not expect ADX to rescue a losing trend rule. Better in 2 of 10 runs, and the gains were losses getting smaller.
  • Treat GRI as a volatility reading. It tracked ATR at 0.81; the ATR settings guide gives you the same information directly.
  • Fix the rule before you add a filter. On EURUSD M5 every rule lost with every filter. The trading system vs entry signal test found the same about the 200 EMA filter: a filter cannot make a losing entry win.

Frequently asked questions

Is the Choppiness Index better than ADX?

In this test, yes, but not by much. Split at 50 it improved the unfiltered rule in 5 of 12 runs; ADX above 25 or below 20 did in 2 of 10.

Can ADX tell if the market will trend?

Not here. After the 20% of bars with the highest ADX, EURUSD M5 moved exactly as straight over the next 24 bars as after the lowest 20%: 0.167 both times.

What Choppiness Index level means a trending market?

The textbook level is below 38.2. On EURUSD M5 that covered 31.6% of bars and above 61.8 only 5.3%, which leaves a range rule almost no trades. A split at 50 did better as a filter.

Do chaos filters improve forex strategies?

Across 41 runs with GRI, Choppiness and ADX as filters, the filtered rule beat the unfiltered one 15 times. 3 runs passed every check, about what luck alone would give.

Which timeframe worked best with these filters?

Gold M15, where the rules made money without a filter as well. On the M5 charts nothing passed.

Want a clean indicator to install right now?

It is my own enhanced DeMARK Trend Line indicator for MetaTrader 4 and 5. Non repaint, clean, and free.

Download the Free DeMARK Indicator

Written by Alan Ross

Forex trader and MetaTrader indicator developer. I build and test MT4 and MT5 tools, then write the honest version of how they actually work. More about me.

Last reviewed November 2026
Alan Ross
Alan Ross

Forex educator and indicator developer. I build and trade my own MetaTrader tools, and share the ones that genuinely help.

Leave a comment

Your email address will not be published. Comments are reviewed before they appear.