Indicators · Momentum oscillators
Commodity Channel Index (CCI): formula, ±100 and two readings
How Donald Lambert’s CCI measures distance from the average typical price, a worked Caterpillar example, the two readings of ±100 and Finabase’s scoring.
On this page
The Commodity Channel Index (CCI) measures how far the current typical price is from its recent average, scaled by how far prices usually stray from that average. A reading of 0 means price is right at its average; +100 means it is unusually far above; −100, unusually far below. Donald Lambert introduced it in Commodities magazine in 1980 to spot the start and end of cyclical trends in futures. Despite the name, it works on any instrument.
CCI is unbounded, so unlike the RSI it can go to +300 or −300. It also comes with two opposite traditions: Lambert used moves above +100 as the start of a trend to join, while many traders today read +100 as overbought, a reason to sell. This guide calculates CCI by hand on Caterpillar's chart, follows both interpretations through Caterpillar's dramatic 2026, and explains which one Finabase's gauge uses.
What CCI measures
Each bar's typical price is the average of its high, low and close, a single number that reflects the whole bar. CCI compares today's typical price with its 20-bar moving average. The difference is then divided by the mean deviation: the average distance of the 20 typical prices from their mean.
That division is what makes CCI comparable across stocks and over time. A $20 move above average in a stock that usually strays $5 from it is extreme; the same $20 in a stock that usually strays $40 is not. CCI reports both in units of "normal deviation."
The formula
Lambert's constant 0.015 sets the scale. With it, a typical price one and a half mean deviations from average reads ±100. Lambert expected about 70–80% of readings to fall within ±100; with fat-tailed real prices, the share varies by stock.
A worked example on Caterpillar
On October 29, 2026, Caterpillar (CAT) traded between $631.01 and $664.47 and closed at $647.39.
| Step | Calculation | Result |
|---|---|---|
| Typical price | (664.47 + 631.01 + 647.39) ÷ 3 | $647.62 |
| 20-day SMA of TP | (from Finabase's bars) | $755.80 |
| Mean deviation | average of the 20 abs(TP − SMA) | $50.61 |
| Distance from average | 647.62 − 755.80 | −$108.18 |
| CCI | −108.18 ÷ (0.015 × 50.61) | −142.5 |
Finabase's CCI (20) for that day is −142.51. Caterpillar's typical price was about two mean deviations below its 20-day average, after a sharp October slide.
Reading CCI: two traditions
Caterpillar's year is a good test. The stock went from $583.15 at the end of October 2025, through a low of $537.08 on November 21, to a high of $1,073.46 on June 30, 2026, then fell back to $647.39 by the end of October. CCI touched +283.8 on April 8, when Caterpillar gapped up 6.5% to $771.58, and −267.8 on October 15.
Lambert's reading: ±100 as a trend signal
Lambert's original rule bought when CCI rose above +100 and sold when it fell back below +100, and did the reverse on the short side with −100. The idea was that a strong move outside the normal channel marks the beginning of a cyclical trend.
On Caterpillar, the long version produced 16 trades. Seven made money; the sum of all 16 returns was about +0.2%, before costs. The best was June 15 to July 1, 2026, +6.2%. The problem was the exit: CCI drops back below +100 quickly, so the rule caught small slices of a stock that nearly doubled. The short version, below −100 and out above −100, made 12 trades, with five winners (one of them flat) and a combined return of about −9%.
The modern reading: ±100 as overbought and oversold
Most platforms now present +100 and −100 like RSI's 70 and 30: above +100 is overbought, below −100 is oversold. Caterpillar shows the trouble with that reading in a trend. CCI went above +100 sixteen separate times in the year, fourteen of them during the rise, including 11 sessions from June 15 to June 30 while the stock climbed from $933.93 to $1,064.90. Selling each overbought reading meant selling a rally.
Neither reading works in every market. Lambert's trend view fits strongly trending instruments with sustained moves; the overbought/oversold view fits range-bound ones.
Divergence and the zero line
CCI also shows divergence like other oscillators: a new price high with a lower CCI high warns that the advance is losing force. Crossings of the zero line show the typical price moving above or below its 20-day average, a basic trend read.
How traders use CCI
Trend entries (Lambert). A rise above +100 after a period near zero can mark a breakout. Traders using this approach usually hold longer than Lambert's exit at +100, for example until CCI crosses zero.
Pullback entries. In an uptrend, a dip to −100 that turns back up is a common entry signal; in a downtrend, a rally to +100 that turns down.
Extremes beyond ±200. Readings above +200 or below −200 are rare and usually follow a gap or a climactic bar, such as Caterpillar's April 8 jump.
Pitfalls and limitations
Two opposite interpretations. Know which one you are using. The same reading of +150 is a buy in Lambert's system and a sell in the overbought view.
Unbounded. There is no fixed maximum, so "extreme" is relative to the instrument's history.
Sensitive to gaps. Because typical price includes the high and low, a large gap moves CCI sharply, as on April 8.
Comparison table
| Indicator | Built from | Range | Common levels |
|---|---|---|---|
| CCI | Typical price vs its average, in mean deviations | Unbounded | ±100, ±200 |
| RSI | Average gains vs losses | 0 to 100 | 70 / 30 |
| Williams %R | Close vs recent range | 0 to −100 | −20 / −80 |
| Bollinger %B | Close vs bands of standard deviation | Unbounded around 0–1 | 1 / 0 |
See Relative Strength Index (RSI): how to read and use it and Williams %R: formula, −20/−80 levels and real signals for bounded alternatives. Bollinger Bands build a similar channel from standard deviations instead of mean deviations.
How Finabase calculates and scores CCI
Finabase computes CCI with TA-Lib's CCI function on each bar's high, low and close. A new CCI study
defaults to 20 periods, which you can change, and is drawn in its own panel around a zero line.
In the technical gauge on the symbol page and in the Scanner, Finabase uses the modern reading: CCI above +100 is flagged Overbought and counted on the bearish side; below −100, Oversold and counted on the bullish side; in between, neutral. The Scanner lists the stocks whose CCI crossed into either zone, with the date. If you follow Lambert's trend reading, read those flags the other way round.
Frequently asked questions
Why is it called the Commodity Channel Index?
Lambert designed it for commodity futures and described price as moving within a "channel" around its average. It works the same on stocks, ETFs and currencies.
What is a good CCI setting?
Lambert suggested a period of about one-third of the market's dominant cycle; 20 is the common default and Finabase's. Shorter periods react faster and reach ±100 more often.
Is CCI above 100 bullish or bearish?
It depends on the interpretation. Lambert treated it as the start of an uptrend, a bullish signal. The overbought view, used in Finabase's gauge, treats it as a stretched market, a bearish flag. In strong trends Lambert's reading is usually closer to the truth.
Summary
CCI measures how far the typical price has strayed from its 20-bar average, in units of normal deviation, so ±100 marks an unusual move. Caterpillar's 2026 chart, from +284 to −268, shows both its readings at work: Lambert's trend entries exited too early to profit from an 84% rally, and the overbought reading said "sell" throughout that rally. Decide which tradition fits the market in front of you, and confirm with price.
Sources and further reading
- Donald R. Lambert, “Commodity Channel Index: Tool for Trading Cyclic Trends,” Commodities magazine (October 1980)
- TA-Lib — CCI function reference
- Finabase chart data — CAT daily bars, 2025-10-30 to 2026-10-29, CCI computed by Finabase