Weekly Algorithm Review: 01/06/2024 to 01/12/2024
Performance Rankings
Long Term Portfolio: +1.8%
Overall Market: +1.75%
Variable Sector Neutral: +0.9%
Base Algorithm: +0.59%
Variable Market Neutral: -0.07%
Sector Neutral: -0.16%
Market Neutral: -0.82%
Before we get into things, I have been out with Covid for most of this week. I would normally like to have more new things to present - especially given this week’s performance - but circumstances have restricted us in this regard.
There’s no way to sugarcoat this, this was a bad week for the algorithm. With a 121 bps under-performance, it’s re-enforcing our existing plan to phase out the daily algorithm in favor of our newer Day Trade Bot (more on that later). In the meantime, said bot is still in beta, so we will still be analyzing these results.
First off, I want to shout out our portfolio. Once again, it’s out-performed both the S&P 500, and the equal-weight ETF. This is great to see, and a sign of strong fundamental modeling by our Head Investment Analyst - Vlad.
This is the first time in a while we’ve seen the algorithm make major deviations from the portfolio, in regards to its sector allocations. The most obvious of these is an under-allocation in Technologies, which turned out to be the best-performing sector this week. Looking at most of what it replaced Tech with, we see an over-allocation in Energies, Materials - both performing near the bottom. This backs up something else I’ve observed throughout the week:
There wasn’t any 1 major loser dragging down the algorithm. Instead, it just missed all of the biggest winners. This can largely be explained by most of said big winners being tech stocks, but I want to further examine other possible explanations. To begin with, I examined a common suspect of poor performance: trend-chasing, but this doesn’t explain this week’s performance. Examining every ticker that our algorithm over-allocated into, we find an average return of 18.9%. Examining all under-allocated tickers, we find an average return of 23.3% - so trend chasing is definitively not to blame here.
Another item worth examining is market beta of each ticker in our portfolio - was the algorithm disproportionately influenced by lower-beta tickers? The market had a solid week, looking at intraday returns, so this would help to explain things. While there is some difference here (our portfolio has an average market beta of roughly 1.02 for each ticker in it, versus 0.92 for tickers over-allocated by the algorithm this week), it doesn’t hold up to statistical analysis. Doing some linear regression, we find that market beta and percentage held by the algorithm had an R^2 value of roughly 4%. While there is a difference we can observe in hindsight, it’s not the reason.
Going back to trend-chasing, we can also examine returns of each ticker over the month leading up to this week, and here we get an R^2 value of 8.7%. The algorithm examines the last year of data when training itself so - on paper - trend chasing over this time frame should be minimal. However, it can still manifest in our results, especially if tickers we trade have a history of moving in longer trends.
Now, for something actionable. I’ve performed some recent backtests of various versions of our algorithm, using a lookback up to our recent revision in October. The version we chose has performed near the top of our available versions, but we do have 1 that’s been doing better lately. The version is question uses similar tactics to our current one, with a few extra steps. The long and short of it is that this version modifies its training data before running itself, giving more emphasis to more average trading days. In summary: machine learning, but with less emphasis on days of particularly high or particularly low return. We will be switching to this other version, effective Monday night.
What’s In The Pipeline?
Our Beta Day Trade Bot has now been running for about 7 trading days. In that time, it’s down about 0.3%. This obviously isn’t good performance, but it’s not a red flag yet. Based on backtests, we aren’t expecting it to be profitable every week, and so far we’ve only run it for about a week. We’re sticking with our plan to run it for at least a full month before making any final decisions. Even if this version isn’t up to our standards, experimentation is ongoing. We’ll likely have an updated version by the end of the month, even if this one does well.
Currently, we’re looking into incorporating a version of the Weekday Effect into our bot. A short summary is: does a given stock have a statistically significant tendency to outperform during a certain time of day, and/or during a certain day of the week? We’re still tuning parameters for a full backtest, but initial results have been promising!
Even though our Beta Bot is overall negative, it has called out some solid trades during its initial run. I’d like to take a moment to highlight a few, to show what it’s capable of doing, and what we’re hoping to see more of.
I apologize in advance for the crude graphs below. Reporting on individual trades is one of the projects I’ve had to push back due to Covid. Future weekly reviews will have nicer charts, with more information.
Lastly, as a reminder - none of this is financial advice. We never advise taking a trade - it’s important to do your own due diligence and research.
This one’s a simulated short the bot took on $WBA (entry $24.07), around 1:15 PM CST on Thursday. The bot held it until 11:30 CTS on Friday, when it exited the position at $23.53. Notably, this one never hit a stop loss, target exit price, or any of the limits imposed on the hold-time for the trade. Rather, the bot decided that technical signals had turned unfavorable. Overall, this trade netted a simulated return of 2.24%.
This trade was a long on $NXPI, spanning from open on Monday to around noon on Tuesday. If you took this trade, there were a lot of different ways to approach it. Notably, you could’ve saved yourself some stress if you declined to hold overnight, or used trailing stop losses instead of the fixed ones the bot assumes. Even though it’s far more erratic than the ideal, it was in the green from the moment of entry to its eventual exit - for a total gain of just over 2%.
The last one I want to call out is a long the bot liked on $PARA. The bot entered a simulated long at $14.195, around 10:30 AM last Thursday - less than 24 hours after we first opened the Beta. Its target exit was $14.485, and hit it less then 2 hours later for another 2% profit.
That’s all for this week. Results from our daily algorithm are poor, but we’re taking action to improve it in the next 24 hours. Additionally, even though our beta bot’s had a rough start, it’s not in red flag territory, and has made some moves.
Misc. Data For The Week