Iteration 1 Recap: Four for Four

Today is rebalance day, which means the first 42-trading-day iteration is officially in the books. All four portfolios beat the S&P 500. That sentence reads better than the iteration deserves, but it is true, so I am writing it down.

That said, I do not want to mistake a clean scoreboard for proof of much.

Iteration 1 Final Summary

Return vs S&P 500 Result
S&P 500 +3.69%
Ensemble +14.64% +10.95 pp W
Growth Evaluator +16.68% +12.99 pp W
ML Model #1 +16.76% +13.07 pp W
ML Model #2 +20.33% +16.64 pp W

The S&P 500 itself was up roughly 3.7 percent across the iteration, which is not a small number for 42 trading days. Some of what looks like alpha is the portfolios riding the same tide that lifted the index. If the market had been flat, or down, the picture might look very different. The selection edge is real, but how much of it is signal and how much of it is the wave, that is a question a few more iterations across a few more market regimes will answer better than this one can.

It is also worth saying that the macro backdrop was not exactly cooperative. The war in Iran kept geopolitical risk on the front page for most of the iteration, and the VIX spent the eight weeks doing its usual inverse dance with the index, spiking on every escalation and easing on every diplomatic glimmer. The S&P 500 still ground out +3.7 percent, but it was rarely a smooth grind, and the portfolios had to navigate the same headlines and the same volatility.

What I do feel good about is the consistency. Aside from the first week of finding their footing, and a handful of days during the late-March drawdown, every portfolio spent the rest of the iteration ahead of the S&P 500 cumulatively. The picks did exactly what the picks were supposed to do, which is to outpace the benchmark, and they did it on most of the trading days they got a chance to.

Best and Worst Picks per Portfolio

Each portfolio holds 15 stocks, equal-weighted at fill. Here is how the spread shook out across the iteration:

Portfolio Top picks Bottom picks
Ensemble SNDK +62.0%, AVGO +29.2%, ANET +27.5% SOLV -7.9%, MNST -8.8%
Growth Evaluator AMD +66.8%, SNDK +62.0%, ANET +27.5% ABBV -15.4%, UHS -20.0%
ML Model #1 SNDK +62.0%, STX +47.1%, AVGO +29.2% SOLV -7.9%, MNST -8.8%
ML Model #2 SNDK +62.0%, STX +47.1%, WDC +44.8% TPL -19.9%

SNDK deserves its own moment of attention. Every portfolio held it on day one, and it spent the iteration on a wild ride, lifted by the spin-off from Western Digital and the AI-driven NAND supply shortage, capped off by strong Q4 numbers and S&P 500 inclusion. By rebalance day it is up 62 percent on its own. That is the kind of move you do not see often in a 15-stock portfolio, and definitely not from a name held by all four of them. The interesting question now is whether the models will pick it again on Thursday. After a 62 percent run, the inputs that put SNDK on top of the rankings two months ago are not what they are today, and we will see if any of the portfolios still have it after the rebalance.

ML Model #2 also deserves a small nod for picking only one losing stock out of fifteen, which is the kind of hit rate I would not bet on repeating.

What Changes for Iteration 2

The rebalance happens this morning at the open, and a few things are changing. ML Model #1 is being retired. It picked nearly the same stocks as the Ensemble for this iteration, so running it as a separate portfolio was generating mostly redundant data. Its proceeds fund a new portfolio, also an ensemble, but with a different blend of underlying models than the original Ensemble portfolio. That new ensemble has performed best across the longer backtests. The other three portfolios stay the same and roll their capital forward.

Iteration 2 also brings a transparency change. Each rebalance's picks are now committed to a public Git repository and cryptographically timestamped via OpenTimestamps, anchored to the Bitcoin blockchain. Anyone who shows up months from now can confirm that the picks were public on the date claimed and have not been edited since. The links live on every portfolio page going forward.

Iteration 2 starts today, runs through late June, and I will be back next weekend with the first new performance numbers. Thanks for reading, and thanks for sticking with the experiment for the first 42 trading days.