Beneath the Record: Who Should Have Won Your Fantasy Football League?
- Sean

- Jan 14
- 5 min read
Updated: Jan 16
Fantasy football is cruel. I know I’m not the only one who feels this way. If you’re like me and felt a little unlucky this year, keep reading. And honestly, even if you didn’t, keep reading anyway.
This season, I finished 11th out of 12 teams with a 4–10 record. Not great, Bob! But when I looked at my points for, I actually ranked 7th out of 12. That’s still nothing to brag about, but it also doesn’t scream “second-to-last place.” So what went wrong?
The answer was pretty simple: I had, by almost 100 points, the most points scored against me in the entire league. Every week it felt like I was running into someone’s best performance of the season. It wasn’t just that I lost - it was that I kept getting everyone’s good weeks, over and over again.
That’s what got me wondering where my team really “should” have finished if the season had played out a little differently. And that’s what eventually led me to build Beneath the Record, a fantasy football outcome simulator that lets you take your league’s data and ask the questions we all care about at the end of the year: who was actually good, who got lucky, and who got screwed.

How Beneath the Record Works
If you have not already jumped into the app, I want to take a minute to explain the simple approach I used to build it. At a high level, the idea is to keep the way teams actually scored fixed, and then randomize everything about who played whom and when. That lets us see what the season would have looked like if the matchups had been reshuffled instead of fixed to one specific schedule.
First, a quick note: this works best when you only use regular season data. Fantasy football playoffs can get weird. Bye weeks mean some teams do not even have scores, and once teams are out of contention, effort can drop off. Sticking to the regular season keeps things clean and fair.
From there, I start by pulling in every matchup from the league. Using that, I build a set of hypothetical schedules. Each team plays every other team at least once, and the remaining games are randomly assigned. To use my league as an example, it is a 12 team league with a 14 week regular season. That means I play each of the other teams once, and three of them a second time.
Next, I take all of the weekly scores across the league, like everyone’s Week 1 totals, Week 2 totals, and so on, and I shuffle them. Then I pair those shuffled scores with the hypothetical schedules to determine who wins and loses each matchup. That gives me one simulated version of the season. I repeat that process 10,000 times for every season in the data.

What this gives us is a big set of alternate versions of the same season, where the scoring stays the same but the luck of the schedule changes. Once all of that is done, that is when things start to get interesting. Now we can look at how many wins each team would be expected to have on average. We can also look at the full distribution of outcomes, not just the mean. We can see how often a team finishes first, second, third, and so on. When you do this across multiple seasons, it becomes much easier to spot long term patterns and see which teams probably should have finished better, or worse, than their actual records suggest.
How To Read the Results
Don't worry about the math - the main thing to look for is the difference between what actually happened and what the simulator says 'should' have happened. Now let’s walk through how to interpret the different tables and charts that show up once you either connect your ESPN league or upload a CSV.
Table: Season Standings

This table is the main entry point. It shows each manager’s actual wins, their expected wins or xWins, the difference between the two, and how often each team finished in each place across the simulations.
Using the screenshot as an example, Michael Tangy had 9 wins in 2025 but was expected to have 10.2, which gives him a Wins Delta of -1.2. That suggests he was a bit unlucky. If you look at his placement distribution, he finished first in 61% of the simulations, second in 21%, and so on.
You might also notice that I was the second most unlucky manager by Wins Delta at -3.18. That puts my expected finish at 6th, which is a whole lot better than the 11th place I actually ended up with.
Table: Wins Distribution

This table digs a little deeper into the xWins story by showing the full distribution of win totals from the simulations.
Sticking with our star pupil Michael Tangy, you can see that most of his simulated seasons landed him in the 9 to 12 win range. He even went undefeated 44 times, which is about 0.44 % of the sims!
Table: Top of Table

This is probably my favorite table in the app. When you have two or more seasons of data, this gives you a true multi year view of manager performance. The idea comes from soccer leagues like the English Premier League, where finishing first is what clubs care most about.
Here you will see how many seasons each manager appears in, how many times they actually finished first, their expected number of first place finishes or xTop of Table, and the difference between the two. Since not everyone plays in every season, I also include per season versions of these metrics so everything is on an apples to apples basis. The table is ultimately sorted by xTop of Table Per Season.
xTop of Table itself is just the sum of each manager’s first place percentage across all the seasons in the data. Essentially, xTop of Table tells us how many times a manager should have finished in first place based on the quality of their team over the years. Using 2024 and 2025 as an example, Matthew Cannella leads with an xTop of Table of 0.813, which comes from his first place odds in each of those two seasons. The per-season average doesn't matter much here since everyone played both years, but it’s a lifesaver for comparing a long-time veteran to a new manager who has only played a few seasons.
Table: Wins Distribution (All Time)

This is the same idea as the season level wins distribution, but rolled up across all of the seasons you include. One thing you might notice if you explore this enough is that some managers can have higher expected finishes but lower expected wins than others (or the other way around). That is exactly why both views exist. They tell slightly different stories, and together they give a much clearer picture of who actually played well over time.
Closing Thoughts
I know this is a bit of a departure from my usual baseball work, but it was a lot of fun to build this app and share it with you. Inside the app, I go into more detail on things like its limitations, how to connect your ESPN league, and how to format a CSV if you want to upload your own data, so I will not repeat all of that here.
As always, thanks for checking out my work. And if you have any questions, run into issues, or spot a bug, feel free to reach out.




Comments