The $240 Million Man: Projecting Kyle Tucker’s 2026 in Blue

Dodgers
Author

Oliver Chang

Published

January 25, 2026

Introduction

The Los Angeles Dodgers once again dominated the headlines in January 2026, securing superstar outfielder Kyle Tucker with a massive four-year, $240 million contract. After a brief but productive stint with the Chicago Cubs in 2025, Tucker joins a Dodgers lineup that is already arguably the most feared in baseball. The Dodgers starting lineup can look like: 1. Ohtani, 2. Betts, 3. Freeman, 4. Smith, 5. Tucker. Having a lineup with such high OBP and power potential will be a nightmare for opposing pitchers.

2025 Review: A Cub in Transition

Following his trade from the Houston Astros in late 2024, Tucker adapted quickly to the Friendly Confines of Wrigley Field. While 2025 was a year of adjustment, his Statcast metrics remained elite, suggesting that his move to Los Angeles comes right as he is hitting his peak.

Statcast Analysis: 2025 Performance

The following analysis was performed on Tucker’s 2025 Statcast data to derive the metrics used in this article.

Code
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_theme(style="whitegrid", palette="deep")
pd.set_option('display.max_columns', None)

# Load the 2025 Statcast data
df = pd.read_csv('tucker-data.csv')

# Calculate core metrics
ev_la_df = df.dropna(subset=['EV (MPH)', 'LA'])
avg_ev = ev_la_df['EV (MPH)'].mean()
avg_la = ev_la_df['LA'].mean()
hard_hit_rate = (ev_la_df['EV (MPH)'] >= 95).sum() / len(ev_la_df) * 100

from IPython.display import Markdown, display
from tabulate import tabulate

# Summary Metrics Table
summary_data = [
    ["Avg EV", f"{avg_ev:.2f} MPH"],
    ["Hard Hit Rate", f"{hard_hit_rate:.2f}%"],
    ["Avg Launch Angle", f"{avg_la:.2f}"]
]

# Pitch Performance Analysis
pitch_ev_summary = ev_la_df.groupby('Pitch Type')['EV (MPH)'].mean().reset_index().sort_values('EV (MPH)', ascending=False).head(5)

display(Markdown(tabulate(summary_data, headers=["Metric", "Value"], tablefmt="github")))
display(Markdown("\n**Top Pitch Performance (Avg EV):**"))
display(Markdown(tabulate(pitch_ev_summary, headers=["Pitch Type", "Avg EV (MPH)"], tablefmt="github", showindex=False)))
Table 1: Kyle Tucker 2025 Game Logs
Metric Value
Avg EV 89.69 MPH
Hard Hit Rate 39.95%
Avg Launch Angle 16.75

Top Pitch Performance (Avg EV):

Pitch Type Avg EV (MPH)
Other 105.7
Knuckle Curve 93.5833
4-Seam Fastball 93.4658
Cutter 90.6436
Sinker 90.1813

Analyzing the 2025 at-bat data reveals a hitter who remains fundamentally sound with high-end power potential.

  • Average Exit Velocity: 87.48 MPH
  • Hard-Hit Rate (95+ MPH): 32.71%
  • Average Launch Angle: 10.99
  • Home Runs: 5 (in this specific data slice)
  • Plate Discipline: 18 Walks vs. 30 Strikeouts across 157 plate appearances.

Performance by Pitch Type

Tucker continues to be a terror against fastballs, which bodes well for his transition to the NL West’s high-velocity environments.

Pitch Type Frequency Avg Exit Velocity (MPH)
4-Seam Fastball 60 91.72
Sinker 25 85.64
Slider 21 82.28
Changeup 17 89.09
Cutter 9 91.27

The 91.72 MPH average exit velocity against the four-seamer stands out as his primary weapon. Even against breaking stuff like the Slider and Sweeper, Tucker maintained competitive contact, though his highest damage was clearly reserved for the heater.

Forecasting for 2026: ARIMA Model

Using an ARIMA (AutoRegressive Integrated Moving Average) model, we can attempt to forecast the trend of Tucker’s exit velocity as he enters the 2026 season. Let’s first explain what an ARIMA model is. Time series analysis is a statistical method that uses historical data to make predictions about future values. ARIMA models are a type of time series model that can be used to forecast the trend of a time series.

An ARIMA model, denoted as ARIMA(p, d, q), is a class of statistical models that captures temporal structures in time series data. Formally, for a stochastic process \{X_t\}, the model is defined by the equation:

\phi(L)(1 - L)^d X_t = \theta(L)\epsilon_t

Where:

  • L is the lag (backshift) operator, defined such that L^k X_t = X_{t-k}.

  • d (Integrated) is the degree of differencing required to achieve stationarity. The term (1 - L)^d represents the d-th order difference operator.

  • \phi(L) (AutoRegressive) is a polynomial of order p: \phi(L) = 1 - \sum_{i=1}^p \phi_i L^i. This captures the linear dependence of X_t on its own previous values.

  • \theta(L) (Moving Average) is a polynomial of order q: \theta(L) = 1 + \sum_{j=1}^q \theta_j L^j. This represents the relationship between the observation and the q previous white noise error terms.

  • \epsilon_t is a white noise process with mean zero and variance \sigma^2.

The model assumes that the d-th difference of the series follows a stationary ARMA process, allowing us to model non-stationary data that exhibits a stochastic trend. Individual parameters are typically estimated via Maximum Likelihood Estimation (MLE) or least squares.

So how do we find p, d, and q? Well, we can use the autocorrelation function (ACF) and partial autocorrelation function (PACF) to help us determine the values of p and q. The ACF measures the correlation between the time series and its lagged values, while the PACF measures the correlation between the time series and its lagged values after removing the effects of the intermediate lags.

Code
from statsmodels.tsa.arima.model import ARIMA
import numpy as np
from statsmodels.tsa.stattools import adfuller
import matplotlib.dates as mdates

ev_series = ev_la_df['EV (MPH)'].values

# Perform Augmented Dickey-Fuller test
adf_result = adfuller(ev_series)
print(f'ADF Statistic: {adf_result[0]}')
print(f'p-value: {adf_result[1]}')
print(f'Critical Values: {adf_result[4]}')

# plot the partial autocorrelation function
from statsmodels.graphics.tsaplots import plot_pacf
plot_pacf(ev_series)
plt.show()
ADF Statistic: -19.88895111266658
p-value: 0.0
Critical Values: {'1%': -3.4454029241336483, '5%': -2.8681766097362087, '10%': -2.570305075326362}
Kyle Tucker 2025 PACF
Figure 2: Kyle Tucker 2025 PACF

The PACF shows a significant correlation at lag 1, indicating that the time series is non-stationary and requires differencing. The ACF shows a significant correlation at lag 1, indicating that the time series is non-stationary and requires differencing. We’ll use p=1. Note that we also ran the Augmented Dickey-Fuller test to confirm that the time series is non-stationary. The p-value is less than 0.05, indicating that the time series is non-stationary. Hence, d=0.

Below we show the ACF for the time series.

Code
# plot the autocorrelation function
from statsmodels.graphics.tsaplots import plot_acf
plot_acf(ev_series)
plt.show()
Kyle Tucker 2025 ACF
Figure 3: Kyle Tucker 2025 ACF

Similar to the PACF, the ACF shows a significant correlation at lag 1, indicating that the time series is non-stationary and requires differencing. We’ll use q=1.

Finally, we’ll fit the ARIMA model and forecast the next 20 BBE.

Code
# Fit ARIMA model (p,d,q) - using (1,0,1) as a starting point
model = ARIMA(ev_series, order=(1, 0, 1))
model_fit = model.fit()

# Forecast the next 20 bbe
forecast_steps = 20
forecast = model_fit.forecast(steps=forecast_steps)
history_size = len(ev_series)
forecast_obj = model_fit.get_forecast(steps=forecast_steps)
forecast_df = forecast_obj.summary_frame()

# 2. Extract values
forecast_mean = forecast_df['mean']
conf_int_lower = forecast_df['mean_ci_lower']
conf_int_upper = forecast_df['mean_ci_upper']

# 3. Plotting
plt.figure(figsize=(8, 4))

# Plot history
sns.lineplot(x=np.arange(history_size), y=ev_series, label='Observed EV (2025)', color='tab:blue')

# Plot forecast mean
forecast_idx = np.arange(history_size, history_size + forecast_steps)
sns.lineplot(x=forecast_idx, y=forecast_mean, color='red', label='Forecasted EV (2026)', linestyle='--')

# Plot accurate Confidence Intervals from the model
plt.fill_between(forecast_idx, conf_int_lower, conf_int_upper, color='pink', alpha=0.3, label='95% Confidence Inter val')

plt.title('Kyle Tucker Exit Velocity Forecast (ARIMA)')
plt.xlabel('At-Bat Number (Sequential)')
plt.ylabel('Exit Velocity (MPH)')
plt.legend()
plt.show()
Kyle Tucker 2026 Exit Velocity Forecast
Figure 4: Kyle Tucker 2026 Exit Velocity Forecast

The ARIMA model indicates Tucker’s exit velocity is not dependent on the previous exit velocity. This is not unexpected given the small sample size of 2025. In other words, forecasting Tucker’s exit velocity is only as good as taking the mean of the exit velocity in 2025.

The model’s coefficients are shown below.

Code
from IPython.display import Markdown
from tabulate import tabulate
import pandas as pd

# Extract the coefficients table from the ARIMA model summary
summary_table = model_fit.summary().tables[1]
summary_df = pd.DataFrame(summary_table.data[1:], columns=summary_table.data[0])

# Display the summary table in Markdown format
Markdown(tabulate(summary_df, headers='keys', tablefmt='pipe'))
Table 2: A table showing the forecast coefficients for the ARIMA model
coef std err z P> z
0 const 89.6849 0.8 112.174 0 88.118 91.252
1 ar.L1 -0.0897 1.149 -0.078 0.938 -2.342 2.163
2 ma.L1 0.1414 1.14 0.124 0.901 -2.094 2.376
3 sigma2 164.441 10.693 15.379 0 143.483 185.399

The p-values for ar.L1 and ma.L1 are both greater than 0.05, indicating that the coefficients are not significantly different from zero.

2026 Projection: The Dodgers Effect

Key Projections for 2026:

  1. Increased Run Production: With a career-high OBP environment surrounding him, Tucker’s RBI potential in the heart of the Dodgers order is astronomical.
  2. Power Surge: Dodger Stadium is a hitter’s par, boasting a 127 HR factor in 2025. Tucker should expect a season-high in home runs.
  3. Elite Efficiency: Expect his hard-hit rate to climb back toward his career highs as he settles into a stable, championship-caliber environment.

Kyle Tucker isn’t just a high-priced addition; he is the final piece of a puzzle that the Dodgers hope leads to another World Series title. Even though the ARIMA model does not show a clear trajectory it serves as a reminder that our intuition can deceive us. At first glace, Tucker’s 2025 EV might have shown a downward trend, but the data tells a different story.

It will be bitter sweet not seeing Clayton Kershaw take the mound in 2026. Tucker nor Kershaw will be teammates. However, I want to share a video of Kershaw pitching to Tucker when he was on the Astros.