Larry Williams built the %R oscillator in the 1970s to answer one narrow question: where is today’s close sitting inside the recent trading range? That sounds almost too simple to be useful — and yet %R remains one of the most misread tools on any platform. The standard advice (“sell when it crosses −20, buy when it crosses −80”) is precisely the way to lose money with it. Williams himself never traded it that way, and the people who do tend to spend a trending market shorting strength and buying weakness until their account is gone.
This guide treats %R the way a discretionary trader actually needs it: as a fast, unsmoothed read on momentum and trend state, not as a mechanical overbought/oversold buzzer. We’ll nail the exact formula and its strange inverted scale, separate it cleanly from the Stochastic it’s so often confused with, and then build a trend-pullback method around the one behaviour everyone else treats as a bug: in a strong move, %R refuses to leave the extreme.
The exact formula and the inverted scale
Williams %R compares the current close to the high–low range over a lookback period. The formula is:
%R = (Highest HighN − Close) ÷ (Highest HighN − Lowest LowN) × −100
Where Highest HighN is the highest high over the last N periods, Lowest LowN is the lowest low over the same window, and Close is the current bar’s close. The default period is 14. The output ranges from 0 to −100.
The inverted scale trips up almost everyone the first time, so let’s reason through it. The numerator is “how far below the period’s high is the close.” If the close prints exactly at the highest high of the window, the numerator is zero, so %R = 0 — the top of the scale. If the close prints exactly at the lowest low, the numerator equals the full range, the ratio is 1, and multiplying by −100 gives %R = −100 — the bottom. So a reading near 0 means price is closing at the top of its recent range (strength), and a reading near −100 means it’s closing at the bottom (weakness). The conventional zones are 0 to −20 = overbought and −80 to −100 = oversold.
Because the negative numbers feel unnatural, many platforms (and traders) flip the indicator to plot 0–100 instead by adding 100 to the value, or by using (Close − Lowest Low) ÷ (Highest High − Lowest Low) × 100. That rescaled version is identical in shape — only the axis labels change — and it happens to make %R look even more like Stochastic, which is the source of half the confusion in the next section. Williams’ original is the −100 to 0 version; just know that “overbought” lives at the top of the scale either way.
Why %R is not Stochastic (despite looking identical)
Put raw %R (flipped to 0–100) on a chart next to Stochastic %K with the same period and they will look like mirror images, or even overlap. This leads people to call them “basically the same indicator.” They are not, and the differences are exactly the things that matter when you trade them.
The original Stochastic %K measures the close relative to the low of the range: (Close − Lowest Low) ÷ (Highest High − Lowest Low) × 100. Williams %R measures the close relative to the high of the range. Algebraically, %R (on the −100 to 0 scale) is simply Stochastic %K shifted and inverted — over an identical lookback, %R = %K − 100. That is why they trace the same path with opposite signs. So if the math collapses to the same thing, where does the practical difference come from?
Two places:
- Smoothing. “Stochastic,” as everyone actually uses it, is the Slow or Full Stochastic, which applies a moving average (the %D line, typically a 3-period SMA) and often smooths %K itself first. Williams %R is raw — no internal averaging, no signal line. So even though raw %R and raw %K are the same curve, raw %R versus the Stochastic-as-deployed is the difference between an unfiltered signal and a smoothed one.
- The reference point in your head. %R is framed around distance from the high; Stochastic around distance from the low. The arithmetic is symmetric, but it changes how you read the chart. With %R, “hugging 0” immediately reads as “closing at the highs — this is strong,” which is the correct mindset for the trend-state use we build below.
The takeaway: %R is faster and noisier than the Stochastic you normally see, because it has no smoothing layer. It hugs the extremes harder, flips quicker, and gives more signals — more of them false. That speed is a feature if you use %R as a state filter and timing trigger, and a curse if you use it as a standalone mechanical buy/sell line.
The mistake everyone makes: “−20 = sell”
Here is the single most important behaviour of %R, and the one most articles bury or ignore: in a strong trend, %R stays pinned near its extreme. During a powerful uptrend, price closes near the top of its 14-bar range day after day, so %R sits between 0 and −20 and barely leaves. During a hard downtrend, it lives between −80 and −100.
If your rule is “sell when %R reaches −20,” a real uptrend will hand you a sell signal on the very first strong day and then never let you out as the market grinds higher for weeks. You will have shorted the strongest, most one-directional environment there is. This is not a flaw in the indicator — it is the indicator correctly telling you that buyers are closing on the highs. The error is the interpretation. An extreme reading in %R is not a reversal signal; it is a momentum confirmation signal.
So flip the logic. Don’t fade the extreme — respect it as evidence of trend, and wait for the exit from the extreme to time entries in the trend’s direction. That single reframing is the whole game with %R.
Using %R as a trend-state filter, not a level
Williams described a useful read of %R behaviour that pre-dates a lot of modern “regime” talk:
- %R reaches the upper extreme (0 to −20) and stays there → buyers are in control. Treat the chart as an uptrend; only look for long setups.
- %R reaches the lower extreme (−80 to −100) and stays there → sellers are in control. Only look for short setups.
- %R oscillates back and forth across the middle (around −50) without sticking → no dominant side; you’re in a range, where the classic mean-reversion reading of overbought/oversold actually works.
This is the key distinction the “−20 = sell” crowd misses: the overbought/oversold interpretation is only valid in a range. In a trend you flip to using the extreme as confirmation. So your first job every time you look at %R is not “is it overbought?” — it’s “is the market trending or ranging?” The answer decides which rulebook applies.
The failure swing and the move out of the zone
If you don’t fade the extreme, what is the trigger? Two related events.
The move out of the zone. In an established uptrend you want to buy pullbacks, not breakouts. So you wait for the trend to take a breather: %R drops out of the upper extreme down toward the middle or even into oversold territory on a lower timeframe — that is your pullback. The entry trigger is when %R curls back up and crosses out of the lower zone (e.g. back above −80, or back above −50), signalling the pullback is over and the dominant trend is resuming. You are buying weakness within strength, with the trigger being momentum turning back in the trend’s direction. The mirror applies for shorts in a downtrend.
The failure swing. This is a classic momentum-reversal pattern that works on any oscillator and is genuinely useful on %R. A bullish failure swing: %R falls into oversold (−80 to −100), rallies up out of it, pulls back down but fails to make a new low in %R (it holds above the prior trough), then breaks above the little peak it made on its first bounce. That break is the trigger. The selling pressure couldn’t push momentum to a fresh extreme — exhaustion. The bearish failure swing is the inverse near 0. Failure swings are more reliable than a bare zone-cross because they require the indicator to fail at the extreme before you act, which filters out a lot of noise from this fast, unsmoothed tool.
Multi-timeframe: trend on the higher, %R on the lower
%R’s speed is wasted — even dangerous — if you try to read trend and timing from the same chart. The clean structure is to split the two jobs across timeframes.
Use the higher timeframe to establish direction: define the trend with structure, a moving average, or %R’s own state (is it pinned to an extreme up there?). Then drop to a lower timeframe and use %R purely for entry timing in that direction. For example, if the daily is in a clear uptrend, ignore every %R short signal on the 1-hour chart and only act on 1-hour %R pullbacks that resolve back up. The higher timeframe is your bias filter; %R’s noisiness becomes an asset because you only ever take the signals that agree with the dominant trend, and you simply discard the rest. This single rule eliminates most of the false signals that give %R a bad reputation.
Divergence and pairing with a moving average
Divergence works on %R as it does on any momentum oscillator. Bearish divergence: price makes a higher high but %R makes a lower high — the new price high was made on weaker momentum, a warning the trend is tiring. Bullish divergence: price makes a lower low while %R makes a higher low. Because %R is unsmoothed and jumpy, treat divergence as a heads-up to tighten stops or wait for a trigger, never as a standalone entry — it can diverge for a long time in a strong trend. If you want a deeper, repeatable framework for spotting and grading these, the principles in our guide to RSI regular and hidden divergence transfer almost directly to %R.
Pairing with a moving average is the cheapest, most robust trend filter you can bolt onto %R. Put a 50- or 200-period MA on price: only take %R long signals when price is above it, only take shorts when below. The MA answers “which way?” and %R answers “when?” This combination is essentially the manual version of the multi-timeframe approach and turns %R from a coin-flip oscillator into a disciplined timing tool. You can also use the slope of the MA to gauge trend strength — a flat MA warns you that you’re probably in the range regime where mean-reversion %R signals are valid again.
%R vs Stochastic vs RSI
The three most common bounded momentum oscillators are easy to lump together and easy to misuse. Here is how they actually differ:
| Aspect | Williams %R | Stochastic (Slow/Full) | RSI |
|---|---|---|---|
| Formula basis | Close vs high of N-period range | Close vs low of N-period range | Ratio of average gains to average losses (RS) |
| Internal smoothing | None — raw | Yes — %D signal line, often smoothed %K | Yes — Wilder’s smoothing of gains/losses |
| Scale | 0 to −100 (or rescaled 0–100) | 0 to 100 | 0 to 100 |
| OB / OS zones | 0 / −20 and −80 / −100 | 80 and 20 | 70 and 30 |
| Speed | Fastest — noisiest, hugs extremes | Medium — smoothed | Slowest — smoothest |
| Best use | Trend-state filter; pullback & failure-swing timing | Range mean-reversion; %K/%D crosses | Trend strength, 50-line as bias, divergence |
The pattern is clear: %R is the sharpest and least filtered, RSI is the smoothest, Stochastic sits in between. They are not interchangeable. Stacking %R for fast timing under an RSI or moving-average bias is a common, sensible combination; stacking %R and Stochastic together is largely redundant since they’re built from the same range math.
Worked example: a trend-pullback long
Let’s walk a concrete entry. Suppose BTC is in a clear daily uptrend — price above a rising 50-day MA, and daily %R has been pinned in the 0 to −20 zone for two weeks. That is your bias: longs only. We drop to the 1-hour chart for timing, %R period 14.
Over the worked window, the numbers run like this:
| Step | What price does | 1H %R reads | Action |
|---|---|---|---|
| 1 | Uptrend, closing near highs | −10 (pinned high) | Confirms trend — wait for a pullback |
| 2 | Pulls back to the rising MA | falls to −88 (oversold) | This is the dip — do not short it |
| 3 | Forms a higher low at the MA | curls up, crosses back above −80 | Entry trigger — go long |
| 4 | Resumes upward | climbs back toward −20 | Trail stop under the pullback low |
The mechanics: the higher-timeframe trend gave us a long-only mandate, so the −88 oversold print in step 2 was not a sell signal — it was the pullback we were waiting for. The actual trigger came in step 3 when %R exited the lower zone back above −80, confirming momentum had turned up again in line with the trend. The stop sits just under the higher low formed at the MA, giving a tight, well-defined risk. Notice we never once acted on “overbought” — that pinned −10 reading was confirmation to keep buying dips, exactly the opposite of the naive rule. To turn that defined risk into a concrete share or contract size, run the stop distance through our position size & risk calculator.
The Ultimate Oscillator: Williams’ own fix
Williams was well aware of %R’s biggest weakness: single-period sensitivity. With one lookback (say 14), the indicator can lurch on a single outlier bar dropping out of the window, and its “overbought” verdict is hostage to whatever timeframe you happened to pick. To address this he created the Ultimate Oscillator, which blends momentum from three different lookback periods (commonly 7, 14, and 28) into one weighted reading. By combining short, medium, and long windows, it smooths out the whipsaw of any single period and makes divergence signals more trustworthy — it’s essentially Williams answering the critique of his own earlier tool. If you find raw %R too jumpy even with a higher-timeframe filter, the Ultimate Oscillator is the logical next step from the same author.
Putting it together
Williams %R rewards the trader who treats it as a momentum and trend-state instrument rather than a reversal alarm. Remember the formula (close versus the high of the range, on a 0 to −100 scale), remember that it’s a raw, unsmoothed cousin of Stochastic and therefore fast and noisy, and above all remember that a pinned extreme is confirmation, not contradiction. Establish trend on a higher timeframe or with a moving average, use %R’s exit from the extreme — or a clean failure swing — to time pullback entries in that direction, and reserve the textbook overbought/oversold reading for genuine ranges.
%R is one tool from a deep, eccentric toolkit. The same author’s edge in futures came largely from his volatility breakout and aggressive money-management methods, and from reading the positioning of large traders through the Commitments of Traders report. For the broader habits these market veterans share, see how the masters converge in our overview of the principles the trading legends have in common.
Stack Momentum Signals That Agree
%R times the turn; RSI confirms the strength behind it. Pair Williams %R with the AIO RSI to filter out the noise of a fast, unsmoothed oscillator and only act when both point the same way.
Read the AIO RSI guideTry All AIO Indicators Free for 5 Days
Full access to the entire suite. No credit card required.
Start Free Trial