Skip to main content
ForexNews24
Momentum

CCI indicator: settings and signals

Commodity Channel Index

CCI shows how far the current typical price has deviated from its average, measuring the deviation in units of the average dispersion.

What the indicator looks like on a real chart

Price1.13191.15121.17041.18971.2090CCI(20)-362-205269+1000−100
Closing priceCCI
The scale is unbounded in both directions: in a strong move CCI comfortably exceeds ±200, and by construction around 70–80% of values stay inside the ±100 corridor. So an exit beyond the boundary means an unusual deviation from the average price, not a limit.

Data: EUR/USD, daily bars, 2025-06-16 — 2026-07-20. The indicator is computed over 400 bars; the chart shows the last 180. Quote source: Binance Spot REST API (api.binance.com/api/v3/klines).

Effectiveness by market regime
RegimeScore
Trending market44
Range56
High volatility42
Low volatility48

What the indicator actually measures

Donald Lambert developed the indicator for commodity markets with pronounced cyclicality, hence the name. At its base is the typical price, the average of high, low and close: it describes a bar more fully than the close alone.

The deviation of the typical price from its moving average is divided by the mean absolute deviation and by the constant 0.015. This constant is chosen so that roughly 70–80% of values fall into the −100 to +100 corridor — that is, the bounds define not a limit but statistical unusualness.

Unlike RSI and the Stochastic, the CCI scale is unbounded. In strong moves the indicator freely goes beyond ±200 and ±300, and this is not an anomaly but a direct consequence of the absence of normalization onto a fixed range.

Formula

CCI = (Typical Price − SMA(TP)) / (0.015 × Mean Deviation)

The constant 0.015 in the denominator is not a physical quantity but a calibration coefficient. Lambert chose it empirically so that most values fit within the ±100 range, which makes a breach of these bounds a meaningful event.

Standard settings

20
Standard period
+100 / −100
Threshold levels
0.015
Lambert constant
Standard parameters
ParameterValue
Standard period20
Threshold levels+100 / −100
Lambert constant0.015

Period 20 is common for daily bars, 14 is a more sensitive variant. The ±100 levels work as the boundary of ordinary behavior; in trend systems they are sometimes used the other way around — as confirmation of the strength of the move rather than as a reversal signal.

Implementation code (Python)

cci.py
def cci(high, low, close, period=20):
tp = (high + low + close) / 3
sma = tp.rolling(period).mean()
mad = tp.rolling(period).apply(lambda x: (x - x.mean()).abs().mean())
return (tp - sma) / (0.015 * mad)

When the indicator stops working

Limitations
  • The unbounded scale makes it impossible to say in advance how far the value can travel.
  • At low volatility the mean deviation is small, and the indicator becomes excessively sensitive.
  • Calculation on the typical price makes the indicator vulnerable to spikes in highs and lows.

Common mistakes in use

  • Treating the ±100 level as a limit. It is only a boundary beyond which a minority of values fall, and by no means a ceiling.
  • Applying identical thresholds on instruments with different volatility without checking the actual distribution of values.
  • Trading a return from a zone in a strong trend — in a directional move CCI holds beyond the bound for a long time.
  • Mixing two incompatible readings: the reversal one (a breach of ±100 as overbought) and the trend one (the same breach as confirmation of strength) inside a single system.

Who needs this and why

Suits traders working with cyclical instruments who can calibrate thresholds to the specific asset. It requires more tuning than RSI but gives a finer picture of deviations.

Frequently asked questions

Where did the constant 0.015 come from?

From the author's empirical calibration: it is chosen so that roughly 70–80% of the indicator's values fall into the ±100 corridor. The number has no theoretical justification; it is a purely scaling coefficient.

CCI went beyond +300 — is that a reversal signal?

More likely a sign of an unusually strong move. The CCI scale is unbounded, and in powerful trends values beyond ±300 occur regularly. Reading this as a guarantee of a reversal is a common mistake; in trend systems such a breach is, on the contrary, read as confirmation of strength.

How is CCI better than RSI?

Not better, just built differently. CCI works with the typical price and an unbounded scale, which gives a more detailed picture of deviations but requires calibrating the thresholds. RSI has hard 0–100 bounds and is therefore simpler to use out of the box.

Other «Momentum» indicators

From research to application

In our Allocation product we implemented these algorithms with all the nuances covered across the portal.

Learn about Allocation