Baseball reports for useful questions

Baseball is a truly beautiful game that defies time; a game in which no matter how poorly you have played you can get hot in the ninth and the game does not end until your last out. It is a game of numbers, but not a game of numbers alone. It is a game of deep history, of strange twists and of human accomplishment. It is a sport where the greatest heroes are not necessarily good people and where the most important numbers are not easy to find. And it's a sport where sometimes by digging into the numbers, you can find truths about those heroes and those accomplishments that you may not have found out otherwise.

But the most beautiful part of baseball is that you can enjoy it to whatever level you prefer. Are you in the mood to spend a nice summer afternoon outside in a lively environment with a beer? Baseball provides. Are you in the mood to frantically keep score with a pencil and scorecard trying to keep up with the numbers and second guess everything your team's manager does. Baseball also provides.

Most reports here will start as practical questions: payroll simulations, fantasy baseball draft problems, prospect filters, roster weirdness, or baseball economics claims that sound tidy until you look at the data. Some of my reports will be for my long suffering fantasy team (1 E 161s!) whereas others will be for the joy of digging into a problem I find interesting. Occasionally, I will even present data to show the true superiority of the New York Yankees.

Featured report

MLB Salary Cap and Floor Simulation

This report applies a proposed MLB salary cap and salary floor to current public payroll estimates and standings. It asks what would happen if the reported numbers were applied to current team spending and looks at the question of competitive balance through the perspective of adding or trimming payroll.

The results show a few things. First off, the owners made a good decision to add a long ramp up period in their May 28 offer. The ramp up gives teams time to adjust... in some cases 'adjust' means more than doubling the payroll on a team that is currently doing very well, or dramatically shrinking the payroll for teams that are not constructed well enough to recover from such moves. The results also make me question the competitive-balance claims of the proposed cap and floor, simply because at least this early in the 2026 season, I'm not seeings signs that high spending improves standings all that much. Instead though, the one thing I do see is that with this proposed cap and floor, total year over year inflation in salaries would be just over $3 million. And I cannot recall an offseason where the total payroll inflation was that low.

I don't think we're going to see baseball in 2027.

Built from public data

The first report combines current standings, public payroll estimates, and some calculations in a local json file. The page then turns that data into summary cards, featured examples, filters, and a full accessible table. If you would like the data, you can open your browser's developer tools and borrow the json. Everything in there is based on public data from mlb.com and FanGraphs.

It is deliberately presented as a simulation, not a prediction. It does not normalize benefits, forecast trades, or pretend future CBA language is already settled.

Readable and useful for all

These pages are meant to be useful without requiring an expedition through a spreadsheet. The report pages use plain explanations, summary cards, searchable tables, and source notes so the data can be checked. If you're interested in the data, you can open your browser's developer tools sand grab my json file and it's all yours. Or if you'd like the code, I'll likely put it on Github in the next few weeks. You might want to get in touch to remind me because it's baseball season and I'm a Yankees fan so I'm going through a lot right now."

The baseball gods may love chaos, but the tables should still make sense. The baseball gods definitely love blind and visually impaired readers though, otherwise they wouldn't have created a sport that is at its best when you listen to it over the radio. So these pages are designed to be screen reader friendly, with clear headings, descriptive links, my consulting company's accessibility standards and my full accessibility testing rig. If it isn't perfect, please contact me so I can make it perfect. You can't learn accessibility and call it done; it is a lifelong learning process and I want to make sure that I am learning. If you contact me about an accessibility issue, you'll hear back from me in less than 24 hours from a hluska.ca email address.

Why baseball reports?

Baseball creates wonderful data problems because of beautifully structured data. Scorecards are a science, the box score is a work of structured data as art and since games are played in public you can find many different takes on a single game. Moreover, baseball has a very long history of data collection and analysis, so I can compare players like Babe Ruth to Aaron Judge without worrying about the data being too different to compare. Eras are different, but the underlying structure of the data makes this a much more solveable problem than it would be in a sport like hockey or basketball.

That makes baseball a useful playground for structured data work. The same habits that make a good developer tool also make a good baseball report: clear inputs, visible assumptions, repeatable calculations, accessible output, and enough explanation that someone else can tell what happened. But even better, baseball fans are passionate and I know that I'll hear from a lot of you if/when I get something wrong. So it's a rare opportunity to dive into data that people care strongly about.

These reports will usually be smaller than full research projects, but more structured than blog posts. In my reports, I will keep my love of the Yankees in check and focus on the data. When I blog, I'm sorry but I've been a Yankees fan for over forty years and I can't just shut that down. So, be warned, you either think I have excellent taste in baseball or I'm an idiot and that's great! Our sport is beautiful because of passionate fans and I'm one of them.

Finally, this report is dedicated to my old friend 'Cubs'. Cubs was a lifelong Cubs fan who ran my baseball fantasy league for many years off of software that he wrote himself after retiring from a career as a civil engineer. Cubs are acerbic, brilliant and used to write long meandering emails about baseball that were a joy to read besides the little barbs he would direct at me. Like "someone always has to be fucking original and call his fucking team the 1 E 161s so he can fucking be in first place for once, so I had to fucking rewrite the module I use to fucking list teams so fucking hukals could be where he belongs. Fuck you huslak."

Almost nine years ago, I woke up one morning in a cardiac surveillance unit after getting uncomfortably ly close to death the night before. It was my fault; I developed a heart problem purely from lack of focus on my health. The evening before, I sent out a number of hurried emails from the cardiac ward before they took my phone away from me. One was to my league; I wanted to let them know that I might not be around for a little while and I told them where I was. I shouldn't have, a heart attack is a big burden to put on your friends but I was in a bad spot the night before. When I got up, I had this email from Cubs in my inbox:

Greg, I had a heart attack too and I can identify with how you feel right now. This can be the best thing that ever happened to you or it can be the worst. I'll look after your team while you're away. I know how stubborn you are because I've played with you for over ten years and I know you can do this. Get better buddy, your daughter deserves to know you.

Cubs was a great friend for a long time and I loved being a part of his league. He passed away a few years ago and he's been missed. But Cubs my man, if you're out there reading this, I'm still a fucking original, the league is in good hands and we made your software fully accessible. You're a brilliant dude and I miss you. We talk about you constantly and RB mocks me every draft just in case you're still watching over us. We miss you baby.

Current reports

MLB Salary Cap and Floor Simulation

A simulation of what would happen if a proposed MLB salary cap and salary floor were applied to current public payroll estimates.

Includes summary metrics, contradiction counts, featured teams, and a searchable table comparing payroll rank, record, playoff position, required payroll change, cost per win, and wins per $100 million.

Future report idea: rookie draft pool

Some fantasy leagues use custom rookie rules that do not line up neatly with public prospect lists. A future report could track late MLB debuts, playing-time thresholds, and draft eligibility for leagues where timing matters.

This is a good fit for scraper work, fast filters, and a screen-reader friendly table that makes draft-day panic slightly less theatrical.

Future report idea: pitcher usage

Pitcher injuries, pitch mix changes, velocity spikes, and workload patterns are difficult to discuss cleanly from memory. A future report could compare public pitch data before and after roster or role changes.

That kind of report would need careful framing, but the question is interesting enough to deserve data instead of barstool thunder.

How these reports are built

The reports are static pages on hluska.ca. When a report needs generated data, that data can be saved as JSON beside the report and loaded in the browser. This keeps the page simple to host, easy to inspect, and practical to update.

The first report uses this pattern: a low-tech Python script prepares data.json , the report page loads that file, and the browser turns it into summary cards and an accessible table.

That structure keeps the reporting honest. The page can explain its sources, the generated data can be inspected, and the final result can focus on what the numbers actually say.

All baseball reports