Choppiness Index: A Filter, Not a Signal
The choppiness index compares how far price travelled against how far it got, on a nought to one hundred scale. High readings mean directionless movement and low readings mean trending. It is backward-looking, so its honest use is filtering whether to trade a trend method at all.
How it works
The choppiness index asks how much of the path was wasted. It compares the sum of each bar’s true range over a window against the total high-to-low range of that whole window, then takes a logarithm and scales the result to a nought-to-one-hundred band.
In plain English, it divides ground covered by ground gained. If price moved a great deal and finished near where it started, the reading is high; if it travelled efficiently, the reading falls.
The standard setting is fourteen bars and the published thresholds are 61.8 and 38.2. Those two numbers are Fibonacci-derived rather than empirically optimised, which is worth saying plainly — a convention that stuck, not a result anyone tested and published.
Why the scale runs backwards
It says nothing about direction and is not meant to. The reading describes how much of the path was wasted, which is a question with no sign attached — a violent collapse and a violent advance print alike.
High is directionless and low is trending, which is inverted against most oscillators. People who have spent years reading high as strong and low as weak import that habit here and read every signal exactly backwards.
It belongs to the same family as an efficiency ratio. Both compare net movement with total movement over a fixed window, and both ignore direction.
In practice
Its honest use is deciding whether to trade at all. A high reading is an instruction to leave the trend-following method in the drawer, not an instruction to reverse it.
It is a price measure and ignores participation entirely. Nothing in the calculation looks at volume, so a quiet drift and a heavily traded range of the same shape read identically.
On a slower chart the same period reads differently. Fourteen bars is fourteen bars whatever the interval, so a stretch that is pure chop hourly can be a clean leg daily. Choose the timeframe you actually trade.
A gap inflates the range and distorts the reading. True range counts the jump from the prior close, so one overnight move can make an orderly window print as chop.
It never tells you where the stop goes. The reading has no level attached, so every risk decision still comes from structure or bar size.
Where it sits among the trend tools
It answers a narrower question than the Average Directional Index does. The ADX is built from directional movement and rises with the strength of a move; the choppiness index only measures the efficiency of the path, and never asks which way that path pointed.
Its raw material is the same as the Average True Range. The numerator is a running sum of exactly the figure ATR averages, so the two share an input and diverge only in what they do with it — one reports typical bar size, the other reports wasted motion.
None of the three replaces trend analysis. Structure tells you what the market is doing and where the levels are; these tools only grade the quality of the ground you are standing on. Grading the ground is useful and it is not a plan.
What the choppiness index is not
- Not a direction signal. It has no sign and cannot tell a rally from a collapse.
- Not an entry trigger. A falling reading is permission to look, never a reason to buy.
- Not a volatility measure. A wide quiet drift and a narrow violent chop can read the same.
- Not a leading indicator. It describes the past fourteen bars and nothing ahead of them.
When it fails
Trading the chop costs a share of a bar each time. A round trip is 0.0098 price units, which is 2% of a median bar’s range and 45% of the smallest bar, and exceeds 10% of a bar’s range on 15 of the 576 bars.
It describes the past fourteen bars and nothing ahead. That is the unavoidable limitation: it names chop only after the chop, never before.
In a range it is correct and it is also too late. By the time the reading is convincingly high, the sideways action has already taken the losses out of you.
Bar sizes vary too much for one threshold to hold. The median bar range here is 0.493 against a tenth percentile of 0.17 and a ninetieth of 1.101, a ratio of 6.5.
It cannot tell a pause from a top. A trend that stalls and a trend that has finished print the same rising reading, because both waste motion.
And the thresholds themselves were never tested. 61.8 and 38.2 are Fibonacci ratios that arrived by convention, so treat them as a starting point, not a boundary to obey.
The original data
The figures below come from research/series-measurements.json, produced by
site/measure_series.py on this site’s shared 576-bar history. The ten-bar efficiency ratio has a
median of 0.34, a tenth percentile of 0.08 and a ninetieth of 0.71, with 30% of bars above 0.5.
Direction runs average 2.01 bars with a longest of 11, across 286 runs. A
breakout above a 20-bar high closed back below the level within ten bars in 85%
of 39 events, against a base rate for a higher close ten bars later of 54% across 566 observations.
From research/corpus-coverage.json, across 31,760 videos, “choppiness” appears in 2 videos with a
median of 196,237 views from 2 channels, while “bollinger bands” appears in 311 videos with a median
of 3,816 views.
A median efficiency of 0.34 says the default state is waste. Only three bars in ten clear 0.5, and direction runs average barely two bars before flipping. A filter that spends most of its life saying no is therefore usually right.
The coverage numbers explain why nobody teaches this properly. Two videos on choppiness against 311 on Bollinger bands says which word people search for, not which tool is better. So do this: log the reading at the open daily for two weeks alongside whether the day trended, and compare your count against three in ten before you accept 61.8 as a boundary.
Related
Trend analysis is the discipline this filter serves, because a chop reading only means something once you can name the structure it is grading.
The Average Directional Index answers the neighbouring question, measuring the strength of directional movement rather than the efficiency of the path.
Average true range supplies the raw input, since the choppiness calculation sums the same per-bar true range that this indicator averages.
I do not run a chop filter as a rule that overrides me. I run it as a question at the start of the session, which is whether the market is even paying for the method I am about to use. Most days it says the ground is poor, and most days that is correct. What I have learned the hard way is that it never stops me taking a good setup, it just changes how much I am willing to lose finding out.
— Michael Whitman
This page is educational, not financial advice. Test every idea on your own charts before risking money. Some links on this page earn a commission if you buy through them. It costs you nothing and it does not decide what appears here or in what order — how these pages are made is set out in our methodology.