MarketInOut Stock Screener Log In | Sign Up

Price Rate of Change (ROC)

By MarketInOut · Updated November 3, 2026

The Price Rate of Change (ROC) measures how much price has changed over a fixed number of bars, as a percentage. A 12-bar ROC of 8 means the close is 8% above the close 12 bars ago; a reading of −5 means it is 5% below. Because it is a percentage, ROC lets you compare a $10 stock with a $500 stock on the same scale, which is why it is one of the most common ways to rank stocks by momentum.

How it is calculated

ROC = 100 x (Close - Close N bars ago) / Close N bars ago

ROC oscillates around zero. Above zero, price is higher than it was N bars ago; below zero, it is lower. The line has the same shape as the Momentum indicator, which measures the same change in price units instead of percent. Short-term traders often use 9 to 14 bars, swing traders 20 to 25, and investors who rank stocks by relative performance use longer windows such as 125 bars (about six months) or 250 bars (about a year).

Several better-known indicators are built from ROC, including the Coppock Curve and the KST, which combine and smooth ROC values over different periods.

How to read it

  • Zero line. A cross above zero means price is now higher than N bars ago, a cross below zero that it is lower. It confirms a change of direction rather than predicting one, because the move has already happened by the time ROC crosses.
  • Overbought and oversold. ROC has no fixed upper or lower limit, so extremes must be judged against the stock’s own history. Draw horizontal lines at the levels where past rallies and declines ran out of steam, and treat readings beyond them as stretched. Wait for ROC to turn back before acting: a stretched reading can stay stretched in a strong trend.
  • Extremes in a trend. A very high reading at the start of a move usually signals strength, not a top. The first pullback after such a burst is often followed by further gains.
  • Divergence. When price makes a new high but ROC makes a lower high, the advance is slowing. When price makes a new low but ROC makes a higher low, selling is easing. Divergence is a warning to watch, not a timing signal on its own.
  • Ranking. Sorting a list of stocks by 125-bar or 250-bar ROC is a simple way to find relative leaders and laggards, the basis of many momentum strategies.

Settings and common mistakes

  • Period. A 1-bar ROC is just the daily percentage change and is very noisy. Longer periods smooth the line and follow the larger trend. Match the period to the swings you trade.
  • One level for every stock. A volatile small cap can swing ±30% over 12 days while a utility rarely moves 5%. Set extreme levels per stock, or compare ROC with volatility.
  • The drop-off effect. ROC can jump or fall because of the bar leaving the window N bars back, not because of today’s price. A big gap N bars ago will produce a sudden move in ROC when it drops out.
  • Using ROC alone. ROC says how fast price has moved, not whether the trend is healthy. Combine it with a trend filter such as the 200-day moving average.

SPY (S&P 500 ETF), daily, with ROC(12).

Live chart: SPY (S&P 500 ETF), daily, with the 12-bar Price Rate of Change. The chart updates every trading day.

Screen for it on MarketInOut

ROC is built into our formula language as roc(period), on a percentage scale, with a default period of 10. Stocks above their 200-day average whose 12-bar ROC just turned positive:

exch(nyse,nasdaq) and type(stock) and price > 1 and advol(21) > 1
and price > sma(200) and roc(12) ca 0

Stocks showing bullish divergence between price and 12-bar ROC:

exch(nyse,nasdaq) and type(stock) and price > 1 and advol(21) > 1
and roc(12) div_bull

Related: Momentum indicator, Relative Strength Index (RSI), MACD.




Disclaimer - Privacy Policy - Terms of Service - Cookies - FAQ - Affiliates - Blog