Wednesday, April 6, 2011

The Correct Way to Optimize Commodity Trading Systems


The Correct Way to Optimize Commodity Trading Systems
In previous articles in this space I have made the case that the average person has the best chance to be a profitable trader if he or she adopts a 100-percent mechanical approach. This is the only surefire way to minimize the emotional influences that inevitably destroy nearly every trader. It is also the only way to know whether your method has been profitable historically. Abandon the idea that you will ever find the "perfect" system. The perfect system this month may be lousy next month. It will definitely have many difficult periods in the future. Just as every trader and every methodology has losing periods, every system, no matter how brilliantly created, will encounter periods of market price action it cannot trade successfully. Thus, I am content with a good system. I define a good system as one that has a low enough drawdown and sufficient profitability in hypothetical historical testing to satisfy me as well as being robust enough to trade many markets profitably using the same parameters.
In creating a system, the designer must not fall into the trap of over-curve-fitting the system to back data. The more you bend your system around to improve performance on past data, the less likely it is your system will trade profitably in the future. This is very hard for inexperienced traders to accept. They expect that methods which worked well in the past will probably work well in the future. Past performance will only approximate (and I emphasize approximate) future performance to the extent the system is not over-curve-fitted.
The best way to guard effectively against over-curve-fitting is to make sure your system works in many markets using the same parameters. Successful system traders use the same system parameters for each market no matter how counter-intuitive this seems. If you doubt me, read the two "wizards" books by Jack Schwager. Jack himself manages money using systems that employ the same parameters for each market.
The more markets and the longer the historical time period your system can trade profitably, the more robust it is. I trade one of my systems in fifteen markets using the same parameters for each. It is historically profitable in even more markets over the last ten years.
So long as a system tests well over a large number of markets, there is no requirement that you trade it in all of them to diversify. You could have ten systems that all tested profitably in fifteen markets over the last six years and choose to trade each of them in only one market. That would allow you to trade ten diverse markets using a non-curve-fitted system in each. It would be just as acceptable theoretically as trading one of those systems in the same ten markets.
That principle permits a kind optimization that will allow you trade one system using a different set of optimized parameters for each market. Those who want to optimize each market separately can do so without fear of over-optimizing.
Here is the correct process. Decide which markets you may want to trade. To be safest, you should trade only markets which test profitably using the same set of parameters (the system default parameters perhaps) for at least the last five years. Let's say your system trades twenty markets profitably using the default parameters. That will be your universe for testing.
You may optimize the system on each market individually. Go ahead and knock yourself out trying to maximize the profit and minimize the drawdown in each market. You will probably come up with twenty different parameter sets. Now comes the hard part. Take each one of your twenty optimized parameter sets and use it on the entire universe of twenty markets. See whether the optimized parameters hold up as well as the default parameters in trading all the other markets. If an optimized parameter set trades all twenty markets profitably, you can be confident that you have not over-optimized to the point of curve-fitting. You may use that parameter set to trade the market you have created it for.
If an optimized parameter set has a hard time trading other markets profitably, that is a warning signal you have over-optimized. You should start over with the commodity it was designed for and create another parameter set that does a better job on the rest of the markets.
Whether you require an optimized parameter set to trade all markets profitably that the default parameters do or just a certain percentage of them, is a question of judgment. You may want to use an optimized parameter set that trades profitably most, but not all, the markets in your universe. The more markets you require, however, the greater the chance that your system will work in the future and not just on past data.
While I have described this hyper-optimization process, I am not personally convinced that it is worth the effort. I know of no evidence that suggests such individually optimized parameter sets are likely to be more profitable in the future than an unoptimized single parameter set. If it makes you feel better to show larger hypothetical historical profits, however, it probably won't hurt.
When you are satisfied with the parameter sets for all the markets in your universe, you are ready to create the portfolio you will actually trade. I arrange the markets in order of profitability using the average trade as the benchmark. Then I experiment with different portfolios trying to create one with as much diversification as possible while maintaining a low maximum drawdown in relation to the average annual portfolio profit. The proper starting account size should be equal to or greater than twice the maximum historical portfolio drawdown plus the total portfolio initial margin.
My software allows the portfolio selection process to be expanded even further by testing and including multiple systems in the total trading plan.

No comments:

Post a Comment