Article Library
What's New
About Us
Site Map


Unlimited Systems

Auto-generate unique

trading strategies for



Position Sizing Tool

Position sizing software for

trading. Trade smarter.

Maximize results.



The Breakout Bulletin

The following article was originally published in the June 2006 issue of The Breakout Bulletin.

Dynamic Portfolio Selection

One of the side effects of spending a lot of time studying and trading the markets is that you can end up with a large number of trading systems. Sometimes, I'll develop a system and forget about it for several months, only to find that it has performed better during that time than the systems I've actually traded. Also, I can only trade so many systems at once without losing focus and making mistakes, which means I need to carefully choose the few systems I'll trade.

With this in mind, I started to think about how to select the best market-systems from among a larger set of available market-systems. By "market-system" I mean the combination of a trading system and the market on which it trades. Since the same system may trade more than one market, it's necessary to consider both the system and the market, rather than just the system alone. It might appear that the answer is simple: trade the best performing market-systems. If you have 10 market-systems, and three have been doing well lately, trade those three. Simple.

In some cases, that approach may work. However, that only works when those market-systems have "positive dependency," which means that when they're winning, they tend to keep winning. Many market-systems tend to be mean-reverting, also known as having negative dependency, which means that if they've been doing well recently, they're more likely to do poorly going forward, and vice versa. Also, I want a method that works on short time frames. Over a long period of time, it no doubt pays to drop losing systems in favor of winning ones, but how do you choose the best market-systems for the next five or 10 trades?

The method I came up with was motivated by my work with equity curve crossover trading. Adding up a market-system's trades over times produces an equity curve. If you fit a moving average through the equity curve, you'll find that the equity curve for some market-systems tends to oscillate around the moving average. When the equity is above the moving average, it tends to cross back below it, and when it drops too far below the moving average, it tends to move back towards the moving average. These are the mean-reverting market-systems. With other market-systems, however, the equity curve can stay above or below the moving average for extended periods of time. These are the market-systems that tend to have positive trade dependency.

My approach is to quantify the relationship between a market-system's past recent performance and it's future performance, much like looking at the how the equity curve moves relative to it's moving average. In particular, I calculate the average trade profit/loss over the past NBack trades and then look forward to calculate the average trade over the next NForw trades. For example, if NBack and NForw are equal to 5, I'd calculate the average trade over the past five trades and the average trade over the next five trades. Since, ultimately, we want to know where to best allocate our money, I divide the average trades by the margin requirement for one contract. (My examples are for futures, but the method could be easily adapted to stocks.) The result is the average return relative to margin for one trade.

Let's say, for example, that the average trade return over the past five trades is -10%, and the average trade return for the following five trades is +12%. This implies negative dependency or reversion to the mean: following a losing period, the market-system started winning. But the results for just one five-trade average are not very meaningful, so we repeat the calculations for each trade in the trade history and group the results into statistical "bins." For example, over a history of 200 trades, there may be 15 trades where the average return over the past five trades was between -20% and -10%. The average trade over the next five trades in these 15 instances might average, say, +11%. This tells us that if this market-system produces an average trade of between -20% and -10%, we can expect an average trade following that of about 11%.

As an example, consider the following two figures.

Predicted return for MiniMax (Yen)

Figure 1. Predicted average trade return based on the past average trade returns for the MiniMax system on Yen (JY) futures.

Predicted return for MiniMax (T-bonds)

Figure 2. Predicted average trade return based on the past average trade returns for the MiniMax system on T-bond (US) futures.

These figures summarize this kind of analysis for two different market-systems. In Fig. 1, the results represent the MiniMax system traded on Japanese Yen (JY) futures. The numbers under each bar represent the range of average trade returns. The value of the bar (vertical axis) is the average return over the next five trades. Fig. 2 presents the same results for the MiniMax system on T-bond futures (US). For example, in Fig. 2, the left-most bar is for average trade returns between -77% and -44%. When trade returns fall into this range, the average trade return over the next five trades is about 30%. Notice that the forward-looking trade return (predicted performance) tends to decline as the average trade return increases. The worst predicted performance occurs when the past average trade return is in the range 118% to 151%. This implies reversion to the mean. Following poor performance, the performance tends to be best, and after the best performance, the performance tends to be the worst.

The results used to produce these figures were generated using an EasyLanguage function for TradeStation that I wrote called PredictedRoR. This function can be downloaded from my web site on the free downloads page. The function is called using the following format:

Value1 = PredictedRoR(5, 5, 10, 2000, "MiniMax", "C:\bcm\PredictedRoR-MiniMax.csv");

The first input is the look-back length. The trades will be averaged over this number of trades; e.g., 5. The second input is the look-forward length. This is the number of trades over which the trade return will be averaged following the trades in the look-back period. In Figs. 1 and 2, the look-back and look-forward lengths were both set to 5. Input #3 is the approximate number of bins to group the data into. For example, in Fig. 1 and 2, there are seven bins. If there are fewer than three data points in any given bin, the function will reduce the number of bins and start again. There must be enough trades to provide at least three bins (with a minimum of three data points in each bin); otherwise, the function will fail. The fourth input is the margin requirement for trading one contract. The next input is the name of the system that calls the function, and the last input is the name of the file to write the results to.

The function call, as shown above, should be placed at the end of your TradeStation strategy code outside of all loops and other program statements. The code collects the trade profit/loss results on each bar, and, on the last bar of the chart, performs the calculations and writes out the results to the specified file. The function returns the predicted rate of return based on the current value of the average trade return.

Here's an example of the output generated by the function:

Date/Time Generated: 1060609/2329  
Symbol: @US.P    
Strategy: MiniMax    
Look-back Length: 5    
Look-forward Length: 5    
Margin Requirement: $1400.00  
Current Rate of Return: -13.393  
Predicted Rate of Return: 31.458  
Bin  Lower RoR  Upper RoR  Predicted RoR
1 -77.232 -44.556 30.664
2 -44.556 -11.88 31.458
3 -11.88 20.796 23.978
4 20.796 53.472 19.285
5 53.472 86.148 -0.348
6 86.148 118.824 7.813
7 118.824 151.5 -14.174

These are the results used to produce Fig.2 above. The results include the current rate of return (-13.4% of margin in this case) and the predicted rate of return (+31.5% of margin). The current rate of return is the average trade return over the look-back period (5 trades in this case) for the most recent closed trade. The predicted rate of return is the predicted trade return (as a percentage of the margin requirement) based on which bin the current rate of return falls into. In this case, the current rate of return is -13.4%, which places it in bin #2. The predicted rate of return for bin #2 is 31.5%, so this is the predicted rate of return over the next five trades for this market-system.

The last section of the function output displays the bins. The columns for the "Lower RoR" and "Upper RoR" provide the range for each bin. The last column ("Predicted RoR") is the predicted rate of return for the bin. For example, bin #4 is for returns between 20.8% and 53.5%. When the average trade return falls into this range, the predicted rate of return is 19.3%.

One way to use this function is to call it from each system you're tracking for possible inclusion in your trading portfolio. After each closed trade, you would look at the predicted rate of return, as output by the PredictedRoR function, and rank your market-systems accordingly. If you have 20 market-system in total, and you want to trade the top five, you would trade the five that have the highest predicted RoR.

Using my MiniMax system as an example, here was the ranking at the time I did the analysis above:

Market System        Predicted RoR

MiniMax-US                31.5

MiniMax-ER2               10.6

MiniMax-NK                8.0

MiniMax-JY                7.9

MiniMax-CL                7.2       

According to this ranking, T-bonds should do best over the next five trades, followed by the E-mini Russell 2000 and the Nikkei 225.

So does it work? Of the three trades following the last closed trades used in the analysis, there was a trade in T-bonds with an open profit of $1200 (86% of margin), a trade in the E-mini Russell with an open profit of about $3200 (94% of margin), and a closed trade in the Nikkei with a profit of $3700 (79% of margin). There have been no trades in the Yen and crude oil since I did the analysis.

As with any method based on past trade results, out-of-sample testing should be performed prior to risking real money.

That's all for now. Good luck with your trading.


Mike Bryant

Breakout Futures