Actual Win % (y axis) for matches with a given expected win probability (x axis). One dot represents a 1% range. 4079 odi matches are simulated.
Number of matches (as a percentage of total matches) and wins in each expected win probability. One dot represents a 1% range.
Overall, 2527 out of 3904 or 64.7% of all matches which yielded an outright result were won by the side favored to win by the model.
The model is not designed to predict every game correctly. For instance, when a model produces an expectation that a team will win 58% of the time and its opponent will win 40% of time, then for all such games, the results of the model would have to be considered perfect if out of 100 such games, 58 were won by the first team and 40 were won by the other team. In other words, if every assumption in the model is perfectly true all of the time, the team favored by the model should lose 40% of time, and should win only 58% of time. In other words, 40% of the games should be contrary to the model's expectations. On this site, these games are marked by a red dot. Given the distribution of games across the range of win expectations for odi, the total number of expected predictions for 4079 matches is 2302.
The FormBook model relies on three intuitions. First, that the score contains within it the sum total of all the factors relevant to describing the contest. Second, that previous performances are good predictors of current performances. Third, that all matches should not be equally predictable. The model must have some way of saying that one match is more one-sided than the other.
For current match (the match for which the expectation is being calculated), the following information is available:
1. The 11 players in each team.
2. A list of matches played by each player before the current match.
For the current match, the following information is considered:
1. The ground and host country for the match.
2. The opponent for each team.
3. The team batting first and the team batting second.
Step 1
For each player in the match:
1. Take the list of all prior matches in which the player participated.
2. Create the following sub-lists from the list in (1): All prior matches at (a) the ground for the current match, (b) the host country of the current match, (c) against the opponent in the current match, (d) where the team batted in the same innings as the current match, (e) against current opponent at current ground when the team batting in the same innings as the current match, and (f) against current opponent in the current host country when the team batting in the same innings as the current match.
3. Add all sub-lists to the main list. If the main list is empty (i.e. if the player is on debut), then use a list of individual debut match records instead.
Step 2
To simulate the match:
1. For each player in a team, pick a random match record from the player's biased list of matches.
2. Calculate the total runs scored, balls faced, dismissals, runs conceded, wickets taken and balls bowled by adding the selected eleven scores.
3. Normalize the totals in (2) to find the number of runs scored (batting) and conceded (bowling) over 300 balls. If the number of dismissals over 300 balls is more than 10, then the final score should simply be runs/dismissals (or runs conceded/wickets) multiplied by 10.
4. The expected score for each team is the average of its batting total and it's opponents bowling total.
Step 3
To calculate the expected win percentage:
Repeat Step 2 100,000 times and count the number of times each team wins. This will provide a stable expected win %. See this to understand why a large number of simulations is better than a small number of simulations.