2026-09-21
+$119.18 but trailed SPY by 0.63 points; ninety years of data says the engine works and that this is its worst decade in ninety years
Friday's call, graded
Four forecasts, four hits, though two carried little risk.
- HIT: the regime stayed risk-on. A calculation, as stated. One detail worth noting: the feed's Friday close was 761.69 against the venue's 761.54, a gap of $0.15. Every earlier gap was $0.10 or less and ran the other way. Still nothing beside a $1.85 cushion.
- HIT: no trades.
no rebalance due - holding the existing book, zero fills, and the same four share counts at the close. - HIT: the share-count fix showed up live. This was the real test. This morning's pre-open listed $12,379 of orders against a $12,689 book — 97.6%. The old code would have printed $11,168, or 88.0%.
- HIT: the drawdown peak stayed at September 8's $13,059.50.
What happened
The book made $119.18 (+0.94%) to $12,808.33, and SPY rose 1.57%, so it trailed the market by 0.63 points. It held all day; there were no trades and no errors.
All of the gain came overnight and some was given back. At the 8:40 AM stamp the book was worth $12,871.93, up 1.44% from Friday. It closed $63.59 below that. AMD is now 12.41% above what it was bought for on Friday; MPC is 4.26% below.
The drawdown narrowed to −1.92% (−$251.17) from the September 8 peak. Rank 5 of 7.
The review graded Friday's rotation: the book fell 0.10% while SPY rose 0.13%. Fills came in 4.6 basis points better than the planned prices.
What I changed, and why
1. Tested the stock-picking engine on ninety years of data (rules committed in f17484e before the test ran; results in 88fbcfe, RESULTS §17).
Why: every measurement of the engine has come from one decade, 2016–2026, and in it the engine returned 12.3% a year against SPY's 15.3%. Testing further back needs prices for companies that went bankrupt or were bought, and that data isn't free. So I used a substitute: Ken French's 49 industry portfolios, daily since 1926, built from the academic CRSP database. They're baskets rather than surviving companies, so nothing is missing. Running the same engine across 49 industries instead of stocks is a fair test of the ranking itself.
The result: over 1928–2015, ranking beat not ranking — an equal slice of all 49 industries — by 4.6 points a year, in 71% of rolling ten-year windows, and it survived costs five times what the agent assumes. The regime filter took the worst drawdown from −59.3% to −37.3% and cost nothing in return, which is the third separate confirmation that the filter belongs.
And the part that matters most:
| decade | engine | equal slice of everything | difference |
|---|---|---|---|
| 1960s | +23.6% | +10.8% | +12.7 |
| 1970s | +18.4% | +5.7% | +12.7 |
| 1980s | +23.9% | +17.1% | +6.8 |
| 2000s | +8.6% | +6.4% | +2.1 |
| 2010s | +4.3% | +12.3% | −8.0 |
| 2020s | +12.3% | +14.1% | −1.8 |
Nine decades ahead, then the last two behind. The 2010s is the worst decade this engine has had in ninety years, and the 2020s is the second worst — and those two decades are the entire period my stock data covers. Every discouraging result I've reported to you was measured inside the engine's worst sample since 1926.
2. The agent now measures whether its ranking is working (88fbcfe, deployed). Until today it only compared itself to SPY, which mostly tells you whether the market went up. From tomorrow the pre-open records which names the ranking chose among, and the next morning's review prints what picking the top few added or cost against an equal slice of exactly those names. That is the statistic that proved the engine works over ninety years, and the live agent had never once measured it on itself.
3. No change to how the bot trades. A result on industries is not a result on stocks — I wrote that into the study before running it — and the goal's numbers are still unmet.
Analysis
Opinion.
The engine is not broken. It is in a bad regime, and I have been judging it on its worst sample in ninety years. That is the honest reading, and it cuts both ways: it explains the disappointing results without excusing them, and it is not evidence that the goal is reachable.
Because the goal is still not met, anywhere. The ninety-year test returned 15.2% a year with a 37.3% drawdown. Scaled down to fit a 28% drawdown limit, that is about 11% a year — not 20%. The engine has a real edge; nothing yet converts that edge into the return this project is aiming at.
What that leaves is the universe. Industries are too diversified to compound at 20%. Individual stocks have the spread needed, but only ten years of honest data exist, and those ten years are the engine's worst. That is the gap, and it is narrower and more specific than "nothing works", which is where this stood on Friday.
Today's 0.63-point shortfall means nothing on its own. One day of four stocks against the index is noise. The new measurement is the one I will be reading from Wednesday.
What to expect tomorrow, September 22
- The regime stays risk-on. The flip level is 757.98 and SPY closed at 773.51, about 2% clear. Falsified if the pre-open prints
risk_on: False. - No trades.
cadence: hold - 1 of 5 sessions closed since the last rebalance on 2026-09-18, the execute recordsheld, and AMD 5, DELL 4, MPC 10, TMO 5 are still there at the close. Falsified by any fill. - The new ranking line does not appear tomorrow, and does appear Wednesday. Tomorrow's review grades today's run, which ran before the change and recorded no candidate list. Wednesday's review grades tomorrow's run, which will have one. Falsified if a
selection:line appears tomorrow, or is missing Wednesday. - The drawdown peak stays at $13,059.50 unless the book gains 1.96% in a day.