I have not done any research or work on mean reversion systems until about a month ago, when I listened to a series of Better System Trader podcasts featuring guest Cesar Alvarez. In other words, I’m a total noob. I dug deeper into this concept and found several mean reversion methods that have been popularized by Larry Connors (hence why Connors RSI) and Alvarez, who worked together in the past. Since I am primarily a futures trader, I wondered how well it would work on these markets, since a lot of these types of systems are written. Here is my first mean reversion system ever.
Phase 1: Plan & Design
1. Trading Idea
The big idea is a mean-reversion system, using a 2-period RSI for entries, 5-period simple moving average (SMA) for exit, and a 200-period SMA as a trend filter. If trend is bullish (up) and RSI(2) falls into oversold range, go long, exit when price closes above 5-period SMA. If trend is bearish (down) and RSI(2) rises into overbought range, go short, exit when price closes below 5-period SMA.
This system is based on the trading methods described by Larry Connors and Cesar Alvarez (Short Term Trading Strategies That Work).
Being a futures guy first and foremost, this mean-reversion system will be for futures only and can be used as a basis for another system built for equities, which is how Connors and Alvarez present this in their various writings.
2. System Definition
Indicators, Variables, Values, Parameters:
Name | Parameter | Comments |
---|---|---|
RSI | Length = 2 | Standard RSI, not optimizable |
RSI Oversold | Threshold = 90-95 | Optimizable, step 1 |
RSI Overbought | Threshold = 5-10 | Optimizable, step 1 |
StopLoss | 1.5 times greatest loss in backtest | This is only for a catastrophic loss, as the Connors RSI needs room to ‘breathe’ |
Initial Capital:
- N/A > will assume 1 contract and determine account size for each instrument during Monte Carlo analysis
Position Sizing:
- Futures: 1 contract, no pyramiding or further position sizing
Entry:
- Long:
- RSI(2) < RSI Oversold and
- Close > 200-period SMA
- Short:
- RSI(2) > RSI Overbought and
- Close < 200-period SMA
Stop:
Determine appropriate stop loss after backtesting. Stops should rarely, if ever, be hit.
Exit(s):
Exit when Close > 5-period SMA
Profit Target: None
Challenges: None
3. Performance Objectives
The Connors RSI system will meet the following objectives:
Objective | Goal | Achieved via Testing? |
---|---|---|
Strategy Type (trend, mean-reversion, day, swing, etc.) | Mean-reversion | Yes |
Risk of ruin | 0% | Yes |
Profit Factor | > 1.5 | Yes |
Win Percent | > 30% | Yes |
Max Drawdown % | < 35% | Yes |
Profit/Drawdown Ratio | > 2.0 | Yes |
Ulcer Index | n/a | |
Serenity Ratio | n/a | |
Ready Date | 2021/02/12 | 2021/02/10 |
This idea is S.M.A.R.T.: Specific, Measurable, Achievable, Realistic, Time-bound
4. Market Selection
Markets:
Energies | Currencies | Fixed Income | Agriculture | Metals | Softs | Indexes | Equities |
---|---|---|---|---|---|---|---|
X | X | X | X | X |
Instruments:
Name | Symbol | Exchange / Broker | Comments |
---|---|---|---|
Gasoline | RB | TS | |
Heating Oil | HO | TS | |
Natural Gas | NG | TS | |
Euro FX | EC | TS | |
Swiss Franc | SF | TS | |
Copper | HG | TS | |
Silver | SI | TS | |
Dow E-Mini $5 | YM | TS | |
S&P 500 E-Mini | ES | TS | |
Nasdaq E-Mini | NQ | TS | |
Russel 1000 E-Mini | RTY | TS | |
Wheat | W | TS | |
Lean Hogs | LH | TS |
Chart Type, Timeframe, Session, Time Zone:
Attribute | Value | Comments |
---|---|---|
Chart Type | Regular Candlestick | Charting is only useful for validating entry and exit signals |
Timeframe / Interval(s) | 60 minute, 240 minute, 480 minute, Daily | |
Session | Regular | |
Time Zone | Exchange |
Phase 2: Build
5. Manual Test
Pass. There are some big losses, but the win rate is generally high. Backtesting and walk-forward analysis should prove whether this will prove profitable for any instrument. I have some new ideas for other systems (see commentary section).
6. Build
Process Diagram
Comments:
Easy build, simple system
7. Unit Test
Complete?
Phase 3: Test
8. Optimization
Using MultiOpt (an optimization and walk-forward analysis tool for TradeStation), I optimized the following two parameters:
Parameter | Range | Step |
---|---|---|
RSI Oversold Threshold | 90-95 | 1 |
RSI Overbought Threshold | 5-10 | 1 |
9. Walk-Forward Analysis
For the walk-forward period, I started on August 24, 2013 and ended on August 8, 2020. This test was unanchored. Ending on this date allows me to reserve data for my incubation, assuming these pass Monte Carlo analysis. There were a lot of failures, but there were two successful instrument/timeframe combinations:
- Copper (HG) – Daily > 252 in / 156 out days
- Wheat (W) – Daily > 504 in / 252 out days
From here, I can move to Monte Carlo Simulation for these two instruments.
If you do not understand what this all means, that is okay. I will be writing more about the walk-forward process at a future date. However, if you follow along with the systems that I attempt to create every two weeks, this will make more sense as we go through the process. Afterall, I am still learning too!
10. Monte Carlo Simulation
We passed! Looking good thus far….
Walk-Forward Test | Monte Carlo | ||||||||
Instrument | Timeframe | Profit Factor | Win Percent | Result | Start Equity | Risk of Ruin | Median Return | Return / DD | 1 Year Profit Prob |
HG | Daily | 1.95 | 77.5% | Pass | $18,750 | 0% | 15% | 1.25 | 70% |
W | Daily | 2.57 | 73.7% | Pass | $6,250 | 0% | 15% | 1.83 | 79% |
Its ridiculously high Win Percent can be a misleading. With mean-reversion systems you need a high win rate, as a single loss can be big. One of the goals, as noted earlier, is to have a win % greater than 50%. Ideally, this should be > 60-70%.
And the median return and return/DD (drawdown) ratio are kind of low, but the Connors RSI only takes between 5-6 trades per year, which is another feature of mean reversion. I am going to proceed to incubation and see where we land.
11. Incubation
Incubation period for these Connors RSI systems is from August 2, 2020 to February 10, 2021. The HG system required re-optimization in November, so these result include that:
Incubation Test | ||||
Instrument | # Trades | Profit Factor | Win Percent | Result |
HG | 6 | 2.1 | 83.3% | Pass |
W | 3 | 1.1 | 33.3% | ??? |
HG passed incubation, but did W? By the numbers, the answer is ‘no’, but It was mildly profitable. Given the small sample set, the win percent is an outlier with respect to what we saw in incubation. Nothing in here screams “OUTLIER!!!!!”, so I think this is a conditional pass.
Phase 4: Deploy
I did not expect to make it this far, even though this type of Connors RSI system has proven to be profitable for equities.
12. Production / Portfolio Assignment
Copper (HG):
- I feel comfortable adding this to our list of production-ready strategies.
- I will assign this strategy to our brand new SAT Portfolio, where it will sit alone until we have another passing strategy to go along. I will be creating a separate page where we will track the performance on a monthly and maybe weekly basis, to see how it performs.
Wheat, Soft Red (W):
- I think this should go into incubation for another 1-3 months. I am certain it will bounce back, but I will review every month.
Trading System Result: PASS
Notes and Commentary
This is the first of several mean-reversion Connors RSI system that I have in my system pipeline. I was pleasantly surprised at the results, though I did expect at least one of the indexes and currency futures to pass. This is the purpose of having a rigorous and statistically significant process for system development: take only the systems with the greatest chance of success.
There is no guarantee that either passing system will continue to work, but we do have an edge.
When an idea fails, we throw it away, as was the case with our first strategy, the Golden Cross 1. Changing anything after setting our rules is curve-fitting. If it fails once at any point in the process, it gets thrown away.
However, each failure is a seed to the next idea or set of ideas.
So here is what is next for this mean-reversion strategy:
- Optimize the slow trend: The great Perry Kaufman uses 80-period Simple Moving Average (SMA) as a trend filter. Using this idea, we can gently optimize at 80, 120, 160, and 200 periods. Shorter periods would make this more reactive to trend changes.
- Exit after Slow SMA indicates a trend change: I noticed while doing my manual testing that some of the worst losses came as the SMA was just about to change trend. In this example below, once a bar closes below the Slow SMA (gray dashed line), I should exit. It may not improve the exit, but we shall see. If nothing else, it frees up capital for other trading opportunities.
- Optimize the stop loss: Stop losses usually do not work well for mean-reversion, from what I have read. I am generally not a fan of optimizing stop losses, but why not test it ourselves and gently optimize to see what happens?
Continuous Improvement Department:
I now have 1-3 new ideas which I will add to my list. I did not make any changes to my rules during Step 5, Manual Testing, but rather made notes for improvements or new trading ideas. Changing rules is curve-fitting (yes, I am repeating myself). We can never be married to our ideas. Take your idea out for a cup of coffee, see if anything clicks, if not, move along to the next idea (props to Laurent Bernut for the dating metaphor: Better System Trader Episode 177).
Do you have a trading idea that you want me to put through our process and see if it would make a valid trading system? Leave me a message below and we can discuss.
Sources/References
- Short Term Trading Strategies That Work, Larry Connors, Cesar Alvarez
Did you like what you read? Do you want to see more? Subscribe now and receive our email twice every month, with the Trading System Idea of the Week and other fun stuff.
Don’t worry, we will never, ever, ever sell, overuse, or donate your email address. Promise.
Did you like what you read? Do you want to see more? Subscribe now and receive our email twice every month, with the Trading System Idea of the Week and other fun stuff.
Don’t worry, we will never, ever, ever sell, overuse, or donate your email address. Promise.
Very well established process! I only hope that I can be this organized with my development someday.
Thanks! You can see the process diagram here: Our Trading System Design Process
It is derivative of Kevin Davey’s, Perry Kaufman’s, and Bob Pardo’s processes, with my own software development experience. I will be adding more detail to that page in coming weeks, time permitting.
I tried to code this strategy and ran through MultiOpt only to find very different results. I am not sure what I am doing wrong if anything but the results don’t have Wheat or Copper producing good results at all. I idea is simple enough to code pretty quickly. Do you mind if I send you a private email message to check my code?