On this page
ROC — Momentum, in its own panel below the chart.
What ROC measures
Two prices enter the formula and nothing else: the current close and the close at the start of the lookback, which serves as the denominator. Because the result is a percentage, it is comparable across instruments and across price levels in a way the raw Momentum difference in the same group is not. A reference close of zero - which only occurs on padding in the history, never on a traded bar - leaves the ratio undefined, and no value is plotted rather than a division by zero being hidden behind a large number. No value appears before the window has filled.
The formula, as implemented
This is not how the indicator is usually defined elsewhere — it is what the shipped code computes, documented next to the implementation:
ROC % : 100·(close − close[i−N])/close[i−N]. Référence nulle (close = 0, historique de remplissage) → null — pas de division par zéro déguisée. Défaut N=12 (convention classique du ROC quotidien).
How to read it
- The magnitude is a percentage of the reference close, so the same absolute move reads larger when the reference price was lower.
- Zero crossings mark the moment the current close passes the level from N bars ago, in either direction.
- The line moves when either end of the window moves: a flat current bar still changes the reading if a large reference bar drops out.
- Because there is no smoothing, the series is as noisy as the underlying closes, which is why the KST oscillator smooths four of these before combining them.
- Compare a reading against the same instrument's own history of the same period and bar interval; percentage ranges differ sharply between a stock index future and a volatile crypto pair.
Parameters and defaults
Period defaults to 12 and accepts 1 to 200. A period of 1 makes the indicator the bar-to-bar percentage change. Longer periods measure displacement over a wider stretch, react more slowly, and are affected more visibly by the reference bar rolling out of the window.
| Parameter | Type | Default | Range |
|---|---|---|---|
| Period | number | 12 | 1 – 200 |
What it does not show
Rate of Change knows only two points and nothing about the path between them: a smooth advance and a violent round trip ending at the same close produce the same number. The denominator is a single historical bar, so an unrepresentative reference - a spike, a gap, the first print after a break - distorts every reading until it leaves the window. Percentage form also inflates readings when the reference price is very low. It contains no volume, no trade size and no aggressor information, and across a futures contract roll the percentage becomes meaningless because the two closes belong to different instruments.
Related indicators
- RSI — Momentum
- MACD — Momentum
- Stochastic — Momentum
- Stoch RSI — Momentum
- CCI — Momentum
- Williams %R — Momentum
This page in other languages
Frequently asked questions
- How do you calculate the Rate of Change indicator?
- Subtract the close from N bars ago from the current close, divide by that older close, and multiply by 100. The default lookback is 12 bars. The result is a percentage, so it is directly comparable between instruments trading at different price levels.
- What does a negative Rate of Change mean?
- The current close is below the close N bars earlier, by that percentage. It describes the net change across the window and nothing about how price got there - a steady decline and a rally followed by a larger fall can produce the same negative value.
- What is a good Rate of Change period for intraday charts?
- The default of 12 bars comes from a daily convention and carries over to any interval, since the calculation counts bars rather than time. On short intraday bars, a 12-bar lookback covers a very brief span, so the choice depends on how far back a comparison is meaningful for that instrument and session, not on a universally correct number.