iTranslated by AI
Exploring Why Pitchers with the Same Arm Speed Have a 10 mph Velocity Gap Using Motion Capture
What I Found (Starting with the Conclusion)
Among pitchers with nearly identical arm speeds (24-26 m/s), ball velocity can differ by up to 13 mph (approx. 20 km/h).
This difference cannot be explained by "arm strength." So, what is different?
By analyzing professional-level motion capture data for 61 pitchers, we found that five factors representing "how the body is used" explain the differences in ball velocity.
→ GitHub: https://github.com/yasumorishima/baseball-cv
Data Used
Driveline OpenBiomechanics Project (OBP)
- Subject: C3D motion capture data for 61 pitchers
- Number of markers: 45 locations across the body (shoulders, elbows, wrists, hips, knees, heels, etc.)
- Sampling rate: 360Hz (measured 360 times per second)
- Ball velocity range: 71.3-93.1 mph (approx. 115-150 km/h)
ezc3d is used to read C3D files (I started this project because I submitted a bug fix PR for this library).
Creating a "Body Efficiency" Metric
First, it's assumed that there is a strong correlation (r=0.67) between ball velocity and arm speed. It's obvious that pitchers with faster arms throw faster pitches.
Next, we calculate the "difference from ball velocity expected based on arm speed."
# Linearly predict ball velocity from arm speed (peak_wrist_linear_speed)
lm = LinearRegression().fit(df[['peak_wrist_linear_speed']], df['pitch_speed_mph'])
# Actual ball velocity - Predicted ball velocity = "Body Efficiency"
df['body_efficiency'] = df['pitch_speed_mph'] - lm.predict(df[['peak_wrist_linear_speed']])
A positive body_efficiency indicates a pitcher whose pitches are fast relative to their arm speed (meaning they use their body well), while a negative value indicates a pitcher whose arm is fast but doesn't produce high ball velocity (meaning they rely too much on their arm).
We divided pitchers into five groups (Q1-Q5) using this metric. Q1 is the group with "slow ball velocity relative to arm speed (inefficient)," and Q5 is the group with "fast ball velocity relative to arm speed (efficient)."
Graph 1: Overview of Body Efficiency

This graph consists of three panels.
Left Panel (Scatter Plot): The horizontal axis represents arm speed (m/s), and the vertical axis represents ball velocity (mph). You can see that ball velocity varies even with the same arm speed (vertical alignment). This is the theme of this article.
Center Panel (R² Stacked): Shows how much more of the ball velocity can be explained by the model when each factor is added one by one. The higher the bar, the more the "explanatory power has increased."
Right Panel (Q1 vs Q5 Comparison): Compares the "deviation from the average" for each metric between the low body efficiency group (Q1) and the high body efficiency group (Q5) (0=same as average, positive=favorable for ball velocity improvement, negative=unfavorable). Longer bars indicate greater differences between the two groups.
Five Factors and Their Meanings
| Factor | R² | Physical Meaning |
|---|---|---|
| Arm Speed + Height | 0.473 | Baseline (faster arm, taller pitcher means faster) |
| + Stride (translation) | 0.477 | Stride length: body's forward movement |
| + Leg Lift (elasticity) | 0.522 | Knee height before stride |
| + Arm Chain (whip) | 0.562 | Whether the body drives the elbow |
| + Knee Smoothness | 0.648 | Smoothness of lead leg movement (highest contribution) |
R²=0.648 means that when modeled with these five factors, approximately 65% of the variance in ball velocity can be explained. This is an 18-point improvement from the approximately 47% explained by arm speed alone.
Explanation of Each Factor
Stride (translation): How far forward the lead foot moves before landing. A longer stride means greater weight transfer, making it easier for the body's "translational energy" to transfer to the arm.
Leg Lift (elasticity): The height of the knee before pitching. Lifting the knee higher is thought to accumulate more elastic energy in the hip joint, increasing power during the stride.
Arm Chain (whip): The ratio of "elbow speed ÷ wrist speed." A lower ratio indicates that the "body is pulling the elbow to accelerate it," representing a body-driven throw. Conversely, a higher ratio indicates the arm is swinging independently.
Knee Smoothness: A numerical representation of the "smoothness" of the lead leg's knee movement. It calculates the fluctuation (irregularity of movement) in the knee's 3D trajectory, with lower values indicating smoother knee movement.
Why Does "Knee Smoothness" Matter?
While it might seem strange at first glance, there's an interesting statistical phenomenon behind this.
- Overall: r=+0.12 (Pitchers with faster arm speeds tend to have more intense whole-body movements, and thus greater knee instability.)
- When arm speed is controlled: r=−0.45*** (Excluding the difference in arm speed, pitchers with smoother knees tend to have higher ball speeds.)
In other words, it's an indicator whose effect only becomes apparent after removing the influence of arm speed.
Hypothesized mechanism: Smooth knees → Efficient pelvic rotation → Higher pelvis/arm speed ratio (0.057→0.067, approx. 17% difference) → The whole body's "pulling" chain effect on the arm works effectively.
Graph 2: Specific Differences Between Q1 and Q5

Comparing the low body efficiency group (Q1) and the high body efficiency group (Q5):
| Indicator | Q1 (Inefficient) | Q5 (Efficient) |
|---|---|---|
| Arm Speed | 24.73 m/s | 24.69 m/s |
| Pitch Speed | 79.1 mph | 89.3 mph |
| Difference | — | +10.2 mph |
Despite almost identical arm speeds (a difference of 0.04 m/s), the pitch speeds differ by 10.2 mph (approx. 16 km/h).
The bars in the graph show how much each indicator deviates from the overall average (0=same as average, positive=favorable for increased pitch speed, negative=unfavorable). Q5 shows favorable trends in all items: stride, leg lift, arm whip, and knee smoothness, while Q1 shows the opposite.
Skeletal GIF: 10mph Difference with Same Arm Speed

Left (Q1): Arm speed 26.56 m/s → 80.8 mph (Stride 0.30m)
Right (Q5): Arm speed 24.96 m/s → 91.8 mph (Stride 0.89m)
The red part is the lead leg (striding foot). The Q5 pitcher on the right clearly takes a longer stride, indicating that they are throwing with their entire body. The orange star marks the landing point.
Since the GIFs are synchronized to the landing timing at the same frame rate, the difference in stride length can be directly compared.
Root Cause: Why is Q1's Stride Shorter?
The difference in body efficiency stems from stride length, but we also analyzed why Q1's stride is shorter.
We focused on the ankle movement just before landing (ankle braking). If the ankle's ability to stop forward motion at landing is weak, momentum is not efficiently transferred to the core and arm.
- Q1: Ankle brake ≈ 0.06 m/s² (almost no brake)
- Q5: Ankle brake ≈ 3.58 m/s² (strong brake)
Correlation between ankle_braking → stride: r=+0.55* (significant)
Furthermore, there was a difference in knee lift (leg lift factor):
- Q1: Max knee flexion angle 85.4° (shallow lift)
- Q5: Max knee flexion angle 76.0° (deep lift)
Thus, the chain of events is as follows:
Insufficient knee lift → Short stride
Weak ankle brake → Short stride
↓
Smaller weight transfer
↓
Weaker arm whip
↓
Lower pitch speed despite same arm speed
Summary
- Among pitchers with similar arm speeds (24-26 m/s), pitch speed can differ by up to 13 mph.
- When pitchers were classified by "body efficiency" (the residual from pitch speed predicted by arm speed), five body movement factors explained the difference in pitch speed (R²=0.648).
- The most explanatory factor was "knee smoothness" (+0.087), whose effect became apparent only after excluding the influence of arm speed.
- As a root cause, it was suggested that ankle braking and knee lift might causally affect pitch speed through stride length.
This result is consistent with biomechanical insights that "how the entire body chain is designed" determines pitch speed, rather than just "having a fast arm."
→ GitHub: https://github.com/yasumorishima/baseball-cv
Data: Driveline OpenBiomechanics Project (CC BY-NC-SA 4.0, non-commercial, professional sports organization restricted)
ezc3d: pyomeca/ezc3d (MIT License)
Discussion