Here is an article from Mike Bryant of Adaptrade with some insights into Multi Market testing
Multi-Market Techniques for Robust Trading Strategies
by Michael R. Bryant
One of the biggest concerns among systematic traders is over-fit trading strategies. An over-fit strategy looks great in back-testing but fails in forward testing or in real-time trading. There are many factors that affect whether or not a strategy is over-fit, but one big factor is robustness. In this context, robustness refers to how sensitive a strategy is to variations in the data on which it relies. A more robust strategy is less sensitive to variations in the price data. In other words, a robust strategy will perform well for a wider variety of market prices than a less robust strategy.
Arguably, a trading strategy that works well on a variety of different markets is more robust than one that works on just one of those markets. However, building strategies that work on a variety of markets is just one way to achieve robustness using a multi-market approach to strategy design. This article discusses some of the different multi-market techniques that can be used to build more robust trading strategies.
Insensitivity to Prices
The key element of strategy robustness that I want to focus on is insensitivity to prices. Insensitivity means that the strategy can trade profitably for a wide variety of prices. The degree of variation in prices can range from small differences, such as the high or low being different by a few ticks, to large differences, such as completely different markets.
For small variations, it should be clear that a strategy should not be so dependent on a specific price or pattern of prices that even a few ticks variation in the pattern will cause the strategy to fail. Nonetheless, this can happen in practice if a strategy is designed for a specific market using techniques such as price patterns in which the entry or exit conditions depend on certain prices or the relationship between specific prices. Since the future never exactly replicates the past, it's important not to rely on patterns that are so tied to the past that they're not likely to be repeated. In fact, in most cases, such "patterns" are probably just random market noise. At this end of the spectrum of robustness, then, a worthwhile objective would be to make strategies less sensitive to random market noise.
At the other end of the spectrum, we may have entirely different markets. A strategy that effectively trades a large portfolio of futures, stocks and forex represents the apex of price insensitivity. It's highly unlikely that such a strategy would be over-fit. Moreover, a strategy that tests well on a wide variety of markets is more likely to perform well in the future when conditions change because it has already demonstrated the ability to perform well under different conditions.
Techniques for Different Degrees of Robustness
In this section, I'll discuss three different techniques for building robustness into a trading strategy, each one focused on a different degree of robustness. To illustrate the ideas, I'll use examples generated by Adaptrade Builder, a strategy discovery and code generation tool that builds trading strategies in EasyLanguage for TradeStation and MultiCharts.
The first technique, which is also the most commonly encountered, is to build a strategy over multiple markets, where each market is different. Some traders only trade multi-market strategies based on the belief that single-market strategies are too likely to be over-fit. Other traders prefer to focus on a single market.
Regardless of your preference, a trade-off between robustness and performance should be expected when building strategies. It would be asking too much to expect a strategy designed to trade multiple markets to perform as well on any given market as a strategy designed specifically for that market. On the other hand, the risk of over-fitting will generally be higher for a single-market strategy.
A middle ground is possible, however. While there's nothing wrong with trying to develop a strategy that reliably trades a basket of largely unrelated markets -- say, crude oil, gold, wheat, stock indexes, forex, etc. -- another approach is to group related markets and build over only the markets in each group. I'll focus on the latter approach here.
In the example below, I've built a strategy over three stock index futures: E-mini S&P MidCap 400 (EMD), mini Russell 2000 (TF), and E-mini S&P 500 (ES). Using five years of daily bars and assuming $25 per contract for trading costs (slippage, commissions, etc.), I built a strategy by maximizing the net profit while minimizing the drawdown, where the net profit was weighted twice as much as the drawdown. I reserved the last 25% of the data for out-of-sample testing. Position sizing was set to use one contract per trade. The results are shown below in Fig. 1.
Figure 1. Equity curves for a trading strategy built over daily bars of the ES, EMD, and TF futures markets.
The thicker curve at the top represents the combined (portfolio) equity curve, whereas the three curves below represent the respective equity curves for each market. It's apparent from the equity curves for each market that the strategy trades very similarly on each market.
While the three markets are related and probably have a high degree of correlation, the actual prices are different in each price series. We can conclude that the strategy is therefore insensitive to the variation in prices among the markets -- it works pretty much the same on each market even though the tick-by-tick details of the prices are different for each market. This helps achieve the goal of making the strategy insensitive to random market noise since, presumably, random elements will be different from market to market even in related markets.
Moreover, it's reasonable to conclude that the strategy logic is keying in on elements that the three markets have in common. Since all three markets are stock index futures, these elements are presumably related to how stock index futures trade on this time frame.
Intraday Single-Market Strategies
Another technique for making strategies more robust is one that can be applied to a single-market strategy on intraday data. Let's say you want to develop a trading strategy for 5 minute bars of the E-mini S&P 500 futures (ES). If you want to focus on the ES but you're concerned about inadvertently fitting spurious patterns at that bar size, you can try fitting it simultaneously to other, similar bar sizes. This approach is based on the idea that a strategy that trades on, say, 5 minute bars should also hold up on, say, 7 minute bars. Any strategy that doesn't trade similarly on both bar sizes would be presumed to be over-fit to one price series and therefore excluded.
In Fig. 2, the results of building a strategy over 5, 7, and 9 minute bars of the ES (day session) are shown. One year of intraday data was used, and $25 per contract for trading costs was assumed. The other settings were the same as in the previous example except that 33% of the data was reserved for out-of-sample testing.
Figure 2. Equity curves for a trading strategy built over 5, 7, and 9 minute bars of the ES futures market.
Download the Builder project files for the examples shown in Figs. 1 and 2 in this article. As shown by the three lower equity curves in Fig. 2, the strategy traded similarly over all three bar sizes, suggesting that the strategy was not over-fit to one bar size. As in the previous example, we can conclude that the strategy logic is not fit to the random elements (i.e., noise) associated with any one bar size. This should give us more confidence that the strategy is not over-fit to the ES market.
Directly Including Noise
If the goal is make sure the strategy being developed is insensitive to market noise, the most direct approach is to include noise in the build process. There are several ways to do this. In an article from my other newsletter, The Breakout Bulletin, I explained how to create synthetic price data by randomizing certain elements of an existing price series.
In that article, I randomized the order of the price changes, which preserves the price changes themselves but loses any serial dependency in the data. There are at least two alternative approaches that would preserve the serial correlations while creating a randomly modified version of the original series:
Randomly change a given percentage of bars, and, for each bar to be changed, randomly select a price (open, high, low or close) to modify. Finally, change the price by a random amount. For example, suppose we modify bars with a probability of 20%. If a bar is selected to be modified, we might randomly select the high price to be changed. Finally, we would change the high by an amount randomly chosen between, say, 0% and 10% of the average true range over the past 50 bars.
Apply the synthetic price series method described in the article mentioned above but use a "chunking" technique to help preserve the serial correlations. The chunking technique groups the price changes for some pre-selected number of bars and randomizes the order of the chunks. For example, suppose the chunk size is 20 bars. Each series of 20 bars is considered one chunk, and the order of the chunks is then randomized. The randomized chunks of price changes are then reconstituted into a price series, as explained in the article. The chunk size could be chosen based on an analysis of the serial dependency, if any, in the original prices.
Regardless of which method is chosen, the resulting series would be added to the portfolio, just as in the prior examples. Since the goal is to make sure the resulting strategy is insensitive to the random elements introduced into the data, at least several such synthetic price series should be added to the portfolio in addition to the original prices. The strategies would then be built over all series, original and synthetic, as a portfolio.
Achieving insensitivity to price variation is one way to build robustness into a trading strategy. The degree of price variation can range from random fluctuations (i.e., noise) to prices from a completely different market. To develop a strategy that's insensitive to the desired degree of price variation, the strategy can be built and tested over a portfolio of markets consisting of the original or target price series together with other price series that introduce the desired degree of variation.
The three techniques discussed in this article differed in how the price variation was created. The first technique used different but related markets. The second technique used different bar sizes of the same market. The last technique proposed using synthetic price data generated from the original series by randomly modifying elements of the original series.
Regardless of the approach used, the basic idea of building trading strategies to be less sensitive to the data used to design and test them should help you create more robust trading strategies. And a robust trading strategy is less likely to be over-fit to the market and therefore more likely to hold up well in real-time trading.
My 'secret' goal is to push EA Studio until I can net 3000 pips per day....