I came across an article at the blog, Jay On The Markets, that talked about applying a bullish outside indicator on a monthly chart. The article I read is entitled "One Sign That the Bull May Still Have Legs". In this article, Jay talks about the incredible run the U.S. broad market has experienced as of late. Now, Jay's words were written in 2014, and since then, we can sure see the market has remained very bullish.
Remarking that "The Trend is Your Friend", Jay goes on to highlight a potential bullish indicator that appears on the monthly chart of the S&P. The indicator is bullish outside month. I thought I would spend some time testing this indicator and see what the results may tell. Of course, the code used to test this indicator appears at the bottom of this article.
A Bullish Outside Month happens when…
- Current month’s low is less than or equal to last month’s low
- Current month’s close is greater than last month’s high
In EasyLanguage this could be written as follows:
Variable BOM;
BOM = ( Low <= Low[1] ) And ( Close > High[1] );
The above code will determine if a Bullish Outside Month (BOM) has occurred and provides a conditional test to take action based upon the result. The result, in this case, is a boolean value indicating if a Bullish Outside Bar occurred.
To test the effectiveness of BOM I’m going to create a simple TradeStation strategy based on the code above. When a BOM occurs, I will purchase shares and hold for X number of bars. Jay performed his test on a monthly chart. I'll duplicate that here. I will also apply the BOM strategy on a weekly and daily chart.
Testing Environment. I decided to test the strategy on the S&P cash index going back to 1960. The following assumptions were made:
- Starting account size of $100,000
- Dates tested are from 1960 through May 2014
- The entire account value will be put at risk for each trade
- The P&L is not accumulated to the starting equity
- There are no deductions for commissions and slippage
- No stops were used
I used TradeStation’s optimize feature to test the holding period of 0 through 11. This holding period represents the number of bars to hold an open trade, and each bar represents a single interval of time-based upon the type of chart I’m backtesting.
For example, the holding period represents months on a monthly chart, while the daily chart represents days. So why do I start at the value of zero? This is a slight nuance on how EasyLanguage works when executing simple market orders. Essentially this means opening and closing the trade on the current bar. So, the trade is opened at the “open” of the current bar and the trade is then closed on that bar. Except the trade is actually closed at the “open” of the next bar.
Thus, a holding period of zero is a one bar hold. Clear as mud, right? In the end, we are testing the market’s behavior after a bullish outside bar appears.
Monthly Results
The bar graph below represents the net profit (y-axis) generated on a monthly chart based upon the holding period (x-axis). As expected, profit tends to climb as you increase the holding period. Long side bias on this market, right! In this test, net profit peeks at the 9-month holding period. The values of 8, 9, and 11 maintain about the same net profit level.
Does this tell us anything? At first glance, it appears that there is an edge in going long after our BOM signal, but we have to remember that the market is biased to the long side.
You could use many indicators that will show a positive edge. An interesting observation on the chart of this strategy is that it does appear to avoid significant bear markets. Notice how no trades were opened during the two bear markets after 2000 and 2007. Only after the market started to recover did we see signals. Is this just a fluke, or does the BOM on a monthly chart really help tell us the market is due for new highs over the coming months?
I picked 11 for the monthly test. This means we're holding for 12 bars. The following chart depicts the drawdown experienced when holding each trade. Notice that we experienced drawdowns as high as 17% during the '70s; however, starting in the late 1980s until the present day, the drawdown has been tiny (under 8%). Keep in mind this is a closed trade drawdown. While holding, we may have experienced a higher drawdown.
Below is the equity curve of this strategy.
What we notice is how few trades we have. Sure, the equity curve does look good, but we have too few trades. So, we really can't learn much from the monthly chart.
Weekly Results
The bar graph below represents the net profit (y-axis) generated on a weekly chart based upon the holding period (x-axis). Here we see a very different picture. When this strategy is applied to a weekly chart, we see inferior performance for the first 10 weeks. I'm guessing that when our BOM setup occurs on the weekly chart, it's an early sign of price exhaustion. During this time, the market will consolidate and/or have a slight pullback over the coming weeks before we see any meaningful advancement.
Picking a value of 19 (20-week holding period) we have 61 trades over the duration of the backtest with an average profit of $2,561. Below is the equity graph and weekly drawdown graph. We can see the drawdown reaches around 24% which might be a bit much for some traders.
Daily Results
The bar graph below represents the net profit (y-axis) generated on a daily chart based upon the holding period (x-axis). Notice that each bar represents an increment of five days. Also note, all of them are profitable.
Picking a value of 45 (about a 6 month hold) we have 130 trades over the duration of the backtest with an average profit of $2,561. Below is the equity graph and drawdown graph.
The equity curve does not look too bad for such simple rules. But keep the long side bias in mind and we don't have stops.
Conclusion
I'm not overly impressed with the results as a trading system. You might find it helpful as a starting point, but clearly, much more work is needed. Be sure to test on other markets and timeframes.
Thanks Brandon. Should be fixed now.
Evens works well for $INDU back 100 years…