- Connors RSI is a composite momentum oscillator that combines three independent measurements of price behavior into a single bounded (0-100) output:...
Connors RSI is a composite momentum oscillator that combines three independent measurements of price behavior into a single bounded (0-100) output: a short-term RSI of price, an RSI of the consecutive up/down streak length, and a percentile rank of the current rate of change within its recent history. The equal-weighted average of these three components produces a mean-reverting oscillator where extreme readings (above 90 or below 10) identify statistically overbought or oversold conditions with higher reliability than single-component RSI alone.
## Historical Context
Larry Connors and Cesar Alvarez introduced Connors RSI in their 2012 publication, building on Connors' earlier research into short-term mean reversion strategies. The indicator addressed a recognized weakness of standard RSI: its tendency to remain in overbought or oversold territory during strong trends without providing actionable reversal signals. By combining three orthogonal measurements of price behavior, each capturing a different aspect of momentum, CRSI reduces the false signal rate inherent in any single oscillator. The streak RSI component was particularly novel, converting the categorical information of consecutive up/down days into a continuous oscillator via a second RSI application. The percent rank component adds a non-parametric statistical dimension that is robust to distribution assumptions. Connors' backtesting showed the composite outperformed standard RSI for mean-reversion entry timing on equity indices and ETFs.
## Architecture & Physics
### Three-Component Pipeline
CRSI combines three independent calculations with equal weighting:
1.**Price RSI** (Component 1): Standard Wilder RSI with exponential smoothing ($\alpha = 1/\text{rsiPeriod}$) applied to the source series. Uses warmup compensation via the decaying exponential $e = \beta^n$ to correct for initial bias, producing valid output from bar 1.
2.**Streak RSI** (Component 2): First computes a consecutive streak counter (positive for up-closes, negative for down-closes, zero for unchanged), then applies the same Wilder RSI to the streak series. This converts run-length information into a bounded oscillator.
3.**Percent Rank** (Component 3): Computes 1-bar ROC, stores in a circular buffer, then counts what percentage of historical ROC values are less than or equal to the current ROC. This is a non-parametric ranking that is distribution-free.
### Warmup Compensation
Both RSI stages use the "section 2" warmup pattern: track $e = \beta^n$ and apply correction factor $c = 1/(1 - e)$ to the raw exponential averages until $e$ drops below $10^{-10}$. This eliminates the startup bias that plagues naive EMA initialization.
### Final Composition
The three components are averaged and clamped to $[0, 100]$: