November 11, 2016
In A Stock Trading System – Part I, and Part II have analyzed some of the workings of the 3 metrics: n*u*PT, which summed up a portfolio's trading history. Part II ended with a question. It was not: can more be done? But will you do more?
Each stock trading strategy has its own "signature". It depends on the portfolio's stock composition and how trading is performed over time. In the end, at bean counting time, all you did trading will be explained by these 3 numbers: n*u*PT.
I can say without hesitation that if I ever use "your" trading strategy as is, all I will get is n*u*PT. The same thing you would have. And since n*u*PT completely characterizes a trading strategy's output, I will not do any better than you could with your own trading strategy. It sounds more than reasonable since the trading script would execute the exact same trades with exactly the same results.
If I want more, I will have to change the behavior of your trading strategy to help it produce more. But, whatever I do will not change the metrics. The answer will still be n*u*PT.
So, the question becomes: can I make any of those numbers bigger by changing the behavior of the trading strategy by trading slightly differently? The answer is: yes. Just as you can reduce its effectiveness or push it to blow up your trading account. In the end, whichever way you want to go, it will definitely be your choice...
Whatever you do to an existing trading strategy, it starts changing its nature. It is morphing into something else, oftentimes, maybe into something totally different from what the original author might have designed his/her strategy to do.
Take, as an example, a simple moving average crossover system. It has a limited number of crossovers, and it depends on the lookback period used. It might be unknown as to how many crossings there will be, but it is limited to within the time interval under consideration. That it be 10 days, 10 years, or 100 years, for that matter. This has for consequence that PT is limited to an average occurrence per time interval as if having z*(PT/Δt). I can't extract more crossovers than there are based on a lookback interval, I can only extract part of what is available, meaning not getting all profitable line segments.
Nonetheless, the task is to increase: n*u*PT, whatever the strategy's signature is by whatever means is at my disposal. For one thing, anything that is not related to n*u*PT will not be of consequence since it won't move the metrics in any direction.
It is like answering the question: what will stop me from using your trading strategy? Wasn't it supposed to be good enough and profitable? Or was the design so poor that it could not even come out positive over some worthwhile backtest interval?
An Example
Let's start with an easy one. I will use DEVX8, for example, and increase profit demands by 30% across the board, and I do mean for all trades. In Part II, the PT example was set at 10%, so let's raise it 30% to 13%.
The impact: all trades are affected. All other things being equal, it would result in n*u*1.30, a 30% increase in overall performance. On 10,000 trades, how many that reached the 10% PT mark will reach the 13% mark? The answer: most of them, except for the small fraction that will not have reached the mark yet.
Some would abandon here, saying too many trades will not make it and, therefore, it will reduce n, the number of trades. Yes, but that would not do the numbers justice. From the basis, one is expected to reach: 10,000*u*1.10 = 11,000*u.
The above has the same meaning as 11,000*u = 10,000*u + 1,000*u. Having put out 10,000 trade units over the lifespan of the trading strategy, you got them all back plus the equivalent of having received 1,000*u in profits. But u is something you fixed yourself.
Technically, you would know what your trading strategy would do should you be able to have it make those 10,000 trades. You might not know how or at what prices those trades will occur, but looking at the end result, you would get 11,000*u. Why can I write this? Simple, DEVX8 waits for its profit before selling, and from this trading rule, it makes any time a stock is at a new high, all its trades are positive (all trades closed with PT profits, and still opened one with PT>0).
On the 30% request, the vast majority of trade units will meet their new profit targets. Maybe something like: 9,400*u*1.30 + 600*u*1.10 = 12,220*u + 660*u = 12,880*u. Raising the profit target has the same effect as raising the number of trades when it would mostly be due to displacing in time the "when" of taking a profit. When the last 600 trades will reach the 13% mark, it will give 13,000*u. One should note that the impact is measurable and depends entirely on the trading unit used. You could compare with the basis and get: 13,000*u – 11,000*u = 2,000*u. Simply raising your profit target would have given you 2,000 trade units more in profit. And the market would have delivered just by having your program execute its trades the way it was programmed to.
This implies that you can make a strategy modification like raising the profit target and have it reverberate and propagate over its time horizon, knowing what the outcome will be. All that remains to be determined is u, the trade unit that you already fixed yourself before the start of the game. By giving it a value, you also dictated the outcome of your modified trading strategy to deliver on the requested profit-taking increase.
This is some of the "stuff" you see in DEVX8 where efforts were put, among other things, on increasing the average percent profit target from version to version.
One property of the DEVX8 system is that it waits for its profit. Yes, as simple as that. So you can raise its profit target knowing that it will just wait some more to get it, but also that it will eventually get it. As if asking: will the market make new highs in the future? I answer: yes, definitely. Then design trading strategies that have the same point of view.
November 11, 2016, © Guy R. Fleury. All rights reserved.