Free signup + 7 days PRO included Create my account
Data Shop › MLB › Modeling Features
MLB · Machine learning · 2023 → 2025

33 pre-game features per game, ready for your model.

Pinnacle lines (first and last pre-game snapshot), starting pitchers, bullpen, 7-day form, matchups, park factor, weather — and the real scores to predict. Every column was audited for whether it was known before the game.

6,561Games
45Columns
3Seasons
0Missing values
mlb_modeling_features_2025.csv
05/13LAA @ SD10 runs7.50.322 / 0.314
06/01MIL @ PHI7 runs8.00.331 / 0.256
06/23NYY @ CIN7 runs10.00.316 / 0.313
07/03MIN @ MIA5 runs8.00.334 / 0.303
07/28AZ @ DET6 runs8.50.320 / 0.316
08/04TOR @ COL16 runs12.00.277 / 0.347
extract · 13 / 45 col.Figures measured on the delivered files — 2026-11-02.
Pricing

Choose your option

One purchase, one download: CSV + Parquet and a README documenting every column.

Instant download

Modeling Features

2023 → 2025, regular season.

€29
≈ 0.4 cent per game
  • 6,561 games, one file per season + a combined file
  • Column-by-column leakage table in the README
  • CSV + Parquet

Download link valid 72 h, 5 downloads

Buy — €29

MLB Complete Pack

All 5 datasets, all seasons.

€149
  • Full-Game Odds
  • First 5 Innings
  • First inning · NRFI
  • Modeling Features
  • Line Movements
See the pack
Secure payment StripeInstant download after paymentCSV + Parquet + detailed READMELicence your models, commercial too
Use cases

Inputs and targets in one file

Inputs and targets live in the same file. You pick the columns; the README tells you which ones are safe for a backtest.

Train a totals model

Pre-game features as inputs, total_runs as target.

df = pd.read_parquet("mlb_modeling_features_2023_2025.parquet")
X = df.filter(regex="^(line_|sp_.*xwoba|bullpen|vavg|evavg|park|temp)")
y = df.total_runs

Leak-free backtest

Prefer sp_*_xwoba_allowed (computed before game day) to sp_*_xera (end-of-season aggregate).

safe = df[df.sp_home_xwoba_pa >= 30]
safe[["sp_home_xwoba_allowed", "total_runs"]].corr()

First versus last snapshot

The total moves in about one game in two; F5 and run line rarely move. Our first snapshot is not the market opening line.

(df.line_ft_current != df.line_ft_open).mean()
Transparency

Audited column by column: known before the game, or not.

Rolling windows (velocity, exit velo, HR over 7 days, bullpen over 14 days, lineup versus the starter) close strictly before game day. The starter's xwOBA allowed is season-to-date, strictly before the game.

Two families are not leak-free and we say so: the starter's xERA is an end-of-season aggregate, and weather is what was observed on game day, not the forecast.

No surprises

What's in the file — and what isn't

Safe for a backtest

  • Pinnacle lines (first and last pre-game snapshot)
  • 7-day form
  • Lineup versus the starter's throwing hand (L/R), 14 days
  • Starter's xwOBA allowed, season-to-date before the game

Handle with care

  • sp_*_xera and xera_diff: end-of-season aggregate
  • temp_c, wind_kph: observed, not forecast
  • bullpen_era_*: a proxy (home runs allowed from the 6th inning, 3 innings assumed per game day), not official ERA
  • Gaps < 2% and starters under 30 prior PA: filled with the league average (sp_*_xwoba_pa shows it)
  • score_*, total_runs*, margin: these are the targets
  • 2026 season: not included
Columns

Every column, with its fill rate

Measured on the delivered file. 100% = no missing values.

Game

MLB game id, date, teams, scheduled start

game_pk100 %game_date100 %home_team100 %away_team100 %commence_utc100 %

Pinnacle lines

Total, F5 and run line: first and last pre-game snapshot

line_ft_open100 %line_ft_current100 %line_f5_open100 %line_f5_current100 %spread_open100 %spread_current100 %

Starting pitchers

Identity, hand, xERA (season aggregate), xwOBA allowed before the game and PA count

sp_home_id100 %sp_home_name100 %sp_home_hand100 %sp_home_xera100 %sp_away_id100 %sp_away_name100 %sp_away_hand100 %sp_away_xera100 %xera_diff100 %sp_home_xwoba_allowed100 %sp_home_xwoba_pa100 %sp_away_xwoba_allowed100 %sp_away_xwoba_pa100 %

Bullpen & form

14-day bullpen proxy; 7-day velocity, exit velo and HR of the team's games (both teams); lineup xwOBA versus the starter's hand, 14 days

bullpen_era_home100 %bullpen_era_away100 %vavg_home100 %vavg_away100 %evavg_home100 %evavg_away100 %hr_7d_home100 %hr_7d_away100 %woba_vs_sp_home100 %woba_vs_sp_away100 %

Environment

Park factor, observed weather, roof

park_pf100 %temp_c100 %wind_kph100 %dome100 %

Targets

Real scores (full game and F5), totals, margin

score_home_f5100 %score_away_f5100 %score_home100 %score_away100 %total_runs100 %total_runs_f5100 %margin100 %
Preview

The file, exactly as you'll get it

Six real rows, main columns. Download 50 free rows with every column to check it fits your pipeline.

mlb_modeling_features_2025.csv — extract Download 50 free rows
game_dateaway_teamhome_teamline_ft_currentsp_away_namesp_home_namesp_away_xwoba_allowedsp_home_xwoba_allowedbullpen_era_awaybullpen_era_homepark_pftemp_ctotal_runs
2025-05-13LAASD7.5José SorianoDylan Cease0.32240.31423.462.50.9316.310
2025-06-01MILPHI8.0Jose QuintanaRanger Suárez0.33140.25551.381.51.0319.57
2025-06-23NYYCIN10.0Allan WinansNick Lodolo0.31620.31340.921.51.0833.87
2025-07-03MINMIA8.0David FestaEury Pérez0.33430.30350.691.00.9230.35
2025-07-28AZDET8.5Eduardo RodriguezTroy Melton0.32030.31621.331.80.9727.36
2025-08-04TORCOL12.0Eric LauerTanner Gordon0.27690.34722.771.251.3234.716
Questions

Before you buy

Why keep xERA if it leaks?

For descriptive analysis. For a backtest use sp_*_xwoba_allowed: the alternative computed strictly before each game.

How do I get the file?

Right after payment a download link appears on screen and is emailed to you. The archive contains CSV and Parquet files plus a README documenting every column.

Can I use it in a commercial product?

Yes for your models, analyses and tools, commercial ones included. Reselling or redistributing the files themselves is not allowed.

A question before buying?

Email [email protected] — the founder answers, usually the same day.

Also available

Complete your data

45 columns, 6,561 games, no empty cells.

Choose my option
Figures measured on the delivered files — 2026-11-02. Not affiliated with the leagues mentioned.
GAMBLING PROHIBITED FOR MINORS. Gambling carries risks: debt, addiction, social isolation. Help & responsible play · BeGambleAware · GamCare: 0808 802 0133 · NCPG Helpline: 1-800-522-4700