Greetings --
The limitations of the development platform sometimes restrict the development. I recommend that the developer have an objective function that ranks alternative systems into the same order he or she would rank them if the reports from the individual runs were spread out on the office floor and judges subjectively.
This does several very positive things.
1. The dissonance between the intent of the trader and the implementation of the trading system is removed. When alternatives are ranked according to your preference, you already know you agree that one ranked as best is one you subjectively prefer.
2. Whenever automatic selection of system alternatives takes place, the alternative that is ranked at the top of the list is the one used. At that time, there is no opportunity to consider alternatives that are lower in the list. The developer / trader must have confidence that the alternative ranked best is in fact the best -- or at least have confidence that the alternative ranked as best is acceptable.
If the development platform restricts the developer to a set of objective functions that have been pre-programmed, the opportunity to create and automatically use a custom objective function is removed.
Note that the most common built-in objective function is the value of the trading account at the end of the simulation period. That distorts performance for several reasons.
1. Using "net profit", or an equivalent, often selects a system that performs well in-sample but poorly out-of-sample.
2. It encourages use of compounding and inclusion of position sizing within the model, which should be avoided.
3. It rewards lucky trade sequences -- that cannot be expected to reoccur in the future.
Developing systems that trade profitably require that the distribution of trades in the future is similar to the distribution of trades in the out-of-sample test period. While the distribution must be similar, we cannot assume that the sequence will be identical. I recommend the following, including using an objective function that rewards these features:
1. Base analysis of test runs on individual trades -- just percentage or points gained or lost per trade -- no compounding, no position sizing.
2. Trade frequently.
3. Trade accurately.
4. Hold a short period.
5. Avoid large losses.
Following development runs, perform an analysis similar to that I describe in my Modeling book or in my YouTube presentation:
https://www.youtube.com/watch?v=Vw7mseQ_Tmc
The presentation on stationarity might be valuable as well:
https://www.youtube.com/watch?v=iBhrZKErJ6A
Best regards,
Howard