Weekly Algorithm Review: 08/19/2023 to 08/25/2023

Performance Rankings

  1. Sector Neutral: -0.16%

  2. Variable Sector Neutral: -0.42%

  3. Long Term Portfolio: -0.61%

  4. Market Neutral: -0.65%

  5. Variable Market Neutral: -0.89%

  6. Overall Market: -0.9%

  7. Base Algorithm: -1.1%

This was a tough week for us, and unfortunately, it’s not the first one we’ve had lately. Our portfolio’s defensive strategy paid off, with an outperformance of 29 bps this week. The algorithm, however, fell short by 49 bps. This isn’t the first rough week we’ve had lately, and it’s time to evaluate: is our system working?

Since the beginning of July, we’ve switched algorithms twice - from our current system to an experimental one (on July 24th), and back to our current one (on August 15th). Since July 24th, the first date the experimental algorithm was ready, we’ve under-performed the long term portfolio by about 66 bps. If, throughout all of that time, we’d utilized one algorithm, I wouldn’t have a problem calling that algorithm a failure. At very least, it would be a massive red flag for the system. But, we haven’t been using just 1 algorithm. To look at the performance of just our current system, independent of the experimental one, I ran a backtest of both, and the results, while re-assuring, are somewhat unfortunate. For this backtest, I looked at everything since July 24th. This was the first week the experimental algorithm was ready, and thus the first time we were able to choose which one to utilize.

Off the bat, there are two things we can observe from this data:

  1. The original system has outperformed the experimental one by a large margin. It’s only 5 weeks of data here, but these 5 weeks are a strong sign that our original system is still out-performing our experimental one, and that we’re making the right choice sticking with it.

  2. We’ve had downright terrible luck in choosing which system to use. Every single week we’ve had 2 options to choose from, we’ve chosen wrong. During each of these last 5 weeks, the algorithm we’ve used for that week (or the majority of it) has been the one to perform worse. As a result, the performance of our published algorithm reports has been worse than had we chosen either model, and stuck with it.

These results aren’t based on a huge amount of data, but they reinforce our decision to use the original algorithm for the foreseeable future, and above all else: to stick with it unless we have a good reason not to. Future algorithm experiments will not only be based on higher quality backtesting data (and more of it) than our last round of experiments, but will be paper-traded for several weeks before officially replacing anything.

Ironically, this re-assures me that our algorithm is working correctly. Our reports have performed poorly not due to any fault in the original algorithm, but because we spent 3 weeks using an inferior, experimental version of it - and because we chose a bad time two switch back.

Had we held our original algorithm and stuck with it, this week would be a minor blip on the radar, as opposed to another in a series of disappointing weeks. However, a loss is a loss. Let’s look into why this happened:

The algorithm, similar to it’s behavior last quarter, has a tendency to regularly give certain tickers large allocations - often because they’ve performed very well, and the algorithm wants to follow that trends. We previously saw this with NVDA and META, and now see it in a new batch. This week, its top 10 holdings were ERIE, ETR, MPC, UNH, EVRG, CVX, ABBV, DTE, AMGN, and CMS. If we look at the 4 weeks preceding this one, those 10 tickers were up an average of 3.4% each (6.6% looking at only the top 5). And yet this week, their combined performance was far inferior - down an average of 0.7%. This is a sign that the algorithm is trend-following again, and that this week, it was to its detriment.

This invokes a complex question, and one we’ve been asking ever since it started allocating into NVDA - how much trend chasing is too much? If you remember some earlier weekly reports, you might recall that this was one of the main changes we made in the experimental algorithm. In short, we went from telling the algorithm: “Buy this if you think it’s going up”, to: “Buy this if you think it’s going up, more than it usually has as of late”. And as we’ve seen in the 5 weeks since first rolling out the experimental algorithm, it didn’t really work out for us. We saw a similar thing in the last quarterly report. The algorithm over-allocated into a select few tickers, but it paid off on them.

The question of when we intervene and stop it from allocating into a ticker altogether is also something we’ve discussed. Our conclusion is that while we trust the model’s technical analysis, we acknowledge that its inability to perform any fundamental or news-based analysis is a major blind spot. We will step in and manually disable a ticker if, and for the most part only if, we feel that the ticker is no longer a long-term buy for us. Possible examples of this are: ERIE’s price going far above what we think is reasonable, or some news coming out that bodes poorly for MPC.

In general, trend-following has worked well as a key component of the algorithm. In future iterations of the algorithm, I’d like to try a hybrid model - where the algorithm pursues raw returns, rather than returns above recent averages, but perhaps with some penalty for tickers that have mostly green candles in the training data.

Based on this, I am keeping the algorithm hold in place for the time being. If the algorithm has made poor choices due to some trends reverting, it might take it a few days to adapt to the new trends. This is something we’ve observed in the past, and even though our current algorithm adapts relatively quickly, it’s difficult for me to strongly endorse it immediately following a week like this one.

What’s In The Pipeline?

A newly reworked intra-day algorithmic trading bot has moved into live testing. This version uses a new model, and has much stronger backtests than our current intra-day bot. We have a version running on a staff-only server right now, and will for at least a few days - potentially a few weeks. During this time, we’re looking for both performance and usability. The bot has to turn a simulated profit before we do anything with it, and the messages it pushes must be useful to us, and to potential users. If too many messages come at once, and we can’t reduce them without severely impacting performance, for example, that would render the bot largely unusable.

Some example messages. These aren’t final, and may look different in later versions of the bot.

The first major change this bot makes is the introduction of short positions. Our goal is for this bot to consistently turn a (simulated) profit, regardless of market conditions. We feel that, in order to achieve this, we have no choice but to utilize shorts. This bot, unlike our current one, isn’t limited to tickers that our daily algorithm would recommend that day. Therefor, we can enable this bot to keep a low market beta, without compromising the long-only nature of our main algorithm.

The second change is the inclusion of expected exit times in its notifications. We understand that many traders are either subject to pattern day trader rules, or are simply looking for longer term trades. For this reason, we’re enabling this bot to hold (simulated) positions overnight, and to estimate when it intends to exit each trade it takes on.

Misc. Data For The Week

Previous
Previous

HaiKhuu Daily Report 8/28/2023

Next
Next

HaiKhuu Weekly Preview September 1, 2023