Can a Computer Design a Trading System ? Part One : Concepts

During the past few months I have been asking myself some really simple questions about the way in which I develop systems and the possibility that a computer might achieve the same success in system development with some simple guidance and general constraints. The idea that a computer might design a trading system is not new, computers have been known to design neural network strategies quite well and genetic programming has been used a few times for the development of trading systems, particularly to trade stocks. However my question is more interesting since it is not about whether or not a computer can design a trading system but whether or not it can come up with an “elegant” and robust solution. That is, can a computer design a system with a very simple non-curve-fitted logic that we can use successfully ? Can a computer imitate the end result of my system development process ?

Without a doubt this is a very powerful question. If a computer can indeed generate a trading system then a world of possibilities is opened as – unlike me – the computer is only limited to its development capabilities by its computational power and therefore systems that are non-intuitive or systems that might be developed on currency pairs I am not very familiar with, may be easy to generate. But how can we do this ? How can a computer generate an automated trading system that is simple, elegant, adaptive and robust ?

Certainly one of the main problems with system development in computers is the fact that computers are extremely good at curve fitting solutions into trading strategies. If you tell a computer – through a neural network for example – to create the best possible system for the past 10 years of trading the computer will generate an extremely profitable system for the past which is bound to fail in the future. The problem here is the freedom given to the computer, if the computer is able to use as much complexity as it wants it eventually curve-fits any strategy as it has no constraints to avoid this.

This is easily illustrated with a random distribution of dots in a Cartesian plane. If you tell a computer to find a function that describes them – without any constraints – the computer will eventually find an Nth degree polynomial that will perfectly accommodate the data. When computers are told to fit some data – without any regard for the degrees of freedom given – the computer will use its power to perfectly fit the data at the expense of predictive power.

This is the main problem with neural networks and the reason why they are not so widely used in system development. A neural network is essentially the equivalent of the “polynomial equation” in the above example. A computer is given as much freedom as it would like to develop a fit to the data and this leads to beautifully curve-fitted strategies that hold no predictive power for future outcomes. Of course, this doesn’t mean that neural networks cannot be used successfully and – on the contrary – many strategies using them have been developed to predict certain characteristics of the market with  good degrees of success.

However what I want to do here is totally different. I do not want a neural network or genetic programming framework that will eventually arrive at some logic I cannot understand but I want the computer to use a given series of indicators or price action patterns to create a trading system, just like I would. In order to do this several assumptions about what  the computer needs to come up with need to be made :

• The end logic should be very simple
• The degree of development should be constrained
• The system should have some adaptive mechanisms
• The system should be transparent (easy to analyze and understand)

With this idea it becomes simple to realize that – in the end – the problem comes down to a very complex optimization procedure. Build an indicator library and then tell the computer to try millions of different combinations until it finds a simple and robust strategy with the desired profit and draw down levels. The computer won’t be able to curve-fit the strategy since the criteria will be very simple and the optimizations extremely coarse. This is a brute-force approach to system development, the idea that by using computational power we can overcome the time needed in manual analysis.

Can this be done effectively ? The image you see in the beginning of this post comes from a daily system developed by my computers (and yes, at least 100K optimizations). How was this done and what are the end results like ? Not surprisingly the end result was a simple trend following strategy. During the next few weeks I will continue this series to talk about how this was done, what other results I have obtained and what this will mean for the Asirikuy community and our understanding about system development and trading inefficiencies.