If you’ve just arrived from my NCHC Tournament Simulator, a brief, non-technical description of how it works follows. If you’ve come here some other way, check out the NCHC Tournament Simulator here!
This simulator predicts two related outcomes – game score between two opponents and probability of win between two opponents. All simulations are built from real game data, including overall season shots for, shots against, shooting percentage and save percentage.
First, the simulator compares the average shot totals of each team. Let’s take Team 1 and Team 2. The simulator will look at Team 1’s average Shots For and Team 2’s average Shots Against to find the mean Shots For for Team 1 in this particular matchup. It does the same for Team 2. So it finds the number of shots we would expect each team to take if they were playing each other.
Then it gets a bit more complicated. For each team, the simulator takes that team’s expected Shots For, finds a range based on the standard deviation of the team’s Shots For this season, and picks a random point between that range to determine the number of shots the team took in this particular simulated game. That number is then multiplied by the season Shot % of the team to get an expected goals scored.
Now, that process is repeated but this time uses the other team’s expected shots against. Again, a range is build based on standard deviation of Team 1’s Shots For, then a random value is chosen. That value, which equals an expected number of shots, is then multiplied by Team 2’s save percentage to get a second expected goals scored.
So now we have two expected goals scored values for each team, one based on their own shooting and shot percentage, and one based on their shooting and the opposing team’s save percentage. To determine a final simulated score for the game, we pick a random value for each team between the two expected goals values, then whichever team has the highest value, wins the simulated matchup.
So that process simulates one game based on the season’s shot metrics. But one game isn’t representative of the expected outcome. It’s just one possibility of a matchup between two teams. So, to get a better picture of what to expect between two teams, the game described above is simulated 1,000 times. I then just simply count how many times Team 1 wins vs. Team 2, and that gets us the probabilities on which the bracket is built.
The bracket itself looks primarily at the probabilities. It is set up in a way that ensures if Team 1 has a 75% chance of beating Team 2, Team 1 will advance pretty close to 75 out of 100 times. The scores are more for fun, but they are based on the logic above. The bracket first determines who advances based on the probabilities, then it simulates one of those 1000 instances to determine what the score might look like.
What the bracket doesn’t take into account is any home vs. away performance, any “hot” vs. “cold” teams, any past performance in tournaments, tournament experience, or any results of actual matchups between two given teams (except that those results are included in the aggregate shot-based statistics). Some would argue that these things matter in a tournament situation, and I wouldn’t disagree, but 1. I wanted to build a simulator off of shot-based metrics alone, and 2. It’s just for fun anyway.
So enjoy! I’m happy to answer any questions. Simulate away…