The transaction model

For every player on a 40-man roster, the probability that within the next 90 days he is designated for assignment, optioned, traded, released or non-tendered, or nothing happens. It is a gradient-boosted classifier trained on 184,676 player-snapshot rows from 2011-2026: every dated 40-man roster (Opening Day, June 1, July 1, the day after the deadline, September 1, season's end, the reserve-list filing, tender day, the Rule 5 draft) and what the transaction log says happened next.

It sees only what was knowable on the snapshot date: roster status, option years used and option days, times optioned this season, service time where published, age and years since debut, how and when the player joined the club (including a trade or claim in the last 60 days), his prior DFAs, outrights, claims and trades and how recent they were, IL days this season, the club's 40-man and 60-day IL counts and depth at his position, the club's record, the time of year, FanGraphs WAR for the last two seasons and his rank at his position on the club, last season's stat line, and this season's line once September arrives. It does not see contracts, projected arbitration salaries, or anything a front office knows about health or intent.

Held-out accuracy, season by season

Each season is predicted by a model trained on all the others. Log loss is lower-is-better; the base rate is a model that knows only the time of year. AUC is one-versus-rest: 0.5 is a coin flip, 1.0 is perfect ordering.

SeasonRowsLog lossBase rateAUC StaysAUC DesignatedAUC OptionedAUC TradedAUC Released
201312,2070.47410.66940.8520.8880.9430.7710.878
201412,2410.53120.71240.8120.8890.9480.7040.898
201512,2320.52280.70590.8310.8910.9450.7310.868
201612,3020.49040.68890.8510.8960.9450.7210.879
201712,2340.4850.7030.8560.8980.9480.7440.873
201812,2720.50450.72070.850.9060.9470.7430.894
201912,3180.49960.70890.8570.8780.9450.7160.882
202010,7750.54830.70990.8210.880.9230.6050.923
202111,3860.51790.72190.8630.8770.9260.7840.878
202212,5320.54040.78140.8580.8890.9350.7540.923
202312,4270.54420.75550.8420.8870.9320.730.905
202412,4570.52070.7560.8550.8930.9290.7780.934
202512,5270.59230.8140.8380.8950.9160.7790.898
20262,5780.63720.90430.8210.8660.8740.8460.876
Pooled160,4880.52270.73010.8450.8890.9360.7350.896

Calibration

Held-out predictions sorted into ten bins per outcome: what the model said against what happened.

DesignatedPredictedActualn
bin 1<1%<1%16,049
bin 2<1%<1%16,049
bin 3<1%<1%16,049
bin 41%<1%16,048
bin 51%1%16,049
bin 62%2%16,049
bin 74%4%16,048
bin 87%8%16,049
bin 914%16%16,049
bin 1037%35%16,049
OptionedPredictedActualn
bin 1<1%<1%16,049
bin 2<1%<1%16,049
bin 3<1%<1%16,049
bin 4<1%<1%16,048
bin 5<1%<1%16,049
bin 61%1%16,049
bin 74%5%16,048
bin 814%16%16,049
bin 934%37%16,049
bin 1064%63%16,049
TradedPredictedActualn
bin 1<1%<1%16,049
bin 2<1%1%16,049
bin 31%1%16,049
bin 41%2%16,048
bin 51%2%16,049
bin 62%3%16,049
bin 72%3%16,048
bin 83%4%16,049
bin 95%5%16,049
bin 1012%10%16,049
Released / non-tenderedPredictedActualn
bin 1<1%<1%16,049
bin 2<1%<1%16,049
bin 3<1%<1%16,049
bin 4<1%<1%16,048
bin 5<1%<1%16,049
bin 6<1%<1%16,049
bin 7<1%1%16,048
bin 81%1%16,049
bin 91%2%16,049
bin 107%8%16,049

The roster-aware tender model

A second model for the offseason question only: at the September 1 and season-end snapshots, for players two-plus years past their debut, will he still be on the 40-man after the tender deadline? It rebuilds each club's returning depth at his role (starters, relievers, catchers, infielders, outfielders, split by games-started share; departing free agents removed), ranks it by a Marcel-style projection from FanGraphs WAR history, and records his rank, the projection at the last job slot for the role (SP 8, RP 9, C 3, IF 8, OF 7), and his margin over it.

FeaturesLog lossAUCRows
His own mechanics and record only0.23920.90420,962
Plus rank among the club's returners0.22680.916320,962

Starters kept through the offseason by rank among returning starters, 2013-2025: rank 0 to 5: 97% (n 3218); rank 5 to 8: 92% (n 1216); rank 8 to 10: 84% (n 268); rank 10 to 13: 89% (n 71). Base rate kept 87%.

What was tried

Feature groups added one at a time to the previous model, each scored leave-one-season-out. “Tender window” is the reserve-list filing and tender-day snapshots only. Lower log loss and higher AUC are better. All groups were adopted.

ConfigurationLog lossLog loss, tender windowAUC designatedAUC released, tender
Roster mechanics, history, this season's line, depth (previous model)0.5340.40410.88210.9062
+ FanGraphs WAR history (two seasons, this season, wRC+, FIP, change)0.52980.39930.88760.9124
+ starter / reliever share0.53360.40370.88220.9064
+ WAR rank within the club's position group0.53310.4040.8830.9085
+ IL days this season, 60-day IL0.53330.40390.88220.9054
+ moves in the last year, Rule 5 pick, days since last move0.53190.40520.88220.9048
+ club record and run differential0.52970.40360.88290.9051
All groups together (current model)0.52270.39960.88930.9144

What it leans on

Total split gain by feature, top 20.

phase169,579
yrs_since_debut154,203
war_cur120,639
war_prev65,374
age58,328
days_since_txn42,481
days_with_club39,882
days_to_end33,232
war_prev231,268
mls_start31,202
day_of_year31,194
opts_this_season31,154
opt_days_this_season29,691
prior_dfa26,171
war_gap_group25,565
status_code21,758
team_pct20,619
team_rd20,439
c_pa18,675
war_delta15,359

Base rates and limits

Over any 90-day window since 2011: stays put 77%, optioned 12%, designated 7%, traded 3%, released / non-tendered 1%. Trades are the hardest outcome to anticipate from roster mechanics alone. Historical service time is only available from 2020, so earlier seasons lean on years since debut. Retrained nightly as of 2026-09-14.