Indicators · Momentum oscillators
Rate of Change (ROC): percentage momentum and how to read it
How the Rate of Change measures percentage price change over n bars, a worked example on the energy ETF XLE, reading its zero line and extremes, and Finabase’s ROC.
On this page
The Rate of Change (ROC) is the percentage change in price over a fixed number of bars. A 12-day ROC of +8 means the price is 8% higher than it was 12 trading days ago. It is the percentage cousin of the Momentum indicator, which measures the same change in dollars, and it is the most direct answer to the question traders mean when they say a stock "has momentum."
Because it is a percentage, ROC can be compared across stocks and across time, which makes it the basis of most momentum rankings and of composite indicators such as Coppock's curve and Pring's Know Sure Thing. This guide shows the calculation on real data from the Energy Select Sector SPDR ETF, how to read ROC's zero line and extremes, what a year of energy-sector momentum looked like, and how Finabase computes it.
What ROC measures
Over any window, a price either went up, went down or stayed flat, and by some percentage. ROC reports that percentage for a sliding window that always ends today. Plotted over time, it shows how the speed of the move has changed:
- Rising ROC above zero: the advance is accelerating.
- Falling ROC above zero: still up over the window, but by less. The advance is slowing.
- ROC below zero: price is lower than n bars ago.
Like Momentum indicator (MOM): price change over n bars, ROC compares just two closes, today's and the one n bars ago, and ignores the path between them.
The formula
Finabase offers all three percentage scales as separate studies. ROCP (rate of change percentage): returns as fractions covers the fraction form and why it matters for compounding; ROCR (rate of change ratio): growth factors and relative strength covers the ratio form and relative strength.
A worked example on XLE
The Energy Select Sector SPDR (XLE), the ETF of large US energy companies, closed at $54.98 on February 11, 2026. Twelve sessions earlier, on January 26, it had closed at $49.22.
| Step | Calculation | Result |
|---|---|---|
| Price change | 54.98 − 49.22 | $5.76 |
| As a share of the start | 5.76 ÷ 49.22 | 0.1170 |
| ROC (12) | 0.1170 × 100 | +11.70 |
That was XLE's highest 12-day ROC of the year: an 11.7% gain in about two and a half weeks, a fast move for a diversified sector fund. Finabase's chart shows 11.70 for that day.
The lowest came on April 15, 2026: a close of $55.76 against $62.56 twelve sessions earlier, an ROC of −10.87.
ROC on a real chart: XLE 2025–2026
XLE had a strong year, from $43.74 to $68.71, up about 57%. The ROC tells the story in three ways:
Mostly positive. ROC (12) was above zero on 177 of 251 sessions, above +5% on 77 and below −5% on only 22. A trend shows up in ROC as a line that spends most of its time on one side of zero.
Extremes were not reversals. After the February 11 peak of +11.7%, XLE was another 4.6% higher 20 sessions later. After the April 15 low of −10.9%, it was 3.4% higher 20 sessions later, and went on to new highs. Neither extreme marked the end of the trend; each marked a fast leg within it.
Zero crossings were frequent. ROC crossed zero 20 times during the year. Even in a strong trend, a 12-day window regularly catches a pullback that leaves price below where it was two and a half weeks earlier.
How traders use ROC
Ranking. Because ROC is a percentage, it is the natural way to rank stocks, sectors or funds by recent strength. Many momentum strategies sort a universe by 3-, 6- or 12-month ROC and hold the leaders.
Zero-line crossings. A cross above zero says price is now above its level of n bars ago. It is a basic trend signal, best filtered by a longer measure, given how often it fires.
Extremes relative to history. ROC has no fixed overbought or oversold levels. Traders look at where the current reading sits within the instrument's own range; a 12-day ROC of +12% is extreme for XLE and routine for a small biotech.
Divergence. A new price high with a lower ROC high shows the advance is slowing.
Building blocks. Coppock's long-term indicator (1962) is a weighted average of two long ROCs; Martin Pring's Know Sure Thing combines four smoothed ROCs of different lengths.
Choosing the period
| Period | Typical use |
|---|---|
| 5 to 10 bars | Short-term swings; very noisy |
| 12 to 14 bars | Finabase's default range; two to three weeks |
| 21 to 25 bars | About one month |
| 63, 126, 252 | Three, six and twelve months: momentum ranking |
Shorter periods respond faster and cross zero more often; longer ones describe the trend but miss turns.
Pitfalls and limitations
Two points only. Like MOM, ROC depends only on today's close and the close n bars ago, so a single unusual close at either end moves it. When an outsized day leaves the window, ROC can jump with nothing happening today.
Asymmetry of percentages. A 10% fall needs an 11.1% rise to recover. ROC values above and below zero are not mirror images. The ROCP (rate of change percentage): returns as fractions page explains why this matters when you add or average them.
No fixed levels. "Overbought" has to be defined relative to each instrument.
Comparison table
| Indicator | Output | Comparable across stocks? | Typical use |
|---|---|---|---|
| ROC | % change, e.g. +8 | Yes | Momentum and ranking |
| ROCP | Fraction, e.g. 0.08 | Yes | Return calculations |
| ROCR | Ratio, e.g. 1.08 | Yes | Relative strength, compounding |
| MOM | Dollars, e.g. +4.32 | No | Price-unit momentum |
| TRIX | % change of a triple EMA | Yes | Smoothed momentum |
How Finabase calculates and scores ROC
Finabase computes ROC with TA-Lib's ROC function on closing prices. A new ROC study defaults to 12
periods and is drawn in its own panel around a zero line. Like all Finabase studies, values are displayed with
two decimals once they are 1 or larger.
ROC (12) is listed in the technical gauge on the symbol page with its latest value and carries no Buy or Sell rule, so it always counts as neutral. Read the zero line and the extremes on the chart, relative to the symbol's own history.
Frequently asked questions
What does a ROC of 10 mean?
The price is 10% higher than it was n bars ago; with Finabase's default, 12 trading days ago.
What is the difference between ROC and Momentum?
ROC is the percentage change; Momentum is the dollar change. ROC can be compared across stocks and price levels, Momentum cannot.
What is a good ROC period?
Twelve or 14 bars is common for daily swing analysis and is Finabase's default range. For ranking stocks by momentum, longer windows of three to twelve months are typical.
Summary
The Rate of Change is the percentage price change over n bars, the cleanest and most comparable measure of momentum. XLE's year shows how to read it: a trend appears as an ROC that lives mostly on one side of zero, and extremes of ±11% marked fast legs rather than reversals. Use ROC to rank and compare, read its extremes against each instrument's own history, and treat its frequent zero crossings with caution.
Sources and further reading
- Martin J. Pring, Technical Analysis Explained, 5th ed. (McGraw-Hill, 2014) — rate of change and momentum
- Edwin S. Coppock, “Practical Relative Strength Charting,” Barron’s (1962) — a long-term indicator built from rates of change
- TA-Lib — ROC function reference
- Finabase chart data — XLE daily bars, 2025-10-30 to 2026-10-29, ROC computed by Finabase