Connors 2-Period RSI Update For 2013

About the Author Jeff Swanson

Jeff is the founder of System Trader Success - a website and mission to empowering the retail trader with the proper knowledge and tools to become a profitable trader the world of quantitative/automated trading.

follow me on:
  • Pete Stockdale says:

    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



    • 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!

  • vimal says:

    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

  • John says:

    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

  • Cool says:

    Modifying strategies already used and failed is called data snooping and it won’t work in reality. You should read “White Reality Check”.

    • Mark says:

      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.

  • Mark says:

    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.

  • Mark says:

    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.

  • shodson says:


    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


    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.

  • AnTZ_TK says:


    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.


    • 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.

      • Mark says:

        Great thinking as always, TK!

    • Oliver says:

      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

  • duncan says:

    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.

    • Robert says:

      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.

  • sjones says:

    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!

  • Lisa says:

    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.

  • Stefan says:

    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!

  • randall says:

    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.

  • randall says:

    oh yes. thanks for the reminder. has anyone plugged in connorsRSI yet? any results?

  • Jonatan says:

    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.

      • Jonatan says:

        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 )
        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).

  • evo34 says:

    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.

      • evo34 says:

        Ah, right. I thought it was per-trade for some reason.

  • Hughes says:

    please Jeff
    if it is possible in strategy to decrease the stop loss ?
    exemple stop to $500 or $300 ??

    • Yes, it is possible. There is an input called RiskPerTrade$ which controls the stop loss amount. Simply change that value.

      • Hughes says:

        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”

        • 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.

          • Hughes says:

            thanks Jeff now is ok
            i try strategy with nasdaq100 stocks components

  • arrepower says:

    that work in futures nq or es yes or not

  • Ninja96 says:


    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.

  • Rafael Osechas says:

    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.

      • Rafael Osechas says:

        Jeff for 5 minutes charts wich stop are you used

  • Rafael Osechas says:

    yes, but the stop for 5 minutes is different i guess

  • Joe Walsh says:

    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.’

  • Rafael osechas says:

    Dear jeff
    Habe you test in acumulative RSI is more than 45?

  • JD says:


    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.

  • Tom says:

    This is brilliant. I can’t wait to try this out myself. Thanks for the ideas!!

  • Marco says:

    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…

  • CLAUDIO says:

    hi. what program do you use to backtest?

  • Marc says:

    Hello Jeff,

    Sorry if I missed it: Is there Amibroker code for what you have shown?

    Thank you for any help.



    • Sorry, don’t have the Amibroker code for this. However, there is a text file available for you to convert if you wish.

  • Rafael says:

    I have a question did you buy at close the next day after rs5 close ◀ 30 or at the same day?

    • 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;

      • tafael osechas says:

        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

      • rafael says:

        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.

  • rafael says:

    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;

  • Marc says:

    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!



  • Marc says:


    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. 🙂



  • rafael says:

    thanks a lot

  • rafael says:

    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.

      • tafael osechas says:

        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.

  • AlphaDow says:

    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

    • sprout says:

      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.

  • Prashanth says:

    Nice article Jeff.
    Please keep me updated in case of any update or article about RSI2.


  • David says:

    Good stuff. I worked for Larry Connors for a few years (2007-2012, I was the last full-time editor-in-chief at 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, used to have a “RSI Solver” tool that might help with what you’re looking for.

  • Gianluca says:

    What about using Walk Forward Optimization on the two moving averages in order to catch market changes?

  • >