Quarterly Algorithm Review: 03/01/2023 to 06/02/2023
Weekly Performance Rankings
Long Term Portfolio: +1.44%
Overall Market: +1.16%
Base Algo: +1.08%
Variable market Neutral: +0.28%
Variable Sector Neutral: +0.22%
Sector Neutral: +0.01%
Market Neutral: -0.54%
Not a great week, but also not a particularly bad one. The algorithm underperformed by 36 bps. That’s certainly not positive, but it’s also not negative enough for me to pay it much mind - especially given that the algo outperformed the portfolio by 139 bps last week. That leaves technical analysis up more than a percent over the last 2 weeks.
You may remember that, around the end of February, we had an incident in which most of our data was lost. Given that it’s now 3 months after the start of March, I’d like to do a quarterly review of our system. I’m happy to announce that we’ve had a great quarter.
Quarterly Algorithm Review
Quarterly Performance Rankings
Base Algo: +7.33%
Variable Market Neutral: +5.63%
Overall Market: +4.92%
Variable Sector Neutral: +3.41%
Market Neutral: +0.97%
Long Term Portfolio: -0.05%
Sector Neutral: -3.17%
*These rankings and charts are calculated as if we’d used our defensive portfolio for the entire quarter. In reality, we have used a more bullish portfolio since May 23rd
All in all, I can be extremely happy with the technical side of things. To those unaware, our algorithm is limited to stocks we choose based on fundamentals based analysis; the algorithm is only allowed to choose its holdings based on the tickers we give it via our long term portfolio.
This is why, in my weekly reports, I primarily focus on the base algorithm’s performance relative to the long term portfolio. If the long term portfolio does crazy well, we expect the algorithm to follow. If we’ve fed it a portfolio that climbs 10% in a week, the algorithm’s positions are unimpressive if they go up only 5%. The opposite also applies. If our portfolio barely breaks even, that 5% performance is now a major achievement.
Over the course of 3 months, not only did we outperform the market, but our main algorithm outperformed the stocks we fed it by 7.38%. This, to me, is strong evidence that our technical analysis is strong.
I am unfortunately unable to say the same about our long term portfolio. We still believe in our original macro thesis - that a market crash is coming. All we can say for certain at this time is that it didn’t come in March, April, or May of this year.
Our defensive thesis led to our portfolio performing poorly. Its biggest allocations were into highly defensive sectors - consumer staples, healthcare, and utilities. But the market did far better than we expected, and all 3 of these sectors found themselves under performing the market.
I want to stress that I don’t consider this a flaw in our fundamental analysis. We have historically been successful in analyzing individual companies, and I want to shout out our head investment analyst Vlad Kozinets for this. Without his talents in modeling fundamental growth, we would lack arguably the most important aspect to any investment strategy.
At the end of the day, we made a bad call on the direction of the market this quarter. For this reason, we are considering using portfolios with closer to 1 beta in future iterations.
Of the sectors we consider, the only one to exceed the overall market was technologies, and our algorithm picked up on this early.
*I apologize for readability on this graph. With this many tickers to plot, there isn’t much I can do
One of my concerns about the algorithm this quarter is its over-reliance on a few stocks. NVDA, META, AAPL, and GOOGL all had a reputation for appearing in a lot of algo reports, and with big allocations. I’m not able to post our return by ticker for the whole portfolio (it’s too big for Square Space to accept, and any smaller will make it unreadable), but here is its thumbnail:
Its distribution is much steeper than that of the base algorithm - with big winners (NVDA, META, and GOOGL all went up more than 23%), and big losers (NUE and AES both dropped more than 21% this quarter). Comparatively, the algorithm has a flatter distribution, with bigger winners and smaller losers.
This ties into why I think the algorithm allocated so heavily into a few stocks. I don’t want to blame the portfolio for this behavior, but it wasn’t unrelated. As seen above, tech was the best performing sector this quarter, and the portfolio didn’t give the algorithm a lot of options from that sector. The 4 stocks I mentioned above as being notoriously over-allocated by the algorithm (AAPL, NVDA, META, and GOOGL) were all in the top 5 best performers of the portfolio.
At this time, I’m considering the algorithm’s performance a strong success. If it hadn’t put so much into those stocks, I don’t think we would be happy with it either. I think instead we’d be asking, “Tech did great. GOOGL, META, and NVDA all went up like crazy. Why didn’t the algorithm allocate more into those?“.
As a final bit of evidence, I want to look at Sharpe ratios. This quarter, looking at intraday movements, the algorithm had a Sharpe ratio of 1.64 to SPY’s 1.33. This is, to be blunt, beating the market. If we consider the long term portfolio’s Sharpe of -0.43 over the same period, we can see the algorithm generated an alpha of 2.07 compared to the universe of stocks we fed into it.
With that, I’m concluding this as a successful quarter. At this time, the algorithm is not being actively developed due to my involvement with some side projects. If it continues to operate at this level, I will be satisfied.