Connors RSI Indicator: Formula, Settings and How to Read It
Connors RSI, introduced by Larry Connors in 2014, is the simple average of three measurements: a very short Wilder RSI of price, a Wilder RSI of the signed streak of consecutive closes in the same direction, and the percentile rank of the latest one-bar return. Defaults are 3, 2 and 100.
Senzoukria · Indicators · Updated September 2026
Connors RSI ships with the Senzoukria desktop app, in the Momentum group of the indicator catalogue. It is drawn in its own panel below the chart.
What Connors RSI measures
The three components answer different questions on purpose. The 3-period RSI measures price overextension; the 2-period RSI applied to the streak series — +1, +2, +3 for consecutive up closes, −1, −2 for down closes, and 0 on an unchanged close, which breaks the run — measures overextension in duration; the percentile rank measures overextension in magnitude, as the share of the previous 100 returns that were strictly smaller than the current one. Both RSI components use Wilder's smoothing exactly as the standalone RSI does, so the two indicators agree on screen. If any single component is undefined the composite returns nothing — it is never averaged over two thirds.
The formula, as implemented
This is not a description of how the indicator is usually defined elsewhere — it is what the shipped code computes, documented next to the implementation:
Connors RSI (Larry Connors, 2014) — moyenne SIMPLE de trois composantes mesurant trois choses DIFFÉRENTES : CRSI = ( RSI_wilder(close, 3) + RSI_wilder(streak, 2) + percentRank(retours %, 100) ) / 3 • streak[i] = longueur SIGNÉE de la série de clôtures consécutives dans le même sens : +1, +2, +3… en hausse ; −1, −2… en baisse ; 0 sur une clôture inchangée (qui casse la série). Le RSI de CETTE série mesure la PERSISTANCE, pas l'amplitude. • percentRank = 100 · #{ j parmi les N retours PRÉCÉDENTS : ret_j < ret_i } / N, avec ret = ROC% sur 1 barre. Comparaison STRICTE « < » sur les N retours ANTÉRIEURS (définition de Connors) — convention DIFFÉRENTE de `percentile-rank` (stats.ts), qui compte « ≤ » sur la fenêtre courante divisée par N−1. Écart assumé et documenté : ce sont deux indicateurs distincts, chacun fidèle à sa source. Les deux RSI sont du WILDER pur (`wilderRsiSeries` — mêmes égalités que `rsi` : marché plat → null, que des gains → 100, que des pertes → 0). Une composante indéfinie → CRSI null : on ne moyenne pas sur deux tiers. POURQUOI ces trois-là : Connors combine surachat de PRIX (RSI 3, très court), surachat de DURÉE (RSI du streak) et surachat de MAGNITUDE (rang du dernier retour dans sa distribution) ; l'ensemble corrige le principal défaut du RSI court, qui sature sans dire si le mouvement est exceptionnel. Défauts 3/2/100 (Connors). Warm-up dominé par le rang : i ≥ rankPeriod + 1.
How to read it
- The composite runs from 0 to 100, but it is not a plain RSI: a high reading requires price extension, streak length and return size to agree.
- A very high value describes a move that is simultaneously stretched, persistent and large relative to its own recent distribution.
- A mid-range reading says little on its own, because the three components may be pulling in opposite directions and cancelling.
- The streak component resets to zero on an unchanged close, so on instruments that print repeated identical closes the composite can drop sharply while price does nothing.
- Treat extremes as a description of the current state, not as a schedule — the calculation has no view on when the condition ends.
Parameters and defaults
rsiPeriod (3) and streakPeriod (2) are short by design: a 3-period RSI reaches its extremes within a few bars, and that saturation is exactly the weakness the other two components are there to cover, since a short RSI alone cannot say whether the move is unusual. rankPeriod (100) sets the distribution the latest return is compared against and dominates the warm-up: no value exists before index rankPeriod + 1. Lengthening the rank period makes extreme readings rarer, since the current return then has to beat a longer history.
| Parameter | Type | Default | Range |
|---|---|---|---|
| RSI period | number | 3 | 1 – 200 |
| Streak RSI period | number | 2 | 1 – 200 |
| Rank period | number | 100 | 1 – 2000 |
What it does not show
The composite compresses three different measurements into one number, so identical readings can come from very different market states; the components are more informative than their average when you are trying to understand a move. The percentile rank uses a strict less-than comparison over the previous returns, Connors' own definition, which differs from the separate percentile rank indicator in Senzoukria — the two are not interchangeable. None of the three components sees volume, delta or the order book. On illiquid series where closes repeat, the streak component is driven by unchanged closes rather than by momentum.
Using it in Senzoukria
Add it from the Indicators panel of any footprint chart or candle chart. It runs on futures data from Rithmic or Databento and on crypto pairs from Binance and Bybit, on the same engine — the calculation does not change with the venue, only the data feeding it does. Market data subscriptions are billed by the provider, separately from the app.
Related indicators
See the full indicator library, or start with the order flow guide if you are new to reading aggression, delta and absorption.
Frequently asked questions
- What are the three components of Connors RSI?
- A short Wilder RSI of the close (3 periods by default), a Wilder RSI of the streak series (2 periods), and the percentile rank of the latest one-bar percentage return against the previous 100 returns. The three are averaged with equal weight. They cover price extension, duration of the run and size of the move, which is why Connors combined them rather than lengthening a single RSI.
- How is the streak value calculated?
- It is the signed length of the current run of closes in the same direction: +1, +2, +3 and so on while closes keep rising, −1, −2 and so on while they keep falling. An unchanged close sets the streak to 0 and breaks the run. Applying an RSI to that series measures how unusual the persistence is, independently of how far price moved.
- Why does Connors RSI need so many bars before it plots?
- The percentile rank component compares the latest return against a window of previous returns, 100 of them by default, so no value can exist before that history is available — the first one lands at index rankPeriod + 1. The warm-up is therefore driven by rankPeriod rather than by the two short RSIs. Shortening the rank period brings the first plotted bar forward, at the cost of a coarser distribution.