90-Day Results · Model v0.5 · October 8, 2026

One Feature Did
All the Work.

On July 10 we locked sixty-five call-up probabilities, the largest cohort this model has published. The window closed October 8. Six of the sixty-five reached the majors, and v0.5 scored a Brier of 0.0746 against a naive baseline of 0.0838.

That is a pass. It is the first time in three checkpoints the model has beaten a constant guess, and the bucket ordering came back monotonic after breaking in September. Both results are real and both are reported below.

They are also both an accident of who was in the cohort. The rest of this page is about why.

6/65
Reached MLB
.0746
Brier score
.0838
Naive baseline
.874
AUC, headline

The result that matters

All six call-ups came from Triple-A. Six of the eleven Triple-A players were promoted, 54.5 percent. Of the other fifty-four players, across nineteen at Double-A, twenty-three at High-A, eight at Single-A and four at the complex level, zero were promoted.

So we built a one-feature model to compete against ourselves. It knows nothing except whether a player is at Triple-A. It predicts 54.5 percent for Triple-A players and zero for everyone else. On this cohort that model scores a Brier of 0.0420. Thirteen features, four sequential multipliers and a refit probability mapping scored 0.0746.

The one-feature model is 44 percent better than ours.

.0420
Level-only Brier
.0746
MKDC v0.5 Brier
0.36
AUC inside Triple-A
107
Graded outcomes, all time
share of players called up, by level at run dateAAAn=1154.5%6 of 11AAn=190.0%0 of 19A+n=230.0%0 of 23An=80.0%0 of 8ROKn=40.0%0 of 4ALL SIX CALL-UPS CAME FROM TRIPLE-A · ZERO FROM THE OTHER 54 PLAYERS
Figure 2. Call-up rate by level at run date. The entire outcome distribution of this cohort is explained by one column.
Brier score, lower is betterLevel-only.0420MKDC v0.5.0746Naive constant.0838ONE BINARY FEATURE BEATS THIRTEEN FEATURES AND FOUR MULTIPLIERS BY 44 PERCENT
Figure 3. The level-only benchmark is fit on this same cohort, so it flatters itself. The gap is far larger than that advantage explains, and the within-Triple-A result below does not depend on the benchmark at all.

Inside Triple-A, the ranking is not forwards

The level split is where the comparison above gets its edge, and a fair objection is that the one-feature model was fit on the same sixty-five rows it was scored against. That objection is correct, and it is why the next test is the important one.

Take only the Triple-A players, where call-ups actually happen, and ask whether our numbers rank them correctly. Below are all eighteen Triple-A predictions v0.5 has made across both cohorts, sorted by our own probability, highest first.

RankCUPResultPlayerOrgCohort
162%NOThomas WhiteMIAB
248%NOCharlie CondonCOLB
345%YESHagen SmithCWSB
445%YESAngel GenaoCLEC
544%YESLazaro MontesSEAC
638%NOCarlos LagrangeNYYC
733%YESOwen CaissieMIAB
833%NOEmmanuel RodriguezMINB
933%YESKaelen CulpepperMINB
1033%NOJett WilliamsMILC
1133%YESMax ClarkDETC
1233%NORalphy VelazquezCLEC
1332%NOKarson MilbrandtMIAC
1429%NOJames Tibbs IIILADC
1528%YESHarry FordWSHC
1623%YESWalker JenkinsMINB
1722%YESJoshua BaezSTLC
1821%YESMichael ArroyoSEAC

The top half of our own ranking went five for nine. The bottom half went five for nine. The two largest numbers the model has ever published, Thomas White at 62 percent and Charlie Condon at 48 percent, both missed. The three smallest Triple-A numbers in the set, Walker Jenkins at 23, Joshua Baez at 22 and Michael Arroyo at 21, all hit.

Formally, the AUC inside Triple-A is 0.433 on this cohort and 0.356 across both v0.5 cohorts. An AUC of 0.500 is a coin flip. Eighteen rows is a small sample and we are not going to claim the ranking is reliably backwards on that evidence. What eighteen rows across two cohorts does support is the weaker and more damaging claim: there is no evidence the ranking is forwards, and that ranking is the entire product.

The headline AUC of 0.874 does not contradict this. It is produced by the model sorting Triple-A players above teenagers in the complex leagues. That requires no model.

Where the calibration landed

predictedobserved45%+n=145%100%30-44%n=636%33%20-29%n=2123%14%<20%n=3712%0%SUB-BATCH C · 65 OUTCOMES · ORDERING MONOTONIC, EVERY BAND ABOVE THE NEXT
Figure 1. Predicted average against observed rate, by bucket. Ordering is strictly monotonic for the first time since June. The bottom band, 37 players averaging 12.5 percent, produced zero call-ups.

Mean prediction was 18.6 percent against an observed base rate of 9.2 percent, so the model ran high by 9.3 points. That is the opposite direction from June and September, both of which ran low, and it is not a sign the recalibration overcorrected. It is a sign that the low bands are badly floored.

Thirty-seven players averaged 12.5 percent and produced zero call-ups. The model expected about 4.6 promotions from that group. Nothing in High-A or below should be priced at twelve percent on a ninety-day horizon, and across both v0.5 cohorts exactly one player out of fifty-seven below Triple-A was promoted.

Every prediction, and what happened

All sixty-five rows, as locked on July 10. The notes column carries sourced detail where we researched the outcome individually; a dash means the player finished the season in the minors with no major league appearance and no further detail was gathered.

PlayerOrgLevelCUPResultWhat happened
Angel GenaoCLEAAA45%YESDebuted August 5 for Cleveland, the highest number in the cohort and the only 45-plus row.
Lazaro MontesSEAAAA44%YESCalled up September 1 by Seattle, the second-highest number in the cohort.
Carlos LagrangeNYYAAA38%NOPlaced on the injured list with a right shoulder capsular sprain in early July, days before we locked him at 38 percent. Returned at the end of the minor league season with no runway to be an option for New York.
Jett WilliamsMILAAA33%NOWrist injury at Triple-A Nashville in late July. Finished at .234/.341/.385 with nine home runs and was never added to the 40-man roster.
Max ClarkDETAAA33%YESDebuted for Detroit and went 3-for-4 with two doubles. Logged August 1; Baseball America records the game as July 31.
Ralphy VelazquezCLEAAA33%NOHit .293/.381/.555 with 29 home runs at Triple-A Columbus and was named the Guardians' Minor League Player of the Year. Never called up.
Karson MilbrandtMIAAAA32%NOPromoted to Triple-A Jacksonville after leading the Southern League in ERA, WHIP, opponent average and strikeouts, and entered the Top 100. No call-up.
James Tibbs IIILADAAA29%NOThirty home runs, 108 walks and a .941 OPS at Triple-A Oklahoma City, leading the Pacific Coast League in extra-base hits, total bases and walks. The Dodgers passed on him in September.
Alfredo DunoCINAA28%NO—
Harry FordWSHAAA28%YESRecalled July 17 as the injury replacement for Drew Millas and homered in his first game for Washington. See the eligibility note: he already had eight games of major league service from September 2025 and should not have been in this cohort.
Theo GillenTBAA28%NOFinished the season at Double-A Montgomery and was named the Rays' Minor League Player of the Year, hitting .315/.419/.546 with 22 home runs and 44 steals across two levels.
Anthony EyansonBOSAA22%NO—
Braylon DoughtyCLEAA22%NO—
Caleb BonemerCWSAA22%NO—
Devin Fitz-GeraldWSHAA22%NO—
Edward FlorentinoPITA+22%NO—
Eli WillitsWSHA+22%NO—
Gage WoodPHIAA22%NO—
Jamie ArnoldATHAA22%NO—
Jefferson RojasCHCAA22%NO—
Jesus MadeMILAA22%NO—
Josh AdamczewskiMILAA22%NO—
Joshua BaezSTLAAA22%YESCalled up August 15 by St. Louis.
Leo De VriesATHAA22%NO—
Liam DoyleSTLAA22%NO—
Luis PeñaMILA+22%NO—
Nolan PerryTORAA22%NO—
Michael ArroyoSEAAAA21%YESCalled up September 6 by Seattle, the lowest number in the cohort to resolve yes.
Christian ZazuetaLADAA19%NO—
Mike SirotaLADAA19%NOReached Triple-A late in the season. No major league appearance.
Rainiel RodriguezSTLAA19%NO—
Zyhir HopeDETAA19%NOTraded from Los Angeles to Detroit at the deadline and finished the season at Double-A.
Billy CarlsonCWSA12%NO—
Bryce RainerDETA+12%NO—
Caden ScarboroughTEXA+12%NO—
Cam CaminitiATLA+12%NO—
Dax KilbyNYYA12%NO—
Eric HartmanATLA+12%NO—
Felnin CelestenSEAA+12%NO—
Francisco RenteriaPHIROK12%NO—
Ike IrishBALA+12%NO—
Jaxon WigginsCHCA+12%NO—
Jhonny LevelSFA+12%NO—
JoJo ParkerTORA12%NO—
Jonny FarmeloSEAA+12%NO—
Josh HammondKCA12%NO—
Josiah HartshornCHCA+12%NO—
Josuar GonzalezSFROK12%NO—
Josue BriceñoDETA12%NO—
Justin GonzalesBOSA+12%NO—
Kayson CunninghamARIA+12%NO—
Kendry ChourioKCA+12%NO—
Kevin AlvarezHOUA12%NO—
Luis HernandezSFROK12%NO—
Roldy BritoCOLA12%NO—
Ronny CruzWSHA+12%NO—
Seth HernandezPITA+12%NO—
Steele HallCINROK12%NO—
Tyler BremnerLAAA+12%NO—
Xavier NeyensHOUA12%NO—
Charles DavalanLADA+11%NO—
Eduardo QuinteroLADA+11%NO—
Emil MoralesLADA+11%NO—
Caden BodineTBAA9%NO—
Nathan FlewellingTBA+9%NO—

The misses, named

Carlos Lagrange, 38 percent, injury-status blind spot. Highest number in the cohort after Genao. Lagrange was placed on the injured list with a right shoulder capsular sprain in early July, days before the July 10 lock, and the model did not know. He returned at the end of the minor league season with no time to be an option for New York. Third consecutive checkpoint in which the top miss was a player whose injury predated the run date.

Ralphy Velazquez, 33 percent, performance features do not predict promotion. Hit .293/.381/.555 with 29 home runs at Triple-A Columbus and was named the Guardians' Minor League Player of the Year. Never called up. The model's performance block read this season as strong evidence of a promotion. Cleveland read it as a reason to protect a 2027 roster spot.

James Tibbs III, 29 percent, performance features do not predict promotion. Thirty home runs, 108 walks, .941 OPS, led the Pacific Coast League in extra-base hits, total bases and walks, and the Dodgers passed on him in September anyway. Los Angeles already carries the lowest org coefficient in the model at 0.88 and it was still not low enough.

Jett Williams, 33 percent, injury-status blind spot. Wrist injury at Triple-A Nashville in late July, hit .234/.341/.385 on the season, never added to the 40-man roster.

Harry Ford, 28 percent, eligibility error. Graded yes on an appearance July 17, but he should not have been in the cohort. Ford debuted in September 2025 and had eight games of major league service before this run. A player with prior service who is optioned to Triple-A is a far better bet to appear than a true first-time candidate, and the model has no feature for it. Second eligibility error in two checkpoints after Owen Caissie in September.

the <20% band, 12 percent, systematic overprediction below Triple-A. Thirty-seven players averaging 12.5 percent, zero call-ups. The model should be predicting close to zero for High-A and below, not twelve percent. This band alone accounts for 0.0058 of the Brier score that a correctly floored model would not have paid.

A row that should not have been there

Harry Ford was scored at 28 percent as a call-up candidate. He appeared for Washington on July 17 and the row grades yes. He also should not have been in the cohort at all. Ford debuted for Seattle in September 2025 and had eight major league games behind him before we scored him; he was optioned to Triple-A Rochester to start 2026 and recalled when Drew Millas needed surgery.

A player with prior major league service who is sitting at Triple-A is a different population from a prospect awaiting a first promotion, and a much better bet to appear. The model has no feature for prior service, so it priced him like a prospect.

We are grading it as written, because closed runs are never edited and that rule does not get suspended when the error flatters us. This row happens to help the Brier score. It is the second eligibility error in two checkpoints, after Owen Caissie in September, and two in a row is a process problem rather than bad luck.

The window was not ninety days

The 2026 regular season ended September 27. A ninety-day window opened on July 10 and closed on October 8 therefore contained about seventy-nine days of actual baseball, and the last eleven days of it had no games in which anyone could have been called up.

That is a flaw in the run design, not in the grading. Every number in this cohort was quoted against a ninety-day promise that the calendar could not keep. The effect is small and it pushes in one direction: it makes the model look worse than a correctly scoped window would, because the denominator of opportunity was shorter than advertised. It is listed as a v0.6 fix below.

Where the record stands

CohortLockedVersionnReached MLBBrierNaiveVerdict
Sub-Batch A2026-03-20v0.42814 (50.0%)0.26960.2500lost to naive
Sub-Batch B2026-06-11v0.5145 (35.7%)0.23750.2296lost to naive
Sub-Batch C2026-07-10v0.5656 (9.2%)0.07460.0838beat naive

Three cohorts, 107 graded outcomes. Treat that number carefully, because it mixes model versions. Sub-Batch A was scored under v0.4; B and C under v0.5. As an all-time published record the 107 outcomes produce a Brier of 0.1469 against a naive 0.1791. As an evaluation of the model that is actually live, the honest set is the seventy-nine outcomes in B and C: Brier 0.1034 against naive 0.1199, AUC 0.868, and a level-only benchmark of 0.0687 that still beats it.

The training gate for starting work on a trained v1.0 classifier was fifty resolved outcomes. At 107 that gate is cleared. It was a sample-size condition and nothing more, and what this checkpoint found changes what v1.0 ought to be trained to do.

Six rows that should not have been on the board

The checkpoint also swept the live PIX board, and six of the thirteen remaining rows did not belong there. None carried a CUP prediction, so no published score moves, but all six were public as unpromoted prospects.

The same gap as the Harry Ford scoring error: nothing in the pipeline checks prior major league service, and nothing checks whether a tracked player has stopped being a prospect. Four of the six rows were players the model should never have been able to see.

The fix is built. A staleness and eligibility audit now runs automatically at the top of every daily and weekly board update. It flags any active row with no logged event in thirty days, escalates Triple-A rows to high severity because a stale Triple-A row is usually a debut nobody logged, flags rows that have never had an event at all, and flags any prediction whose ninety-day window has closed while the row sits open, which is how the Aidan Miller row survived four months past its grading date.

This was proposed in June, again in August and again in September, and written down each time as a thing worth doing. It was not built until it had cost six rows. Its first run flagged one high finding, Seaver King at Triple-A with no event in fifty-three days, which checked out clean against the debut record.

What changes

No refit today. Not because the result stung, but because refitting the probability mapping is the wrong response to this finding. The mapping is not the problem. A model whose features carry no information inside the group that matters does not get fixed by adjusting the numbers it maps those features onto.

The v0.6 list, in priority order:

The first item is a rewrite, not a patch, and it is not a decision to make in a results post. What this checkpoint establishes is the standard any v0.6 has to clear before it ships: beat a level-only baseline out of sample, and show positive discrimination inside Triple-A. v0.5 does neither.

The full run record is published at checkpoint_2026-10-08.json. The running scoreboard is on the record, the September checkpoint is here, and the model is documented in Inside v0.5.

Outcomes verified against Baseball America's record of every 2026 major league debut and against individual reporting for each Triple-A row. Brier score is the mean squared error of the forecast probabilities against binary outcomes, per Brier (1950). The naive baseline is a constant forecast equal to the observed base rate of the cohort. The level-only benchmark predicts each level's own observed rate within the cohort. AUC is the probability that a randomly chosen player who reached the majors carried a higher CUP than a randomly chosen player who did not. All headline figures were computed twice by independent code paths and in closed form before publication.