Here's a simple system that uses price action off of volatility bands in order to generate entries based on false breakouts. A lot of people like to incorporate different types of volatility bands into their trading so I thought it would be interesting to show the results of the same system applied with different types of bands. Two popular types of volatility bands are Bollinger Bands and Keltner Channels, so we'll test those. In NeuroShell, the Bollinger Bands are included in the Time Series category; the Keltner Channels are included in the Advanced Indicator Set 1. We'll also create and test variations of Bollinger Bands and Keltner Channels using indicators included in the BMJ Fractal Analysis Indicator Set. This will hopefully illustrate how our indicators can sometimes be used in order to improve already profitable systems.
In the chart with the BMJ indicators, I created bands similar to Bollinger Bands by adding and subtracting a multiple of the standard deviation to the BMJ FFilter 30 of the close.
I did a similar process in order to create bands that resemble Keltner Channels. In this case I added and subtracted a multiple of the BMJ FFilter ATR 30 to the BMJ FFilter 30 of the close.
For long and short entries, I want to find moments where the price briefly breaks outside the bands but still manages to close within them. These will represent a false breakout of the band so I'll enter in the direction away from the band. This type of entry rule is really easy to accomplish using the Boolean And2 indicator included in NeuroShell with two simple rules as inputs. For longs I want to look for bars where the low crosses below the lower band, but the bar still manages to close above it. Here's a simplified version of how it looks within the Indicator Wizard:
And2
Operand #1 = CrossBelow(Low, Lower Band)
Operand #2 = A>B (Close, Lower Band)
Shorts are the opposite, so I'm looking for bars where the high crosses above the upper band, but the close still manages to close below it. This time the simplified version of the rule looks like this:
And2
Operand #1: CrossAbove(High, Upper Band)
Operand #2: A<B (Close, Upper Band)
I chose to trade five of the more popular mini index futures contracts on a six hour timeframe using data provided by IQFeed. The contracts traded were the e-mini S&P 500 (ES), e-mini S&P Midcap 400 (EMD), e-mini Dow Jones (YM), e-mini Nasdaq 100 (NQ), and mini Russell 2000 (TFS). For parameter optimization, I fixed the standard deviation and ATR multiples at 2 and linked all the remaining parameters together with a range of 20-40. Match Chart Page was selected for the optimization period and three years were added for out-of-sample trading. Maximize Return On Account * Log Equity Curve Correlation was selected for the optimization objective and position size was fixed at one contract. Margin was set to $4,510 (typical margin for the ES), commissions of $2.50 per contract per side were added and the point values for each contract were entered. I also generally like to include slippage but this becomes difficult when trading multiple futures contracts because they often have different tick increments. I overcame this by simply adding an extra two ticks of commissions per contract per side in addition to the $2.50.
The results are very promising, with all four strategies making money out-of-sample on average. Below are the results for each strategy.
Chart 1: Results using basic Keltner Bands and Bollinger Bands
Chart 2: Results using the BMJ Fractal Filter Variations of Keltner Channels and Bollinger Bands
A few things stick out to me upon closer inspection of the results. First, the fact that this simple entry technique is able to generate strong returns regardless of the type of volatility band being used shows me that it has promise. In fact, the lowest out-of-sample average for annual return on account was 84.2% with standard Keltner Channels. Second, the BMJ Fractal Filter variations of Bollinger Bands and Keltner Channels were slightly more consistent in their results. Both types of Fractal Filter bands made money on all five securities both in and out-of-sample. Although the standard Bollinger Bands outperformed their FFilter counterparts on average, they lost a small amount of money out-of-sample on the e-mini Dow Jones. The Keltner Channels lost money on two of the five securities traded and only made a small amount on another, meaning almost all of their profits came from only two securities. The returns are still strong on average, but I'd like to see more consistency across the instruments traded.
The standout of the group appears to be the BMJ Fractal Filtered variation of Keltner channels (Strategy #3 in Chart 2). The system using these was profitable on all five securities both in and out-of-sample. It made the most profits, generated the highest average return on account (223.6% annually out-of-sample), and achieved a 71.9% average percent profitable trades out-of-sample. When using these bands, the lowest annual return of the five securities was 41.5% during the out-of-sample period and all the others achieved triple-digit returns.
It's important to note that these strategies are true reversal strategies. They do not include stops or exits and they do result in reasonably sizeable drawdowns. Some traders might find this a perfectly acceptable cost of achieving the returns illustrated. But others might prefer a lower risk profile at the expense of a slightly lower return. Our next article will illustrate how we might add stops and/or exits to an already successful trading system in order provide the opportunity for a reasonable return while controlling risk.
I hope some of you found this article to be helpful. If you have any questions regarding this strategy or anything else related to our products, please don't hesitate to contact either myself or my father, Dennis Voigt.
Graham Voigt
BMJ Software
gvoigt@bmjsoftware.com
www.bmjsoftware.com
Click here to download a longer version of this article that includes additional pictures and a detailed analysis of each trading strategy.
Click here to download both charts described in this article. Chart 1 requires the Keltner Channels Indicator from the WSG Advanced Indicator Set 1. Chart 2 requires the BMJ Fractal Analysis Indicator Set.