I was recently asked by a reader how one could go about improving a system by using additional filters to apply to the system signals. Volatility filtering is something that was covered recently; but another “classic” filter is based on an extension of the concept of trading with the trend: by considering the higher timeframe trend and only taking signals for the system timeframe in the same direction.
For example, trade a 20-50 moving average cross-over system – but only take long (short) signals if the instrument is in up (down) trend based on the cross-over observed between the longer 50-day and 200-day moving averages (ie bullish when the 50-day MA is above the 200-day MA and bearish when it is below).
Trade Direction Filter
This “trade direction filter” is something I quickly mentioned in a post covering the e-ratio calculation to measure the potential edge provided by an entry signal. In that specific example, using such a filter did provide a substantial improvement to a breakout entry signal.
Today, I’ll revisit this concept by testing it on a system from the State of Trend Following report: the 20-50 MA cross-over system described above.
Below is the comparison between running the system with and without a filter (based on 50/200 MAs cross-over):
|System Stats||With Filter||W/out Filter|
Based on these performance statistics, the filter seems to be a great improvement to the system… However, when looking at the equity curves of both systems in a log chart, the picture is not so clear:
It appears that each version has its period of over/under-performance. I actually ran a quick bootstrap test to evaluate the significance of the return improvement for the filtered system and the p-value came out at 0.48 – so not really of any significance for the return side of things. It would be interesting to measure the p-value for other performance improvements such as drawdown or Sharpe ratio, especially since the improvements are relatively more important there – I’ll need to add that to my bootstrap tool.
All thing being equal, the filtering triggers less trades and spends less time in the market, which is a good thing in itself – especially knowing that for both systems, slippage and commissions were ignored. Factoring these in would mechanically increase the out-performance of the filtered system.
Only a Delaying Filter
The interesting characteristic of this sort of filter is that it will not keep the system out of a major trend that might develop: if a trend is strong enough, it will ultimately “push” the higher timeframe trend in the same direction as the initial system entry signal.
This only delays the entry, as opposed to forcing the system to possibly skip a great trend – which can sometimes greatly influence the overall performance of the whole system.
Consider the illustration below with the Oil ETF in 2008:
The cross-over between the 20-day MA (green) and the 50-day MA (blue) occurring in July would have been filtered out because of the bullish trend shown by the 50-day MA being above the 200-day MA (red). However, the strength of the trend ultimately “pushed” the 50-day MA below the 200-day MA, at which point an entry could have been taken.
This is similar to a concept in the Turtle system where the longer system S2 ensured entry in the case where a trend developed in the longer timeframe and was skipped in the first system S1 (exact rules are described in Covel’s book).
A Generic Concept
Astute readers will have recognised that applying this specific filter to the moving average system is nothing more than reconstructing the triple moving average system (which has this filtering feature built-in). However, the concept is generic and can theoretically be applied with any system and “big trend” indicator (eg. price above long MA for a long trend indicator mixed with a Donchian breakout system, etc.). Just some additional elements to play with when testing/building a trading system…