CCI vs Williams %R
The commodity channel index takes how far the typical price stands from its 20-period mean and divides that by 0.015 times the mean deviation, so it has no ceiling. Larry Williams's percent R locates the close inside the last 14 sessions' range, on a scale that runs from 0 (the high) down to -100 (the low).
Both oscillators break a habit: one has no ceiling, the other runs from 0 down to -100. On SPY the practical difference was frequency. The raw range reading reached its extreme zones more often, in shorter bursts, nearly every year.
What each one is
The CCI scales stretch to the instrument. Donald Lambert published it in 1980: today’s typical price minus its 20-period mean, over 0.015 times the mean deviation, which makes the scale follow how much the instrument usually wanders. The commodity channel index has the arithmetic.
Williams percent R locates the close inside the recent range. StockCharts credits it to Larry Williams and defines it over 14 periods as the gap from the close up to the period’s high, divided by the period’s full range, times -100. A reading of 0 means the close was the high; -100 means it was the low. TradingView notes that Williams set the 0 to -20 and -80 to -100 zones himself. Williams percent R covers it.
One adapts and the other is fixed to its window. The CCI divides by how much the typical price has been wandering, whereas %R divides only by the 14-session range.
Where they differ
Whether there is a ceiling. The CCI has none. %R cannot go above 0, and on SPY it sat at exactly 0 on 81 sessions, each time because the close was the highest price of the last 14 sessions.
How much smoothing there is. The CCI uses a 20-period average and mean deviation. %R uses none, so one close can carry it from one end of the scale to the other.
How often each fires. On SPY the raw reading entered its zones more often and left sooner: median runs of 3 sessions above -20 against 4 for the CCI above +100, and 2 below -80 against 3 below minus 100.
Which way the scale runs. Strength is near 0 on %R and above +100 on the CCI. A rule copied from one to the other without flipping the sign is backwards.
Which one to use: CCI or Williams %R?
Use the commodity channel index when you want fewer, longer extremes. On SPY it crossed its +100 and -100 lines less often than %R crossed -20 and -80 in almost every year.
Use Williams percent R when you want the earliest raw reading of where the close sits. No smoothing means no delay, and it registers a close at the range’s top immediately.
Use the stochastic instead when you want that range reading steadied. It is the same measurement with smoothing added.
And use one of them, not both, when you are counting signals. They are built from the same bars, and they disagreed about the same session often enough to make a combined rule hard to read.
How often each reached its zone on SPY
The test. Both oscillators were run day by day over SPY from 3 January 1994 through 2 October 2026. An entry is a session in the zone after a session outside it: above -20 or below -80 for %R, above +100 or below minus 100 for the CCI.
%R entered more often. Over the whole span: 706 entries above -20 (21.56 a year) and 528 below -80 (16.12 a year); the CCI entered below minus 100 339 times (10.35 a year). Across the 32 full years from 1994 to 2025, the median year had 22 %R entries at the top against 17.5 for the CCI, and 15 at the bottom against 10. %R had more top entries in 29 of the 32 years and more bottom entries in 30. Its busiest year was 1997, with 33; its quietest were 2002 and 2022, with 14 each. The CCI’s yearly count above +100 ran from 8 to 25.
They often disagreed about the same session. %R was above -20 on 3,228 sessions (39.16%), and on 949 of them (29.40%) the CCI was not above +100. The CCI was above +100 with %R at or below -20 on 195 sessions.
A pinned reading: SPY, 23 July 2025
A pinned day: 23 July 2025. SPY closed at $634.21, the highest price of the prior 14 sessions, whose low was $617.87. Williams %R read exactly 0, the top of its scale. The CCI read 148.1: above +100, but one reading among many, since across the 81 pinned sessions it ranged from 67.0 to 264.4 with a median of 145.7. A pinned %R says where the close sat; it says nothing about how far price had stretched.
The original data
The sample. SPY’s daily price file from Yahoo Finance, January 1993 through 2 October 2026; the tally opens on 3 January 1994. The yearly table uses the 32 full years 1994 to 2025.
The formulas. As StockCharts gives them (read 4 October 2026). %R(14) = -100 x (14-session high minus close) / (14-session high minus 14-session low), today included. CCI(20) uses the typical price, its 20-session simple mean and the mean absolute deviation around that mean, with Lambert’s 0.015.
What is not measured. No entry is followed forward, so nothing here shows either oscillator predicting a turn or a continuation. The count is for one fund on daily bars; another market or interval will give other rates. Every session’s readings are in the SPY daily Williams %R and CCI file, and the yearly counts in the entries by year file.
When it fails
The failure is building a rule on Williams %R’s zones and finding it fires every couple of weeks. On SPY the reading entered its top zone a median 22 times a year, and most stays lasted 3 sessions or fewer. A trader expecting a rare overbought signal gets a frequent one, adds a filter to cut the count, and ends up with a rule fitted to whatever stretch of history was on screen. The frequency was visible in advance by counting.
The second failure is reading the inverted scale the wrong way round. A reading near 0 marks a close near the 14-session high.
A third is treating %R at 0 as the same message as a high CCI. On 8 of SPY’s 81 pinned sessions the CCI was not even above +100.
A fourth is running both for confirmation. They come from the same bars.
And a fifth is carrying either threshold to another instrument without counting how often it is crossed there.
Related
The commodity channel index covers the CCI’s deviation scaling in full. Williams percent R covers the raw inverted range reading. And stochastic covers the smoothed version of the same range measurement.
Count how often your oscillator fires in a year before you build a rule on it. On SPY the raw range reading entered its top zone about once every twelve sessions, which is a lot of signals for one index fund.
— Michael Whitman
This page is educational, not financial advice. Test every idea on your own charts before risking money.