Update 9.12.2016: you can follow the updated odds here.

Disclaimer, I am not an expert at this, but this is information is basic enough that I understand in a way that I can explain to someone who is curious. Also, before you say “hey! this model is so basic!” let me tell you this: this model is very basic. This article is not about my model — which is basic — but about how these models are made.

As I write this, roughly 80% of the 2016 MLS season has been played. 70 of the 340 games are left to be played. New York City FC has been hovering at the top of the East for some time and it seems like it is close to securing a playoff spot. I wanted to understand how close we are to actually achieving it so I got developed a little script that does that. Sure, I could just google ‘MLS playoff odds’ and get the answer in a couple of clicks, but where is the fun in that?

70 Games Remaining, Endless* Possibilities

Forgetting about actual scores, each game can have three possible outcomes:

Team A wins, team B loses. Team A and team B draw. Team A loses, team B wins.

So with 70 games left to play, the total number of possible outcomes is 3 to the power of 70 — which is 2,503,155,504,993,241,601,315,571,986,085,849.

Calculating the Uniform Odds

That is a pretty big number of possible outcomes, so how does one estimate the odds? Randomly generated simulations. A lot of them to be statistically significant but nowhere near the 2.5 decillion possible outcomes. You plug in the table as it stands now and the games left to play. Then you let the system assign a result to every one of the games left to play, and then finish by calculating where each one of the teams landed on the table given those results. Again and again and again. Hundreds of thousands of times or millions of times…

Then you end up with something like this:

Which shows you what are the odds for each team to finish in each one of the positions on the table. This is great if we just want to see whether Chicago Fire can finish in first place — it can — but it assumes that every result for each game has the same likelihood of occurring.

Adjusting for Strength of Schedule

Here is where one gets creative with the model. This season, the home team has won 137 matches, lost 47 of them, and the game has ended in a draw 86 times. So one can add that information to the model, estimating that the home team will win 51% of the games, lose 17% and draw 32%. But that doesn’t tell the whole story. Some teams are stronger at home and some just are just plain terrible on the road — I’m looking at you, Portland — so one can also add the home/away records for each team to the model.

That is essentially what I did with my model and here are the results:

And what if you also add…you get the idea. That’s where the model becomes complex and each one of the simulations requires more and more computing power.

What About Betting Odds?

Betting odds are the result of the model that each betting house generates plus the added filters to make bets appealing. Betting houses are not trying to bring clarity to the system. Take the odds from betting houses with a grain of salt.