The Relative Strength Index (RSI) is a bounded oscillator that ranges from 0 to 100 and measures the magnitude of recent gains relative to recent losses. It was developed by J. Welles Wilder Jr. in 1978 and remains one of the most widely-used technical indicators five decades later.
The conventional reading is simple — above 70 is “overbought,” below 30 is “oversold” — but the simplicity hides where the indicator earns its keep and where it fails. Here's how to read it without falling into either of the two most common traps.
What the formula actually says
RSI = 100 − 100 ÷ (1 + RS), where RS = avg gain ÷ avg loss over N days
The default lookback is N = 14 trading days. “Avg gain” and “avg loss” are exponential moving averages of up-days and down-days respectively over that window. The bounded 0-100 scale comes from the formula structure — RS goes from 0 (all losses) to infinity (all gains), and the transformation maps it cleanly to 0-100.
QScoring uses RSI(14) — Wilder's original 14-day setting. Shorter windows (e.g., RSI(7)) are more sensitive to recent moves; longer windows (RSI(28)) are smoother but slower.
How to read it
The textbook reading:
- RSI > 70 — overbought, pullback may be coming
- RSI < 30 — oversold, rebound may be coming
- RSI 30–70 — neutral territory
That reading is right often enough to be useful but wrong often enough to be dangerous. Two important nuances:
- Strong trends hold extreme RSI for weeks.A stock in a powerful uptrend can keep RSI > 70 for a month or more. “Sell when RSI > 70” would have you exiting every meaningful rally early.
- Divergence is the highest-information reading.When price makes a new high but RSI doesn't, the underlying momentum is weakening even as the tape looks strong — often the cleanest leading-indicator signal RSI produces.
How QScoring uses it
RSI(14) is one of five inputs in the QScoring momentum factor, alongside 12-month, 3-month, and 1-month trailing returns and the 50-day vs 200-day moving-average position.
Unlike the trailing-return metrics (which are sector-normalized), RSI uses a fixed non-monotonic scoring curve. Low RSI scores well (oversold rebound potential), mid-high RSI also scores well (healthy momentum), but extreme high RSI scores down (overbought risk). The full mapping is documented on the methodology page.
That non-monotonic curve is intentional. Treating RSI linearly (“higher is better”) would reward stocks at exactly the moment they're most stretched. The curve says “some momentum is good, too much is dangerous.”
Real example
Browse a few live tickers and look at the RSI metric inside the momentum factor card. Stocks that have rallied hard recently (e.g., the AI-cycle leaders like NVDA in strong-tape periods) often show RSI in the 65–75 range. Stocks in pullbacks show RSI in the 30s. The score for that metric will reflect the non-monotonic mapping — neither extreme scores the highest.
Common mistakes
- Treating overbought as a sell signal in isolation.RSI > 70 in a confirmed uptrend often means “continue to hold” — the divergence is the signal to act on, not the absolute level.
- Treating oversold as a buy signal in isolation.RSI < 30 in a confirmed downtrend can persist for weeks while the stock continues falling. Pair with trend confirmation before acting.
- Using RSI on charts that are too short. RSI(14) on a 5-minute chart is a different beast than RSI(14) on a daily chart — the former is mostly noise, the latter is what most published research is calibrated against.
- Reading RSI without market regime context. Like all momentum indicators, RSI fails worst at regime turns. A high RSI just before a market top looks identical to a high RSI in the middle of a healthy bull run.
Related reads
- RSI in the glossary — quick reference + formula
- Momentum factor — the broader category RSI feeds into
- Methodology: momentum section — full breakdown of all five inputs and the non-monotonic RSI curve
- High-momentum stocks — names ranked by the momentum factor where RSI is one of the inputs
Discussion
Comments are powered by GitHub Discussions. Sign in with GitHub to join the conversation.