One possible reason that most trading systems fail is that they never had a chance in the first place. You see most retail trading development environments like Tradestation and Ninjatrader predominantly support defining a trading system using only one technique and that technique is basically hand crafting decision trees using structured programming language.
On the other hand, many of the recent advances in machine learning and AI that have enabled computers to do tasks that were previously thought impossible, such as recognizing faces, categorizing objects, and driving cars make use of deep learning.
Please note, I am not stating that it is impossible to build profitable trading systems using the traditional techniques. Most of my systems have been built just that way including the system I’m offering for sale. The real point is that the majority of system developers are led down a narrow path, a restricted set of possibilities, for achieving success. There are biases at work against you. That is unless you become keenly aware of these “availability biases” then you are more likely to be negatively influenced by them.
Traditional trading environments are severely limited when compared to machine learning environments today which support a dozens of machine learning methods such as neural networks, deep learning models, numerous decision tree generation algorithms, support vector, linear regression, etc.
To recap system developers have availability bias toward one technique for developing their trading systems but it gets worse, way worse. These environments have strong availability bias of primarily supporting backtesting of price data. Programming against other types of data such as order flow, order book, sentiment, reports, and news events/reports will require a lot more legwork and grit on the developer.
Finally, there is a distinct lack of powerful robustness and statistical testing. Everyone knows it is easy to create a backtest that looks good.
What about some of the retail environments that support generative techniques? These systems claim to auto-generate working systems for the developer. The reality is that without expert understanding the probability of success with most generative techniques is going to be even worse. A very experienced developer can use such techniques to come up with new ideas but in general they won’t work well unless is already keen to the numerous sorts of problems they are likely to encounter. Even though those environments do offer more robustness testing: the problem is that they primarily tend to try various combinations of indicators involving different lookback lengths. One thing we know is that markets are relatively efficient which means that the longer you go back in history, the less likely that the data will be relevant. As such, it doesn’t make a lot of sense to search for systems that might work by combing random indicators with long lookback periods. In other words, these sorts of environments might open new possibilities to experienced developers but would be especially ill-advised for new developers, who they are often marketed too, and who are least likely to be able to identify and correct the problem systems.
There is one last point on why most systems fail. Most environments can only reliably backtest market order systems, and most systematic tracking services only support market orders (to ensure all subscribers get similar fills). However, in my active discretionary day trading, I always attempt to capture at least one side of the spread. There is rarely a need to market both sides of the trade unless it has failed and one is trying to exit at market. I typically enter at market and exit with a limit order. Think about it, if you exit with a market order then you are stating that you can (1) pick the direction and (2) pick the peak of the move in real-time but not with a limit order. Sometimes exiting with a market order is required but for the majority of time, a limit order exit would be sufficient. Question then, why do most developers/tracking services still insist on exiting with market orders? Again, the only reason I can think is that when you have subscribers then you need to keep everything synchronized. I understand that but it makes it much more difficult to build a day trading system when you willy-nilly give up the spread or have to assume worst-case scenarios.
Now, let me add that if you want to create more of a “market making” system then I suspect you will need to layer in many orders and keep your risk/exposure low. The futures are not suitable products for that style of trading for retailers due to the large contract sizes.
Let’s recap then why most trading systems are setup to fail:
- Availability bias of technique limits most developers to handcrafting decision trees. Sure, one can add machine learning libraries or code their own libraries but that is hard work and not “built-in”.
- Availability bias of data will prevent most developers from incorporating order book, order flow, sentiment, and other sorts of data.
- Lack of built-in robustness testing makes it difficult to validate systems.
- Lack of realistic limit order testing makes it difficult to validate limit order exits.
- Large contract sizes make it difficult to deploy strategies that have multiple entries/exits (most-likely to benefit limit order strategies).
- Generative systems typically involve randomly searching long look backs or using older data. Old data is simply not likely to be useful, as most markets are efficient. These environments open up interesting creative possibilities for experienced developers but are probably require even more experience and skill to properly make use of.
- In addition to those problems, for small futures traders low granularity, i.e. large contract sizes and overnight margin make it more difficult for small traders to (1) hold positions over time and (2) to trade a portfolio of systems. Both of these things decrease probability of success.
- While not exclusive to backtesting environment, small traders also tend to exclusively day trade. The problem with this approach is that the markets are typically only offering great day trading opportunities a relatively small portion of the time.
And, we’ll end on a positive note of how one can change up the equation:
- Breaks free of availability bias of techniques by linking traditional environments to machine learning platforms/libraries.
- Does not limit themselves to price data exclusivity.
- Creates own robustness testing processes to ensure systems are robust.
- Models limit order fill probabilities and uses market/limit models where appropriate.
- If market making style trading is desired, will need to look at alternative markets that provide rebates for liquidity and/or offer very small position sizing.
- If using generative techniques, must be able to use market cognition to apply appropriate structure and constraints to such techniques.
- Builds from a few good systems and leverages them for greater return. Probably primarily focuses on day trading systems but keeps larger context in mind and seeks high return to risk opportunities.
- Again, probably focuses on day trades but looks for exceptional swing trading opportunities, as well. Diversifies beyond a single market to capture more day trading opportunity.