January 5


Connors 2-Period RSI Update For 2014

By Jeff Swanson

January 5, 2015

automated trading, Automated Trading Development, Cesar Alvarez, EasyLanguage, free easylanguage, Larry Connors, mean reversion, RSI, S&P Emini, stock index futures

With the year 2015 only being a few days old, it’s time to 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.

The modified 2-period RSI trading model makes new highs in 2014

Click to Tweet

Over the past few years the standard 2-period trading model 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 trading model into loss. Recall, the trading model had no stops. Since this drop the model has been slowly recovering. Below is an equity graph depicting the trading model’s equity curve trading the SPX index from 1980. You can easily see the large drop around trade number 135.

Connor's RSI Trading Models

Cannor's Rules

Total Net Profit


Profit Factor


Total No Of Trades


% Profitable


Avg.Trade Net Profit


Return on Capital


Annual Rate of Return


Here is a closeup view of the last 23 trades, which covers about the last six years.

The trading model as originally proposed by Larry Connors is 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.
  • Number of shares is normalized based on a 10-day ATR calculation with a $2,000 risk per trade.
  • There are no stops.
  • The P&L of each trade is not reinvested.
  • Commissions & Slippage are not accounted for.

Below is the annual performance of this trading model over the past few years. We can see that years 2013 and in particular 2014 have seen a drastic reduction in the net profit. Is the strong bullish market which we have been experiencing over the past few years a temporary phenomena which is harming this trading model’s performance? Could be. Or is simply this trading model slowly losing its edge? This could be as well. It’s just 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 model by Larry Connors.

Modified Trading Model

Back in the year 2013 I explored the robustness of the trading parameters used by the 2-period RSI trading model. That article can be found here. Within that article a slightly modified version of the original trading rules was proposed. In short, they doubled the value of the RSI threshold value (from 5 to 10) and troubled the look-back period for the simple moving average exit rule (from 5 to 10). Finally, a stop value of $2,000 was added. 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. Here is a summary of the rule changes.

  • Use a value of 10 as the RSI threshold.
  • Use a 10-period simple moving average as our exit signal.
  • Use a $2,000 hard stop.

Below is a table showing the difference between the original Connors’ rules and the modified Connors’ rules.

Connor's RSI Trading Models

Connor's Rules

Modified Rules

Total Net Profit



Profit Factor



Total Number of Trades Trades






Avg.Trade Net Profit



Return on Capital



Annual Rate of Return 



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 increased our look-back period for our exit calculation. Thus, we should be holding some of the trades a little longer in an attempt to make more profit.

The stop value does hurt the performance of our model. For example, removing the stop value will result in $157,000 in profit with a profit factor of 2.7. However, we’re going to keep the stop in place because trading without a stop is something most people will not be doing! It will also help protect us from massive losing trades as seen in 2011. These new rules result in making new equity highs unlike the original rules which is recovering from a large loss in 2011.

Note, in the 2-period RSI article form 2013 I incorrectly state the stop loss does not hurt the performance. I apparently was looking at the performance report and uploaded the wrong charts! Stops do hurt the system, but our modified rules do continue to perform well.


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

Jeff Swanson

About the author

Jeff has built and traded automated trading systems for the futures markets since 2008. He is the creator of the online courses System Development Master Class and Alpha Compass. Jeff is also the founder of EasyLanguage Mastery - a website and mission to empower the EasyLanguage trader with the proper knowledge and tools to become a profitable trader.

  • To be clear, the modified strategy buys the close whenever the 1-day RSI(2) (using expected close price) is 10 or lower, right? I.e., it is not using the cumulative RSI(2).

    Also, is the exit executed on close (if close is > 10d MA), or on the following open?


    • The modified strategy buys at the close of the current bar when the 2-period RSI crosses below 10. It does not use the cumulative RSI. The exit also occurs at the close of the current bar when the close price is above the 10-day SMA.

  • Jeff,
    The RSI2 Strategy Files (Trade Station ELD) code differs from the RSI2 Strategy File (Text file) given above. Which one is the one that you have modified to improve the equity curve? What is the EL code for normalization or where can it be found?

    In the future, something that would be very helpful to understanding a EL coded program at first reading, would be a English language definition of the variables and inputs. Yes, some are obvious and others are arcane. We are trying to learn from you so an explanation of terms would be helpful.

    • Hello Jim. I’m looking at the text file version and that appears to have the correct input values. Both the text file and the ELD file should be nearly identical in that 1) they both use RSI(2) as a entry trigger and 2) they both use an SMA as an exit. The only difference between the Connor’s trading model and my slight modification is changing the look-back values from from 5 to 10. I do admit I assume the reader will have some general understanding of coding when I write the articles. I’ve been thinking about creating a series of articles or free training videos on the basics of EasyLanguage coding. This is where I would explain in detail simple trading models, like the one we are looking at now, and what each line of code means. Would this be something you would be interested in?

  • What about the rare case where the predicted close price is below RSI(2) of 10, but above the 10d MA (or barely below it)? No trade in that case? (Using “Modified Trading Model” above).

    • Hello MP. That condition is taken care of in the entry logic of the code. Indeed, you don’t want to open a trade if the exit condition is already true. Here is the line of code:

      If ( RSI_Value <= RSIThreshold ) And ( Close > MA200 ) And ( Close < ExitMA ) Then buy("RSI Buy") vShares shares this bar at close; The code will make no distinction of "barely" below it. It's strictly a boolean value. However, there is no reason why one could not code a requirement demanding the distance from the exit SMA be some X distance away before opening a new trade.

  • Jeff,
    Let’s assume you get kicked out after the 2% stop loss. The marked goes still down this day. Do you enter a new trade at the end of this day?
    Regards, Werner

    • Hello Robert. Sorry but I’m not familiar with that platform. Maybe someone else can help who is reading this? Another option is to take it to another forum where you can probably find someone to covert it for you.

  • What about letting the profits run? Once the close is above the 10 day it doesn’t exit until the stop or a subsequent close below the 10 day. So the same amount of risk you let it run more. Certainly win pct declines but I wonder if overall profitability climbs.

    • Hello Bruno. Thanks for posting. This market study is fine. Using those orders for back testing a concepts is OK. More specifically, I trade futures so entering at the end of the day is still possible. I’ll also trade at a lower time-frame, say a 5-minute bar which provides even more flexibility. Nonetheless, if you’re uncomfortable with the study you can simply change the code to use “next bar at open”.

    • Hello Bruno. I just ran the study changing the order to “next-bar” and it produced what I would call a small change. Net profit falls from $146,762 to $136,209. Profit factor falls from 2.04 to 1.97. In my opinion it’s not a big deal and RSI can be used to create both systems that enter at the close of the bar (trading futures) or entering at the open of the next daily bar (trading ETFs).

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

    Learn To Code & Build Strategies
    Using EasyLanguage.