Williams %R measures where the current close sits within the recent high-low range — then inverts the scale. Values run from 0 to -100. Near 0 means price closed near the top of its range (overbought). Near -100 means price closed near the bottom (oversold). Developed by Larry Williams, it is mathematically the inverse of fast Stochastic %K.
Section 1: Core Mechanics
Williams %R answers the same question as Stochastic: where did price close within its recent range? The difference is the scale direction. Stochastic scores 0 at the bottom of the range and 100 at the top. Williams %R scores 0 at the top of the range and -100 at the bottom. The numerator uses Highest High instead of Lowest Low, then negates the result.
Formula
Where N is the lookback period (default 14).
Relationship to Stochastic:
Stochastic %K of 80 = Williams %R of -20. Both describe the same condition: price closed in the upper 20% of its 14-bar range. The math is identical; only the scale differs.
Inputs
- High, Low, Close for each bar
- Period (N): Lookback for Highest High and Lowest Low (default 14)
Parameters
| Parameter | Default | Range | Impact |
|---|---|---|---|
| Period (N) | 14 | 5–28 | Lower = more reactive, more noise |
| Overbought level | -20 | -10 to -30 | Values near 0 = price near top of range |
| Oversold level | -80 | -70 to -90 | Values near -100 = price near bottom of range |
Output
Williams %R outputs a single value between 0 and -100. Zone interpretation:
- 0 to -20: Overbought — close near the top of the N-period range
- -20 to -80: Middle range — no extreme signal
- -80 to -100: Oversold — close near the bottom of the N-period range
Understanding the Negative Scale
The reversed scale trips up beginners. Here is the key mapping:
| Williams %R | Meaning | Equivalent Stochastic %K |
|---|---|---|
| 0 | Price at exact top of N-period range | 100 |
| -20 | Overbought zone boundary | 80 |
| -50 | Middle of range | 50 |
| -80 | Oversold zone boundary | 20 |
| -100 | Price at exact bottom of N-period range | 0 |
A %R value of -5 is extreme overbought (near the top). A value of -98 is extreme oversold (near the bottom). This is opposite to what traders expect from a 0–100 scale. Read this twice before using the indicator live.
Section 2: Interpretation & Signals
Signal Zones
| %R Level | Interpretation | Action |
|---|---|---|
| 0 to -20 | Overbought — price near top of recent range | Watch for reversal signal |
| -20 to -50 | Upper neutral — mild bullish bias | Trend continuation only |
| -50 | Centerline — no momentum edge | Avoid entries |
| -50 to -80 | Lower neutral — mild bearish bias | Trend continuation only |
| -80 to -100 | Oversold — price near bottom of recent range | Watch for reversal signal |
Entry and Exit Rules
Oversold entry (buy setup):
- Wait for %R to drop below -80 (oversold zone entered)
- Entry: %R crosses back above -80 (exits oversold zone)
- Stop: Below the oversold price low
- Target: %R reaches -20 or prior resistance
Overbought entry (sell/short setup):
- Wait for %R to rise above -20 (overbought zone entered)
- Entry: %R crosses back below -20 (exits overbought zone)
- Stop: Above the overbought price high
- Target: %R reaches -80 or prior support
The entry is NOT when %R enters the extreme zone — it is when %R exits the zone. This avoids entering during a continuing trend move.
Williams %R — Oversold Zone Entry on Exit Cross
Divergence
Williams %R divergence works identically to RSI and Stochastic divergence:
Bullish: Price makes a lower low. %R makes a higher low (less negative). Momentum is improving before price.
Bearish: Price makes a higher high. %R makes a lower high (more negative, closer to -100). Momentum is weakening before price peaks.
Because %R is mathematically equivalent to Stochastic, their divergence signals are nearly identical. The scale is different; the underlying calculation is the same.
Best Market Conditions
Williams %R works best in ranging and mean-reverting markets. In strong trends, like Stochastic, %R can remain in an extreme zone for extended periods. The exit-from-zone entry rule (enter when %R crosses back above -80, not when it enters) reduces the risk of entering too early in a trending market.
Section 3: Pass vs. Live — Real-Time Reliability
Williams %R uses the live bar's high and low in the Highest High and Lowest Low calculations (identical to Stochastic's repaint mechanism). As the current bar's intraday high extends, the Highest High window may expand, shifting %R. At bar close, the final high and low are fixed. The value is permanent. No historical bars change.
Section 4: Practical Use Cases
Setup: %R(14) on 15m chart with overbought at -20, oversold at -80 Signal: %R drops below -80 then crosses back above -80 (exits oversold) in 15m Entry: 15m bar close after the exit-from-oversold cross Exit: %R reaches -20 overbought zone or price hits 1.2x ATR from entry Key Rule: Only trade in the direction of 1H %R bias — if 1H %R is below -50, only take oversold exits (buys)
Setup: Weekly %R(14) as trend filter; daily %R(14) for entry Signal: Weekly %R exits oversold (crosses above -80); daily %R also exits oversold simultaneously Entry: Daily close after both weekly and daily %R have exited oversold zone Stop: Below the daily %R oversold price low Target: Weekly %R reaches -20 (overbought) — typically a multi-week to multi-month move
Setup: Weekly %R(14) for long-term cycle timing Signal: Weekly %R drops to -90 or lower (extreme oversold) and begins to recover Entry: Weekly %R crosses above -80 (exits extreme oversold on weekly) Stop: Weekly close with %R back below -85 Target: Weekly %R reaches -20 or price makes new 52-week high
Real example — Gold (XAUUSD), Q3 2022: Gold weekly Williams %R dropped to -97.4 in late September 2022 as gold hit $1,622 — the lowest weekly %R reading in over 5 years. The following week, %R recovered to -84.6, then crossed above -80 two weeks later as gold reclaimed $1,660. The weekly oversold exit on %R marked the beginning of a sustained recovery rally that carried gold to $2,050 by May 2023.
Section 5: Pseudo Code
INPUT: high[], low[], close[], period=14, ob=-20, os_=-80
PROCESS:
Step 1: For each bar i >= period - 1:
highest_high = max(high[i - period + 1 : i + 1])
lowest_low = min(low[i - period + 1 : i + 1])
range_hl = highest_high - lowest_low
Step 2: Calculate %R:
if range_hl == 0:
wr[i] = -50 # No range — set to neutral
else:
wr[i] = ((highest_high - close[i]) / range_hl) * -100
OUTPUT: wr[] — values between -100 and 0
EDGE CASES:
- range_hl == 0 (all bars identical close/high/low): set to -50 (neutral)
- Fewer than `period` bars: return NaN
- close[i] exactly equals highest_high: wr[i] = 0 (at top of range)
- close[i] exactly equals lowest_low: wr[i] = -100 (at bottom of range)
- NaN in high, low, or close: propagate NaN
Section 6: Parameters & Optimization
Standard Conventions
| Period | Use Case | Signal Frequency |
|---|---|---|
| 5 | Very short-term scalping | High — frequent noise signals |
| 10 | Short-term swing | Moderate — slightly noisy |
| 14 | Standard (default) | Balanced — matches RSI default |
| 21 | Swing and position | Lower — fewer but stronger signals |
| 28 | Weekly charts, position | Very low — only genuine extremes |
Parameter Impact
| Change | Effect | When to Apply |
|---|---|---|
| Lower period (< 14) | More frequent extremes, higher noise | Only with tight trend filter |
| Higher period (> 14) | Rarer extremes, slower reaction | High-volatility assets, position trading |
| Narrow OB/OS bands (-10/-90) | Only extreme extremes trigger | Very strong trending markets |
| Wider OB/OS bands (-30/-70) | More signals, less selective | Range-bound, low-volatility markets |
Why does %R use a negative scale?
Larry Williams designed %R to show how far price is from the highest high, making distance from the top the primary reading. In his framework, being near the highest high (value near 0) is the dangerous overbought condition. The negative sign directly reflects "distance below the recent high." It is a deliberate design choice — the negative scale emphasizes downside risk from the top. Many platforms offer an option to display %R as a positive scale (0 to 100) for easier reading; this is cosmetic and does not change the calculation.
Is Williams %R the same as Stochastic?
Mathematically: Williams %R = fast Stochastic %K minus 100, then the sign is flipped. They produce the same trading signals — the only differences are the scale and the absence of a %D signal line in %R. If you apply a 3-period SMA to Williams %R, you get the equivalent of Stochastic's %D. Some traders prefer %R's single-line simplicity. Others prefer Stochastic's explicit crossover signal with %D.
Section 7: Synergies & Conflicts
| Works Well With | Avoid Combining With | |
|---|---|---|
| Trend filters (SMA 200) | Only trade %R oversold exits when price is above SMA(200) — prevents counter-trend entries | — |
| Multi-timeframe alignment | Weekly %R exit oversold + daily %R exit oversold simultaneously = high-conviction setup | — |
| Volume | High volume when %R exits extreme zone = institutional participation confirming the reversal | — |
| ATR stops | Size stops using ATR from the %R extreme price low/high — these moves can be large | — |
| Stochastic | — | Mathematically equivalent — using both creates false sense of double confirmation with zero additional edge |
| RSI | — | Both measure momentum extremes — one is sufficient. RSI adds the %D-like smoothing; %R is rawer. Choose based on preference, not as dual confirmation. |
| Other oscillators at extreme readings | — | When multiple oscillators all show oversold simultaneously, it likely reflects a strong trend move — not an automatic reversal. Strong trends can maintain extremes for weeks. |
Section 8: Common Mistakes
| Mistake | Root Cause | Solution |
|---|---|---|
| Reading -10 as "nearly oversold" | Forgetting the negative scale reversal | -10 means near the TOP of the range — highly overbought. Map the scale explicitly: 0=top, -100=bottom. |
| Entering on first touch of the extreme zone | Fading the first move into overbought/oversold | Wait for %R to EXIT the extreme zone — cross back above -80 for buys, back below -20 for sells |
| Using %R and Stochastic simultaneously | Believing they are different indicators | They are mathematically equivalent. Remove one from your charts. |
| Ignoring trend direction | Counter-trend %R signals in trending markets fail frequently | Add SMA(200) filter — only take %R oversold exits when price is above SMA(200) |
| Trading %R in strong trend without volatility filter | %R stays at extremes during trends | Add ATR reading — when ATR is high (trending), treat %R extremes as continuation, not reversal |
Section 9: Cheat Sheet
USE WHEN: Ranging market, %R reaches extreme zone (below -80 or above -20), using multi-timeframe exit confirmation
AVOID WHEN: Strong trending market (ADX > 30), %R just entering extreme zone (wait for exit), acting on live-bar signals
ENTRY SIGNAL: %R crosses back above -80 (buy) / %R crosses back below -20 (sell)
EXIT SIGNAL: %R reaches opposite extreme / %R crosses -50 centerline against position
PARAMETERS: Standard = period 14, levels -80/-20 | Position = period 21, levels -85/-15
CONFLUENCE: Weekly %R exit + daily %R exit simultaneously / SMA(200) trend filter / Volume on exit bar
RISK: Scale confusion — always verify -10 means overbought (near top), not oversold. Re-check this on every platform.
BEST TIMEFRAME: Weekly for position cycle timing / Daily for swing entries / 15m-1H for oversold scalps in trend