MLB Quant Rigor Upgrade | Baseball biomechanics and ML

MLB Biomechanics Velocity Study

A reproducible pitching-analysis pipeline that converts public motion-capture variables into interpretable biomechanical metrics, validates fastball velocity models with grouped session splits, and separately summarizes public Statcast pitch-trait outcomes.

Data boundary: OpenBiomechanics athletes are anonymized. This report does not claim direct player-level matching to MLB outcomes. It models biomechanics-to-velocity and separately models pitch-trait-to-outcome relationships.

Executive Summary

Biomechanics sourceOpenBiomechanics public pitching metrics
Performance sourceBaseball Savant Statcast CSV
Velocity RMSE lift1.35 mph
Validation groups100 sessions
Statcast rows25,000
Statcast dates2025-04-24 to 2025-04-30
Pitch types16
Primary signalKinetic-chain transfer
Main baseball finding: kinetic-chain transfer is the strongest engineered signal for fastball velocity in the public OpenBiomechanics sample. The holdout ridge model reduces pitch-speed error from 4.33 mph to 2.98 mph, and validation is grouped by session so a pitcher's repeated throws do not leak across train and test.

Model Card

This section defines the modeling boundary, validation unit, and intended interpretation before presenting feature-level results.

Item Value
Primary target pitch_speed_mph
Biomechanics validation unit session
Holdout rows 119
Holdout sessions 25
Baseline RMSE 4.33 mph
Ridge RMSE 2.98 mph
Primary model ridge regression, alpha=10.0
CV design repeated grouped K-fold by session with inner alpha selection
Bootstrap unit session
Statcast rows 25,000
Statcast denominator policy whiff/swing, chase/out-of-zone, hard-hit/batted-ball
Use boundary predictive association only; no causal or identity-linked MLB claim

Velocity Model

Baseline RMSE4.33 mph
Ridge RMSE2.98 mph
Ridge MAE2.40 mph
Selected alpha10.0

Grouped Cross-Validation Model Comparison

All folds are grouped by session so the same athlete/session is never in both train and test for a fold. Ridge uses an inner grouped CV alpha search.

Model RMSE mean RMSE std RMSE CI low RMSE CI high MAE mean R2 mean
knn_k7 4.146 0.465 3.910 4.381 3.298 0.175
mean_baseline 4.722 0.414 4.512 4.931 3.833 -0.037
ols 3.502 0.643 3.177 3.827 2.716 0.396
ridge_alpha_grid 3.505 0.620 3.192 3.819 2.717 0.397

Bootstrap Uncertainty

Holdout metrics are bootstrapped by session to respect repeated pitches within the same held-out session.

Metric Estimate CI low CI high Bootstraps Unit
rmse 2.982 2.062 3.833 500 session
mae 2.401 1.807 3.015 500 session
r2 0.513 0.009 0.750 500 session

Feature-Set Comparison

This checks whether engineered composites add value beyond the raw metric inputs and whether simple interaction terms help.

Feature set Features RMSE mean RMSE std CI low CI high Delta vs best
raw_metric_inputs 21 3.182 0.581 2.888 3.476 0.000
raw_plus_engineered 28 3.192 0.534 2.922 3.463 0.010
engineered_interactions 12 3.254 0.702 2.899 3.609 0.072
engineered_metrics 7 3.505 0.620 3.192 3.819 0.323

Metric Ablation

Rows show how repeated grouped-CV RMSE changes when each engineered metric is removed from the ridge model. Positive delta means removing that metric made the model worse.

Feature removed Features RMSE mean MAE mean R2 mean RMSE delta
kinetic_chain_transfer_score 6 4.293 3.430 0.133 0.787
arm_speed_score 6 3.644 2.842 0.348 0.139
release_consistency_score 6 3.518 2.711 0.392 0.012
sequencing_efficiency 6 3.508 2.718 0.399 0.002
none 7 3.505 2.717 0.397 0.000
lead_leg_block_score 6 3.494 2.722 0.400 -0.012
lower_body_force_score 6 3.453 2.670 0.413 -0.052
hip_shoulder_separation_score 6 3.422 2.684 0.425 -0.084

Metric Correlations

Descriptive Pearson correlations show which raw and engineered biomechanics fields move with pitch velocity before multivariable modeling.

Feature Type Velocity corr Rows
elbow_transfer_fp_br raw_metric_input 0.691 411
kinetic_chain_transfer_score engineered_metric 0.656 411
shoulder_transfer_fp_br raw_metric_input 0.651 411
thorax_distal_transfer_fp_br raw_metric_input 0.645 411
lead_grf_mag_max raw_metric_input 0.420 403
lead_grf_z_max raw_metric_input 0.401 403
lower_body_force_score engineered_metric 0.356 411
max_torso_rotational_velo raw_metric_input 0.328 411
lead_leg_block_score engineered_metric 0.321 411
max_shoulder_internal_rotational_velo raw_metric_input 0.313 411
rotation_hip_shoulder_separation_fp raw_metric_input 0.305 411
hip_shoulder_separation_score engineered_metric 0.304 411
arm_slot raw_metric_input -0.301 411
max_rotation_hip_shoulder_separation raw_metric_input 0.289 411

Most Important Velocity Features

Permutation importance is measured as the increase in holdout RMSE after repeated shuffles of each metric. Intervals show stability across repeated permutations.

feature rmse_increase rmse_increase_std ci_lower ci_upper repeats
kinetic_chain_transfer_score 1.505 0.177 1.220 1.863 50
arm_speed_score 0.220 0.056 0.118 0.315 50
lower_body_force_score 0.093 0.087 -0.068 0.253 50
sequencing_efficiency 0.067 0.033 0.002 0.126 50
release_consistency_score 0.034 0.022 -0.005 0.078 50
lead_leg_block_score 0.004 0.007 -0.009 0.017 50
hip_shoulder_separation_score -0.041 0.055 -0.144 0.058 50

Model Coefficients

Coefficients are from standardized features in the ridge-regression velocity model.

feature coefficient alpha
kinetic_chain_transfer_score 2.616 10.000
arm_speed_score 0.916 10.000
hip_shoulder_separation_score 0.793 10.000
lower_body_force_score 0.695 10.000
sequencing_efficiency 0.415 10.000
release_consistency_score 0.250 10.000
lead_leg_block_score 0.075 10.000

Residual Diagnostics

Residual summaries by velocity band identify where the model is under- or over-performing.

Velocity band Rows Actual mph Mean residual MAE RMSE
80-85 41 82.49 -2.28 2.42 3.32
85-90 42 87.59 0.42 2.37 2.82
90-95 20 91.20 3.08 3.08 3.31
<80 16 78.41 -1.57 1.57 1.83

High-Velocity Error Check

This explicitly checks the 90+ mph region, where underprediction is the most baseball-relevant failure mode.

Group Rows Actual mph Predicted mph Mean residual MAE RMSE Underpredicted Overpredicted
all_pitches 119 85.20 85.53 -0.33 2.40 2.98 37.0% 63.0%
<90_mph 99 83.99 85.01 -1.02 2.26 2.91 24.2% 75.8%
90+_mph 20 91.20 88.12 3.08 3.08 3.31 100.0% 0.0%

Biomechanical Metric Dictionary

metric baseball_interpretation expected_direction
sequencing_efficiency Pelvis and torso speed with better peak timing. Higher should generally support velocity if timing is efficient.
hip_shoulder_separation_score Magnitude of hip-shoulder separation near foot plant and max separation. Higher can indicate useful rotational stretch, within athlete-specific limits.
kinetic_chain_transfer_score Pelvis-to-torso, thorax-to-arm, shoulder, and elbow transfer metrics. Higher suggests more energy moving through the throwing chain.
lead_leg_block_score Lead-knee extension and lead-leg force indicators. Higher can indicate a firmer front side and better rotational braking.
lower_body_force_score Ground-reaction force, rate of force development, and center-of-gravity speed. Higher reflects more lower-half force production.
arm_speed_score Shoulder internal rotation and elbow extension angular velocity. Higher is directly related to arm speed and pitch velocity.
release_consistency_score Within-session stability of arm slot, stride angle, and stride length. Higher means less mechanical variation within the athlete session.

Statcast Performance Bridge

The bridge summarizes how public pitch traits relate to outcomes. With a Baseball Savant CSV, whiff rate is computed per swing, chase rate per out-of-zone pitch, and hard-hit rate per batted ball.

Pitch Pitches Avg velo avg_release_extension avg_pfx_x avg_pfx_z Swings whiffs OOZ chases BIP hard_hits Pitcher RV Whiff Chase Hard hit
FF 7428 94.17 6.510851 -0.328829 1.324806 3560 707 3171 693 2667 653 -0.00 19.9% 21.9% 24.5%
SI 4072 93.36 6.397495 -0.623364 0.616812 1796 241 1686 391 1447 440 0.00 13.4% 23.2% 30.4%
SL 3497 85.68 6.374121 0.118336 0.156019 1709 568 1872 592 1060 291 -0.00 33.2% 31.6% 27.5%
CH 2597 85.63 6.411205 -0.553073 0.392307 1271 377 1564 493 816 196 -0.00 29.7% 31.5% 24.0%
ST 2076 82.17 6.315703 0.705747 0.123940 909 283 1184 337 585 128 -0.00 31.1% 28.5% 21.9%
FC 1909 89.61 6.397224 0.088229 0.712661 914 202 912 242 679 158 -0.01 22.1% 26.5% 23.3%
CU 1625 79.30 6.418277 0.481065 -0.836320 678 197 915 262 446 108 0.00 29.1% 28.6% 24.2%
FS 903 86.48 6.577741 -0.755249 0.258494 494 176 574 225 287 70 0.01 35.6% 39.2% 24.4%
KC 417 82.24 6.414388 0.553789 -0.893094 194 62 233 72 118 35 -0.01 32.0% 30.9% 29.7%
FA 98 64.63 4.548980 -0.736224 1.118061 37 3 50 7 34 11 -0.06 8.1% 14.0% 32.4%

Sample Manifest

Field Value
rows 25000
date_min 2025-04-24
date_max 2025-04-30
pitch_types 16
swings 11727
out_of_zone_pitches 12391
batted_balls 8257
run_value_rows 24966
pitcher_pitch_type_rows 1769
rate_denominators whiff/swing, chase/out-of-zone, hard-hit/batted-ball

Trait and Outcome Correlations

These Statcast correlations use the local capped Baseball Savant sample. A chunked multi-month or full-season sample would be the next analytical upgrade.

Outcome Trait Correlation
whiff release_speed -0.039
whiff release_extension 0.014
whiff pfx_x 0.037
whiff pfx_z -0.048
whiff plate_x 0.028
chase release_speed -0.067
chase release_extension 0.015
chase pfx_x 0.023
chase pfx_z -0.082
chase plate_x 0.020
hard_hit release_speed 0.026
hard_hit release_extension 0.003
hard_hit pfx_x -0.022
hard_hit pfx_z 0.019
hard_hit plate_x -0.019
run_value release_speed 0.009
run_value release_extension 0.002
run_value pfx_x -0.005
run_value pfx_z -0.006
run_value plate_x 0.004

Next Private-Data Extension

With team-owned, identity-linked motion-capture and game data, this same pipeline could test whether changes in a pitcher's biomechanical metrics precede changes in velocity, whiff rate, run value, or durability indicators.