← Blandalytics

Lineup Sim

Any 2026 lineup against any 2026 pitcher, simulated plate appearance by plate appearance and ranked against all 30 teams. Or play two lineups against each other in the Game Sim.

Lineup

Sim settings

Adding 200 PA of MLB average is the most predictive per-PA option (How it works: Small samples and prediction).

loading 2026 data…

Lineup optimizer

Keep as is
How it works

Hitters

Every 2026 regular-season plate appearance, from MLB's play-by-play, is sorted into one of eleven outcomes: strikeout, walk, hit by pitch, single, double, triple, home run, or a ball in play that wasn't a hit, split by ground ball, line drive, fly ball and popup. A hitter's rates are how often each one happened. Intentional walks, sacrifice bunts and catcher's interference are left out; they are a manager's or a fielder's choice more than the hitter's.

Lineup spots

A team's spot is everyone who batted there in 2026, pooled, pinch hitters included. The MLB lineup pools all 30 teams. Most-used batting order is the exact 1–9 order a team started most often, from FanGraphs' RosterResource Lineup Tracker (ties go to the one used most recently); its hitters bat at their own 2026 rates. Any slot can be changed to any 2026 hitter or any team's spot. Few orders were used more than a handful of times, which is why the spots are the default.

A game

The lineup bats until it makes 27 outs (nine innings), turning over as it goes. Before each plate appearance with runners on, the running game happens: steals, caught stealing, pickoffs, wild pitches, passed balls and balks, at the rates they happened in 2026 in that base-out state. If that ends the inning, the same hitter leads off the next. Then the hitter's outcome is drawn from the hitter's rates, and where the runners and the hitter end up is drawn from what actually happened on that outcome, in that base-out state, across the league. Double plays, sacrifice flies, fielder's choices, errors, extra bases taken and runners thrown out all come along at their 2026 rates.

Baserunning

Baserunning is league average for every runner, for now. The engine keeps track of which hitter is on which base, so runner-specific speed, steal attempts and advancement can replace the league tables later.

Stats

R, H, HR, K and BB are per nine innings (27 outs). AVG, OBP and SLG are the usual ones; wOBA uses FanGraphs' 2026 weights (). In the lineup table, wOBAcon is wOBA on contact: the same weights for hits over every ball in play, homers included, so strikeouts, walks and hit-by-pitches leave it out. BB counts unintentional walks only and OBP leaves intentional walks out, in the simulation and in the team and MLB numbers it is compared with.

The comparison

Teams' 2026 actual is each team's real batting in innings 1–9, per 27 outs. Teams' lineup spots, simulated runs each team's nine spots through the same simulation, so the comparison is like for like. Rank is where this lineup would place among the 30 teams; for strikeouts, fewer ranks higher.

Contact vs power

Take every 2026 hitter with 200 or more plate appearances and remove what wOBA explains about each of the eleven outcome rates. What's left is how hitters with the same wOBA differ, and most of it () runs along one line: strikeouts, walks and homers one way, singles and balls in play the other. That line is the contact–power axis. Moving an MLB spot along it changes its K%, BB%, AVG and SLG but not its wOBA, because the axis gives up exactly as much wOBA in one outcome as it adds in another. Steps are standard deviations of 2026 hitters along the axis, and the sliders reach ±: as far as 2026 regulars (300+ PA) go toward the nearer of the two ends, so every setting on the sliders is one some regular actually has. AVG and SLG beside the sliders estimate sacrifice flies at the league rate; the simulation's own numbers are exact. With so little difference between settings, 50,000 or more games keeps noise below the effect.

Lineup optimizer

The optimizer doesn't simulate. It solves for expected runs exactly, with a Markov chain over who's up, the outs and the bases, built from the same running-game and advancement tables the simulation draws from. That gives the average the simulation would reach over endless games (), in about a millisecond per lineup. Batting order: swaps of two spots, the best one each time, until none helps. Contact–power settings: with Keep the lineup's average setting, spots trade contact for power with each other in moves of 1, 0.5, 0.2 or 0.1 while the total stays put; with Free, each spot takes its own best setting, and in 2026 that is the contact end almost everywhere, since outs on balls in play move runners and strikeouts don't. The two searches alternate until neither helps. They are local searches, checked against brute force on smaller problems. Spots under Keep as is keep their hitter and setting.

Opposing pitcher

With a pitcher picked, every plate appearance is a matchup, worked out by log5 (the odds-ratio method) for each of the eleven outcomes: the hitter's rate times the pitcher's, divided by the league's, then all eleven scaled to add up to 1. A pitcher who strikes out more hitters than the league raises every hitter's strikeout rate in proportion, a league-average pitcher changes nothing, and a league-average hitter takes on the pitcher's 2026 rates exactly. The pitcher's rates are everything hitters did against him in 2026, the same eleven outcomes, so his ground-ball and fly-ball outs carry through to double plays and sacrifice flies; Small samples adds MLB-average batters faced to his line as it adds plate appearances to a hitter's. He pitches says who pitches when. All nine innings is him alone. Average start is as many outs as his 2026 starts averaged, rounded to the nearest out, then the bullpen: his team's (everyone who pitched for it in 2026 without starting the game), or with then MLB bullpen, every 2026 reliever's, who struck out . Bullpen day has him open for a typical opener's outing, then his team's bullpen. As opener, with follower has him open, then a follower for a typical follower's outing, then his team's bullpen. The follower is the pitcher picked in the Follower box, where his team's bulk arms (by outings of three innings or more, starts included) come first; with none picked, it's MLB-average bulk relief: . An opener is a game's starter who recorded six outs or fewer and pitched mostly in relief (under half his appearances were starts), which leaves out regular starters knocked out early: . His follower is the next pitcher, when he went three innings or more: . Typical is the median. An MLB-average RHP or LHP has MLB's bullpen. Pitching changes come between plate appearances. The lineup table shows each hitter against him. In the results, Teams' lineup spots vs him puts every team's spots against the same pitching, worked out exactly with the optimizer's Markov chain; the runs-per-game chart's MLB line is MLB's spots against him, simulated over 20,000 games; and the contact–power curve is exact against him too. Because log5 scales each outcome by the pitcher's rate, a pitcher changes which end of the contact–power axis pays. Against MLB-average pitching the contact end scores a little more; across the 153 pitchers with 15 or more 2026 starts, pitching all nine innings, contact comes out ahead against nearly every high-strikeout starter and power against nearly every low-strikeout one, or one who gives up homers. So the optimizer's answer can change with the pitcher.

Hypothetical pitcher

Opening the pitcher box lists an MLB-average RHP and LHP, every 2026 pitcher of that hand pooled, and picking one brings up Pitcher quality, a slider from Scrub to Ace with average in the middle. Its steps are standard deviations of 2026 pitchers' talent, measured by wOBA allowed: across the pitchers who faced 100 or more batters, wOBA allowed spread , and less what luck alone spreads it (each pitcher's batters faced, drawn at the league's rates), talent spreads . Each model moves him its own way, the same distance in wOBA allowed. Per-PA (observed) moves his eleven rates, and each platoon cell's, the way 2026 pitchers' rates went with their talent, luck taken out the same way: one step toward the Ace end is per 100 batters. Per-Pitch (modeled) moves his ratios at every step of the count chain the way the per-pitch model's pitchers' ratios went with their wOBA allowed, as far as the per-PA step goes: . The slider reaches ±, about as far as 2026 regulars (300 or more batters faced, each one's wOBA allowed shrunk for luck) go: the Ace end is , and the Scrub end . Starts, the modeled hook and the bullpen stay the MLB-average pitcher's.

Platoon splits

Once a pitcher is picked, his hand matters. Every 2026 plate appearance is also counted by the pitcher's hand and the side the batter hit from (switch hitters by the side they batted from), so log5 uses the hitter's rates against that hand, the pitcher's against that side, and the league's for that same matchup, say left-handed batters against right-handers, as its baseline. A pooled lineup spot is split the same way, its left- and right-handed batters each matched against the pitcher in the shares they batted. A bullpen (or bulk relief) is its relievers pooled, right- and left-handed in the shares they pitched (MLB's: left-handed), each with their own splits. Each player's 2026 splits uses every player's own split rates; with Small samples, the MLB-average plate appearances added are for that matchup. A split is a smaller sample than a whole season, so the lineup table counts a hitter's plate appearances against the pitcher's hand and flags thin ones. League-average platoon gaps keeps each player's overall rates and moves them by the league's gap between that matchup and the mix of matchups the player had, which is steadier for part-time players. Off uses overall rates, as the page did before. In 2026 the league's same-side matchups ran . Type RHP or LHP in the pitcher box for an MLB-average right- or left-hander: every 2026 pitcher of that hand pooled, so each hitter bats at his own split.

Per-Pitch (modeled)

The toggle at the top of the results switches how a plate appearance is drawn. Per-PA (observed), the default, is everything above: each outcome at the hitter's and pitcher's 2026 rates, by log5. Per-Pitch (modeled) builds the plate appearance a pitch at a time, from every tracked 2026 pitch. In each of the 12 counts a pitch goes through a chain of steps: in the zone or not; swing or take; a taken pitch's ball, called strike or hit by pitch; a swing's contact or whiff; contact in play or foul; and in play, a home run or not, then the other seven batted-ball outcomes. Each step's chances are the league's in that count (and zone, and platoon matchup), times the hitter's and the pitcher's ratios to the league, the log5 of each step. Each ratio is shrunk toward league average by its own amount of league-average pitches, from as few as 30 (a hitter's swing decisions settle fast) to as many as 3,000 (how often he sees strikes, and his own platoon splits), the amounts that best predicted the second half of 2026 from the first. Walking the counts (ball four is a walk, strike three a strikeout, a two-strike foul leaves the count as it was) gives the same eleven outcomes, so the game, the running game, the optimizer and the comparisons work as before. In that test it predicted plate appearances better than the per-PA rates, most of all for hitters with little history; strikeouts and walks gained the most, home runs not at all. With it, Small samples doesn't apply, a contact–power setting moves the outcomes the counts give him against MLB-average pitching and, as log5 does with the per-PA rates, scales his chances against a pitcher by the same proportions (so a power setting costs more strikeouts against a strikeout pitcher), and the teams' lineup spots and MLB's are worked out against the same pitching (exactly, and the runs chart's MLB line over 20,000 games) even with no pitcher picked. Each share image's footer says which model made it.

Modeled hook

He pitches: Modeled hook leaves the starter in until a model of 2026's managers takes him out, then his team's bullpen. After each of his plate appearances (and an inning ended on the bases), the chance he's gone before the next batter comes from a model fit on every start from 2022 to 2026 (LightGBM; for 2026, fit on the seasons before it, it beat pitch count, outs and inning alone by about a fifth in log loss). What it looks at: his pitches so far and in each inning (the most in an inning, the inning before), batters faced, outs, hits, walks, homers, strikeouts and runs allowed, baserunners lately, the inning and outs, runners on, times through the order, the score, and before the game, the most pitches in his previous three and five starts and their mean, starts so far, his team's starters' average outs and its bullpen's recent load, rest, recent outings and time since an injured-list activation. A simulated start goes in as a typical start of his (the medians, over his 2026 starts, of what he went in with), at normal rest and not just back from the injured list. Each plate appearance's pitch count is drawn from 2026's pitches per plate appearance for its outcome (4.9 for a strikeout, 5.8 for a walk, about 3.4 for a ball in play); his team's runs, which the game doesn't play, come in at the league's rate. Across 2026's 153 pitchers with 15 or more starts, simulated against MLB's lineup spots, it averages 15.6 outs and 85 pitches a start against an actual 16.0 and 87, and tracks who goes deep (r = .84). The results say how long he lasted in these games. The exact numbers (the teams' comparison, the contact–power curve, the pitcher's effect in runs) average over where the simulation took him out: MLB's spots' games for the comparisons, this lineup's for its own; the optimizer takes him out at this lineup's average. Only the starter has a modeled hook; the bullpen is his team's relievers pooled, as before.

Small samples and prediction

In a backtest (fit on 2026 games before June 26, every later game predicted from its starting nine against its starter and the opposing bullpen), Add 200 PA of MLB average was the most predictive per-PA option; 2026 rates as they are predicted worse than the league average, since a small sample's rates are far from what comes next. The per-pitch model, which shrinks step by step, did as well as the best per-PA option and was the best calibrated.

Not modeled yet

the times-through-the-order penalty, managers' bullpen matchups (relievers come in at the league's hand mix, not to face particular hitters), park, runner speed, intentional walks, bunts, pinch hitters and extra innings. Results use a fixed random seed, so the same lineup always gets the same numbers and two orders of the same nine hitters face the same luck.

Data

MLB Stats API play-by-play (); lineups and wOBA weights from FanGraphs.