The receipts · published verbatim from the working file
The process signal on a cleaner outcome (FIP) — pre-registration
Frozen 2026-07-15 and pushed before the run. Tests whether CSW% carries to FIP, the defense-independent outcome; drops K-BB% as a tautology (0.77 correlated with CSW%).
Last changed
Pre-registration — does CSW% carry to a cleaner outcome? (H-ARM2)
Frozen 2026-07-15, before any 2022–2025 pitch was examined for the CSW→FIP relationship. The git timestamp of this file is the freeze receipt. One confirmatory run; results published regardless.
Motivation
H-ARM (published today) found CSW% adds to a pitcher's next-year ERA beyond his current ERA (primary, passed out of sample) but does not beat ERA head-to-head (secondary, missed) — ERA became more self-predictive on the reserved seasons than it had been in training.
One explanation for that miss: ERA is the wrong yardstick. It is routed through eight fielders, a park, and inherited runners — noise that has nothing to do with the pitch. A defense-independent outcome should show the process signal more cleanly. This study tests that.
Exploratory findings (TRAIN pairs 2015→16 … 2020→21, n=1,551)
catalyst/analysis/arm2_exploratory.py, guarded against the reserved
seasons.
K-BB% is dropped: it is a tautology. Within a season, CSW% correlates +0.774 with K-BB%. It is very nearly the same number — predicting it from CSW% would test whether CSW predicts itself, not whether process predicts outcome. It is reported, never tested.
FIP is the legitimate outcome. CSW% correlates −0.561 with FIP within a season — real overlap (both lean on strikeouts) but genuinely independent (FIP also carries walks and homers). Stability, train:
csw_pct +0.643 fip +0.343 ra9 +0.164
FIP is twice as self-persistent as ERA and half as persistent as CSW. On the head-to-head and the controlled model:
predicting next-year FIP:
|r(csw, fip_next)| = 0.358 vs |r(fip, fip_next)| = 0.343
z(fip_next) ~ z(fip) + z(csw): csw beta −0.241, p<0.0001
On train, CSW% edges FIP's own lag (0.358 vs 0.343) — where against ERA it won by more (0.271 vs 0.164) — and it adds a large, robust coefficient controlling for current FIP.
The honest read of the exploration, before the run: the controlled coefficient (csw adds beyond FIP) is robust and will probably hold. The head-to-head margin (0.015) is tiny — and H-ARM's far larger ERA margin (0.107) flipped out of sample. I expect the secondary to miss.
PRIMARY hypothesis (H-ARM2-1, confirmatory)
On the reserved seasons:
z(fip_next) ~ z(fip) + z(csw_pct)
Sample: pairs with predictor seasons 2022, 2023, 2024 (outcomes 2023, 2024, 2025), pooled. Pitchers with ≥500 pitches in the predictor season and ≥100 batters faced in the outcome season. FIP = (13·HR + 3·(BB+HBP) − 2·K) / IP, no season constant (an additive per-season shift, invariant under the z-scored model).
SUCCESS = the csw_pct coefficient is NEGATIVE and two-tailed p < 0.05. Anything else is a MISS, published as a hit would be.
SECONDARY (reported, with criterion — expected to MISS)
|corr(csw_pct, fip_next)| > |corr(fip, fip_next)|, pooled.
SUCCESS = the inequality holds. Pre-declared expectation: MISS. The train margin is 0.015 and ERA's larger margin did not survive. Writing this down so a surprise pass is credible and an expected miss is not spun as a failure of the study — the study's real claim is the PRIMARY.
TERTIARY (reported, no criterion)
- Stability of csw_pct, fip, kbb_pct, ra9 on the reserved seasons.
- The within-year CSW↔K-BB% and CSW↔FIP overlaps, re-confirmed out of sample (does K-BB% stay a tautology?).
- The H-ARM ERA model, re-run on this sample, so the FIP and ERA coefficients sit side by side.
The way it can fail
- FIP is K-heavy, and CSW predicts K. If the reserved seasons' K environment shifted (the 2023 rule package again), the CSW→FIP link could weaken and the primary could miss.
- FIP's own lag is stronger than ERA's (0.34 vs 0.16), so CSW has a higher bar to clear to "add" — the primary could come back significant-but-smaller, or wash out entirely.
Caveats declared in advance
- This is the SECOND outcome tested against CSW% on these reserved seasons. H-ARM tested CSW→ERA; this tests CSW→FIP, a correlated outcome with the same predictor. It is therefore a robustness re-test, not independent evidence: a pass reinforces H-ARM rather than discovering something new, and I will not present it as a fresh finding. The specific CSW→FIP relationship has not been computed on any reserved season before this freeze (H-ARM's confirmatory printed csw→ERA and the stability of csw and ra9 only; it never touched FIP).
- Season isolation is imperfect, as in every study here. 2022–2023 were H2's holdout; 2024–2025 were H-BT's train years. Neither involved FIP or any pitch-level pitcher metric.
- 2026 excluded (in progress, no
components_pit_2026). - CSW% = (Called Strike + Swinging Strike + Swinging Strike (Blocked)) / pitches, foul tips excluded — the H-ARM definition, unchanged.
- One evaluation.
catalyst/analysis/arm2_confirmatory.py, committed in the same commit as this file, before it is run.
Integration gate
This study authorizes no new product. CSW% already entered the site today as a declared, unranked context number (the H-ARM gate). A pass here strengthens the case that CSW% is a robust process signal and is worth keeping on the pitcher pages; it does NOT authorize a ranked arms board, arm calls, or ranking on FIP. If the secondary somehow passes (CSW beats FIP's lag out of sample), that is a genuinely stronger result and would justify designing — separately, with its own validation — a watch surface that leans on CSW% as a leading indicator of FIP; it would still not authorize a ranked board without its own pre-registration.
If the PRIMARY misses, the finding is that CSW% does not even reliably add to a clean outcome out of sample, which would argue for demoting CSW% back out of the pitcher pages — a real stake, not a free roll.