# ROC

Also known as: smoothed ROC.
A Momentum & Oscillators concept (Rate-of-change cluster) in the LuxAlgo Library, with 1 indicator implementation.

## What is ROC?

ROC, rate of change, is percentage momentum: the current close minus the close n bars ago, divided by that older close, times 100. A reading of +5 means price is five percent above where it stood n bars back; zero means unchanged. It is the normalized sibling of raw [Momentum](https://www.luxalgo.com/library/concept/momentum/), which takes the same difference in points. The percentage form is what makes ROC comparable across instruments and across time, since a 10-point move means something very different at a price of 100 than at 10,000.

ROC oscillates around zero with no upper bound, while the downside is floored at -100 for a price series that stays positive (a fall to zero), so overbought and oversold have to be judged against the instrument's own history rather than fixed levels. One structural quirk deserves respect: each reading depends on exactly two bars, the current one and the one leaving the window, so ROC can jump or slump when an extreme old bar drops out even while price stands still (the drop-off effect). Smoothed-ROC variants average the line to tame this. ROC is also the building block of larger constructions: the [Know Sure Thing](https://www.luxalgo.com/library/concept/know-sure-thing/) sums smoothed ROCs at four horizons with fixed weights, and the [Coppock Curve](https://www.luxalgo.com/library/concept/coppock-curve/) applies a weighted average to the sum of two long-horizon ROCs.

Quantitative work often swaps the arithmetic for logarithms: the log return, the natural log of current price over the old price, is symmetric (a move up and back down nets to zero) and additive across periods, properties percentage ROC lacks once moves get large. For chart reading the two are nearly identical at small changes and diverge on big ones. The drop-off effect deserves a worked picture too: with a 10-bar ROC, a crash bar entering its eleventh bar of age exits the comparison, and the reading can leap upward on a flat day purely because the denominator's history changed, a mechanical artifact that has fooled many a scanner.

The practical ecosystem spans speed grades. Raw short ROC drives burst screens, the momentum-burst style flagging days when a stock jumps several percent as candidate ignition; double-smoothed constructions like the Price Momentum Oscillator, from the DecisionPoint tradition, turn ROC into a patient signal-line tool; divergence detectors run the standard swing comparisons on the percentage line; and cross-sectional work ranks a universe by common-window ROC as the plainest [relative strength](https://www.luxalgo.com/library/concept/relative-strength-comparative/) measure. One primitive, many temperaments, all inheriting the same two-bar dependency underneath.

## How to identify ROC readings

One division and a scale: the reading discipline is where the value lives.

1. Choose the lookback n: swing work commonly runs 9 to 14 bars, cycle work far longer, and the choice defines which momentum you measure.
2. Compute the percentage: current close minus the close n bars ago, divided by that old close, times 100.
3. Smooth if the raw line's jumpiness costs more than the lag: a short average, or a double-smoothed variant for signal-line work.
4. Define extremes honestly: [percentile rank](https://www.luxalgo.com/library/concept/percentile-rank/) against the instrument's own history, since the unbounded scale supports no universal thresholds.
5. Read the standard grammar: zero-line position and crosses for bias, history-relative extremes for stretch, and swing divergences for fading participation.

## How it's calculated

The percentage change of the closing price over the last n bars.

```
ROC_t = 100 × (C_t - C_(t-n)) / C_(t-n)
ROC_t = 100 × (C_t / C_(t-n) - 1)
Mom_t = C_t - C_(t-n)
E_t = EMA(C, s)
sROC_t = 100 × (E_t - E_(t-m)) / E_(t-m)

  t: current bar index
  C: close price series
  C_t: current close
  C_(t-n): close n bars ago
  n: ROC lookback length (commonly 9, 12 or 14)
  ROC_t: rate of change in percent, shown in two equivalent forms
  Mom_t: momentum, the unscaled difference variant
  EMA(C, s): exponential moving average of closes over s bars
  E_t: EMA value at the current bar
  E_(t-m): EMA value m bars ago
  s: EMA length in the smoothed variant (commonly 13)
  m: ROC lookback applied to the EMA (commonly 21)
  sROC_t: smoothed rate of change
```

Some platforms plot the plain ratio without the 100 scaling.

The smoothed variant shown is Fred Schutzman's S-RoC, a ROC of an EMA; smoothing the ROC line itself with a short moving average is a common alternative.

ROC is zero where price equals its close n bars ago.

## How traders use it

- As a zero-line bias read: positive and rising ROC frames upward pressure, and zero-line crosses serve as simple momentum triggers, though raw crosses are noisy enough that most systems filter them with a trend condition or smoothing.
- As history-relative extremes: because the line has no fixed bounds, stretched readings are defined by [percentile rank](https://www.luxalgo.com/library/concept/percentile-rank/) against the instrument's own past rather than by universal thresholds.
- As a divergence source: price setting a new extreme while ROC sets a lesser one is the standard [regular divergence](https://www.luxalgo.com/library/concept/regular-bullish-bearish-divergence/) read, applied to percentage momentum.
- As a cross-sectional ranking: ROC over a common lookback is a simple basis for [relative strength](https://www.luxalgo.com/library/concept/relative-strength-comparative/) comparisons and rotation work, ranking instruments by percentage change over the same window.
- As a burst screen: threshold rules on short ROC, a day up several percent on volume, flag ignition candidates in momentum-burst style scanning, where the percentage form is what lets one threshold serve a whole watchlist.

## ROC vs its rate-of-change relatives

- **Momentum** (https://www.luxalgo.com/library/concept/momentum/): The same difference without the division: momentum is in points, ROC in percent. Over stretches where the base price changes little they trace nearly identical shapes; across instruments or long spans of time, only ROC stays comparable.
- **ROC-of-ROC** (https://www.luxalgo.com/library/concept/roc-of-roc/): The second derivative: ROC applied to ROC measures whether momentum itself is accelerating or decaying, one step further from price and one step noisier.
- **TRIX** (https://www.luxalgo.com/library/concept/trix/): Also a one-bar percentage rate of change, but taken on a triple-smoothed EMA of price rather than raw closes, which filters out most of the noise ROC is known for.

## FAQ

### What is the difference between ROC and Momentum?

Arithmetic only: momentum subtracts the old close from the new one, while ROC divides that difference by the old close and multiplies by 100. The shapes are nearly identical while the base price changes little, but percentage readings compare cleanly across instruments and across eras of a rising price series, which is why longer-horizon and cross-market work generally prefers ROC.

### What is a good ROC period?

There is no single standard. Short lookbacks in the 9 to 14 bar range are common defaults for swing-scale readings, while longer settings track intermediate cycles. The trade-off is the usual one: shorter reacts faster and whipsaws more. Multi-horizon composites like the Know Sure Thing exist precisely because no one lookback captures every cycle at once.

### Why did ROC change when price barely moved?

That is the drop-off effect. Each ROC value compares the current close to one specific old close, so when a spike or crash bar ages out of the window, the reading shifts even if today's price is flat. It is an artifact of the fixed two-bar comparison, and it is the main reason smoothed-ROC variants exist.

### Should I use percentage ROC or log returns?

For chart reading they are interchangeable at ordinary move sizes; the curves separate only on large changes. Log returns win in quantitative work because they are symmetric, an up move and its exact retracement net to zero, and additive across periods, so multi-bar returns sum instead of compounding awkwardly. If ROC feeds statistics, volatility estimates or regressions, use logs; if it feeds eyeballs, the percentage form reads more naturally.

### What is the Price Momentum Oscillator?

A double-smoothed ROC construction from the DecisionPoint tradition: a one-bar rate of change is run through two successive exponential smoothings, scaled, and paired with a signal line, producing a patient momentum tool read through crossovers and zero-line position like a gentler MACD. It exists precisely to fix raw ROC's two weaknesses, bar-to-bar noise and the drop-off artifact, at the standard price of added lag.

### Does a high ROC mean overbought?

Only relative to the instrument's own record. The line is unbounded above, and what counts as stretched differs by orders of magnitude between a quiet blue chip and a crypto pair, so fixed thresholds mislead. Percentile framing does the honest work: today's ROC ranked against a few years of its own readings, with the extreme percentiles flagging genuinely unusual momentum, in either direction, on that specific chart.

## Implementations in the Library

- Rate of Change (LuxAlgo, the standard build of the classic formula): https://www.luxalgo.com/library/indicator/rate-of-change/

## Related concepts

- Momentum: https://www.luxalgo.com/library/concept/momentum/
- Disparity Index: https://www.luxalgo.com/library/concept/disparity-index/
- ROC-of-ROC: https://www.luxalgo.com/library/concept/roc-of-roc/
- Chande Momentum Oscillator: https://www.luxalgo.com/library/concept/chande-momentum-oscillator/
- Know Sure Thing: https://www.luxalgo.com/library/concept/know-sure-thing/
- Coppock Curve: https://www.luxalgo.com/library/concept/coppock-curve/
- Detrended Price Oscillator: https://www.luxalgo.com/library/concept/detrended-price-oscillator/
- TRIX: https://www.luxalgo.com/library/concept/trix/
- Psychological Line: https://www.luxalgo.com/library/concept/psychological-line/
- Special K: https://www.luxalgo.com/library/concept/special-k/

---

Source: https://www.luxalgo.com/library/concept/roc/ (LuxAlgo Library, the encyclopedia of trading & technical analysis). Free to use with attribution: https://www.luxalgo.com/library/license/