Algorithm And Portfolio Stats: 02/06/2024 - 02/09/2024
Quick note before getting into things, we’re excluding this previous Monday from our stats this month. We’re doing this for a couple of reasons. First off, we have the algorithm choose which tickers to watch at the start of every month. I underestimated how long it needed to do this following some updates, meaning they weren’t ready in time for Monday. Rather than just shut down the bot for the day, we let it run, albeit with tickers that were out of date. This underestimation was a mistake on my part, and will not be repeated in the future.
Secondly, we were dealing with an issue with our data provider at the time, and as a consequence, the bot was unable to get most of the data it wanted throughout the day. In the interest of full disclosure, the bot performed negatively on Monday, but since it was using an outdated selection, and had less than half of the data it wanted, we don’t feel this is indicative of its capabilities.
As for the week since those issues were resolved, the bot performed very close to neutral. It’s now watching 75 tickers, so we use 1.33% capital allocations for our most conservative assumptions. If you’d taken every trade it recommended, and allocated your capital this way, you’d be down 0.025%. If you’d allocated 100% of your capital into every trade it called out, you’d be down 1.62%.
These numbers are fairly minor, even for this system, so we aren’t judging it too harshly quite yet. Tentatively, our plan is to let this version of the algorithm run for a few more weeks, and in the meantime, prepare a backup system should it under perform to a degree that’s statistically significant. We understand that reacting too quickly to bad performance will hurt us in the long run, but at the same time, we need to keep ourselves prepared should it occur. The last thing we want is to be in a position where we know the algorithm has failed, but have nothing ready to replace it.
I’d also like to discuss overnight positions at this time. Contrary to our announcement last week, we have maintained the algorithm’s ability to hold positions overnight. While we lost money on overnight positions last month, in a longer term back test, overnight positions worked out significantly well for us. It’s possible that the back test won’t be accurate for current market trends, but it’s also possible last month was just unusually bad for overnight positions. This is a decision point we’re still discussing, and we expect to revisit it at the end of this month. I’ll note that overnight holdings yielded a slight loss for us this week (if you’d held nothing overnight, you would have gone from being down 1.62%, to down 0.73%).
Overall, we’re remaining optimistic about this system. It’s only been 2 weeks since we made some large changes, and we want to make sure we have time to judge them fairly. That said, we will have a plan B in place if performance doesn’t improve this month.
That said, let’s examine some of the best and worst trades of the week.
The best trade we saw this week was a long on BXP, on which we made 1.74%. Overall, I just want to complement how clean this trade is. The move up was consistent, it never got closer to our stop loss than it was at the beginning, and our target price was almost exactly the high of day. I genuinely struggle to find anything to criticize here; I would be a happy man if all of our trades looked this good.
Our best short of the week was initiated Friday morning, and is still open. So far, we’re up 1.3% on this (we got in at $192.52, and PAYC is currently at $190.00). I definitely think we could have exited this one at the end of the day. Our target price is $183.52, which the ticker is unlikely to hit, so we’ll probably end up exiting when technicals turn unfavorable. By the end of the day, the stock had already begun to turn around, and technicals were looking pretty close to unfavorable.
This suggest a change to future iterations of the algorithm: be stricter about technical signals if the stock price isn’t doing what we want. It might lead to prematurely exiting profitable trades, but it also might help us to cut losses and take profits more effectively.
The worst trade of the week was this long on MPWR, where we lost 2.4%. I think this one was pretty avoidable, in that a human trader probably would have recognized this as a fake-out. More importantly, there were some clear warning signs that could be added to future iterations. First and most obviously, there was a massive and unusual change in price just before we got it. I think our algorithm would benefit from some “sanity checks” to rule these out (e.g. if the ticker changes more than 10% in price over the last 2 hours, it can safely be ignored). Secondly, our stop loss was placed way too low. On paper, it makes sense - our stop loss was $694, which the stock had passed just 75 minutes prior - but when we actually examine the chart, it’s obvious that it’s not realistic. I feel that we could make our stop loss a bit more sophisticated, by adding a rule about this. Ignore particularly large candles when determining the stock’s average recent return, etc. Lastly, the low stop loss and our fixed Reward/Risk ratio led to an equally unreasonable target exit price: $936.74! What’s unfortunate here is that, had we exited at a more realistic time, we could have made more than 2% on this trade, taking it from our biggest loser to the biggest winner of the week.
Lastly, let’s talk about our long term portfolio’s performance.
We’ve seen another strong week from our portfolio! We’ve been carried by our tech holdings as of late but, in fairness, so has the market as a whole. We’re hoping to see this continue.
That’s all I have for you tonight. Thank you for reading, and happy trading!