A decision-support boundary
This project measures recorded workload and subsequent performance. It cannot identify a pitcher’s underlying fatigue, diagnose injury risk, or establish what would happen if a manager changed the rest schedule.
The practical use is an auditable conversation: who pitched recently, what was recorded, what changed, and what additional information would a coach need?
Read the analysis specification ↗Read the research brief ↗Download held-out appearances ↓Download frozen predictions ↓Download modeling table ↓Download Toronto velocity data ↓Sources, coverage and attribution
Retrosheet daily logs and parsed plays: 2023–2025 regular seasons. Baseball Savant: Toronto pitching, 2024–2025 regular seasons. Field meanings follow the Retrosheet dictionary and Statcast CSV documentation. Retrieved September 17, 2026.
The information used here was obtained free of charge from and is copyrighted by Retrosheet. Interested parties may contact Retrosheet at 20 Sunset Rd., Newark, DE 19711.
Independent portfolio research. No affiliation with MLB or the Toronto Blue Jays. Source files are downloaded by the reproduction script; the site distributes derived tables.
Cohort, rest days and missing data
Relief appearances are pitching sequence greater than one, with positive batters faced and at least five earlier relief appearances in that season. A retrospective season-role filter requires pitching appearances to be at least half of all games played. This excludes position-player pitching; it also limits evaluation to this defined cohort.
Workload sums recorded pitches over the previous calendar dates, including starts and actual continuation dates of suspended games. Suspended-game outcomes and pitcher-days with two appearances are excluded from modeling. Minor-league and rehab appearances, warm-ups and bullpen sessions are not available; gaps in MLB records must not be interpreted as confirmed rest. Missing pitch counts on non-plate-appearance events count as zero; every completed plate appearance has a recorded count. Missing temperature uses the development-sample median.
Model and inference details
Outcome = (strikeouts − walks + intentional walks) / all batters faced. The prior baseline pools earlier non-suspended relief outcomes with 100 pseudo-batters at a fixed 15% rate; it resets each season. Both ridge models use development-only standardization, penalty 100 and batters-faced weights. No tuning on the 2025 test set.
Association estimates use weighted demeaning within pitcher-season, WLS and pitcher-clustered confidence intervals with absorbed-effect degrees-of-freedom correction and a cluster-t critical value on development seasons. They are distinct from the predictive ridge coefficients. Descriptive and velocity intervals resample pitchers. Fixed random seed: 71. Entry context is measured when a pitcher enters; these are not day-before forecasts.
What an R&D follow-up should test
Integrate warm-up counts, exact recovery hours, travel, role and roster availability. Add opponent and handedness adjustment, pitch shape and movement, and pitch-type-specific league-wide velocity. Use rolling-origin validation and a genuinely new season before operational use.
Study the decision to deploy as well as the performance of deployed pitchers. A causal rest-policy claim needs a design that addresses that selection process; a workload correlation alone is insufficient.
Reproduce & inspect exclusions
Run python download.py --raw raw, python analyze.py --raw raw, python toronto.py --raw raw, python diagnostics.py --raw raw, and python build_data.py. Dependencies and detailed instructions are in README. Source manifest records file hashes.