The Choppiness Index was created by E.W. Dreiss out of chaos theory, and attempts to gauge the current market's trendiness.
I've seen a few versions of this floating around, but this was built off the true version as described in the original 1993 release, you can read more about it here:

Values above 61.8 are considered very choppy, values below 38.2 are considered very trendy, but values along the entire scale can help you determine position sizing, or even weather you should be getting into this trade or not.
If you are looking for a new way to know weather the market is trending, about to trend, or just going sideways, this very handy indicator for algorithmic trading may be your answer.

Grab the source code here:
Installation video by @ChrisMoody here :

                 ░░░░░░░░░░░░░░░ Feel free to follow me to keep up with my latest scripts! ░░░░░░░░░░░░░░░
                 ░░░░░░░░░░░░ PLEASE THUMB UP OR STAR IF YOU LIKE THIS INDICATOR! ░░░░░░░░░░░░
                                                              I'd like as many people as possible to get it :)
Open-source script

In true TradingView spirit, the author of this script has published it open-source, so traders can understand and verify it. Cheers to the author! You may use it for free, but reuse of this code in a publication is governed by House Rules. You can favorite it to use it on a chart.

Want to use this script on a chart?
study("TheLark: Choppiness Index", overlay=false)

length = input(14, title="Length")
doavg = input(true,title="Do Average?")
avg = input(4, title="Average Length")
l1 = input(61.8, title="Extreme Chop")
l2 = input(50.0, title="Midline")
l3 = input(38.2, title="Trending")

str = sum(tr,length)
ltl = lowest(low <= close[1] ? low : close[1],length)
hth = highest(high >= close[1] ? high : close[1],length)
height = hth - ltl
chop = 100 * (log10(str / height) / log10(length))

plot(chop, color=#42B0FF, linewidth=2)
plot(doavg ? sma(chop,avg) : na, color=white)
hli1 = hline(l1)
hli2 = hline(l2)
hli3 = hline(l3)



Hey thanks for making this available.

I am wondering whether it is possible to somehow invert the code though, so that chop is identified by values closer to the lower 38.2 zone and below, and trending values are above 61.8 etc. I just see this as making more sense to me, visually.

Another idea that struck me is a way to show chop values so that they fall in a certain zone above and below a zero midline (say +38.2 / -38.2), with up-trending shown by line values above +61.8 and down-trending shown by line values below -61.8 on a scale from +100 to -100. This would represent a very simple visual representation of price direction in addition to "trend vs chop".

In any case, if it isn't doable I am grateful for your post and will get to know how to use it as it is. Kind regards...Kirk.
+3 Reply