Does RSI Work? Use It as a Market Condition, Not a Signal
Relative Strength Index is usually taught as a trigger. Below 30 the market is "oversold" and due a bounce, above 70 it is "overbought" and due a fall, and a cross back through either level is the signal. Whether that works is a question about prediction, and not one this post tries to answer. There is a more modest use for the same number: not as a reason to take a trade, but as a description of the conditions a trade was taken in. Used that way, RSI stops being a forecast and becomes a label, and labels are something you can count.
What RSI actually measures
RSI compares the size of recent up moves with the size of recent down moves. Over a lookback, usually 14 bars, it takes a smoothed average of the gains across every bar, counting a down bar as a gain of zero, and a smoothed average of the losses, counting an up bar as a loss of zero, divides one by the other, and maps the ratio onto a scale from 0 to 100. The standard formula is RSI = 100 minus 100 / (1 + RS), where RS is the average gain divided by the average loss.
That makes the familiar levels easier to read. A reading of 70 means the average gain per bar has been about 2.33 times the average loss per bar. A reading of 30 is the same imbalance the other way round, with the average loss about 2.33 times the average gain. A reading of 50 means the two have been equal. Nothing in the calculation looks forward. RSI is a compact summary of how one-sided the recent past has been.
Overbought is a prediction, stretched is a description
The words most traders attach to RSI carry a forecast inside them. "Overbought" implies the price has gone too far and ought to come back. "Oversold" implies the opposite. The number itself says nothing of the sort. It says the recent path has been lopsided, and a lopsided path can continue as easily as it can reverse. Strong trends can hold RSI above 70 for long stretches, and steady declines can keep it below 30 for just as long.
A more neutral vocabulary helps. Below 30 is stretched to the downside, 30 to 70 is neutral, above 70 is stretched to the upside. These describe the market at the moment of entry and claim nothing about what happens next. NoxarQuant uses the same three bands, in compact form: LT30, 30_70 and GT70.
How the tag is assigned
When a trade is enriched, NoxarQuant computes a standard 14-period RSI, with Wilder's smoothing, from the candles leading up to the entry. The candle timeframe is matched to how long the trade was held, so a short scalp is measured on short candles and a trade held for several hours on longer ones. The reading is then filed into one of three buckets: LT30 for anything below 30, GT70 for anything above 70, and 30_70 for everything in between, including 30 and 70 themselves. If the window is completely flat, RSI is undefined and no bucket is stamped rather than a guess.
The RSI bucket is one of five tags every trade carries, alongside the setup, the session, a volatility bucket (LOW, MEDIUM or HIGH) and the trend (UP, DOWN or FLAT). Trades that share all five tags form a cluster, and clusters are what the classifier grades. RSI is therefore never read on its own. It is one coordinate of the conditions a trade was taken in.
A worked example
The numbers below are invented to show the arithmetic, not drawn from any real account. Suppose a trader has 120 trades of a breakout setup, totalling +18R, an average of +0.15R per trade. Split by the RSI bucket at entry:
- LT30: 15 trades, -0.20R average, -3R in total
- 30_70: 75 trades, +0.10R average, +7.5R in total
- GT70: 30 trades, +0.45R average, +13.5R in total
A quarter of the trades produced three quarters of the result. The 30 breakouts taken with RSI already above 70, the ones a signal reading would have labelled overbought, did most of the work. The 75 neutral trades contributed modestly, and the 15 stretched to the downside lost a little.
A single line in a journal cannot show this. The average of +0.15R is an accurate summary of three different groups of trades, and describes none of them well. Nor does the split say anything about RSI as a signal. The breakout was the reason for each trade; RSI only records what the market looked like when that reason appeared.
Reading the split carefully
Splitting a sample is how hidden structure gets found, and also how structure that is not there gets invented. Four checks keep the reading honest.
First, the standard error. If each trade has a standard deviation of about 1.0R, the standard error on the mean of 30 trades is about 0.18R, so the GT70 average of +0.45R sits about 2.46 standard errors above zero, just under 2.5. That is interesting, not settled. The LT30 average of -0.20R on 15 trades has a standard error of about 0.26R, which puts it about 0.8 standard errors below zero, indistinguishable from nothing at all.
Second, the yardstick NoxarQuant applies to clusters. SQN is the mean R divided by its standard deviation, multiplied by the square root of the number of trades. For the GT70 group that is 0.45 times the square root of 30, about 2.46: the same figure as above, because SQN is that t-statistic. The classifier gives no cluster a verdict below 12 trades, and does not call one strong until it has at least 20 trades and an SQN of at least 2.5. The best group in this example falls just short of that bar, and it is a slice across every session and trend rather than a single cluster.
Third, three buckets are three chances for one to look unusual by luck. If each had an independent 5% chance of a misleadingly extreme result, the chance that at least one of the three does is about 14%. The group that stands out was picked after looking, so its number is likely to be somewhat flattered.
Fourth, the buckets are rarely balanced. RSI usually spends far more of its time between 30 and 70 than outside it, so the stretched groups tend to hold fewer trades and take longer to say anything. How many trades it takes applies to every slice, not just the whole.
Sometimes the answer is nothing
A tag that separates nothing is also a result. In our case study, a mean-reversion system that used a short-period RSI as its entry trigger, every one of the 19 conditions flagged as lost money sat in the same band, 30_70. On that strategy the RSI tag did no work and the session, volatility and trend tags carried the result, which is worth knowing in itself.
RSI and trend travel together
RSI is also entangled with trend. A market that has been rising steadily will tend to show both an UP trend tag and a high RSI, and a falling one both DOWN and a low RSI. In the example above, if most of the GT70 breakouts were also taken in an UP trend, the bucket may be partly standing in for trend rather than adding anything of its own.
This is why the cluster keeps the tags together. A GT70 trade in an UP trend and a GT70 trade in a FLAT market fall into different clusters, because a stretched reading inside an established move and a sudden spike out of a range are different conditions even when the number is the same. Three RSI buckets and three trend states already make nine combinations before session or volatility are considered, which is useful detail and also a quick way to thin the data. The same care that applies to slicing by session applies here.
The point
RSI as a trigger asks the market a question about the future. RSI as a tag asks a question of your own records: in which conditions did this setup earn, and in which did it give back? The second is a matter of counting, provided the counts are large enough to mean something, and it is the kind of counting the case study is built on.
For informational purposes only. Past performance is not indicative of future results. Not financial advice. How we write and correct