All posts
CCIoscillatormean reversiontrend followingindicatorbacktestUSD/JPY

CCI settings: does the ±100 fade or the breakout actually win?

2,448 CCI settings swept on USD/JPY: the line sits outside ±100 for 40% of the year, the breakout beat the fade everywhere, and the best reading is a moving average.

CCI (Commodity Channel Index) measures how far price has travelled from its own average, divided by how far it usually travels. Two lines are drawn at +100 and −100, and crossing them is described as the market having gone too far.

What you do next is where the advice splits. One school fades the ±100 line: past it, take the other side. The other school follows it: a break through +100 is a buy. Same line, opposite trades, and the indicator's definition does not settle which is right.

There is a quieter assumption underneath both. The ±100 lines are supposed to be rare. The 0.015 constant in the formula is usually explained as the number that keeps roughly 70–80% of readings inside the band.

That is where this test starts. The line sat outside ±100 for about 40% of the year.

50%60%70%80%71014203050CCI period
M15H1H4the 70-80% the 0.015 aims atUSD/JPY 2025, every bar of each timeframe
The 0.015 constant is supposed to keep 70-80% of readings inside ±100. On every timeframe and every period it holds 57.5-61.9%, so the line sits outside the band about 40% of the year.

What CCI actually measures

Three steps:

  1. Typical price = (high + low + close) ÷ 3
  2. Mean deviation = the average distance of the last N typical prices from their own average
  3. CCI = (typical price − average) ÷ (0.015 × mean deviation)

The numerator is how far price has gone; the denominator is how far it normally goes. CCI is a multiple of a normal move.

Three arbitrary choices sit inside that: the typical price, the mean deviation rather than a standard deviation, and the constant. Each one is checkable.

The constant and the level are one knob

0.015 is a divisor, so changing it rescales the whole line. A different constant is the same indicator read at a different level, not a different indicator.

ConstantEquivalent level at 0.015Largest error
0.01066.71.1e-13
0.0151000
0.020133.35.7e-14
0.0302000

The errors are floating-point rounding. There are not two settings here; there is one.

The period sets a hard ceiling on the level

Deviations from a mean sum to zero, so the positive ones and the negative ones total the same amount. A single bar can hold at most all of the positive half, which caps |CCI| at period ÷ 0.03.

PeriodCeilingLargest reading in 2025 (H1)
7233.3233.3
10333.3333.3
14466.7466.7
20666.7507.2
301000.0596.4
501666.7592.1

This is not a theoretical bound the market stays away from. Nine of the eighteen timeframe-and-period cells hit their ceiling exactly during the year.

The practical consequence: shorten the period and the higher levels stop existing. In this sweep, seven settings per cell — period 7 waiting at ±250 — never fired once, in all twelve timeframe-and-window cells. Period and level are not independent.

Mean deviation or standard deviation

Swapping the denominator for a standard deviation (H1, 2025):

PeriodCorrelationBars that disagree about ±100Bars that disagree about zero
70.99619.73%0%
140.99509.11%0%
500.99579.57%0%

Not one bar disagrees about the zero line. The denominator is never negative, so no measure of spread can change the sign. It only moves the scale — and there it flips the ±100 reading on about one bar in ten.

Setting it up and reading it

It ships with everything. CCI draws in its own panel below the price chart, not over the candles.

PlatformWhere to add it
MT4 / MT5Insert → Indicators → Oscillators → Commodity Channel Index
TradingViewSearch the indicator list for Commodity Channel Index
Browser (Formiq)Pick "CCI" from the indicator list

The fields in the settings dialog

FieldDefaultWhat it does
Period14How many bars go into the calculation. Some traders use 20
Apply toTypical price (HLC/3)The average of high, low and close — not the close
Levels−100 and +100Two horizontal lines drawn inside the panel; the decision points

MT4 sometimes opens with no level lines at all. Add −100 and 100 on the "Levels" tab, otherwise nothing in this article is visible on your screen.

What appears

One line moving up and down inside the panel. Unlike RSI or the stochastic, it has no ceiling and no floor — it can travel far above or below zero.

Where the line isThe usual reading
Above +100Overbought, or a strong push upward
Between −100 and +100Neutral, nothing to do
Below −100Oversold, or a strong push downward
Crossing zeroThe direction turned

The "or" is there because two schools read the same position in opposite ways. This article measures both.

How people trade it

NameEntryThe idea
FadeBuy below −100, sell above +100It went too far, so it comes back
Breakout (±100)Buy when it breaks above +100, sell when it breaks below −100Breaking out means momentum
Zero crossBuy crossing above 0, sell crossing belowThe direction changed

Looking at the same ±100 lines, the fade and the breakout place opposite trades. The indicator's definition does not settle which is right, so both were run under identical conditions here.

There are fewer knobs than it looks

Period and level look like two settings, but as the article shows below, the period also caps the level — a 7-bar CCI can never travel past ±233.3. Changing the applied price to the close gives a different line too: the ±100 state disagrees on 14.68% of bars at period 7 and 5.00% at period 50. Not a difference to wave away.

How this was measured

ItemValue
PairUSD/JPY
Window2025-01-01 to 2025-12-31, with 2024 run identically for comparison
Timeframes15-minute / 1-hour / 4-hour
ReadingsFade (take the other side past ±level) / breakout (take the side it broke) / zero cross
Periods7, 10, 14, 20, 30, 50
LevelsFade: entry 100/150/200/250 × exit 0/50/100. Breakout: 50/100/150/200/250. Zero cross: −100/−50/0/50/100
Combinations204 per cell; 3 timeframes × 4 windows = 2,448 runs
ExitThe opposite signal. Only the fade carries a separate exit level
Stops and targetsNone in the main sweep, measured separately below
Spread0.3 pips fixed, filled at the close
Size0.1 lot

The fade points one way — "below −100 is a buy" only ever buys — so the long and the short were swept as separate systems. The breakout and the zero cross are symmetric, so entry and exit share one rule set.

What price does after ±100, with no strategy involved

Before backtesting anything, look at price alone. No entry rule, no exit rule, so nothing is left but whether ±100 says anything.

Every bar where a 14-period CCI broke out of ±100, and every bar where it came back inside, is collected, and the move over the next 10, 20 and 50 bars is measured. Raw moves would be meaningless: USD/JPY rose 1,632 pips in 2024, so any long-side number is mostly drift. The unconditional average move over the same horizon is subtracted, leaving how much more the move was than an average bar's.

−10−50+5+10+15+10 bars+20 bars+50 barsmove from that bar, minus the drift (pips)
M15 · n=5776H1 · n=1396H4 · n=346solid: just after breaking out of ±100; dashed: just after coming back inside
Breaking out of ±100 is followed by more of the same move than an average bar; coming back inside is followed by less. The four-hour chart does the opposite of both.
TimeframeAfter breaking out (+10 / +20 / +50 bars)After coming back insideEvents
M15+0.46 / +0.93 / +2.04−0.86 / −1.01 / −1.925,776
H1+2.51 / +3.93 / +2.89−2.61 / −3.06 / −3.171,396
H4−3.89 / −3.14 / −9.79+2.91 / +5.02 / +12.50346

Both years and both directions pooled. On the 15-minute and hourly charts, breaking out is followed by more move than usual and coming back inside by less. Split by year, timeframe and horizon, the break-out cells beat the drift in 22 of 24 and the come-back cells fell short of it in 24 of 24.

The four-hour chart does the opposite of both — but on 6 of 12 and 5 of 12, which is a coin flip, over only 346 events.

So ±100 leans towards keep going, not too far. At least on the two faster charts.

The three readings, backtested

Period 14 and level 100, read three ways. The fade column is the long and the short added together.

TimeframeYearFade±100 breakoutZero cross
M152025−1,175.2+643.4−1,136.4
M152024−805.2−203.2−910.7
H12025−1,193.7+424.8+2,294.4
H12024−2,249.8+1,839.9+2,579.8
H42025−156.2+577.5+569.5
H42024−995.8+863.8+1,363.3

The fade lost in all six cells. The breakout made money in five, the zero cross in four. The trading result agrees with the price-only measurement above.

Trade counts, hourly 2025: the fade takes 210 longs and 212 shorts, the breakout 321, the zero cross 693.

Why the fade loses

Always the same shape: high win rate, small wins, large losses.

ReadingTimeframeMean win rateMean winMean lossProfitable in 2025
Fade, longH159.9%+44.4−68.727/69
Fade, shortH156.7%+44.0−83.12/69
±100 breakoutH140.1%+101.6−71.820/29
Zero crossH131.2%+59.5−23.327/30

Settings with at least one trade. Ranking these by win rate reverses the ranking by profit — the eighteenth article in this series to find it.

The short fade is the worst of the set: on the 15-minute chart, 0 of 69 live settings finished 2025 in profit. That is not just the trend, either; 2025 closed 56 pips below where it opened.

What survived both years

One year on its own is a selection problem, so here is the count of settings profitable in 2024 and 2025.

ReadingM15H1H4
Fade, long2/728/7222/72
Fade, short0/720/721/72
±100 breakout17/3020/3011/30
Zero cross6/3022/3013/30

The hourly zero cross is the most durable at 22 of 30. The short fade survives 1 of 216.

The four-hour long fade is the one respectable fade number at 22/72 — but 56 of 69 live settings were profitable in 2025 alone. A reading that works for six settings in ten one year is not a reading that works.

Settings, by reading

The same knob points in opposite directions depending on the reading, so these are split.

Zero cross, 15-minute chart, by period

PeriodMean 2025Mean tradesProfitable 2025Profitable 2024
7−1,1214,5510/50/5
14−7303,0300/50/5
30+3281,9563/53/5
50+1,2551,4195/54/5

On the 15-minute chart the zero cross improves the longer you make it, and the reason is the trade count. Period 7 at level 0 trades 4,533 times a year, which is 1,359.9 pips of spread at 0.3 pips. It lost 1,699.3 — so four fifths of the loss is the cost of trading at all. The same rule at period 50 takes 1,469 trades and finishes +614.1 in 2025 and +189.5 in 2024.

±100 breakout, hourly, by level

LevelMean 2025Mean tradesProfitable both years
±50+1,5514046/6
±100+1,3952926/6
±150+1,5191826/6
±200−936852/6
±250−675290/6

Flat from ±50 to ±150, then it falls apart. ±250 fires 29 times a year.

Zero cross, hourly, by level

LevelMean 2025Mean 2024Profitable both years
−100+166+1,8923/6
−50+1,325+2,3096/6
0+1,548+1,8176/6
+50+1,763+6534/6
+100+1,710−4253/6

No reason to move the line off zero. Only −50 and 0 are 6/6. The positive offsets look better in 2025 and collapse in 2024.

Where the default lands

Most platforms open CCI at period 14, and the lines are drawn at ±100.

ReadingTimeframeRank in 2025Rank in 2024
±100 breakoutH118/3010/30
Zero cross (14 @ 0)H16/304/30
±100 breakoutM1513/3026/30

The default period on the zero line is top-quartile in both years. The default breakout is mid-table — not bad, but ±50 or ±150 held up better.

Out-of-sample: last year's best, applied to this year

The check at the centre of this series.

ReadingTimeframeBest of 2024Applied to 2025
±100 breakoutH120 @ ±100 (+3,393.7)+1,048.5 (16/30, median +1,113.0)
Zero crossH130 @ −50 (+3,046.7)+1,729.0 (13/30, median +1,294.1)
±100 breakoutM1530 @ ±50 (+3,250.8)+1,717.2 (5/30, median +549.8)
Fade, longH410 / 200→100 (+946.1)+176.7 (54/72, median +387.5)

Two of the four beat the median: the 15-minute breakout (5th of 30) and the hourly zero cross (13th of 30). The hourly breakout landed 64.5 pips below its median, at +1,048.5 against +1,113.0.

Only the fade sank clearly — 54th of 72, +176.7 against a median of +387.5. By rank none of the trend readings fell into the bottom half, which is an unusually mild result for this series; but only half of them actually cleared the median.

Rank correlations between the two years:

ReadingM15H1H4
±100 breakout+0.527+0.255−0.408
Zero cross+0.605−0.112−0.514
Fade, long+0.316+0.008−0.214

Only the 15-minute chart is positive. Every four-hour figure is negative — last year's ranking there points at this year's bottom half.

For scale: the best four-hour breakout of 2025 was period 50 at ±250, +1,777.3 pips — on 2 trades. Numbers like that cannot choose a setting.

The zero cross is a moving average crossover

This is the clearest result in the test.

CCI's denominator is 0.015 × mean deviation, and a mean deviation is never negative. So the sign of CCI is exactly the sign of (typical price − its own simple moving average). Measured across periods 7 to 50: zero sign disagreements, zero crossing-bar disagreements.

The best-performing reading in this article is therefore reproducible without CCI. What CCI contributes is the typical price. Comparing it against the identical rule reading the close — an SMA(1)/SMA(N) crossover, since SMA(1) is the close — over all 36 matched runs:

−3k−3k−1.5k−1.5k00+1.5k+1.5k+3k+3kclose / SMA cross (pips)CCI zero cross (pips)
one point per timeframe x year x period (36 in all)above the diagonal: the CCI zero cross won (25 of 36)
The zero cross against the same rule reading the close instead of (H+L+C)/3. It trades less and wins a higher share in all 36 cells, but finishes ahead in only 25.
CCI zero crossClose / SMA cross
Trades (H1, 2025, period 14)693885
Win rate30.45%26.44%
Net pips+2,294.4+1,801.6

Across all 36:

  • Fewer trades in 36 of 36
  • Higher win rate in 36 of 36 (by 1.5 to 8.0 points)
  • More net pips in only 25 of 36

(H+L+C)/3 filters whipsaw. A close-only rule counts every bar that pokes through the average and comes back; averaging the bar's own range means it never poked through. That effect is completely consistent — no exceptions in 36 runs.

But some of the trades it removed were good ones, which is what the other 11 runs are. The filtering is certain; the improvement is not.

Filters, stops and cost

An ADX filter breaks the trend readings

Filtering for a strong trend ought to help a trend rule. It does the opposite.

SettingBaselineADX ≥ 20ADX ≥ 25ADX ≥ 30
±100 breakout, M15, 2025+643.4 (1,298)−183.8 (854)−618.9 (577)−229.5 (358)
Zero cross, H1, 2025+2,294.4 (693)+786.0 (399)+617.2 (285)−19.7 (179)

Adding a trend filter to a trend rule is a duplicated condition. The GMMA test found the same thing; this is the third time in the series.

The four-hour fade is the exception — 2025 improves from +796.2 to +1,091.2 at ADX ≥ 30, on 16 trades — but the same filter takes 2024 from +26.6 to −527.9. It does not cross the year boundary.

Sessions

The Tokyo window (UTC 0–8) helped the breakout: M15 2025 +643.4 → +877.0, M15 2024 −203.2 → +1,718.7, H1 2025 +424.8 → +1,146.8. H1 2024 slipped from +1,839.9 to +1,746.0, so three of four. It did not help the zero cross (H1 2025 +2,294.4 → +571.3).

Stops and targets

On the hourly zero cross, a 100-pip stop with a 200-pip target lifts 2025 to +2,807.8 but drops 2024 to +2,089.5 against a +2,579.8 baseline. A 24-bar time exit gives +3,588.2 in 2025 and +2,303.0 in 2024. Nothing improved both years.

Cost

Net pips fall linearly with the spread. Pips lost = trades × spread held with no error on all four settings.

SettingTradesSpread 00.31.0Break-even
±100 breakout, M151,298+1,032.8+643.4−265.20.80 pips
±100 breakout, H1321+521.1+424.8+200.11.62 pips
Zero cross, H1693+2,502.2+2,294.4+1,809.33.61 pips

The hourly zero cross breaks even at 3.61 pips, the widest margin in this series. The 15-minute breakout has 0.80 pips of room and does not survive a one-pip spread.

What this test can say

  1. ±100 is not unusual. The share of readings inside the band is 57.5–61.9%, not 70–80%, on every one of eighteen timeframe-and-period cells
  2. ±100 leans towards continuation, not exhaustion. The move after breaking out beats the drift in 22 of 24 fifteen-minute and hourly cells; the move after coming back inside falls short in 24 of 24. The fade lost in all six backtested cells
  3. Period and level are not independent. |CCI| cannot exceed period ÷ 0.03, nine of eighteen cells touched their ceiling, and period 7 waiting at ±250 never fired
  4. The 0.015 constant is the level. Setting it to 0.01 is numerically identical to moving the level to 66.7
  5. The most durable reading is not specific to CCI. The zero cross is a typical-price moving average crossover. What CCI adds is the (H+L+C)/3 input, which cut trades in 36 of 36 runs and lifted win rate in 36 of 36, but improved net pips in 25

Limits of this test

  • One pair, two years. CCI was built for commodity futures; on a different market even the share of time outside ±100 would change
  • 2024 rose 1,632 pips and 2025 closed 56 pips lower. The short fade failed in both, but "both" here means one trending year and one flat one
  • The spread is fixed at 0.3 pips. In practice it widens around releases, and a setting with 0.80 pips of room does not survive that
  • Exits are the opposite signal. Adding stops and targets produces the separate numbers above, and none of them improved both years
  • The four-hour samples are small — about 40 breakout trades a year, about 20 for the fade. The four-hour chart also inverted in the price-only measurement, but on 6 of 12 cells, which decides nothing
  • "The typical price helps" is consistent for trade count and win rate only. For net pips it is 25 of 36, and whether that counts as helping depends on which column you read

Questions people ask

What are the best CCI settings?
In this test the reading mattered more than the numbers. Reading ±100 as a breakout beat reading it as an overbought/oversold fade in every one of six timeframe-and-year cells at period 14. The single most durable setting was the zero-line cross on the hourly chart, which finished +2,294.4 pips in 2025 on 693 trades and +2,579.8 pips in 2024 on 727, and stayed profitable in both years for 22 of 30 settings.
Is a CCI reading past ±100 unusual?
No. The 0.015 constant in the formula is usually explained as putting roughly 70-80% of readings inside ±100. Measured on USD/JPY in 2025, the share inside the band was 57.5-61.9% on every one of eighteen timeframe-and-period cells, so the line spends about 40% of the year outside it.
Should CCI be used for mean reversion or trend following?
Trend following won. At period 14 and level 100 the fade lost money in all six timeframe-and-year cells, while the breakout made money in five of six. Price agrees: measured with no strategy at all, the move after breaking out of ±100 beat the unconditional drift in 22 of 24 fifteen-minute and hourly cells, and the move after coming back inside fell short of it in 24 of 24.
What does the CCI zero line mean?
It is the typical price crossing its own simple moving average, exactly. CCI's denominator is never negative, so the sign of CCI is the sign of (typical price minus its average). Across periods 7 to 50 there were no sign disagreements and no crossing-bar disagreements. The only thing CCI adds over a close-price moving average crossover is the (H+L+C)/3 input, which cut the trade count in all 36 matched runs and lifted the win rate in all 36, but improved net pips in only 25.
Does the CCI period change what levels are reachable?
Yes, and it is a hard limit. Deviations from a mean sum to zero, so |CCI| can never exceed the period divided by 0.03. A 7-bar CCI tops out at ±233.3, which is why every rule waiting at ±250 with period 7 sat dead in all twelve timeframe-and-window cells of this sweep. Nine of eighteen timeframe-and-period cells actually touched their own ceiling during the year.

Formiq is a free browser-based FX terminal with replay practice and no-code backtesting. Open the chart or see what the free plan includes.