volatility
Cyclical Oscillator
Intermediate
CCI

Commodity Channel Index

Measures deviation of typical price from its moving average, normalized by mean deviation, to identify cyclical overbought/oversold conditions.

Overview

The Commodity Channel Index (CCI) was developed by Donald Lambert and published in Commodities Magazine in 1980. Despite its name, CCI is applied to all asset classes. It measures how far the current typical price (average of high, low, and close) has deviated from its average over a period, normalized by mean absolute deviation. CCI oscillates without fixed bounds but has reference levels at +100 and −100.

How it looks on a chart

Illustration only — synthetic data generated for visual reference.

Beginner

CCI works like a pressure gauge for price. When the reading is very high (above +100), it means price has moved significantly above its recent average — potentially overbought. When it is very low (below -100), price has moved significantly below its recent average — potentially oversold. Unlike RSI (which stays between 0 and 100), CCI has no hard boundaries. It can reach +200, +300, or even higher during very strong trends. This is actually useful: extremely high CCI readings can confirm the start of a powerful trend rather than just overbought conditions. Donald Lambert originally designed CCI to signal entries and exits in commodity cycles. A reading crossing above +100 is a buy signal; crossing below -100 is a sell signal. This makes it a breakout indicator as much as an overbought/oversold tool. Crossing back below +100 from above is the exit for longs; crossing back above -100 from below is the exit for shorts.

Intermediate

CCI = (Typical Price − SMA(Typical Price, n)) / (0.015 × Mean Deviation). Typical Price = (High + Low + Close) / 3. Mean Deviation = average of |TP − SMA(TP)| over n periods. The constant 0.015 was chosen by Lambert to scale so that approximately 70-80% of CCI values fall between ±100 under normally distributed prices. The most common period is 20. Shorter periods (10–14) are more sensitive. The ±100 thresholds act as the normal zone boundaries — values outside indicate an "abnormal" price level. As a trend indicator, entering on CCI crossing +100 (long) or −100 (short) and exiting on the cross back is one of Lambert's original applications. CCI correlates closely with RSI but uses a different normalization method (mean absolute deviation vs. average gain/loss). CCI's mean deviation normalization makes it more robust to outliers than variance-based measures but less statistically efficient. In practice, CCI and RSI frequently give similar signals but with slightly different timing.

Advanced

CCI's use of Mean Absolute Deviation as the normalization factor is noteworthy: MAD is a robust estimator of dispersion compared to standard deviation, as it is less influenced by extreme outliers. This gives CCI slightly different behavior than Bollinger %B (which uses standard deviation) at the tails — CCI's normalization is more conservative in fat-tailed distributions. In cycles research, CCI is used to identify the dominant cycle in a time series. If the 20-bar CCI consistently peaks at +100 and troughs at -100 with a regular interval, it suggests a roughly 20-bar cycle in the underlying data. This connects to Fourier analysis of price data and cycle-based trading systems. Quantitative practitioners use CCI as a component in cross-sectional ranking models: computing CCI(14) across a universe of assets and going long the highest-ranked (most oversold reverting to mean) while shorting the lowest-ranked. This cross-sectional approach removes the need to set absolute thresholds, instead using relative rankings to generate long-short signals.

Formula

CCI = (TP − SMA(TP, n)) / (0.015 × MAD)
where TP = (High + Low + Close) / 3
MAD = mean of |TP − SMA(TP)| over n periods
  1. 1.Compute Typical Price: TP = (High + Low + Close) / 3.
  2. 2.Calculate the n-period SMA of Typical Price.
  3. 3.Calculate Mean Deviation: average of |TP − SMA(TP)| over the same n periods.
  4. 4.Apply the CCI formula: CCI = (TP − SMA(TP)) / (0.015 × Mean Deviation).
  5. 5.Plot with ±100 reference lines; positive values indicate price above average, negative indicate below.

Parameters

ParameterDefaultRangeDescription
Period20550Lookback period for the SMA and mean deviation calculation.

Trading signals

bullish: CCI crosses above +100

Price breaking above normal range — trend breakout long signal (Lambert method).

bearish: CCI crosses below -100

Price breaking below normal range — trend breakout short signal (Lambert method).

bearish: CCI returns below +100 from above

Overbought reversal — mean reversion short signal or exit long.

bullish: CCI returns above -100 from below

Oversold recovery — mean reversion long signal or exit short.

Limitations

  • Unbounded oscillator — extreme values are common and can be difficult to interpret.
  • The 0.015 constant assumes roughly normal distribution; this assumption fails in trending or volatile markets.
  • Sensitive to individual high-low spikes that inflate the Typical Price.
  • Can be used as both a breakout and mean-reversion indicator, creating ambiguity about the correct interpretation.
How Gilito AI uses CCI

Gilito uses CCI in two modes: as a trend breakout signal (crossing ±100) and as a mean-reversion signal (extreme readings returning to the normal range), backtesting both applications across all assets to identify which mode works best per instrument type. CCI is also used as a normalization input in cross-sectional momentum ranking models.

Related indicators