It’s been about a year since I’ve taken a look at the very popular 2-period RSI trading method by Larry Connors and Cesar Alvarez. We all know there are no magic indicators but there is an indicator that certainly acted like magic over several decades. What indicator is it? Our reliable RSI indicator.
Over the past few years the standard 2-period trading system as defined in the book, “Short Term Trading Strategies That Work”, has been in a drawdown. During 2011 the market experienced a sudden and sustained drop which put the system into loss. It has been slowly recovering since. Below is an equity graph depicting the trading system’s equity curve trading the SPX index from 1983. You can easily see the large drop around trade number 120.
Here is a closeup view of the last 19 trades, which covers about the last five years.
2-Period RSI System
Cannor's Rules | |
---|---|
Total Net Profit | $28,742 |
Profit Factor | 2.97 |
Total No Of Trades | 129 |
% Profitable | 82% |
Avg.Trade Net Profit | $222.81 |
Return on Capital | 28.74% |
Annual Rate of Return | 0.86% |
The trading rules from Larry Connors are very simple and consist of long-only trades. As a reminder, the rules are as follows:
- Price must be above its 200-day moving average.
- Buy on close when cumulative RSI(2) is below 5.
- Exit when price closes above the 5-day moving average.
All the tests within this article are going to use the following assumptions:
- Starting Equity: $100,000.
- Risk Per Trade: $2,000.
- Number of shares is normalized based on a 10-day ATR calculation.
- There are no stops.
- The P&L of each trade is not reinvested.
Is the 2-period RSI indicator losing its edge? Hard to say at this time. It’s not like drawdowns have not happened before, but that’s not really what I want to explore. I want to take a closer look at the 2-period RSI indicator and see if we can improve the basic trading system by Larry Connors.
Days After Opening A Trade
First let’s take a look at how the market behaves after a RSI setup occurs. In short, the 2-period RSI is designed to highlight strong pullbacks. Buying into pullbacks in an uptrend has been a well known and effective trading method and is the essence of the 2-period RSI trading system. We can demonstrate this by looking at how the market behaves after a trade is triggered. I created an EasyLanguage strategy that can hold a position X days after opening a trade. I then tested X for values in the range from 1 through 30. In other words, I want to see how the market behaves 1-30 days after opening a trade. Does the market have a tendency to climb after trade setup occurs or does it tend to drift lower? Below is a bar graph which represents the results. Each bar is the total P&L based upon the number of holding days.
In general the longer the holding period, the more P&L is generated. This shows that after our 2-period RSI indicator triggers a trade, the market tends to climb over the next 30 days. It’s also important to notice all values produce positive results. This shows robustness in this particular parameter.
Moving Average Exit Period
The original trading rules by Larry Connors used a dynamic exit based upon a 5-day moving average. Once price closed above this average, the trade was closed. I wanted to take a closer look at the period used for this moving average exit. Like the bar graph above, I tested values 1-30 for the period used in the moving average.
In this graph we can see increasing profit as we increase the moving average period from one to 14. There is a slow decline after 14 as we continue to our final value of 30. It’s very good to see that all values produce positive results. This shows stability across this parameter and exit method.
RSI Threshold
Let’s look at the threshold value used to determine if the market has pulled back enough to trigger a long trade. Once again, we will create a bar graph as we look at a range of threshold values from 1-30.
We see values below 10 produce the best results. Once again, every value produces positive results and this is a very good sign.
Based upon the information we looked at in this article, let’s modify Connors’ trading rules. We will make the following changes:
- Use a value of 10 as the RSI threshold.
- Use a 10-period simple moving average as our exit signal.
Below is a table showing the difference between the original Connors’ rules and the modified Connors’ rules.
2-Period RSI System
Cannor's Rules | Modified Rules | |
---|---|---|
Total Net Profit | $28,742 | $62,800 |
Profit Factor | 2.97 | 2.74 |
Total No Of Trades | 129 | 227 |
% Profitable | 82% | 83% |
Avg.Trade Net Profit | $222.81 | $276.65 |
Return on Capital | 28.74% | 62.00% |
Annual Rate of Return | 0.86% | 1.67% |
Our increase in net profit comes at the cost of more trades which is due to the fact of lowering the stand on what we consider a viable pullback. By increasing the RSI threshold from 5 to 10 more setups qualify as a valid entry, thus we take more trades. But we also make more money on each trade. This is due to our longer hold period by increasing our moving average period from 5 to 10. In the end, we are willing to take more trades and hold on to those trades for longer periods of time.
Adding Stop Loss
All the results above do not use a stop loss value. Let’s add a $2,000 stop loss on each trade and see how it will change the results. I picked this value because it represents our risk value when scaling the number of shares to trade. Notice we are only risking 2% of our $100,000 account on each trade. The far right column holds the results with the $2,000 hard stop.
2-Period RSI System
Cannor's Rules | Modified Rules | Modified Rules W/Stops | |
---|---|---|---|
Total Net Profit | $28,742 | $62,800 | $66,679 |
Profit Factor | 2.97 | 2.74 | 2.93 |
Total No Of Trades | 129 | 227 | 232 |
% Profitable | 82% | 83% | 84% |
Avg.Trade Net Profit | $222.81 | $276.65 | $287.41 |
Return on Capital | 28.74% | 62.00% | 66.68% |
Annual Rate of Return | 0.86% | 1.67% | 1.75% |
This just gets better and better. Often stops will hurt a trading system in several key performance factors but not here. Our $2,000 hard stop improves the system across several performance factors. Unlike the original trading system, this equity curve is producing new highs.
Across Different Markets
Let’s now look at the performance across different markets. I will not modify the trading rules at all.
IYY | IWM | DIA | QQQ | SPY | ES | |
---|---|---|---|---|---|---|
Total Net Profit | $15,075 | $16,864 | $18,582 | $14,714 | $39,857 | $35,863 |
Profit Factor | 2.09 | 2.24 | 2.13 | 1.98 | 3.12 | 2.05 |
Total No Of Trades | 74 | 83 | 92 | 86 | 293.07 | 95 |
% Profitable | 81% | 77% | 74% | 71% | 87% | 76% |
Avg.Trade Net Profit | $203.73 | $203.18 | $201.97 | $171.09 | $293.07 | $377.50 |
Return on Capital | 15.08% | 16.86% | 18.58% | 14.71% | 39.86% | 35.86% |
Annual Rate of Return | 1.18% | 1.31% | 1.19% | 1.04% | 1.74% | 2.08% |
Notice the number of trades is significantly lower for the above ETFs when compared with SPY. This is due to SPY being around since 1993 while these other ETFs are much newer. Overall, the system holds up nicely across these different markets.
Conclusion
The RSI indicator still appears to be a robust indicator at locating high probability entry points within the major market indices. You can modify the trigger threshold and holding period over a large range of values and still produce positive trading results. I hope this article will give you lots of ideas to explore on your own. Another idea in regards to testing parameters is to independently optimize the parameters over the “portfolio” of market ETFs instead of using just $SPX. There is no doubt in my mind the RSI indicator can be used as a basis for a profitable trading system.
Get The Book
Update:
This topic has been updated with performance through 2014.
Hi Jeff
Very interesting and encouraging article and information, thanks.
Were you aware that Larry Connors has now published what he himself calls ” the Connors RSI” which is actually a composite of three indicators that he has reason to believe in? His view is that they have empirical evidence that this indicator usually, though not always, surpasses the RSI2. He has made the formula open to all so I am not breaking any copyrights by posting the following link
http://info.tradingmarkets.com/ConnorsRSI_ConnorsRSI.html?htm_source=TMACRSIpage&utm_medium=textlink
Cheers
Pete
Pete, thanks for the link. I did download and review the ConnorsRSI a few months back, but I’ve not had the time to test it myself. It does look interesting!
Hi Jeff. I have signed up recently for a TM course and during their webinairs, they have published CRSI results v RSI2 results for a given strategy. I have tried to confirm this myself by having the strategy coded but just can’t see how CRSI is better than RSI2. TM refuse to give me the strategy code so I can see if my coder has done anything incorrect . Trust me, the course I signed up for was not cheap! I have used TM before for courses and they were good before and lets say, much more “open”. This time, its not the case. This approach makes me personally vary wary. Still hope I am wrong but I am disillusioned with their approach on this. Be good to hear your thoughts on the CRSI performance v RSI2
Interesting…thanks for the info. I hope to review the CRSI sometime soon.
Connors Group link for ConnorsRSI code:
http://www.tradingmarkets.com/media/2012/CRTS.zip
Thanks for the link.
Thanks for that!
Nice simple strategy Jeff, would it be possible to add a line of code that prevents entries when the exit moving average is heading down?
I ran a test on SPX with your suggestion John. This significantly reduces the number of trades, profit factor and average profit per trade.
P&L: $19,472
No. Trades: 117
PF: 1.72
Avg P&L Per Trade: $166
Modifying strategies already used and failed is called data snooping and it won’t work in reality. You should read “White Reality Check”.
I have multiple problems with this comment.
First, what makes you think the original system failed? I don’t see that it has.
Second, don’t just identify something you think is “data snooping” and stand on ceremony by saying “that won’t work.” Nobody ever knows what will work *going forward*. “In reality” is a misleading and nebulous phrase.
Think specifically about what is going on here. What I want to do with the system development process is give myself enough confidence in the system to trade it mechanically going forward. If I have doubts such that I won’t be able to stick with it during times of drawdown then I will likely fail. In this case, Jeff tested the original parameters along with surrounding values and found many to work. In all cases, he found a high plateau of performance, which is exactly what should give you confidence that the performance wasn’t fluke.
While curve fitting or data snooping is always a concern I do believe this article shows the basic premise of the RSI indicator as a mean reversion trading tool to be valid. The results are positive across a range of input values and over several different major market indexes. I was more interested in demonstrating positive results over a range of values for each of the key parameters.
Thanks for posting, Jeff; I think this was very thorough. One last thing I’d like to see done is a walk-forward optimization to see if the equity curve can be improved by resetting trading parameters on a periodic basis. I wonder, though, whether this is not so much a step of the system development process as it is a whole other approach to system development than what you have done here?
I tend to avoid forward optimization when designing a system, but it’s an interesting idea to test once a system is finalized.
I originally thought it was encouraging that the system performs well in multiple markets because you could therefore trade multiple markets for greater net profit. However, the distribution of those trades must be studied. If multiple markets often get traded at once, which is likely, then total portfolio heat might be a concern. If you limited max open positions then somehow you’d have to score which tickers would get traded in case more qualified, etc. That might be opening a whole other can of works.
If the study of multiple markets is done to suggest robustness of this finding when traded on one and only one market, then I have no qualms about it. You just trade the one market with this system on a very limited exposure (and profit potential) basis.
The study of multiple markets was simply to test the robustness of the concept across similar markets. I don’t believe this trading concept to be a good candidate to trade on all those markets in parallel.
Jeff,
Great article as usual.
Can you elaborate on how you “risk $2000 based on 10-day ATR” without using stops? I see you are using a function
_CE_Normalize_Units_vs_Volatility()
to compute the number of shares that would be appropriate but I don’t know how that works or can’t find any info on what that does.
Hello, here is the position sizing formula used:
Shares = $2,000 per trade / (5 * ATR(20) * Big_Point_Value )
You will also find a copy of the code here.
Jeff,
I would like to make a suggestion regarding an additional evaluation: the average random trade results as a benchmark for whatever strategy you test.
Here’s what I mean in detail:
Let’s say you generate 100 trades in symbol XYZ over 10 years with an average duration of 5 days and that your annual rate of return is 1.5%.
What you do then is to pick 100 starting days by random (in that 10 years that you tested) and for each starting date you then by random generate an ending date that is also on average 10 days later (i.e., use a random variable in the range from 3 to 17 and add that to the starting date).
This gives you 100 random trades in tha same symbol over the same period of time. Now calculate the annual rate of return for those 100 trades and store it.
Repeat the process of generating 100 random trades a couple of times (i.e., anything inbetween 100 times to 1,000 times) and over all those runs average the annual return.
Now we have a benchmark that we can compare the tested strategy against. Only if it gives you a better annual return than the average of random trades I would regard the strategy as having any value.
All boats rise when the tide sets in. Therefore a positive annual rate of return doesn’t mean anything in itself (as the saying goes: anybody can make money in a bull market). It’s the difference to random trades that shows whether there’s any value in a concept.
Cheers,
TK
Yes, that is a good suggestion and thanks for sharing. Most of the time I’m limited on time so I can’t explore all the different methods of evolution. I hope this gives other reads plenty of ideas to explore.
Great thinking as always, TK!
@TK
thanks a lot for that suggestion!
Until now I’ve used a way simpler method to test a strategy against randomness: I just calculate the average gain of the underlying over the average hold of the strategy (during the test period) and then I compare it with my strategy’s expectancy (per trade), which should be at least double the size of the former. What do you think about this method?
Best regards Oliver
[…] Connors RSI Update For 2013 […]
re: new ConnorsRSI formula on the site.
to those looking at this new formula i dropped it into a strategy and portfolio backtested it against the rsi2 accross components of ND100 plus some other high beta equities (total 200 equities) going back to 1995.
the new connors formula posted above performed slightly worse (profit factor – 1.79 vs. 1.9 traditional rsi using the strategy settings i apply) than standard rsi2 and had a slightly higher draw down in the basket i looked at.
i wont be using the new ConnorsRSI.
I performed similar tests and had similar results. The ConnorsRSI wasn’t bad, but it wasn’t superior in any way to the standard RSI2.
Hi Jeff
Really interesting article. I’ve been also looking at RSI2 and ConnorsRSI strategies recently. One thing I found is that they don’t necessarily work that well across different markets, contrary to what you found. Your test here looks at different markets, but they are all strongly correlated. You can see this if you plot them all on the same chart, on (for example) Google Finance. I think this is probably because they are all based on US equities markets in some flavour or other. If you run RSI2 or Connors RSI backtests on other international indices (eg CAC40, Nikkei, Hang Seng), you’ll probably get very disappointing results. The only exception is the UK FTSE 100, although this tends to mirror the US markets somewhat so this isn’t exactly surprising. Hope this is useful.
Hello SJones. Glad you enjoyed the article. What you say is true. The Connor setups work well on major U.S. indices but not much else. The book that describes these setups by Connor does indicate all the testing and results are for the U.S. markets. So, it’s not so surprising they may not work well on other indices outside the U.S. Thanks for the comment!
This is probably a very rookie question but you’re showing low single digit returns annually for the strategy. Am I reading this wrong?
Lisa, that’s a good observation. For the example used in the article I’m risking a small portion of the entire portfolio. It’s a very conservative approach. The risk can be adjusted to trade more shares based on the account size and thus, increase the returns.
Hi Jeff, thanks for the useful article.
Your results for the Modified RSI2 show 293.07 trades for SPY. How is it possible to have .07 of a trade? Am I missing something?
I’m trying to replicate your results (using NinjaTrader) but so far only getting 218 trades for SPY for same period. Still investigating.
That is an error on the graphic. I’ll have to add this error to the to-do list. Thanks!
hi jeff
i downloaded and applied the strategy mentioned on rsi2.
im not getting much of any trades.. what am i doing wrong?
i have my charts set on daily. my charts doesnt show the rsi or the 200d/5d ma.
hope you can help. randall
Randall,
Did you also download the workspace? If not, I recommend you first install the ELD file and then the WorkSpace.
oh yes. thanks for the reminder. has anyone plugged in connorsRSI yet? any results?
Randall, I’ve not personally done so. Maybe some others have?
Hi Jeff, great article.
I don’t understand how you calculate the position sizing to risk $2000, and where you put the stop loss.
In this formula: Shares = $2,000 per trade / (5 * ATR(20) * Big_Point_Value)
What is big point value?
Thank you !
Yes, this can be confusing. First, there are no stops in this market study so, keep that in mind. The $2k risk per trade represents a 2% risk based upon a $100,000 account. This dollar value is simply used to calculate our position size or our exposure. Throughout the entire study this remains a fixed value – $2,000. However, the denominator in our calculation changes based upon the market volatility. The more volatility the fewer shares are purchased. The big point value is simply the dollar value for every point of the traded instrument. In this case, it’s $1.00. However if it were the S&P futures contract it would be $50 per point. So big point value is in the calculation so the market study can handle different tradable instruments. Hope this helps.
Thanks for your answer Jeff!
I know that the strategy don’t use stops, but you include a modified rules with stop of $ 2000.
I found this interesting because many traders, including myself, need to use some stop.
So, lets supouse that the average true range (20) for today is 1.18 and I trade the SPY.
Shares = $2,000 per trade / (5 * ATR(20) * Big_Point_Value )
2000/(5*1.18*1)=338.98
I bought 399 SPY and use the $2000 risk/399 number of shares=5.01
So I put the stop $5.01 below the entry price
Am I reading this correctly, is this the stop that you calculated in the modified rules?
Thank You
Johatan, you’re on the right track. If you buy 339 shares you would need to place the stop at $5.90 below your entry price to maintain your risk at $2,000 (339 shares * $5.90).
I don’t understand your RSI Threshold bar graph. It seems to show that using rsi(2) < 1, for example, is barely profitable, whereas using rsi(2) < 10 is very good. And using rsi(2) < 30 is just as good. That doesn't make sense to me. Am I misinterpreting the chart?
Evo34, you’re not misinterpreting the chart, but there are other factors not shown in the chart. For example, while <10 and <30 both produce similar net profit, other considerations come into play. When you include all trades that fall below 30 you will have far more trades than if you put the threshold at <10. However, you are generating similar profit. What this means is you are making less per trade. Put another way, you are less efficient at generating profit. My goal is often to eliminate trades to reduce market exposure and trading costs. Hope this helps.
Ah, right. I thought it was per-trade for some reason.
please Jeff
if it is possible in strategy to decrease the stop loss ?
exemple stop to $500 or $300 ??
thanks
Yes, it is possible. There is an input called RiskPerTrade$ which controls the stop loss amount. Simply change that value.
Thanks Jeff
but impossible to insert strategy with stop loss $300
Event log write
“Tried to reference more bars than allowed by the current Max bars back setting”
hughes
That has nothing to do with the stop loss, you have to adjust the “maximum number of bars the strategy will reference” within the Properties For All. More info here.
thanks Jeff now is ok
i try strategy with nasdaq100 stocks components
that work in futures nq or es yes or not
Yes, it will work with NQ.
Jeff:
Have you looked at this for intraday trading? Perhaps using an hourly chart to apply the buy/sell rules, and say a 15min chart to better “time” the entry/exit signal on the higher TF?
My thinking is the acct size could be smaller, and with smaller stops (if stops used).
Thanks for the work you’ve done!
Ninja96, yes I have looked at this. You can use the daily chart as the primary signal and then drill down to as low as a 5-minute chart to find an entry. This does allow you to reduce your risk and ride the trade for several days. This is the concept of the Aurora Pro trading system.
my dear Jeff
i have been testing whit close to close and do it good, but have you any idea that this system work for 60 minutes period time? because i saw for example qqq for 2 years is only 11 times and i prefer to do more trading whit futures NQ
have you any experiencence whit diferrents periods of time (short periods) and options too for that system?
thanks a lot
Rafael, yes, I have. I’ve reduced the entry to a 5-minute chart with good results. However, you’re right about the low frequency of setups. I’ve not tested with options, but do think trading a portfolio of stocks may be viable – but I’ve yet to test that.
Jeff for 5 minutes charts wich stop are you used
On the 5-minute charts I’ve been using a $500 stop per contract.
yes, but the stop for 5 minutes is different i guess
Does the 10 day moving average work better than the 5 day for short side trades as well ?
Joe, I just did a quick study using a 10 day moving average provided not much of an improvement at all. In fact, any improvement so tiny I would have to say ‘no.’
Dear jeff
Habe you test in acumulative RSI is more than 45?
Rafael, I think you will find this article helpful.
Jeff
Great article and your parameter tweaks are great. Do you think this strategy would work on the forex ‘spot’ markets?
Thanks JD. I’m not sure, but would guess not. This was built for the broad market indexes.
This is brilliant. I can’t wait to try this out myself. Thanks for the ideas!!
Hello Jeff! Could you give me the maximum drawdawn of the strategy? I would like to trade it with leverage and I need that number to correctly size the margin…
Really great… I think it can be considered like a compleate system…
http://nightlypatterns.wordpress.com/
I sent a copy of the report to your email.
hi. what program do you use to backtest?
TradeStation 9.5.
Hello Jeff,
Sorry if I missed it: Is there Amibroker code for what you have shown?
Thank you for any help.
Regards,
Marc
Sorry, don’t have the Amibroker code for this. However, there is a text file available for you to convert if you wish.
I have a question did you buy at close the next day after rs5 close ◀ 30 or at the same day?
Thanks
The code buys at the close of “today.” Here is the line of code:
If ( RSI_Value <= RSIThreshold ) And ( Close > MA200 ) Then buy(“RSI Buy”) vShares shares this bar at close;
I think i have a problem because in my strategydesk ameritrade i wrote buy when RSI (2) is 200 at close but i dont know wha treshold meatresho
it’s look like i will buy when rsi 2 < 10 not at rsi 2 < 5 im correct? what ean threshold for this strategy?
sorry if i am so much
As stated in the article, the Threshold is five. However, feel free to test other values.
hello friend
did you but at open the next day after rs2 close below 5? and sell at close or at taget?
The exit will sell at the close of “Today”. Here is the code:
If ( MarketPosition <> 0 ) And ( Close > ExitMA ) Then sell(“MA Corss Exit”) this bar at close;
Hello Jeff,
Again, excellent work. I am trading a version to this when I see the opportunity present itself.
If you have a moment, can you please provide to my email:
Avg. Trade Net Loss
Largest Profit
Largest Loss
Maximum Drawdown
Thank you, Jeff!
Regards,
Marc
Jeff,
Also, I have several of the Connors RSI strategy books, and none of them bring up the need for the 200 MA above (longs), below (shorts). I called them up about this and they said it wasn’t needed. I don’t get this. It would seem to me that you must have some type of trend indicator in place before trading this type of system.
Therefore, what I do with their work is add an ADX (5,5) > 60, as an additional filter before placing the trade. Have you used the ADX as an additional “trend is overheated” filter?
I guess there are multiple comments/question embedded in my email. 🙂
Regards,
Marc
thanks a lot
have you use strategy desk from td ameritrade? because i dont know how to create rsi 2 < treshold 10 how i can calculate o wrote that cain of treshold?
Sorry Rafael, but I’m not familiar with Ameritrade at all so I won’t be able to answer programming quesitons.
Ok but how i can identificate a 10 thtehhold really i dont know what threshold mean sorry if i am ver dumb
Sorry, I’m not sure if I understand your question. But I’ll make an attempt. A threshold is simply a value that triggers an event. In our case, the 2-period RSI must produce a result that is below a threshold value. When that happens, a trade set-up occurs.
As someone who traded this through the 2011 drawdown I wish I had used stop losses of $2k. I remember a couple of 5 figure losses as the market knifed through support after support. I’ve been reticent to trade anything but the TPS3 and 4 setups since and in a much smaller size.
Two questions: is there a way to reverse engineer a price that would equate to an RSI2 value >90? So I can set limit exit prices if I’m not at computer before close.
Also – anyone know how to import ELD file into Multicharts? The version that comes with Interactive Brokers. Thanks
What are the TPS3 and 4 setups? Do you have any info on them?
Reverse engineering…you could brute force sweep through a range of last closing prices for the RSI-2 for current close. Haven’t thought of a good way to do this in Multicharts but I’m sure it’s doable Excel, python etc.
Nice article Jeff.
Please keep me updated in case of any update or article about RSI2.
Thanks.
Good stuff. I worked for Larry Connors for a few years (2007-2012, I was the last full-time editor-in-chief at TradingMarkets.com) and you’ve done his work proud.
I found your approach to the stop loss issue to be very interesting. As you know, Larry was not a fan of them for ST mean reversion trades. But as someone who uses options to trade these strategies, I love knowing that maximum possible loss per trade.
By the way AlphaDow, TradingMarkets.com used to have a “RSI Solver” tool that might help with what you’re looking for.
Thanks David. I’ll look into the “RSI Solver”.
What about using Walk Forward Optimization on the two moving averages in order to catch market changes?