Avoiding false breakouts is a common goal among trend traders. The Kaufman Efficiency Ratio provides a simple method of quantifying a market’s noise, helping traders focus on the smoothest trends. Let’s add the efficiency ratio to a simple trend following strategy and see whether its performance improves.
The complete strategy can be downloaded in the Free Strategies section.
What Is the Kaufman Efficiency Ratio?
The Kaufman Efficiency Ratio (ER) was developed by Perry Kaufman and is introduced in his excellent book ‘Trading Systems and Methods’.
The ER serves to quantify the amount of market noise. Noise is the random and erratic price movement that surrounds any underlying market direction.
Kaufman Efficiency Ratio Calculations
The ER is calculated as the absolute net change in price divided by the absolute sum of the individual price changes over that period. Closing prices are used.
A sample calculation for a 5-period ER is shown below.
The ER oscillates between 0 and 1. Trending markets typically exhibit ERs closer to 1, while choppy markets have ERs closer to 0.
Like most indicators, the ER is presented as a rolling average. Here’s how the ER looks in MT4:
The lookback period should be equal to the longest run of upward/downward price changes. Using a longer lookback period will ‘squeeze’ the ER values together, possibly making it less useful in filtering entry signals.
For most markets and timeframes, a lookback in the 10-20 range should make sense.
How to Use the Kaufman Efficiency Ratio
The objective was to trade trend following strategies on markets that trend well, and countertrend (or mean reversion) strategies on noisy, ranging markets.
Let’s try a different approach here.
Using the ER as an Entry Filter
For this blog post, the ER will be used as an entry filter instead.
If you have a trend following strategy, you will only enter the market when the ER is high. Conversely, for mean reversion strategies, you want to enter when the ER is low.
The entry threshold value for the ER is highly subjective. For example, how high must the ER value be, in order for a trend following entry to be allowed? Unfortunately, there is little consensus on what this threshold should be.
Before deciding on a value, you could analyze your market’s historical ER values to determine what is considered an ‘average’ value. Then select a threshold value depending on how strict you want your entry filter to be. I find that a threshold value of 0.75 tends to cut off at least 70-80% of trades, which is way too much for me.
For starters, let’s just use a threshold value of 0.5.
I will code the threshold value as an optimizable parameter (KThreshold). We will optimize it later in the post.
Now let’s program a simple trend following strategy that will let us apply the ER as an entry filter.
The Basic Trend Following Strategy
If you’ve been reading some of my posts, you’ll know I’m a fan of Bollinger Bands. Because they work.
So we’ll use Bollinger Bands to generate these basic trend following entries:
Buy when price closes above the upper Bollinger Band
Sell when price closes below the lower Bollinger Band
Entries will be on stop orders placed at the previous bar’s high/low. Sacrificing a few pips for some trend confirmation is usually a wise trade-off.
A basic 150-pip stop loss and trailing stop will be added for trade management. Trailing stops tend to work well for mid to long-term trend strategies.
Market and Timeframe
The M30 GBJPY will be tested.
The GBPJPY has garnered quite a reputation among retail traders. With high volatility and huge trading ranges, the GBPJPY is nicknamed the ‘widow maker’ for good reason.
While its volatility results in high profit potential for trend strategies, false breakouts are common. Our ER will have plenty of opportunity to filter out the noise, and hopefully let us focus on the cleanest, highest probability breakouts.
The strategy was programmed in AlgoWizard and tested over the last 10 years.
Results are actually pretty decent. Let’s see whether the ER can better this.
Trend Following With the Kaufman Efficiency Ratio
The ER entry filter condition was added to AlgoWizard as shown below:
I used an initial ER lookback period (KaufmanPeriod) of 15. You can download the strategy and optimize this parameter if you wish.
Results have improved, with profit factor and return/max drawdown ratio increasing to 1.37 and 9.25, respectively. Number of trades has fallen 16%, which is not too bad.
But wait, the win rate actually dropped from 41% to 39%. Usually you expect entry filters to improve your win rate. Let’s examine the backtest metrics to find out what happened.
The detailed metrics for the ER strategy are shown below. The red text in brackets indicate the corresponding metric without the ER filter.
Some observations on the effects of adding the ER:
- The improvement in return/max drawdown was due to a reduction in maximum drawdown. Net profits were similar.
- The largest win and largest loss over the 10 years remained the same.
- The payout ratio (average win/average loss) increased from 1.84 to 2.1. This was because the average win increased, and the average loss decreased.
- The net result is that expectancy increased from $15.27 to $18.14. That’s why net profits stayed similar despite losing 16% of trades.
Based on the findings above, I reason that the ER helped focus on longer term trends that showed strong momentum at the start. Riding these long trends helped boost the overall expectancy, even though the win rate actually dropped.
Optimizing the Efficiency Ratio Threshold
The backtest above used a threshold of 0.5. What happens if we vary this?
I decided to do a quick optimization in StrategyQuant.
The ER threshold was varied from 0.1 to 0.9, in steps of 0.01, giving a total of 81 optimization runs.
It seems that once the threshold goes past 0.6, net profit starts dropping rapidly. I wanted to see how the return/max drawdown and number of trades would vary, so I exported the results to Excel and plotted the following:
It seems that the initial guess of 0.5 for the ER threshold was quite a good one. Looking at the optimization profile above, the best return/drawdown values are all from the 0.5 threshold area.
Unfortunately, the ER only seems to improve return/max drawdown when the threshold is in the 0.45-0.60 range. It does not inspire confidence when only a narrow range of parameters is effective. Ideally, you want a robust strategy that performs well over a wide range of parameters.
In addition, once the threshold increases past 0.4, the number of trades falls rapidly.
You inevitably sacrifice trades, and thus lose some backtest reliability, whenever you add an entry filter. The performance improvements need to justify these drawbacks.
This is an example of how plotting a parameter’s optimization profile can tell you whether it is a robust addition to the strategy. If strategy performance only improves in a narrow parameter range, or if there is no clear trend in performance, it’s probably best not to use it.
Personally, based on the M30 GBPJPY performance above, I’d rather experiment with other entry filters before making a decision. Of course, testing the ER on a different market, or with different entry rules, could yield different results.
Alternatively, you can experiment with other time, trend and volatility filters.
The Kaufman Efficiency Ratio provides a simple method to quantify a market’s noise. In other words, it gauges how smoothly prices are moving from one level to another.
When used as an entry filter in a trend following strategy, it can screen out impulsive moves that may signal the beginning of a long trend. Entries will only be allowed when the ER exceeds a certain threshold.
If you wish to use the efficiency ratio in a countertrend strategy instead, entries should only be allowed when the ER is below a certain threshold.
When determining the ER threshold, it is advisable to plot its optimization profile (strategy performance vs. threshold level). This will help you select a threshold value that is both optimal and robust.
You can download the complete trend following strategy in the Free Strategies section.