Repeat-pitch excess: the same pitch comes back more often than the mix implies
Across 511,807 adjacent pitch pairs in the 2025 Statcast season a pitcher throws the same pitch type twice in a row 0.3533 of the time against the 0.3166 his own count-conditioned mix implies, an excess of 0.0367 (95 percent interval 0.0...
How to read this figure
Every row reports n_pairs first, then the observed repeat rate, the leave-one-out expected rate and their difference with a game-cluster interval. A row below the floor is masked and keeps its count. In the outcome panels the difference is repeat minus switch inside the same cell, taken inside every resample, so the interval is paired.
Published panels
Measured population: 511,807 adjacent pitch pairs over 2,364 games and 864 pitchers. A pair is two pitches in a row inside one plate appearance thrown by the same pitcher. The baseline is that same pitcher's own mix at that same count with this pitch left out, so a pitch can never predict itself.
Coverage: 693,037 pitches in the source table, 514,630 adjacent pairs, 61 dropped for a pitcher change mid plate appearance, 2,384 dropped for a null or non-pitch type code, 378 dropped for having no leave-one-out baseline, 511,807 measured, of which 5,023 carry no per-pitch outcome code and sit out the outcome tables.
| Claim | Preregistered direction | Measured value | 95 percent interval | Verdict |
|---|---|---|---|---|
| 1. The repeat excess is positive overall. | positive | +0.0367 | 0.0348 to 0.0385 | CONFIRMED |
| 2. The repeat excess is larger in pitcher-ahead counts than in counts where the pitcher is behind. | positive | -0.0081 | -0.0113 to -0.0049 | CONTRADICTED |
| 3. Repeated pitches draw a lower rate of swings and misses than switched pitches at the same count. | negative | +0.0098 | 0.0079 to 0.0120 | CONTRADICTED |
Scroll horizontally for all columns
Written into the producer before the first number was computed. A CONTRADICTED row is published at full size; it is the result, not a failure.
| Cell | Pairs (n) | Repeat rate | Expected by own mix | Excess | 95 percent interval | Excludes zero |
|---|---|---|---|---|---|---|
| pitcher behind | 180,871 | 0.3871 | 0.3394 | +0.0476 | 0.0451 to 0.0502 | yes |
| even | 127,054 | 0.3176 | 0.3011 | +0.0165 | 0.0137 to 0.0195 | yes |
| pitcher ahead | 203,882 | 0.3455 | 0.3059 | +0.0395 | 0.0370 to 0.0420 | yes |
| all pairs | 511,807 | 0.3533 | 0.3166 | +0.0367 | 0.0348 to 0.0385 | yes |
Scroll horizontally for all columns
Pitcher-ahead minus pitcher-behind is -0.0081 with interval -0.0113 to -0.0049, taken inside the same resample, which is the second preregistered claim.
| Cell | Pairs (n) | Repeat rate | Expected by own mix | Excess | 95 percent interval | Excludes zero |
|---|---|---|---|---|---|---|
| 0-1 | 89,680 | 0.3594 | 0.2952 | +0.0643 | 0.0605 to 0.0679 | yes |
| 0-2 | 46,549 | 0.3656 | 0.3145 | +0.0511 | 0.0467 to 0.0556 | yes |
| 1-0 | 66,849 | 0.4104 | 0.3167 | +0.0937 | 0.0898 to 0.0975 | yes |
| 1-1 | 69,358 | 0.3437 | 0.2920 | +0.0517 | 0.0478 to 0.0558 | yes |
| 1-2 | 67,653 | 0.3131 | 0.3143 | -0.0012 | -0.0047 to 0.0024 | no |
| 2-0 | 22,496 | 0.3705 | 0.3436 | +0.0270 | 0.0211 to 0.0327 | yes |
| 2-1 | 35,561 | 0.3256 | 0.3148 | +0.0108 | 0.0060 to 0.0157 | yes |
| 2-2 | 57,696 | 0.2863 | 0.3121 | -0.0258 | -0.0295 to -0.0218 | yes |
| 3-0 | 6,841 | 0.5080 | 0.4663 | +0.0417 | 0.0339 to 0.0495 | yes |
| 3-1 | 14,439 | 0.4284 | 0.4055 | +0.0229 | 0.0159 to 0.0297 | yes |
| 3-2 | 34,685 | 0.3748 | 0.3534 | +0.0214 | 0.0168 to 0.0261 | yes |
Scroll horizontally for all columns
the 0-0 count opens a plate appearance, so it is never the destination of an adjacent pair
| Cell | Pairs (n) | Repeat rate | Expected by own mix | Excess | 95 percent interval | Excludes zero |
|---|---|---|---|---|---|---|
| fastball | 281,801 | 0.3881 | 0.3596 | +0.0285 | 0.0260 to 0.0308 | yes |
| breaking | 160,861 | 0.3089 | 0.2654 | +0.0435 | 0.0408 to 0.0464 | yes |
| offspeed | 69,145 | 0.3143 | 0.2601 | +0.0541 | 0.0504 to 0.0578 | yes |
Scroll horizontally for all columns
A repeat means the same pitch_type code, not the same family; the family here labels the pitch that came first.
| Cell | Repeat (n) | Switch (n) | Repeat rate | Switch rate | Difference | 95 percent interval | Excludes zero |
|---|---|---|---|---|---|---|---|
| pitcher behind | 69,379 | 109,799 | 0.0997 | 0.1047 | -0.0051 | -0.0079 to -0.0021 | yes |
| even | 39,949 | 85,859 | 0.1464 | 0.1265 | +0.0199 | 0.0160 to 0.0242 | yes |
| pitcher ahead | 69,748 | 132,050 | 0.1419 | 0.1251 | +0.0168 | 0.0137 to 0.0202 | yes |
| standardized over the cells above | +0.0098 | 0.0079 to 0.0120 | yes |
Scroll horizontally for all columns
A swing and miss is the outcome code swinging_strike or swinging_strike_blocked. A foul tip is contact and is not counted here. The last row weights each count class by its share of pairs.
| Cell | Repeat (n) | Switch (n) | Repeat rate | Switch rate | Difference | 95 percent interval | Excludes zero |
|---|---|---|---|---|---|---|---|
| called plus missed -- pitcher behind | 69,379 | 109,799 | 0.3036 | 0.2920 | +0.0116 | 0.0071 to 0.0159 | yes |
| called plus missed -- even | 39,949 | 85,859 | 0.2324 | 0.2049 | +0.0275 | 0.0227 to 0.0324 | yes |
| called plus missed -- pitcher ahead | 69,748 | 132,050 | 0.2132 | 0.1898 | +0.0234 | 0.0197 to 0.0273 | yes |
| weak contact -- pitcher behind | 13,435 | 21,766 | 0.5413 | 0.5436 | -0.0023 | -0.0132 to 0.0085 | no |
| weak contact -- even | 8,211 | 19,183 | 0.6067 | 0.6014 | +0.0053 | -0.0074 to 0.0184 | no |
| weak contact -- pitcher ahead | 12,341 | 24,564 | 0.6387 | 0.6350 | +0.0037 | -0.0063 to 0.0142 | no |
Scroll horizontally for all columns
Weak contact is the share of tracked in-play pitches below 95 mph, over 99,500 in-play pairs. Standardized differences: +0.0203 (0.0179 to 0.0228) and +0.0020 (-0.0043 to 0.0085).
| Cell | Repeat (n) | Switch (n) | Repeat rate | Switch rate | Difference | 95 percent interval | Excludes zero |
|---|---|---|---|---|---|---|---|
| pitcher behind / fastball | 49,496 | 65,266 | 0.0754 | 0.0775 | -0.0021 | -0.0050 to 0.0010 | no |
| pitcher behind / breaking | 14,090 | 29,735 | 0.1561 | 0.1385 | +0.0176 | 0.0109 to 0.0246 | yes |
| pitcher behind / offspeed | 5,793 | 14,798 | 0.1695 | 0.1570 | +0.0125 | 0.0006 to 0.0235 | yes |
| even / fastball | 21,465 | 40,543 | 0.1133 | 0.0968 | +0.0165 | 0.0112 to 0.0218 | yes |
| even / breaking | 11,869 | 29,352 | 0.1842 | 0.1541 | +0.0301 | 0.0223 to 0.0382 | yes |
| even / offspeed | 6,615 | 15,964 | 0.1861 | 0.1514 | +0.0347 | 0.0239 to 0.0459 | yes |
| pitcher ahead / fastball | 37,394 | 55,403 | 0.1078 | 0.0968 | +0.0110 | 0.0071 to 0.0152 | yes |
| pitcher ahead / breaking | 23,259 | 49,613 | 0.1836 | 0.1464 | +0.0372 | 0.0314 to 0.0429 | yes |
| pitcher ahead / offspeed | 9,095 | 27,034 | 0.1752 | 0.1440 | +0.0311 | 0.0222 to 0.0401 | yes |
Scroll horizontally for all columns
Holding the destination pitch family fixed, so the comparison is not a type-mix artifact. Standardized over these nine cells: +0.0172 (0.0152 to 0.0193).
Truncation check: rebuilt on the 1,191 games through 2025-06-29 (256,929 pairs), the overall excess is +0.0360 and the standardized swing-and-miss difference is +0.0091. Per-pitcher rows for the 389 pitchers at or above 500 pairs are published in the artifact, top +0.2185 and bottom -0.1024.
Verdict
Preregistered directions that survive the interval test: 1 of 3. (1) The repeat excess is 0.0367 overall, interval [0.0348, 0.0385] -- CONFIRMED. (2) Pitcher-ahead minus pitcher-behind is -0.0081, interval [-0.0113, -0.0049], so the excess is smaller in ahead counts than behind -- CONTRADICTED. (3) The count-class-standardized swing-and-miss difference is +0.0098, interval [0.0079, 0.012], so the repeated pitch draws more swings and misses -- CONTRADICTED; inside destination pitch family the same difference is +0.0172 (interval [0.0152, 0.0193]), so it is not only a type-mix artifact. Truncation check: on the first half of the season the overall excess is 0.0360 and the standardized swing-and-miss difference is +0.0091, both the same sign as the full season. Dropped from 514,630 adjacent pairs: 61 where the pitcher changed mid plate appearance, 2,384 carrying a null or non-pitch type code (a null code or one of PO, IN, UN), and 378 where the pitcher threw only one pitch at that count all season so no leave-one-out baseline exists, leaving 511,807 measured pairs.
What it means
A pitcher returns to the pitch he just threw more often than his own selection rate at that count would produce by chance, and that is not a league-mix artifact because the mix it is measured against is his own. The outcome half then contradicts the intuition that a hitter who has just seen a pitch handles it better.
Caveats and confounds
Descriptive conditional frequencies, not a forecast and not a causal estimate. pitch_type is Statcast's automatic classification, so a misclassified pitch becomes a spurious switch. The repeat and switch groups differ in their destination type mix, which is why the outcome difference is published inside destination pitch family as well. Sequence choice is confounded with the count path that produced it, the hitter, the catcher and the score state, none of which are controlled here. One season, one league.