Weekly Algorithm Review: 07/08/2023 to 07/14/2023
Performance Rankings
Overall Market: +0.82%
Base Algo: +0.49%
Long Term Portfolio: +0.45%
Variable Market Neutral: +0.18%
Market Neutral: -0.02%
Variable Sector Neutral: -0.22%
Sector Neutral: -0.49%
We’re on another week of fairly unremarkable results from the algorithm. At this point, I’m prepared to say my hypothesis was correct: it doesn’t generalize as well as we expected it to.
To those unaware: we usually don’t change the stocks in our portfolio as often as we have been. We used 1 portfolio through all of 2022, and 1 from January of this year to mid-May. All of the changes we made to our algorithm in this timeframe were chosen to optimize backtests of these 2 portfolios. Further, these portfolios had significant overlap. Of the 50 stocks in our 2022 portfolio, and the 100 in our early, 2023 portfolio, 36 were in both.
So for more than 16 months, all changes we made the algorithm had the goal of optimizing its performance over a relatively constant set of stocks. It’s not a surprise that, now that we’re running it on more varied portfolios, the algorithm hasn’t performed as consistently. I’ve run some backtests on our current portfolio, and the results agree with my hypothesis. The algorithm outperforms our current portfolio in these backtests, but by a smaller margin than it did with our portfolio from the beginning of this year. Based on these, I’d say that, if we ran our algorithm on varied portfolios for the rest of the year - and made no changes to the algorithm itself, we would most likely see outperformance from it. But I think we can do better than that. We are currently running experiments on the algorithm based on backtests of our current portfolio. These will be elaborated upon further in the next section.
Before moving on, I want to emphasize that this hasn’t been a negative thing for us. Because our algorithm was so optimized for our early-2023 portfolio, we saw several months of excellent performance from it. Even if our system can’t pivot portfolios immediately, historic performance suggests to me that, with some optimizations, we can out-perform regardless of our holdings.
What’s In The Pipeline?
We’re currently running experiments on the algorithm, based on its backtest results with our current portfolio. We expect to roll out a new version of the system around the beginning of next week. I can’t say exactly what we’re changing - the algorithm is proprietary. Besides, these tests are all still in progress. That said, I’d like to give a general idea of some changes we’re expecting, given our current test results:
Less trend-following. The algorithm is based on machine-learning, and trains itself on each ticker we have it trade. In the past, its training has rewarded tickers with strong recent performance, leading to a good amount of trend-following. If you noticed how often it recommended NVDA earlier this year, this is why. Among other things, we backtested a version of the algorithm with a reworked reward system while training itself - and results have been good.
More robust signal selection. The way in which the algorithm chooses which signals to train itself on for each ticker has been reworked. The new method uses some more advanced statistics, and also improves performance in backtests.
Flexible standards for trading signals. This change has been enabled by the reworked signal selection system from point #2. The more robust signal selection yields more information about each signal, before selecting which ones to train the algorithm on. This gives us more ability to de-emphasize weaker (but still helpful) signals, without disregarding them entirely.
Reworked Usage Of Inverse Signals. Similar to TradeBot, our algorithm is allowed to use the inverse version of each signal it has access to. For example, TK-crossovers are usually a bullish signal, but if they perform especially poorly in a ticker’s training data, the algorithm can treat them as a bearish one instead. Testing on this is still in progress, but we’re probably going to change how the algorithm handles the relationship between each signal and its inverse. I can’t give much detail here because I simply I don’t have it; testing on this dimension is much newer. If possible, I’ll give an overview of this change next week.
Until we roll out these changes, I would be more cautious of the algorithm’s recommendations - take them with a bigger pinch of salt than usual. We’re currently running a version of it that, in combination with our current portfolio, we expect to outperform, but not by the same large margins it has in the past.
Lastly, I have some unfortunate news about the intraday signal from our last few weekly reviews. Despite our testing, we can’t get the signal to last long enough. On average, a buy/short cue from it remains valid for 5-6 minutes, and we haven’t been able to get a version that lasts longer than that. That’s long enough to trade effectively if you’re watching it like a hawk, but not for any kind of Discord tool. By the time anyone sees notifications from a bot watching this signal, the opportunity to take the trade would be gone. At this time, it looks like it’s just too fast to make anything user-facing out of it. I know this update comes as a disappointment after I’ve hyped it up so much. If we ever have a way to run a bot with highly time-sensitive alerts, this will be the first signal we think of.
Misc. Data For The Week