Week 8 Recap: SPY Stalls, Portfolios Don't

The S&P 500 spent most of this week impersonating a mood ring. Monday and Tuesday were red, Wednesday was a big green bounce, Thursday gave some of it back, and Friday closed strong. When you add it all up, the index ended the week at +0.54%, which is barely a heartbeat.

The portfolios, on the other hand, kept right on rolling.

Week 8 Performance

Dates S&P 500 Ensemble Growth Eval ML Model #1 ML Model #2
Week 8 (4/20 – 4/24) +0.54% +3.64% +4.51% +4.10% +6.40%

Daily Breakdown

Date S&P 500 Ensemble Growth Eval ML Model #1 ML Model #2
4/20 -0.20% -0.32% -0.70% -0.35% +0.30%
4/21 -0.65% -0.11% +0.14% +0.28% +0.38%
4/22 +1.01% +3.22% +3.08% +3.32% +3.84%
4/23 -0.39% -0.98% -0.56% -0.85% -0.55%
4/24 +0.77% +1.85% +2.53% +1.69% +2.34%

Cumulative Since Launch (3/2)

S&P 500 Ensemble Growth Eval ML Model #1 ML Model #2
Total +4.02% +16.95% +18.67% +19.31% +24.49%

Wednesday's +3% day did most of the heavy lifting. Without it, the portfolios would have come in roughly flat for the week, but with it, they all turned in 3-6% gains on a market that gave back almost nothing. That is the kind of day where holding 15 picked names beats holding 503 of them, and the spread shows up loudly.

ML Model #2 is now +24.49% since launch, with the S&P 500 sitting at +4.02%. That is a 20-point spread in eight weeks, which is genuinely surprising and definitely going to revert at some point. I keep telling myself that. We will see if I keep believing it.

Worth noting: the spread between ML Model #1 and ML Model #2 has now widened to about five percentage points, with #2 firmly in the lead. They were nearly tied at the end of Week 6. Different models, different picks, and even on a sideways market week, the differences compound.

Coming Up: First Rebalance

This was the last full week before the first scheduled rebalance, which is set for the open on Thursday, April 30. That is exactly 42 trading days after the launch fill, which matches the cadence I designed the experiment around. After Thursday, every portfolio swaps its current 15 picks for a freshly generated set, with capital rolled forward at whatever the market hands me Thursday morning.

One change I am committing to at this rebalance: ML Model #1 gets retired. It has been picking nearly identical names to the Ensemble since launch (14 of 15 overlap on the original fill), so running it as a separate portfolio has not been generating much independent signal. The slot is being replaced by a new portfolio that has performed best across the longer 20-year backtests. ML Model #1's proceeds fund the new one, same dollars, different setup.

I will write the rebalance up properly next weekend once the dust settles. For now, eight clean weeks in the books, and the gap between models and benchmark is bigger than I expected at this stage. Sample size is still small. The market still gets to vote.

Thanks for reading!