ABG Analytics logo

Simple Trading System Performance

Moving Average Crossover Systems

One of the simplest possible systems for following trends is to buy when a stock's price crosses above one of its moving averages and sell when its price crosses below the same moving average. That will allow participation in a major trend, but at the cost of many small losses if a stock's price meanders above and below its moving average without really getting anywhere.

The results below show the results of pursuing this trading strategy for 1,000 days of the stocks in the S&P-100 as of March 2002 (the same data used above will be used in all of these tests).

System 1: Buy if price crosses above the 50-day moving average (MA50), Sell if price crosses below MA50

Avg profit per trade (% gross)           -0.0
Avg days held                            13.2
Profitable trades (%)*                   14.9

Avg drawdown (%)                          0.2
Max drawdown (%)                         22.0
Avg profit/avg drawdown                  -0.1

* Assumes 1% charge for commission/slippage per transaction

System 2: Buy if stock crosses above 200 day moving average (MA200), Sell if stock crosses below MA200

Avg profit per trade (% gross)            0.2
Avg days held                            22.5
Profitable trades (%)*                    9.3

Avg drawdown (%)                          0.3
Max drawdown (%)                         24.6
Avg profit/avg drawdown                   0.5
Neither System 1 nor System 2 is profitable on average, and we submit that performance would not be improved drastically by choosing another moving average length and/or type (simple vs. exponential). Their risk is limited, but so is their gain. Once transaction costs of even 1% are taken into account, their gain is negative. This system is marked by many small losing trades and relatively few and large winning trades. Also, note that the average trade length is relatively short. These small "whipsaw" losses almost exactly offset the winners.

Many authors have suggested ways to reduce these whipsaw losses (e.g., Kaufman 1995). The problem is that the solutions usually involve an offset from the gains that equals the value of the losses so avoided (as would be expected if stock prices follow a random walk). One type of filter is a percentage penetration filter. Consider the following system with a three percent filter.

System 3: Buy if price crosses above 1.03*MA50, Sell if price crosses below 0.97*MA50.

Avg profit per trade (% gross)           -0.0
Avg days held                            35.9
Profitable trades (%)*                   24.9

Avg drawdown (%)                          2.4
Max drawdown (%)                         28.9
Avg profit/avg drawdown                  -0.0
Another type of filter is a time filter, say, wait for three continuous closing prices above the moving average before buying, as in the system below.

System 4: Buy if price crosses above MA50 and remains above for three consecutive days, Sell if price crosses below MA50 and remains below for three consecutive days.

Avg profit per trade (% gross)            0.3
Avg days held                            41.2
Profitable trades (%)*                   26.8

Avg drawdown (%)                          3.1
Max drawdown (%)                         43.3
Avg profit/avg drawdown                   0.1
Neither of these filters improve performance enough to make the systems useful. However, it is a robust finding of ours that the delay filters are generally better than the percent penetration filters, once adjusting for differences in risk.

Continue to part 6 - "Moving Average Convergence-Divergence - MACD Trading Systems"

Contents: A View on Technical Indicators and Trading Systems