There are some really good posts on this forum about trading systems development, so I am not going to start a big post on that, just a small intro into it. Btw my favourite posts are from early 2000s by Acrary. Now it is 2020 and, perhaps, a lot of people asking themselves if that stuff still works and I’ll start with - yes it does and it is certainly worth studying.
I feel like general trading systems development and assessment process doesn’t change that much. New technics are being added, alternative sources of data, alternative methods of optimizations, edge exploration etc, but in essence it is about a trader going thru numerous cycles with improved efficiency over time as
- Understanding of the markets evolves
- Good assumptions are being developed and validated with live trading
- Trader becomes proficient at running those cycles
- Trader finds what he is comfortable with and what he wouldn’t be able to tolerate in life trading
- Trader develops a good sense what looks right and what isn’t
Here is how typical cycle looks like:
- Looking for an edge which can be formally described and validated
- Packing it into a trading system
- Assessing if it is possible to exploit after factoring in trading costs and real life assumptions
- Running a lot of various types of testing
- Looking at correlations with current systems
- And then if all acceptance passed adding it to a system of systems
On top of if there can be different levels of automation. In my case everything after #6 is automated, meaning data updates, setups generation, entry/exits management and most of the routine reporting. Research, for them most part, is never automated, but some steps can be.
Over time I’ll try to write on edge exploration, types of testing I do, data, typical mistakes, tools and automation, but let’s start with something really basic to set a common terminology for future posts.
Below is an example of a complete mechanical system. “complete” doesn’t mean it is suitable for life trading or performing well. It just has a minimal set of things we need to define so we can consistently trade it day after day and expecting that life results will not deviate too much from the model if we would run it over the same time period. Having a complete system is a pre-requisite for trading it and future automation.
Notice the minimal essential parts that needs to be defined. Such as
- Trading universe
- Setup
- Entry condition
- Exit conditions (PT, SL, timed, etc..)
- Position size and daily/total limits
- Costs such as commissions / slippage
This is certainly not a rocket science and is well described in some good books on mechanical/automated trading, but I assume not everyone read them and having those established will be important for future references
Now here is an example of this system equity curve and some popular stats. Looks nice right? But this data is garbage. Even though it does include reasonable trading costs assumptions but represents only period of 2 years. Big problem with that is it doesn’t give us enough data over different market cycles. I intentionally picked a good looking one to show how Return/DD/Sortino/Sharpe/Win%/Expectancy and many other popular metrics can only be useful within a very specific context but almost never are telling enough to conclude if system is good to trade or not.
Now lets look at some other period of a few years. 2012-2015 for example. Same system. Expectancy now is negative, win% lower, max DD has doubled.
I hope those examples I started with will give people some idea on how deceiving equity curves and widely used stats can be. Also, they don't have predictive power on their own. Meaning - if someone tells you their systems has this win%, max DD, ARR, expectancy etc - if doesn't mean it will be this way in the future.
Nevertheless tests like that are a pieces of a puzzle and ability to produce them + backtesting skills are important for building mechanical systems.