Weekly Algorithm Review: 11/04/2023 to 11/10/2023
Performance Rankings
Overall Market: +0.27%
Long Term Portfolio: -0.26%
Sector Neutral: -0.6%
Variable Sector Neutral: -0.84%
Base Algorithm: -1.67%
Market Neutral: -1.85%
Variable Market Neutral: -2.34%
There’s no beating around the bush here; this was a terrible week for this algorithm. It under-performed our portfolio by 141 bps. This is the second week of the beta on this version of the algorithm. While we’ve said that we won’t over-react early, and will finish out at least a month of testing before making a decision, this week’s results make that a very hard promise to keep. We won’t be shutting things down quite yet, but the next few weeks will have to be very strong for this system for it to get a full release. We have some promising alternatives, discussed further below, but I’ll say now that odds are pretty high that we go with one of these alternative systems.
On paper, the portfolio under-performed the market, but if we look a little deeper, it actually did quite well. Our portfolio assumes an equal weighting of all tickers present, whereas the S&P 500 is weighted by market cap. As such, we’re biased towards smaller cap stocks and compare our portfolio to an equal-weighted S&P 500 ETF instead of SPY. On this basis, we exceeded our benchmark by a fairly large margin. This was a tough week for small cap stocks, and with that in mind, our portfolio had a great week.
Looking at a breakdown by ticker of our algorithm this week, there’s an obvious standout. We took heavy losses on TSLA, but that’s not the whole story - we still would have under-performed even without it. Had TSLA been the sole reason for under-performance, I’d be more inclined to call this week a case of bad luck, or speculate that it was deceptively bad. But the main issue here is that the algorithm missed almost all of the big winners this week. This seems like a failure of the modeling overall - something we can’t sidestep or safely expect to go away next week.
I’m going to cut our analysis a bit short this week, as I feel it’s more valuable to discuss next steps here.
What’s In The Pipeline?
As mentioned previously, we’re going to stick to our initial plan of keeping this beta going for at least a month before making our final decision - 2 more weeks. As much as I want to wait to make our final choice, it’s quite difficult to keep that mindset after a week like this one. While the beta will remain ongoing, we’re simultaneously going to move forward with an alternative we’ve been working on.
For a while now, we’ve been discussing switching to a new intra-day algorithm as our primary algorithm - potentially discontinuing our daily Buy At Open/Sell At Close reports. Should we do so, tentatively, we would continue publishing our long-term portfolio for users interested in longer term trades and analysis. Currently, we have a few intra-day models that backtest fairly well, and have had confirming backtests in testing datasets. This week, we’ll be putting the most appealing of these into a closed-beta. This will only be viewable by HK staff at first, but if it looks good, we’ll move to a beta release for users as well.
I want to take a moment to acknowledge that this change might be jarring, but there are a few reasons we feel that this a good move for us, and for our users:
Consistency. The main model we’re looking at for a new intra-day system has an average hold time of roughly 2 hours per position, and uses 5 minute candles instead of daily candles. This means that we can afford to be pickier with the trades we take. We’re currently aiming for 100 notifications per day, or 50 positions (1 notification to enter, and 1 to exit each position). And we usually want to take a good number of trades. The more we can get the law of large numbers to work for us, the more consistent returns we can get. Our long term portfolio is 100 tickers right now. Meaning that, with 1 daily candle per ticker per day, our current algorithm would need a 50% trade rate in order to get 50 positions per day.
With the same number of tickers, and 78 5m candles per ticker per day, an intraday system only needs a 0.64% trade rate to get the same 50 positions. When you consider that our current algorithm is long only, and the intraday model we’re testing is not, this is an even bigger divide - with the daily algorithm only hitting those 50 positions if it has a 100% trade rate, and even that assumes that it’ll go long at least half of the time. The intraday bot can afford to be more than 150 times pickier with its trades, and get roughly the same benefit from the law of large numbers.Less Influence From Fundamental Factors. All of our trading algorithms exclusively use numerical patterns and technical signals - no news or fundamental analysis. Holding each position for an entire trading day leaves us exposed to a lot of these factors. There’s a higher risk of news impacting a position coming out over the course of a 6.5 hour trading day than just a 2 hour hold time. This will let our technical analysis shine through, and should further help us to bring in consistent returns.
Greater Ease Of Getting Positions. A problem that both our users and we have had with the daily algorithm reports is that every trade recommended for the day comes in at once. When we were running our pilot account, we consistently struggled to get all of our opening trades in each morning, and all of our closes each afternoon. Eventually, we actually had to make an automated tool to do it for us. An intraday bot would call positions throughout the day, meaning that if you’re a day trader, you’ll have a much easier time examining each position.
More Information Per Trade. Our main algorithm only outputs an allocation per ticker - that’s it. Our experimental intraday model includes a stop loss, target exit price, maximum hold time, and can be configured to include an expected exit time. This gives a good idea of how much potential downside and upside we see in each position, in addition to how long we expect that capital commitment to last.
As much as I hate to admit it, it’s time to consider the possibility that our daily algorithm can’t match the level of performance we saw earlier this year. This spring saw a boom from tech, with slumps in the rest of our portfolio at the time. It also saw the best performance we’ve seen since. If we ran our current algorithm for a year, and gave it the entire S&P 500 to work with, I feel that it would out-perform in the long run. When we’re running a fund, maybe we’ll look back into it as a viable option. But our current user base is mostly day traders. No matter how confident we are in a system, if it gives less information, is harder to use, if we expect it to be red 5/12 months a year, that’s a much harder sell.
There are obviously no guarantees yet. We want to finish out this beta test, and backtests aren’t paper trades. But at this time, it’s what all signs are pointing to.
Misc. Data For The Week