Connors RSI is a proprietary three-component oscillator designed specifically for mean reversion in equity indices and liquid ETFs — combining price RSI, momentum streak RSI, and rate-of-change percentile into a single composite signal with documented historical edge.
Section 1: Core Mechanics
Larry Connors designed ConnorsRSI to address a key weakness in standard RSI: a single RSI reading combines multiple different market phenomena — price distance from mean, momentum streak duration, and relative rate of change — into one number. ConnorsRSI separates and measures each component independently, then averages them.
Formula
Component 1 — Short RSI of price:
Standard RSI calculation over 3 periods. Captures whether price is overbought or oversold on a very short-term basis. RSI(3) is intentionally aggressive — it reaches extremes faster than the standard RSI(14).
Component 2 — Streak RSI:
First, compute the streak: the number of consecutive days price closed higher (positive integer) or lower (negative integer). Example: 3 consecutive up days = streak of +3. 2 consecutive down days = streak of -2. A reversal day resets the streak to ±1.
RSI applied to the streak series over 2 periods. This measures whether the current run of consecutive up/down days is extreme relative to recent streak history.
Component 3 — PercentRank of 1-day ROC:
Where is the 1-day percentage change, and PercentRank measures where today's ROC falls in the distribution of the past 100 daily ROC values. Output: 0 (lowest ever) to 100 (highest ever).
Final composite:
Inputs
- Price source: Close price (standard)
- RSI(3) period: Fixed at 3 — not typically varied
- Streak RSI period: Fixed at 2 — not typically varied
- PercentRank lookback: 100 days — the primary adjustable parameter
Parameters
| Parameter | Default | Range | Impact |
|---|---|---|---|
| RSI period (C1) | 3 | 2–5 | Shorter = faster signal, lower = more extreme extremes |
| Streak RSI period (C2) | 2 | 1–3 | 2 is standard — rarely changed |
| PercentRank lookback (C3) | 100 | 50–252 | Longer = more statistical context for ROC ranking |
| Oversold threshold | 10 | 5–15 | Below this = long signal on S&P instruments |
| Overbought threshold | 90 | 85–95 | Above this = exit / short signal |
Output Range and Meaning
ConnorsRSI outputs 0 to 100. Unlike standard RSI, the operative thresholds are much more extreme:
- CRSI below 10 = extreme oversold — primary long signal for index ETFs
- CRSI above 90 = extreme overbought — primary exit / short signal
- CRSI at 50 = neutral — no signal
Visual Behavior
CRSI plots as a single smooth line between 0 and 100. It drops to extreme lows more frequently than RSI(14) but less frequently than StochRSI — representing a middle ground in sensitivity. In trending markets it will drift in one direction without reverting.
Section 2: Interpretation & Signals
Signal Zones
| CRSI Level | Interpretation |
|---|---|
| Below 5 | Extreme capitulation — highest conviction mean reversion long on indices |
| 5 to 10 | Oversold — primary entry zone for SPY/QQQ mean reversion |
| 10 to 30 | Below neutral — consider reducing short exposure |
| 30 to 70 | Neutral range — no directional edge |
| 70 to 90 | Above neutral — consider reducing long exposure |
| 90 to 95 | Overbought — primary exit zone for longs / short entry zone |
| Above 95 | Extreme stretch — highest conviction exit of long positions |
Entry and Exit Rules
Long entry: CRSI drops below 10 on a confirmed daily bar close. Enter the next day's open. This is the primary signal for S&P 500 ETFs (SPY, QQQ, IWM), sector ETFs, and large-cap liquid stocks.
Hold period: Connors research showed optimal holds of 1 to 5 trading days. The mean reversion typically completes within this window. Do not hold longer — if CRSI does not rise above 30 within 5 days, the thesis has failed.
Exit: CRSI rises above 70 (conservative exit) or 90 (aggressive exit to capture full reversion). Most implementations use 70 as the standard exit threshold.
Short entry (more cautious): CRSI rises above 90 on a confirmed close. Enter short at next day's open. The short side is less reliable than the long side — indices have an upward drift bias.
Streak Component Deep Dive
The streak is the most unique element of ConnorsRSI. A streak of +5 means price closed higher for 5 consecutive days. RSI(2) of this streak series captures whether that streak length is extreme relative to recent streak history. A streak of +5 occurring when the 2-period average streak is only +1 produces a high RSI(2) of streak — adding to the overbought CRSI reading.
Divergence
Standard divergence analysis is less applicable to CRSI than to price-based oscillators. Instead, watch for CRSI re-entry from above: CRSI drops below 10, price bounces back to neutral, then CRSI drops below 10 again. The second re-entry with a shallower price low (price not making a new low) is the stronger signal — momentum of selling is exhausted.
False Signals
Best Market Conditions
CRSI is purpose-built for:
- SPY, QQQ, IWM, XLF, and similar large-cap liquid ETFs
- S&P 500 constituent large-cap stocks in correction phases
- Range-bound or mild bear phases, not crash conditions (use market-regime filter)
Chart Setup — ConnorsRSI Below 10 Entry Signal
ConnorsRSI Below 10 — Mean Reversion Entry on SPY
Section 3: Pass vs. Live — Real-Time Reliability
All three components of ConnorsRSI are calculated on confirmed closed bars. The streak count updates only when a new bar closes — there is no intra-bar ambiguity. PercentRank compares today's confirmed ROC against the prior 100 confirmed daily closes. This makes ConnorsRSI one of the cleaner indicators for backtesting — no lookahead bias, no repaint risk.
Section 4: Practical Use Cases
Setup: CRSI is not recommended for intraday scalping — it was designed for daily bars Alternative: Use StochRSI or CCI for intraday mean reversion instead If forced to use: Apply CRSI only on completed hourly bars with all 3 components calculated on 1H closes — treat threshold as below 15 (not 10) due to reduced statistical significance on intraday data Key rule: Confirm with 4H trend direction before any intraday CRSI signal
Setup: CRSI on daily bars — the designed use case Signal: CRSI closes below 10 while SPY is above its 200-day SMA (regime filter active) Entry: Next day's open after confirmed CRSI below 10 on daily close Exit: CRSI rises above 70 — or end of day 5 if CRSI hasn't recovered Key rule: Position size 1/3 normal on first signal — add if CRSI drops to 5 (second tranche) and 3 (third tranche)
Setup: CRSI below 10 occurring during a multi-week correction in a confirmed bull market Signal: 3 or more consecutive CRSI daily readings below 10 during a pullback Entry: Average into position over the 3-day oversold cluster Exit: CRSI above 70 sustained for 3+ days AND price recovers to within 2% of pre-correction level Key rule: Weekly SMA(20) must still be rising — apply in corrections only, not trend reversals
Real example and documented performance: Larry Connors' research tested ConnorsRSI below 10 signals on the S&P 500 from 1995 through 2010. Over 1,100 tested signals with 1-to-5-day holds, the strategy showed approximately 74-76% winning trades with average gains of 0.8% per trade (annualized to approximately 15% net return). The edge decays significantly when applied to individual stocks — the index-level diversification effect is part of what makes CRSI work.
Section 5: Pseudo Code
INPUT: close_prices[], rsi_period=3, streak_rsi_period=2, pct_rank_period=100
PROCESS:
Step 1: Calculate Component 1 — RSI(3) of close
avg_gain, avg_loss via Wilder smoothing (RMA)
c1[i] = RSI value at bar i using 3-period lookback
Step 2: Calculate streak for each bar i:
if close[i] > close[i-1]:
if streak[i-1] > 0:
streak[i] = streak[i-1] + 1
else:
streak[i] = 1
elif close[i] < close[i-1]:
if streak[i-1] < 0:
streak[i] = streak[i-1] - 1
else:
streak[i] = -1
else:
streak[i] = 0 # flat day resets streak
Step 3: Calculate Component 2 — RSI(2) of streak
c2[i] = RSI value at bar i using streak[] series and 2-period lookback
Step 4: Calculate Component 3 — PercentRank of 1-day ROC over 100 bars
roc[i] = (close[i] - close[i-1]) / close[i-1] * 100
window = roc[i - pct_rank_period + 1 : i + 1]
rank = sum(1 for r in window if r <= roc[i])
c3[i] = (rank / pct_rank_period) * 100
Step 5: ConnorsRSI = average of three components
crsi[i] = (c1[i] + c2[i] + c3[i]) / 3
OUTPUT:
crsi[] — values 0 to 100
buy_signal: crsi[i] < 10 and close[i-1] > sma_200[i-1] (regime filter)
exit_signal: crsi[i] > 70
EDGE CASES:
- Minimum bars: rsi_period + pct_rank_period + streak_rsi_period + buffer ≈ 110 bars
- Flat close (close[i] == close[i-1]): streak = 0, treat as streak reset
- Crash environment: disable when SPY below 200-day SMA — return DISABLED flag
- PercentRank ties: count all bars with ROC equal to or less than current
Section 6: Parameters & Optimization
Standard Parameter Conventions
| Parameter | Connors Default | Conservative | Aggressive |
|---|---|---|---|
| RSI period | 3 | 5 | 2 |
| Streak RSI | 2 | 3 | 2 |
| PercentRank lookback | 100 | 200 | 50 |
| Buy threshold | 10 | 8 | 15 |
| Exit threshold | 70 | 80 | 60 |
Parameter Impact
| Change | Effect | When to Apply |
|---|---|---|
| Raise buy threshold to 15 | More signals, lower average quality | Highly liquid ETFs where false signal cost is low |
| Lower buy threshold to 5 | Fewer signals, higher average quality | Conservative risk management approach |
| Extend PercentRank to 200 | More robust ROC percentile — uses 1-year history | Higher accuracy in less volatile instruments |
| Raise exit to 90 | Hold longer for fuller reversion — more risk | Confirmed bull market environment only |
Can ConnorsRSI be used on individual stocks?
Connors' original research showed the edge degrades significantly on individual stocks compared to ETFs. The fundamental reason: individual stocks have idiosyncratic risk (earnings, news, FDA approvals) that permanently shifts the mean — breaking the reversion assumption. Stick to S&P 500 index ETFs (SPY), sector ETFs (XLF, XLE, XLK), and very large-cap liquid stocks (AAPL, MSFT, JPM). Avoid any stock in a merger, litigation, or bankruptcy process.
Is the documented 75% win rate still valid today?
Connors published results from 1995-2010. Like all published edge, awareness of the strategy creates some degradation. Current research suggests the win rate on SPY is approximately 65-70% post-publication, still positive but reduced. The edge persists because most retail traders lack the discipline to hold through intraday volatility during the oversold period. The behavioral edge (staying in an uncomfortable position) is harder to arbitrage away than a pure statistical one.
How does ConnorsRSI compare to just using RSI(2)?
RSI(2) was an earlier Connors strategy — very short-term RSI also signals mean reversion effectively. ConnorsRSI was designed to improve on RSI(2) by adding streak and ROC context. In practice, RSI(2) below 2 on SPY has similar win rates to CRSI below 10. CRSI's advantage is slightly fewer false signals in sideways-choppy markets due to the three-component averaging — none of the three components alone is as extreme as RSI(2).
Market-Specific Adjustments
- SPY/QQQ: Default parameters — designed specifically for these instruments
- Sector ETFs (XLF, XLE): Raise buy threshold to 12 — sectors move more than the broad index
- International ETFs (EEM, EFA): Extend PercentRank to 150 — international cycles are longer
- Individual large-cap stocks: Use with 200-day SMA filter AND earnings calendar exclusion
Section 7: Synergies & Conflicts
| Works Well With | Avoid Combining With | |
|---|---|---|
| SMA(200) regime filter | The most critical filter — only take CRSI longs when the instrument is above its 200-day SMA. This alone reduces crash-style losses dramatically. | — |
| RSI(14) as confirmation | If RSI(14) is also below 40 when CRSI drops below 10, the setup is confirmed on two timeframes of RSI — higher conviction | — |
| Earnings calendar exclusion | Filter out any CRSI signal within 5 days of an earnings announcement — the mean reversion thesis assumes no fundamental discontinuity | — |
| Volume spike confirmation | A CRSI below 10 occurring on above-average volume suggests panic selling — higher probability of sharp mean reversion bounce | — |
| MACD trend-following signals | — | If MACD is bearish when CRSI hits below 10, do not override CRSI with MACD — they are measuring different things. But in a crash, MACD will be extremely bearish while CRSI is below 10 — in that case, apply the 200-day SMA filter to stay out. |
| Stochastic RSI redundancy | — | CRSI already includes an RSI component — adding StochRSI creates overlapping information without additional signal quality |
| Sector rotation signals | — | CRSI is a short-term mean reversion indicator — do not mix with 12-1 momentum sector rotation strategies which have fundamentally different holding periods |
Section 8: Common Mistakes
| Mistake | Root Cause | Solution |
|---|---|---|
| Applying ConnorsRSI to volatile individual stocks | Ignoring the asset class restriction | Use only on index ETFs and large-cap liquid equities with ADX below 25 |
| Skipping the 200-day SMA regime filter | Treating CRSI as unconditional | Hard-code the regime filter: no long signals when SPY below SMA(200) |
| Holding past 5 trading days | Waiting for "full" recovery on a failed signal | Define a time stop: exit on day 5 regardless of CRSI level |
| Using CRSI for short entries in a bull market | Index drift is upward — shorting against it fails | Short entries above 90 only in neutral or bear markets — not in bull markets |
| Applying to earnings-period stocks | Earnings create fundamental price shifts, not mean reversions | Filter out all CRSI signals within 5 calendar days of earnings release |
Section 9: Cheat Sheet
USE WHEN: SPY/QQQ/sector ETF above 200-day SMA, CRSI drops below 10, no earnings in next 5 days, large-cap liquid instrument only
AVOID WHEN: Instrument below 200-day SMA (crash risk), individual volatile stocks, crypto, biotech, within 5 days of earnings, CRSI below 10 for more than 5 consecutive days (trend, not reversion)
ENTRY SIGNAL: CRSI closes below 10 on daily bar → enter next day's open. Add at CRSI below 5 (second tranche) and below 3 (third tranche).
EXIT SIGNAL: CRSI rises above 70 → exit at next open. Time stop: exit on day 5 if CRSI has not risen above 70.
PARAMETERS: RSI(3) + RSI(2) of streak + PercentRank(100) — do not vary these without extensive backtesting
CONFLUENCE: 200-day SMA above price (bull regime) + volume spike + RSI(14) below 40 = maximum confidence
RISK: Win rate degrades to ~45% without the 200-day SMA regime filter — the filter is mandatory, not optional
BEST TIMEFRAME: Daily bars only — designed for end-of-day signals, held 1-5 trading days