Skip to content
Indicators 7 min read

Ultimate Oscillator: calculation, divergences and limits

How Larry Williams’ Ultimate Oscillator blends buying pressure over 7, 14 and 28 sessions, with a worked calculation, divergence rules and its limitations.

Hypothetical daily candles with an Ultimate Oscillator pane: price sets a lower low while the oscillator makes a higher low, then the oscillator rises above its earlier high.First lowLower lowUO clears its high305070Ultimate Oscillator (7, 14, 28)
Hypothetical sessions, not market data. The oscillator falls to about 25 at the first low and only to about 35 at the lower second low, then rises above the 61.6 it reached between them.

The Ultimate Oscillator measures where closes fall within each session’s true range and blends three lookbacks, weighting the shortest most. Williams built it around divergences, so a reading near 30 or 70 is a prompt to study the chart, not an instruction.

What the Ultimate Oscillator measures

The Ultimate Oscillator is a momentum oscillator that Larry Williams described in Technical Analysis of Stocks & Commodities in 1985. It measures buying pressure, how far each close sits above the session’s true low, as a share of the session’s true range. Averaging that share over 7, 14 and 28 sessions and blending the three gives a reading from 0 to 100.

  • Inputs: the high, low and close of each session, plus the previous close.
  • Lookbacks: 7, 14 and 28 sessions, weighted 4, 2 and 1.
  • Units: index points from 0 to 100; 30 and 70 are the usual reference lines, with 50 as the midpoint.
  • Warm-up: the 28-session average needs 29 sessions, because each true range uses the previous close.
  • Cadence: one period per session on a daily chart.

Buying pressure and true range

Buying pressure is the distance from the true low to the close, where the true low is the lower of the session’s low and the previous close. True range runs from that true low to the true high, the higher of the session’s high and the previous close. Using the previous close means a gap between sessions counts as part of the range.

True low = min(Low, Previous close)
True high = max(High, Previous close)
Buying pressure (BP) = Close − True low
True range (TR) = True high − True low
Buying pressure for the latest seven hypothetical sessions
SessionHigh ($)Low ($)Close ($)Previous close ($)True low ($)Buying pressure ($)True range ($)
2243.4042.6043.2042.8042.600.600.80
2343.5042.9043.0043.2042.900.100.60
2442.7041.9042.1043.0041.900.201.10
2542.6041.8042.4042.1041.800.600.80
2643.6042.9043.5042.4042.401.101.20
2743.9043.1043.3043.5043.100.200.80
2844.2043.2044.0043.3043.200.801.00

Session 24 trades entirely below the previous close of $43.00, so its true range reaches up to $43.00 rather than stopping at the session high of $42.70. Session 26 trades entirely above the previous close of $42.40, so its true low is $42.40 and the gap counts as buying pressure.

Why the oscillator uses three timeframes

Williams combined three windows to reduce a weakness of single-period oscillators, which can reach extreme readings early in a strong move and stay there. The 7-session average reacts quickly, the 14-session average less so, and the 28-session average describes the longer background. The windows are nested: the latest 7 sessions also belong to the 14- and 28-session windows, so they count in all three averages.

The weights 4, 2 and 1 add up to 7, which is why the blend is divided by 7 before it is scaled to 100.

How to calculate the Ultimate Oscillator

Sum buying pressure and true range over each window and divide the sums to get three averages. Multiply them by 4, 2 and 1, add the results, divide by 7 and multiply by 100. The example continues the seven sessions above with three earlier blocks of seven sessions, given as totals.

Average7 = sum of BP over 7 sessions / sum of TR over 7 sessions
Average14 = sum of BP over 14 sessions / sum of TR over 14 sessions
Average28 = sum of BP over 28 sessions / sum of TR over 28 sessions
UO = 100 × (4 × Average7 + 2 × Average14 + Average28) / 7
Hypothetical totals by block of seven sessions
SessionsBuying pressure ($)True range ($)
1 to 72.966.90
8 to 142.897.10
15 to 213.916.90
22 to 283.606.30
From window totals to the oscillator
WindowBP sum ($)TR sum ($)AverageWeightWeighted average
7 sessions3.606.300.571442.2857
14 sessions7.5113.200.568921.1379
28 sessions13.3627.200.491210.4912

The weighted averages add up to 3.9148. Divided by 7 and multiplied by 100, that gives an Ultimate Oscillator of 55.93, a little above the midpoint. The averages are rounded for display; the calculation keeps full precision.

If a window’s true range sums to zero, every session in it traded at a single price equal to the previous close, and its average is 0 divided by 0. The formula defines no reading for that window, so a chart value there reflects a platform convention.

How to read the Ultimate Oscillator on a stock chart

The oscillator sits in its own pane from 0 to 100 with lines at 30, 50 and 70. Below 30, closes have been sitting low within their true ranges across the blended windows; above 70, high. Strong trends can hold the line in either zone, so the zones describe pressure rather than predict a turn.

  1. Note the zone and how long the line has been there.
  2. Compare the oscillator’s swing highs and lows with the swing highs and lows of price.
  3. Watch whether the oscillator moves back through the level it set between two swings, the third step of Williams’ divergence rules below.
  4. Check gaps on the price chart; they enlarge true range and can move the oscillator sharply.

Bullish and bearish divergences in Williams’ method

Williams designed the indicator around divergences, and his rules are usually summarized in three steps. For the bullish version, price makes a lower low while the oscillator makes a higher low, the oscillator’s first low is below 30, and the oscillator then rises above the high it set between the two lows. The bearish version mirrors it: a higher high in price, a lower high in the oscillator with its first high above 70, then a drop below the low between the two highs.

Williams’ divergence steps
StepBullish divergenceBearish divergence
1. DivergencePrice: lower low. Oscillator: higher low.Price: higher high. Oscillator: lower high.
2. LevelThe oscillator’s first low is below 30.The oscillator’s first high is above 70.
3. ConfirmationThe oscillator rises above its high between the two lows.The oscillator falls below its low between the two highs.

The hypothetical chart on this page shows the bullish version. The first low takes the oscillator to about 25; price then sets a lower low, but the oscillator bottoms near 35, and it later climbs above the 61.6 it reached between the two lows.

The rules describe Williams’ method; they are not a forecast. A divergence can fail to reach the third step, and price can keep falling after it.

Limitations of the Ultimate Oscillator

Blending three windows smooths the oscillator but does not remove the usual problems of range-based momentum measures. Several of them come from choices that are fixed in the formula.

  • Fixed windows and weights. The 7, 14 and 28 sessions and the 4, 2, 1 weights suit some stocks and timeframes better than others.
  • Judgment in divergences. Which swing highs and lows count is a matter of interpretation, and two readers can mark different divergences on the same chart.
  • Persistent zones. In steady trends the oscillator can stay above 70 or below 30 for long periods.
  • Gaps. A large gap enlarges true range and buying pressure at once, which can shift the oscillator sharply in a single session.
  • Flat windows. A window whose true range sums to zero defines no reading.
  • Daily summaries. Each session is reduced to a high, low and close; the path of trading within the session is not part of the calculation.

Checking the inputs in TradeClever

TradeClever does not plot the Ultimate Oscillator. Its Stock Charts show daily candles, where you can see the gaps and closing positions that drive buying pressure, and an RSI pane for a single-window momentum view. TradeClever works with daily session data, so each period in these calculations is one session.

Read our data and methodology notes for calculation context. This guide explains research tools and observations. It does not recommend a trade or investment.

Follow your curiosity

One good question leads to another.

All guides
Make room for better research

Put your curiosity to work.

Build a scan with filters or CleverScan rules. Explore the results. Find your next idea.

Open a stock chart