SpreadAtlas

CCI on crypto: the momentum reading works, the reversal does not

Buying when CCI rose above +100 to +200 made money with all 6 momentum settings on 4-hour bars, a median of +43.3% a year after costs. Buying below −100 to −200 lost with all 6 reversal settings.

How it works

The Commodity Channel Index measures how far the typical price, (high + low + close) ÷ 3, is from its n-bar average, scaled by the average deviation so that most readings fall between −100 and +100. Readings outside that range can be read as stretched, a reversal signal, or as strong, a momentum signal.

What we tested

Every setting was run on eight bar lengths, from 1 minute to 4 hours, on Upbit's Korean-won market: 12 large coins from January 2024 to October 2026 (from January 2025 on 5- and 10-minute bars; 8 coins from April 2026 on 1- and 3-minute bars). Signals are taken at a bar's close and filled at the next bar's open, spot buying only, with equal money in each coin. Every trade pays Upbit's 0.05% fee plus one price tick of slippage. That makes 12 single-indicator settings, and 3,423 more combinations where the best of them were given a filter or an exit rule. Full method.

Results by setting and bar length

Each cell is the yearly return after costs over the whole period. An outlined cell passed the two-period test: at least +10% a year in both the first and the second period, with the second keeping at least half of the first.

Return per year after costs, %

Sea level (0) is break-even after costs: blue is under water, green to brown is land.

Settings above water after costs: 6 of 12 on 4-hour bars, 3 of 12 on 1-hour bars, and none on 30-minute bars or shorter. Passed the two-period test: 3 on 4-hour bars.

Setting1m3m5m10m15m30m1h4h
CCI(14) buy below −100, sell above 0−100.0−100.0−100.0−99.6−94.0−73.5−48.5−37.8
CCI(14) buy above +100, sell below 0−100.0−100.0−100.0−99.9−98.1−84.8−44.0+39.0
CCI(14) buy below −150, sell above 0−100.0−100.0−99.7−93.9−75.9−51.3−32.6−21.7
CCI(14) buy above +150, sell below 0−100.0−100.0−100.0−97.9−89.6−64.1−18.8+42.9
CCI(14) buy below −200, sell above 0−100.0−99.1−89.3−68.7−42.1−24.1−14.3−4.3
CCI(14) buy above +200, sell below 0−100.0−99.8−96.6−81.5−62.5−36.7+2.6+29.6
CCI(20) buy below −100, sell above 0−100.0−100.0−100.0−98.4−87.0−63.9−47.3−34.3
CCI(20) buy above +100, sell below 0−100.0−100.0−100.0−99.5−94.9−72.7−23.5+55.1
CCI(20) buy below −150, sell above 0−100.0−100.0−98.9−88.3−65.8−43.2−30.8−15.1
CCI(20) buy above +150, sell below 0−100.0−100.0−99.8−95.7−82.5−45.6+3.0+48.0
CCI(20) buy below −200, sell above 0−100.0−98.0−84.9−63.1−38.2−22.7−14.5−4.1
CCI(20) buy above +200, sell below 0−100.0−99.6−95.0−78.0−57.4−24.8+8.4+43.8

Adding filters and exit rules

On each bar length, the settings with the best first-period results were combined with up to two filters (trend on a longer chart, ADX, volume, RSI range, Bitcoin's trend) or one filter and an exit rule (stop-loss, trailing stop, take-profit, time limit). Combinations were only built where this indicator ranked among the leaders in the first period.

BarsCombinations that tradedPassedBest that passedReturn a yearWorst fallSecond period
1-minute840None passed. Best overall: −2.3% a year
3-minute5570None passed. Best overall: −0.1% a year
5-minute5720None passed. Best overall: 0.0% a year
10-minute5600None passed. Best overall: +0.2% a year
15-minute5490None passed. Best overall: +7.2% a year
1-hour57917CCI(20) buy above +150, sell below 0 + 4-hour chart above EMA 50 + ADX(14) above 20+17.4%−23.0%+15.9%
4-hour522243CCI(20) buy above +100, sell below 0 + volume above 1.5× its 20-bar average+58.4%−22.2%+42.8%

What we learned

Questions

How should CCI be used for crypto?

As a momentum signal on slow bars: buy when CCI rises above +100 to +200 and sell when it drops below zero. As an oversold signal it lost money on every bar length in our tests.

Every setup with this indicator in the explorer: 4h 1h 30m 15m

Related research