Oct. 20, 2021
As a follow-up to my last post, here are some additional observations. To put this in context, the last post presented a 12.16-year trading strategy simulation on a pure rebalancing play using the 100 stocks in QQQ, a weighted by market capitalization ETF. The strategy generated a 19.01% CAGR over the period, turning 100k into 830k or 1 Mil into 10.0 Mil with a 20.6% CAGR. Something better than most long-term market averages. The above-mentioned post also gave where to get a free copy of the program.
Rebalancing QQQ on a weekly basis maintained the portfolio fully invested for the duration. All changes in the stock composition of QQQ were followed as they occurred. This led to mimicking QQQ's performance over the trading interval, or at least, getting close to it, return-wise. It is understandable, you have a 1:1 weighted relationship with each of the 100 stocks in QQQ. Rebalancing was tracking QQQ's weights which, in itself, is an index tracker of a market-cap weighted index (NASDAQ 100). The performed simulation demonstrated quite well the side effects of a pure rebalancing play.
The quantity of shares to buy (q) on any given day (d) for any stock (j) has a floored value:
For all trades, the position value F(t)/J was divided by the then-current price to obtain the number of shares to trade. It was then floored to remove the decimal part.
Weight differences were marginalized and relatable to the flooring of share numbers. For example, no 122.75 shares, only integers allowed, and therefore, 122 shares traded, thereby tracking only slightly below QQQ's weights. The flooring truncation, as small as it might seem, does impact the non-trading zone described in the previous post.
Showing the impact on the trading is easy. Put 10 times more money on a position, you should get 1,227.5 shares. Flooring drops the 0.50 leaving 1,227 shares instead of 1,220 shares. This truncation will happen all the time on every trade, even partial trades. And when you do tens of thousands of such trades, these small differences mount up since flooring is always in the same direction (reducing to the nearest whole number). A demonstration of this is illustrated by the program itself. With the only change being the initial capital, the 100k portfolio turned into 830k over the interval while the 1 million scenario increased to 10.0 million. So, technically, peanuts do count.
Since we are rebalancing the QQQ's 100 constituent stocks weekly, we have put some constraints on trade executability since all trades are executed on schedule as market orders. Even on partial trades, q(d,j) needs to be greater than 1 due to flooring, otherwise no trade. Therefore, it is required that the price change be sufficient to allow the buying or selling of at least one share.
With the sum of weights equal to 1 ( ƩJwj = 1), the composition of these weights might not matter much if all the stocks grow at the same rate. We can use the average rate of growth as applicable to all without loss of generalities. We would get the same end results. The following chart illustrates this:
Each weight was randomly generated, then normalized so that their sum would total 1. We could run the test as many times as we wanted and the general average would not change, nor would the total outcome. Due to the random allocation of weights, we could not know which stocks would perform the most or in which order the stocks would come in.
Whatever the weights were, as long as they added to 1, the average growth rate (g) would be the same for all as in: F(t) = F0 ∙ (1 + g)t. You made a new test run and all the numbers for each stock would change, but, the total F(t) and the average return g would remain the same. On each rebalance, all the weights would return to 1/J as depicted in the following chart which shows the weight distribution:
It is clear from the above chart (which displays the small data as above) that all weights, although randomly selected, remained constant over the 12.16-year trading interval.
We have many strategies that use rebalancing. In this pure rebalancing play, we have a hard time showing that it was even beneficial, as shown in the previous post. Just holding QQQ for the duration would have produced a CAGR of 21.37% with no other effort than just taking the bet and holding on for those 12.16 years.
But, we trade nonetheless, with, we hope, some other added advantages. Some of which could be better trade timing, moving in and out as the trend changes, better stock selection procedures, better forecasting abilities than average. This also invites better protective measures and better trend definitions as well as better methods of play in order to show some alpha: F(t) = F0 ∙ (1 + g + α)t since rebalancing alone did not seem to provide any. One could have bought QQQ and done better.
The IN & OUT strategy, referenced below, displayed some of the above traits. In my simulated version, the top 100 momentum stocks were used and rebalanced daily which considerably increased the number of partial trades. It also increased performance. The flusher part of that strategy also had interesting side effects.
In all, it puts some emphasis on a rather mundane constant in a world of random-like behaviors: the position weight (1/J). It was shown to have an impact.
The number of stocks we trade is an administrative decision and in many cases remains constant over the entire trading interval. It can be used for risk diversification as well as self-controlled trade management. The above equation fixed the quantity to be traded for every trade taken. That it be over a simulation or some future undetermined trade just by setting the portfolio's position size proportional to 1/J.
We control the number of stocks (J) our strategies will trade. We set with how much capital our strategies will start with (F0). We even determine for how long (t) our strategy will be applied. All that is left is to figure out: g + α. Especially alpha which is where you will make a difference since average market performance seems to be available to anyone.
Created: Oct. 20, 2021, © Guy R. Fleury. All rights reserved.