A New Rebalancing Approach
My last 6-month investment cycle ended on November 3. I did not write about the last trade of the cycle because I was very busy (finally submitted my PhD thesis!). Sorry about that. The last move was to sell my beloved Polish lingerie position (Esotiq & Henderson) for 169%. Nice way to end a cycle. I replaced it with the French media/industrial conglomerate “Compagnie de l`Odet”. I won’t go into detail this time but you can check out the stock here:
https://www.gurufocus.com/stock/FCODF/summary
With the new cycle I implemented a major change to my rebalancing strategy. Let me explain what my problem was:
I do multi-factor long-only investing in a equal-weighted 20-stock portfolio. In order to diversify the “timing” of my screenings while keeping turnover manageable, until now I used a 6-month cycle for rebalancing.
The holding period of each stock was exactly 6 months, which is a nice time frame for the intersection of signals integrated Value-Quality-Momentum trading. Everyone who read “What works on Wallstreet” knows that “Trending Value” (integrated Value + Momentum) works well even with a 12-month holding period despite the fast-moving Momentum component.
For the timing luck aspect I divided the 6 month cycle (~183 days) into 20 periods (20 positions) resulting into every-nine-days schedule for screening and rebalancing of one position at a time.
Rebalancing for me up to now worked following a “first-in-first-out” (FIFO) principle. The oldest position was checked after exactly 6 months. It worked nicely. But I noticed two things:
Factor regression analysis always showed me that I have very low Momentum load. Of course I have to take this result with a grain of salt because the time frame for such an analysis is still too short for statistically significant conclusions in my case. However, I also noticed that the Momentum rank of old positions collapsed more often and more sharply than those of the Value or Quality components.
Almost no stock made it back into the Top 100 names in a fresh screening after 6-month holding.
Conclusion: The decay especially of the Momentum component is still way faster than my rebalancing.
So of course the obvious choice here would be to just rebalance even faster (quarterly or even monthly). However, rebalancing often for the sake of rebalancing often is still a problem for me due to trading costs. Trading costs and spreads collapsed especially in the US but I trade globally and also buy microcaps. A 0.5% bid-ask spread and a 0.1-0.5% trading fee (based on my present position sizing and depending on name/exchange) are no rarity for me. I would assume my average trading cost per rebalancing (RB) is ~ 0.2-0.5%. For 0.5%/RB that means:
0.5% p.a. for 12-month holding
1.0% p.a. for 6-month holding
2.0% p.a. for 3-month holding
6.0% p.a. for 1-month holding
Of course in reality the costs can be lower and will also decrease in relative terms as my trading volume increases. I also try to avoid stocks which are trading with a spread of >0.5%. Nonetheless, I have to keep an eye on the cost/benefit ratio of rebalancing.
So following the ideas of accounts like @IlariLehti on Twitter, I looked into alternative rebalancing (adjusting back to target allocation weights) and reconstitution (substituting stocks to refresh the factor load of the portfolio) schemes. Another nice resource to understand rebalancing/reconstitution schedules and their effect on returns and factors can be found here:
https://papers.ssrn.com/sol3/papers.cfm?abstract_id=2915442
I now decided to use a hybrid approach in a forward “beta” test. I maintain my previous screening schedule (once every ~ 9 days). Instead of rebalancing/reconstituting following the FIFO principle, I calcualte for each stock in my current portfolio the deviation from a perfect Multifactor Score of 1:
Rank_dev = (1-MultiFactorRank_i)^2
and the deviation from equal-weight allocation meaning a 5% position size:
Weight_dev = (0.05-Weight_i)^2
and add the two together:
Total_dev = Rank_dev + Weight_dev
Then I sort the stock according to Total_dev and replace the two positions with the highest deviation from the “perfect” target position.
Additionally, I will play around with tolerance bands, e.g. if all stock have a total deviation of <0.001, no rebalancing is triggered and if a stock has a total deviation of >0.01 it gets instantly rebalanced even if that means that more than two stocks are replaced in one session.
The “two stock rule” alone would result in a fix 3-month average holding period. With a tolerance band the turnover can be tighter or more loose depending on the market regime. I still have to find out what is the best compromise.
Either way, the new approach allows me to rebalance based on actual factor signal decay rather than a naive time schedule. A perfect position can be held longer than average and a “foul apple” (e.g. a stock with a bad earnings call resulting in sudden change in multiples, quality or momentum) can be kicked out earlier.
I also need to mention that I implemented the deviation approach everywhere in my ranking system now. Instead of simple addition of linear ranks I now use
(1-Rank_i)^2
for each calculation of composites and subranks before reranking. In this way a bad rank in one signal gets higher weight in the ranking. In this way a hypothetical stock with 0.5/0.5 score in a two-factor ranking ranks higher than a 1.0/0.0 stock (which would be equal rank in a naive addition approach). I like this approach since like this no bad signal is “discriminated” and potential red flags get a louder voice.
Speaking of red flags: I also refrained from using a fourth, separate composite called “Red Flag Rank”. I noticed that my way of calculating it gave small “adjustment” signals which effectively decide about +/-1% of return a way too high weighting. I instead implemented the components like Debt/EBITDA, YoY-OCFgrowth and ST reversal in my Quality and Momentum ranks now.
This week, to start of the new cycle and to adjust for the slight changes in the ranking procedure, I performed an extraordinary rebalancing of my portfolio. Last week I already replaced “Goodbaby International” (China, baby products) with “China BlueChemical Ltd” (China, fertilizers) and “Cervus Equipment Corp” (Canada, farming machinery) with “Repsol SA” (Spain, Oil & Gas).
(Btw: Cervus is also a good example for the benefit of the new approach, since an acquisition was announced and the stock is trading flat since then. Such position can now be replaced instantly)
The stats of the portfolio earlier this week looked like this:
National Bank of Greece didn’t even make it through my prescreens. That is why the ranks are ‘NA’ and Rank_dev=1. The marked positions with a Total_dev of > 0.01 were replaced and rebalanced:
With the next rebalancing, Dillard’s (my best and largest position) and Interfor could get replaced since their Total_dev values are slightly above the intended 0.001 threshold and they are the highest-deviation stocks right now.
Finally I want to add that while this looks like a lot of change, the transition was rather smooth. This is no style shift whatsoever. I am still the same global Value-Momentum-Quality investor. If anything I can now capture the factors more effectively than ever before. Will this lead to even “better” performance? I don’t know. Is this the best way to do it? I don’t know.
The only thing I know is that if I want to invest in factors, the new approach based on deviation from the target factor load is more logical than an approach based on the cyclical movement of a giant dirt ball around an even bigger ball of shiny hot gas.
I wish you a nice weekend!
Kind regards,
Non-Prophet