About

This page contains all the details about why this website was created, and how everything works.


Why did you make this site?

Many others and I previously used FiveThirtyEight's coverage and simulations for sports to keep track of league seasons and how well teams were doing and their chances to avoid the drop, qualify for a higher competition or postseason, or even take their league's trophy home with them. Unfortunately, just as I was really getting into soccer, FiveThirtyEight had some budget cuts and decided to no longer invest in their sports forecasts. I saw the amount of data generated and time invested by those at FiveThirtyEight and I thought it would be a waste if it would never be utilized again. So that's what this site is, a new interpretation of the data FiveThirtyEight generated so that their predictions are somewhat maintained.


How is a team's rating generated?

The data from FiveThirtyEight assigned every team a Special Power Index value that ranged from approximately 0 to 100. I interpreted this value as the chance that team would have to beat an average team (1500 rating). Using a bit of math, I converted the SPI value to a rating that would have that percentage of beating a 1500 rated team. For example, a team with a 64.0 SPI. Using the ELO Rating system, a team with a 1600 rating would have a 64% chance of beating a 1500 rating, therefore a 64.0 SPI is converted to a 1600 rating. After this, all the matches that team has played since FiveThirtyEight's last SPI update are used to generate its current rating, which is then used for calculating probabilities over the whole season, but also individual matches.


How are end of season table probabilites generated?

Using the fixture list and the ratings of the teams in the league, every remaining match is ran through to generate just one possible way the season could end. Higher ratings have a higher chance of winning matches, so the teams that have easier matchups will usually end up with more points. The program then notes down where each team finishes in the table, resets their points back to current values, and runs through all the fixtures again. Repeat this one million times (that's why it's called 1MilSims!), and you then obtain one million possible ways the season will end. The program then both averages the points obtained by each team at the end of each simulation, while also generating percentage values based on how often a team finished in a certain position. For instance, if a team finishes 1st 300,000 times, they are given a 30% chance to win the league. These final chances are then inserted on both the season page and team page for every team.


How are individual match probabilites generated?

I use the Football Elo Ratings system from eloratings.net and use their methodology for win probability for each side, while also adding a probability for draws.


How does a match affect a team's rating?

I use the math presented on eloratings.net to change each team's rating after a match and also show how much they will gain/lose after a match. Go check out their math for more details.


How is the data for matches collected?

I used to manually type in match results into my program to update league tables, but once I wanted to double the amount of leagues on my website, that became pretty unfeasible. Now, I use webscraping from FBref to obtain all current match data. so huge thanks to them!


When are league tables updated?

League tables are updated every day about 3:00 AM Eastern Time. Some leagues may require an extra day to become up to date due to FBref data taking longer to update.



Credits


FiveThirtyEight

- For providing the initial data that made this site possible.

World Football Elo Ratings

- For providing the ranking system this whole site is based on.

FBref

- For providing match data that keeps leagues and team ratings up to date.




Questions? Check out the About Page or Contact Us via the Contact Page in the Heading.
Copyright © 2026 1milsims.com All Rights Reserved