December 7th, 2016

Stock Trading: You Think, and The Machine Works

Usually, when changing an automated stock trading strategy, it implies making changes to the trade selection process and trading rules resulting in changes to a portfolio's trading history. But, each time doing this brings changes to trading procedures, and these changes tend more and more to over-fitting the data.

The very process intended to improve a trading strategy might be moving it further and further away from reality. Often, even making it less valuable. Some go as far as actually destroying any chance a strategy might have had of ending with a profit.

Any stock trading system can be expressed as: A(t) = A(0) + Σ(H.*ΔP), or, A(t) = A(0) + n*u*PT. This implies that the payoff matrix: Σ(H.*ΔP) = n*u*PT. These are 3 very common portfolio metrics from which other metrics can be derived. H is the inventory holding matrix keeping the complete historical record of all the trading activity. For a description of n, u, PT, and SMRS, see a previous post.

The original SMRS strategy produced: A(t) = $1M + $ 6.9M = $7.9M. That is $ 6.9M in profits over its 11.9 years of trading, a 17.45% CAGR. This is a lot better than having put one's fund in SPY, which would have produced: A(t) = $1M + $ 1.9M = $2.9M, a 5.57% CAGR. It was therefore preferable to implement the former rather than the latter strategy. There was alpha built-in, exceeding the average portfolio manager's performance over the same trading interval.

Peter's modifications to the SMRS program raised the bar to: A(t) = $1M + $ 8.48M = $9.48M, a 19.6% CAGR. It does not seem like a big deal, but it is. Few portfolio managers exceed the 20% CAGR mark over the long term.

I took the same trading strategy as Peter. But, instead of modify the trading rules, I aimed my interventions uniquely on the 3 portfolio metrics (n, u, and PT). As if controlling from the outside what I wanted the trading strategy to do. For instance, I raised the trading unit (u). This increased the bet size, and therefore scaled up the output: (1+a%)*u*n*PT.

You are the one fixing the size of the trade unit u, not the trading strategy. You can make trades of size (1+a%)*u as long as there is cash in the account. Evidently, if a% > 0, you have scaled up overall profits generated by that strategy by the same factor without changing a single line of code, or any of the trading procedures.

So, the strategy stayed the same, and you still managed to extract more profits. You could do even more by concentrating on procedures, pivotal decisions points that can have an impact on the outcome, namely: n, u, and PT.

The operations I did to improve on Peter's design were minimal. I increased the trading unit by 66% which produced: n*1.66*u*PT, compared to the base design, thereby increasing profits by 66%. There was no change in the trading procedures to do this. It was the same strategy except for that one number.

This also said: anybody could take their own trading strategy, increase their respective trade units and generate more profits. This has no bearing on how the market behaved, it is only a directive giving the trading strategy: make future trades using 1.66 times your previously fixed trade unit.

Other moves that were made to increase performance were: increasing the profit margin PT, and increasing n, the number of trades. It resulted in: 4.3*n*1.66*u*1.25*PT. Again these measures did not change the trading strategy, only how it behaved. If your trading strategy has a positive average profit per trade (PT>0), increasing the number of trades sounds like a reasonable thing to do.

Since this strategy, by design, could easily support leverage, it was set at 1.85, giving some leeway in case, at times, it might exceed it.

This resulted in the payoff: 4.3*n*1.66*u*1.25*PT*1.85 ≈ 16.5*n*u*PT. An output 16.5 times larger than the $6,972,000 returned by the original strategy. Or viewed from the initial capital's perspective, it is: $115,480,000 some 115.48 times the original $1M stake.

In numbers, $1M invested in the SPY would have generated $1,918,000, a CAGR of 5.57%. Investing the same $1M in the original SMRS strategy would have ended with $6,972,000 in profits, a 17.45% CAGR. While, using the same initial $1M stake, making minor program modifications, I pushed Peter's trading strategy to: A(T) = A(0) + 16.5*n*u*PT = $116,480,000. A CAGR of 41.8% over its 13.6 years of trading.

It is not all that can be done since I did not touch the strategy's structural deficiencies, or shown some of the other improvements that can be made.

However, the point I would like to make is this: how easy it was to improve a trading strategy when the effort was concentrated on the only portfolio metrics that mattered: n*u*PT. In what I presented, the strategy itself was not changed, only some of the constants, and it was sufficient to raise the original portfolio's profits by a factor of 16.5 times. Compared to SPY, this is a factor of 60.2 times the index surrogate. The original program would have given a factor of 3.6 times the SPY.

This is a wide range of outcomes for what has been shown to be small changes in the constants governing these 3 portfolio metrics.

Underneath it all, you will find the same trading strategy, the same trading logic, the same trading rules at play. Consequently, the increase in performance can only be attributed to the changes brought to those constants having a direct impact on: n*u*PT.

Furthermore, it did say: A(t) = A(0) + (1+ g(t))* Σ(H.*ΔP), that one can control his/her trading strategy from the outside and have a major impact on the total performance level. Raising the bar to a much higher level with very little effort. Increasing it by a factor of 10 or more.

Having used leverage, there is a price to pay. It can easily be estimated. I won't bother with commissions and slippage since they were already included. Say the interest charged is 10%, then: A(t) = A(0)*(1+ 0.418 – 0.85*(½)*0.10)t = A(0)*(1+ 0.418 – 0.0425)t. In fact, whenever the added performance exceeds the leveraging costs, it can become a worthwhile proposition, as just shown.

You are left with only one question: How can I raise n*u*PT? The answer is: any method you want that raises either or all 3 of these portfolio metrics will do. It will improve your portfolio's performance.

One should consider that all that was requested to achieve the above results was a slight increase in processing time on a machine.

Created... Demember 7th, 2016 © Guy R. Fleury. All rights reserved   

Alpha Project