A. Introduction
FIBA [1] has a rating system used to rank and rate each team. It is based on rating points gained depending on the difference between the final score, of whether it is a home or away game, the strength of opponent and the weights considering the time decay, the competition type and region where competition is held, the stage of competition and the round where a game is fought - more weight is given as round approaches the end of a tournament such as preliminary, quarter, semi and final rounds.
The final rating of a team is calculated by taking the weighted average [4], [5] of the rating points. Only the games that happened in the last 8 years are counted for each team’s rating.
For every game, get the rating points or RP and the weight or W. game (i) => rating points (i) => weight (i) rating = sum(rp_i x w_i) / max(K, sum(w_i)) where: i = 1 to n, i is the latest game and n is the last game in the last 8 years. K = a factor to scale down the rating for those teams with lesser games.
The method I use to estimate the live FIBA ranking can be found in section C. It uses the games from the FIBA World Cup 2023 [3].
In section D, a method to calculate the prediction accuracy of FIBA rating list men 2023-02 is presented when tested against some of the game results from world cup 2023.
There is also a Bayeselo [7] rating system applied to get the Bayeselo rating list based from the world cup 2023 games. See section E.
B. FIBA Ranking system
The FIBA World Ranking presented by Nike [2] evaluates the strength of the teams by the points they gained from each game and the corresponding weight of this game. The weighted mean of these points and weights in the last 8 years or equivalent to a two 4-year world cup cycles are then computed to get the rating points and ranking of each team.
There are three main steps in the calculation of team ratings.
- Rating points calculation
- Weight calculation
- Team rating calculations involving the rating points and weights in the last 8 years.
Long story short.
rating = sum(rp_i x w_i) / max(K, sum(w_i)) where: rating = rating of team rp_i = the rating points of every game i. w_i = the weight of every game i K = constant, less games has lower rank i = game number from latest to the last 8 years.
1. Rating points calculation
Rating points calculation [4] is further subdivided into three.
- Basis Points or BP
- Home or Away Point or HAP
- Opposition Ranking Points or ORP
The formula to get the rating points or RP is:
RP = BP + HAP + ORP where: RP = Rating Points BP = Basis Points HAP = Home or Away Points ORP = Opposition Ranking Points
a. Basis Points or BP calculation
Whenever a game is held, each team will share the 1000 [4, p. 1] basis points.
- Win by a margin of 1-9 points-> receive 600 basis points
- Win by a margin of 10-19 points-> receive 700 basis points
- Win by a margin of 20 or more points-> receive 800 basis points
- Lose by a margin of 1-9 points-> receive 400 basis points
- Lose by a margin of 10-19 points-> receive 300 basis points
- Lose by a margin of 20 or more points-> receive 200 basis points
- In the event of a game being forfeited, the winning team receives 800 points (for a victory by a margin of 20 points) and the losing team gets 0 basis points
Let us take a look at one result from the ongoing World Cup 2023 [3]. In the first round, USA won against NZL with the scores 99-72.
BP for USA
USA won and the score difference is 99 less 72 or 27. Since the score difference is 27 which is 20 or more, team USA received 800 BP or basis points.
BP for NZL
NZL lost the game and received 200 BP.
It has to be noted that losing a game is different from losing by a wide margin. The losing team should try to close the score gap to gain more basis points.
b. Home or Away Point or HAP calculation
FIBA ranking system penalizes a team by 70 points if a team hosts the game. However the opponent team will be given 70 points. For example, team Philippines is one of the hosts of the ongoing World Cup 2023. In the first round a game was held against DOM or Dominican Republic. PHI lost by a score of 81-87.
The HAP of PHI is -70 while the HAP of DOM is +70.
In the case where the two competing teams are neither the hosts, HAP is assigned a value of zero for both teams.
c. Opposition Ranking Points or ORP calculation
The concept of ORP is to give teams with lower ranks a higher point when they play against a higher rated opponent. It does not depend on the final score of the game. So we need to know the ranking of each team that will be playing the game.
FIBA released a rating list before the start of the world cup. Teams are ranked according to the rating. The team with the highest rating gets a rank of 1.
source: FIBA World ranking [2]
The general formula to get each team's ORP is this.
ORP = 1.5 x (AVG_ALL_TEAM_PREGAME_RANKING - OPPONENT_PREGAME_RANKING) where: AVG_ALL_TEAM_PREGAME_RANKING is the average rank from the given rating list published. OPPONENT_PREGAME_RANKING is the rank of the opponent.
That rating list has a total of 161 teams. I saved it in a csv file [11] for manipulation which is read by Pandas below.
>>> import pandas as pd >>> df = pd.read_csv('fiba_ranking_world_2023-02.csv') >>> print(df) WORLD RANK COUNTRY ZONE RANK IOC CURRENT POINTS +/- RANK * 0 1 Spain 1.0 ESP 758.3 0 1 2 USA 1.0 USA 757.2 0 2 3 Australia 1.0 AUS 740.2 0 3 4 Argentina 2.0 ARG 733.6 0 4 5 France 2.0 FRA 715.9 0 .. ... ... ... ... ... ... 156 157 Cambodia 42.0 CAM 28.6 2 157 158 Myanmar 43.0 MYA 26.6 2 158 159 Cook Islands 44.0 COK 22.9 2 159 160 Haiti 37.0 HAI 22.4 2 160 161 Eritrea 33.0 ERI 20.3 2 [161 rows x 6 columns]
You may visit that site to verify the number of ranked teams.
So to calculate the 'AVG_ALL_TEAM_PREGAME_RANKING', we will sum all the rank numbers and divide it with 161.
>>> ave_all_team_pregame_ranking = sum(range(1, 162)) / 161 >>> ave_all_team_pregame_ranking 81.0
So the average all team pregame ranking is 81.
Consider the game between PHI and ITA in round 1. The rank of PHI is 40 while that of ITA is 10.
ORP of PHI
ORP = 1.5 x (AVG_ALL_TEAM_PREGAME_RANKING - OPPONENT_PREGAME_RANKING) ORP = 1.5 x (81 - 10) ORP = 106.5
ORP of ITA
ORP = 1.5 x (AVG_ALL_TEAM_PREGAME_RANKING - OPPONENT_PREGAME_RANKING) ORP = 1.5 x (81 - 40) ORP = 61.5
PHI got a higher ORP compared to ITA because the former has a lower rating compared to the latter.
Let me show one more example showing all the variables in the calculation of rating points. The game is between the USA and the LTU in the second round. LTU won with the scores 110-104. We will calculate the RP or rating points via the BP, HAP and ORP for each team.
USA RP
BP = 400 HAP = 0 ORP = 1.5 * (81-8) = 109.5 RP = BP + HAP + ORP RP = 509.5
The BP 400 is from a loss by 6 points. The '8' in ORP is the rank of LTU.
LTU RP
BP = 600 HAP = 0 ORP = 1.5 * (81-2) = 118.5 RP = BP + HAP + ORP RP = 718.5
The BP 600 is for winning the match by a 6 point margin or difference. The '2' in ORP is the rank of USA.
2. Weight calculation
This is the main second step in the calculation of team ranking and rating. The document [4] to calculate the overall weight is also provided by FIBA.
For every rating point or RP there is a corresponding weight that will be calculated as well. There are four factors to compute the weight of the RP.
- Time decay or TD is a weight factor used to scale down old games. Recent games are given more weight. See table below.
- Competition and Region is a weight factor applied for the type of competition the games are played. Important competitions such as world cup have more weight than the others. The world cup qualifying games have different weights depending on the region the game is played. See table below.
- Competition stage is a weight factor for the type of competition such as 'Tournament', 'Qualifier', and others. See table below.
- Round weight factor according to the document [4].
"Moving from a competition-based system to a game-based one, the new FIBA World Ranking Women, presented by Nike, introduces a weighting that works on a round basis, with results of the winning team receiving greater weighting the further through a final tournament a team progresses. The weights apply to games in the final tournaments of the FIBA Basketball World Cup, the Olympics and the FIBA Continental Cups. Any qualifying or pre-qualifying games or games in any other tournaments, or results of the losing team have a round weight R=1."
See table below.
The formula to get the weight is the following.
weight = td_wf x competition_and_region_wf x competition_stage_wf x round_wf where: td = time decay wf = weight factor
Example #1
PHI had played DOM in the first round of the ongoing FIBA World Cup 2023 [3] held in PHI. DOM won the game with the scores 87-81. Let us calculate the weight of this match.
td_wf = 1 competition_and_region_wf = 2.5 competition_stage_wf = 1 round_wf = 1 weight = td_wf x competition_and_region_wf x competition_stage_wf x round_wf weight = 2.5
The round weight factor does not matter if you win or lose in the first round, it is always 1. See the round weight table below. So both teams have the same round weight factor, which also result to the same weight.
Example #2
USA defeated MNE in the second round with the scores 85-73.
Weight for USA
td_wf = 1 competition_and_region_wf = 2.5 competition_stage_wf = 1 round_wf = 2 weight = 1 x 2.5 x 1 x 2 weight = 5.0
Weight for MNE
td_wf = 1 competition_and_region_wf = 2.5 competition_stage_wf = 1 round_wf = 1 weight = 1 x 2.5 x 1 x 1 weight = 2.5
So in the second round and above, the round weight factor differs for a winning and losing team. For a winning team the factor is 2 (see the round weight factor table below) whereas it is only 1 for a losing team.
Example #3
SRB defeated LTU in one of the quarter final matches yesterday 2023-09-05 with the scores 87-68. A quarter final is like a round 3. In the round weight factor table this is equivalent to a round weight factor of 4. See table below.
Weight for SRB
td_wf = 1 competition_and_region_wf = 2.5 competition_stage_wf = 1 round_wf = 4 weight = 1 x 2.5 x 1 x 4 weight = 10.0
The win matters a lot in the later part of the tournament. This time, it gets a round weight factor of 4.
Weight for LTU
td_wf = 1 competition_and_region_wf = 2.5 competition_stage_wf = 1 round_wf = 1 weight = 1 x 2.5 x 1 x 1 weight = 2.5
LTU lost the game so its round weight factor is only 1, resulting in a lower weight compared to SRB.
2.1. Weight Factor Tables
These are the tables [4] used in the calculation of Weight.
1. Time Decay Weight Factor
Time of game (TD) | Weight |
---|---|
Y (current year) & Y-1 | 1 |
Y-2 & Y-3 | 0.75 |
Y-4 & Y-5 | 0.50 |
Y-6 & Y-7 | 0.25 |
Y-8 and before | 0 (not taken into consideration) |
2. Competition and Region Weight Factor
Competition/Region (C) | Weight |
---|---|
FIBA Basketball World Cup | 2.5 |
Olympic Basketball Tournament | 2.0 |
Africa | 0.35 |
Americas | 0.80 |
Asia | 0.45 |
Europe | 1.0 |
Oceania | 0.7 |
3. Competition Stage Weight Factor
Stage (S) | Weight |
---|---|
Tournament | 1 |
Qualifier | 0.5 |
Pre-Qualifier | 0.25 |
(European) Small Countries | 0.15 |
4. Round Weight Factor
Round (R) | Weight |
---|---|
1 | 1 |
2 | 2 |
3 | 4 |
4 | 6 |
5 | 6 |
3. Team rating calculations
Once we have the Rating Points and Weight, we are now ready to get the rating of a team. FIBA also provides how this is calculated in the document [5].
The formula to get the team rating is the weighted average.
rating = sum(rp_i x w_i) / max(K, sum(w_i)) where: rating = rating of team rp_i = the rating points of every game i. w_i = the weight of every game i K = constant, less games has lower rank i = game number from latest to the last 8 years.
There is no other detail regarding the K constant.
C. Live rating estimate
First we have the current rating list [2] released by FIBA last February. Second we have games from the ongoing world cup. There are 32 teams in this tournament. It consists of two rounds of group phases and a final phase comprising of quarters, semis and final.
Currently (2023-09-03) all round 2 games were played. 09-04 is a rest day and tomorrow 09-05, the quarter final matches will begin. I compiled all the match results [6] done so far after round two and calculated the rating points and weights for each team. I don't have the data from the last 8 years. I will just calculate the live team rating estimate based on the available games played by each team so far, following the FIBA calculation rules on rating points and weights.
This is the general idea mathematically.
line 1: wc_rating = sum(rp_i x w_i) / sum(w_i) line 2: line 3: live_rating_estimate = wc_rating line 4: line 5: where: line 6: wc_rating = calculated rating based on world cup games (minimum of 5 games)
So it is just the same as FIBA but only using the world cup 2023 games.
Live Rating Estimate List
I am only displaying the top 50. All world cup participating teams are included.
Issue #1
Released: 2023-09-04
Games: World Cup 2023 after Round 2 and Class_17to32, each team has 5 games
FIBA rating reference: February 2023 (the ORating in the table below)
NRank | Country | IOC | NRating | ORating | ORank | Games | Win | Loss |
---|---|---|---|---|---|---|---|---|
1 | Germany | GER | 858.4 | 643.5 | 11 | 5 | 5 | 0 |
2 | Lithuania | LTU | 837.4 | 670.4 | 8 | 5 | 5 | 0 |
3 | Serbia | SRB | 796.9 | 710.2 | 6 | 5 | 4 | 1 |
4 | USA | USA | 793.5 | 757.2 | 2 | 5 | 4 | 1 |
5 | Canada | CAN | 765.2 | 577.8 | 15 | 5 | 4 | 1 |
6 | Argentina | ARG | 733.6 | 733.6 | 4 | 0 | 0 | 0 |
7 | Latvia | LAT | 730.6 | 403.0 | 29 | 5 | 4 | 1 |
8 | Slovenia | SLO | 722.3 | 701.9 | 7 | 5 | 4 | 1 |
9 | Australia | AUS | 714.3 | 740.2 | 3 | 5 | 3 | 2 |
10 | Italy | ITA | 712.4 | 650.4 | 10 | 5 | 4 | 1 |
11 | Spain | ESP | 705.2 | 758.3 | 1 | 5 | 3 | 2 |
12 | South Sudan | SSD | 675.3 | 170.4 | 62 | 5 | 3 | 2 |
13 | Montenegro | MNE | 626.3 | 517.0 | 18 | 5 | 3 | 2 |
14 | Brazil | BRA | 623.8 | 593.6 | 13 | 5 | 3 | 2 |
15 | France | FRA | 616.2 | 715.9 | 5 | 5 | 3 | 2 |
16 | Puerto Rico | PUR | 600.4 | 455.4 | 20 | 5 | 3 | 2 |
17 | Czech Republic | CZE | 593.8 | 593.8 | 12 | 0 | 0 | 0 |
18 | Poland | POL | 591.1 | 591.1 | 14 | 0 | 0 | 0 |
19 | Dominican Republic | DOM | 580.4 | 445.6 | 23 | 5 | 3 | 2 |
20 | Egypt | EGY | 566.7 | 191.0 | 55 | 5 | 2 | 3 |
21 | Turkey | TUR | 537.0 | 537.0 | 16 | 0 | 0 | 0 |
22 | Finland | FIN | 536.2 | 441.4 | 24 | 5 | 2 | 3 |
23 | Greece | GRE | 535.4 | 665.1 | 9 | 5 | 2 | 3 |
24 | Georgia | GEO | 530.9 | 352.7 | 32 | 5 | 2 | 3 |
25 | New Zealand | NZL | 522.5 | 435.3 | 26 | 5 | 2 | 3 |
26 | Lebanon | LBN | 507.6 | 300.8 | 43 | 5 | 2 | 3 |
27 | Japan | JPN | 495.8 | 332.6 | 36 | 5 | 3 | 2 |
28 | Angola | ANG | 486.9 | 308.5 | 41 | 5 | 1 | 4 |
29 | Nigeria | NGR | 461.4 | 461.4 | 19 | 0 | 0 | 0 |
30 | Mexico | MEX | 459.5 | 371.4 | 31 | 5 | 2 | 3 |
31 | Tunisia | TUN | 448.4 | 448.4 | 21 | 0 | 0 | 0 |
32 | Philippines | PHI | 442.6 | 315.9 | 40 | 5 | 1 | 4 |
33 | Cape Verde | CPV | 440.7 | 154.3 | 64 | 5 | 1 | 4 |
34 | Croatia | CRO | 439.8 | 439.8 | 25 | 0 | 0 | 0 |
35 | Cote d'Ivoire | CIV | 436.3 | 306.6 | 42 | 5 | 1 | 4 |
36 | Venezuela | VEN | 426.6 | 523.0 | 17 | 5 | 0 | 5 |
37 | Ukraine | UKR | 406.6 | 406.6 | 28 | 0 | 0 | 0 |
38 | Belgium | BEL | 386.8 | 386.8 | 30 | 0 | 0 | 0 |
39 | China | CHN | 384.8 | 412.9 | 27 | 5 | 1 | 4 |
40 | Iran | IRI | 370.3 | 447.1 | 22 | 5 | 0 | 5 |
41 | Jordan | JOR | 364.6 | 342.4 | 33 | 5 | 0 | 5 |
42 | Israel | ISR | 342.1 | 342.1 | 34 | 0 | 0 | 0 |
43 | Bosnia and Herzegovina | BIH | 333.4 | 333.4 | 35 | 0 | 0 | 0 |
44 | Senegal | SEN | 329.3 | 329.3 | 37 | 0 | 0 | 0 |
45 | Korea | KOR | 327.7 | 327.7 | 38 | 0 | 0 | 0 |
46 | Hungary | HUN | 325.8 | 325.8 | 39 | 0 | 0 | 0 |
47 | Estonia | EST | 295.8 | 295.8 | 44 | 0 | 0 | 0 |
48 | Netherlands | NED | 281.8 | 281.8 | 45 | 0 | 0 | 0 |
49 | Uruguay | URU | 278.7 | 278.7 | 46 | 0 | 0 | 0 |
50 | Bulgaria | BUL | 274.4 | 274.4 | 47 | 0 | 0 | 0 |
LEGEND: NRank = new rank Country = name of country IOC = International Olympic Committee country code NRating = new rating ORating = old rating or current rating ORank = old rank Games = number of games played in world cup 2023
Issue #2
Released: 2023-09-07
Games: World Cup 2023 after Quarter final but excluding Class_5to8
FIBA rating reference: February 2023 (the ORating in the table below)
NRank | Country | IOC | Zone | NRating | ORating | ORank | Games | Win | Loss |
---|---|---|---|---|---|---|---|---|---|
1 | USA | USA | Americas | 838.7 | 757.2 | 2 | 6 | 5 | 1 |
2 | Serbia | SRB | Europe | 802.0 | 710.2 | 6 | 6 | 5 | 1 |
3 | Germany | GER | Europe | 792.8 | 643.5 | 11 | 6 | 6 | 0 |
4 | Lithuania | LTU | Europe | 784.2 | 670.4 | 8 | 6 | 5 | 1 |
5 | Canada | CAN | Americas | 783.5 | 577.8 | 15 | 6 | 5 | 1 |
6 | Argentina | ARG | Americas | 733.6 | 733.6 | 4 | 0 | 0 | 0 |
7 | Australia | AUS | Asia | 714.3 | 740.2 | 3 | 5 | 3 | 2 |
8 | Spain | ESP | Europe | 705.2 | 758.3 | 1 | 5 | 3 | 2 |
9 | Latvia | LAT | Europe | 702.4 | 403.0 | 29 | 6 | 4 | 2 |
10 | Slovenia | SLO | Europe | 676.1 | 701.9 | 7 | 6 | 4 | 2 |
11 | South Sudan | SSD | Africa | 675.3 | 170.4 | 62 | 5 | 3 | 2 |
12 | Italy | ITA | Europe | 663.1 | 650.4 | 10 | 6 | 4 | 2 |
13 | Montenegro | MNE | Europe | 626.3 | 517.0 | 18 | 5 | 3 | 2 |
14 | Brazil | BRA | Americas | 623.8 | 593.6 | 13 | 5 | 3 | 2 |
15 | France | FRA | Europe | 616.2 | 715.9 | 5 | 5 | 3 | 2 |
16 | Puerto Rico | PUR | Americas | 600.4 | 455.4 | 20 | 5 | 3 | 2 |
17 | Czech Republic | CZE | Europe | 593.8 | 593.8 | 12 | 0 | 0 | 0 |
18 | Poland | POL | Europe | 591.1 | 591.1 | 14 | 0 | 0 | 0 |
19 | Dominican Republic | DOM | Americas | 580.4 | 445.6 | 23 | 5 | 3 | 2 |
20 | Egypt | EGY | Africa | 566.7 | 191.0 | 55 | 5 | 2 | 3 |
21 | Turkey | TUR | Europe | 537.0 | 537.0 | 16 | 0 | 0 | 0 |
22 | Finland | FIN | Europe | 536.2 | 441.4 | 24 | 5 | 2 | 3 |
23 | Greece | GRE | Europe | 535.4 | 665.1 | 9 | 5 | 2 | 3 |
24 | Georgia | GEO | Europe | 530.9 | 352.7 | 32 | 5 | 2 | 3 |
25 | New Zealand | NZL | Asia | 522.5 | 435.3 | 26 | 5 | 2 | 3 |
26 | Lebanon | LBN | Asia | 507.6 | 300.8 | 43 | 5 | 2 | 3 |
27 | Japan | JPN | Asia | 495.8 | 332.6 | 36 | 5 | 3 | 2 |
28 | Angola | ANG | Africa | 486.9 | 308.5 | 41 | 5 | 1 | 4 |
29 | Nigeria | NGR | Africa | 461.4 | 461.4 | 19 | 0 | 0 | 0 |
30 | Mexico | MEX | Americas | 459.5 | 371.4 | 31 | 5 | 2 | 3 |
31 | Tunisia | TUN | Africa | 448.4 | 448.4 | 21 | 0 | 0 | 0 |
32 | Philippines | PHI | Asia | 442.6 | 315.9 | 40 | 5 | 1 | 4 |
33 | Cape Verde | CPV | Africa | 440.7 | 154.3 | 64 | 5 | 1 | 4 |
34 | Croatia | CRO | Europe | 439.8 | 439.8 | 25 | 0 | 0 | 0 |
35 | Cote d'Ivoire | CIV | Africa | 436.3 | 306.6 | 42 | 5 | 1 | 4 |
36 | Venezuela | VEN | Americas | 426.6 | 523.0 | 17 | 5 | 0 | 5 |
37 | Ukraine | UKR | Europe | 406.6 | 406.6 | 28 | 0 | 0 | 0 |
38 | Belgium | BEL | Europe | 386.8 | 386.8 | 30 | 0 | 0 | 0 |
39 | China | CHN | Asia | 384.8 | 412.9 | 27 | 5 | 1 | 4 |
40 | Iran | IRI | Asia | 370.3 | 447.1 | 22 | 5 | 0 | 5 |
41 | Jordan | JOR | Asia | 364.6 | 342.4 | 33 | 5 | 0 | 5 |
42 | Israel | ISR | Europe | 342.1 | 342.1 | 34 | 0 | 0 | 0 |
43 | Bosnia and Herzegovina | BIH | Europe | 333.4 | 333.4 | 35 | 0 | 0 | 0 |
44 | Senegal | SEN | Africa | 329.3 | 329.3 | 37 | 0 | 0 | 0 |
45 | Korea | KOR | Asia | 327.7 | 327.7 | 38 | 0 | 0 | 0 |
46 | Hungary | HUN | Europe | 325.8 | 325.8 | 39 | 0 | 0 | 0 |
47 | Estonia | EST | Europe | 295.8 | 295.8 | 44 | 0 | 0 | 0 |
48 | Netherlands | NED | Europe | 281.8 | 281.8 | 45 | 0 | 0 | 0 |
49 | Uruguay | URU | Americas | 278.7 | 278.7 | 46 | 0 | 0 | 0 |
50 | Bulgaria | BUL | Europe | 274.4 | 274.4 | 47 | 0 | 0 | 0 |
The semi-finalists are USA, SRB, GER and CAN
Issue #3
Released: 2023-09-08
Games: World Cup 2023 after Quarter final plus 2 games from classification_5to8
FIBA rating reference: February 2023 (the ORating in the table below)
NRank | Country | IOC | Zone | NRating | ORating | ORank | Games | Win | Loss |
---|---|---|---|---|---|---|---|---|---|
1 | USA | USA | Americas | 838.7 | 757.2 | 2 | 6 | 5 | 1 |
2 | Serbia | SRB | Europe | 802.0 | 710.2 | 6 | 6 | 5 | 1 |
3 | Germany | GER | Europe | 792.8 | 643.5 | 11 | 6 | 6 | 0 |
4 | Lithuania | LTU | Europe | 787.2 | 670.4 | 8 | 7 | 6 | 1 |
5 | Canada | CAN | Americas | 783.5 | 577.8 | 15 | 6 | 5 | 1 |
6 | Argentina | ARG | Americas | 733.6 | 733.6 | 4 | 0 | 0 | 0 |
7 | Australia | AUS | Asia | 714.3 | 740.2 | 3 | 5 | 3 | 2 |
8 | Spain | ESP | Europe | 705.2 | 758.3 | 1 | 5 | 3 | 2 |
9 | Latvia | LAT | Europe | 702.8 | 403.0 | 29 | 7 | 5 | 2 |
10 | South Sudan | SSD | Africa | 675.3 | 170.4 | 62 | 5 | 3 | 2 |
11 | Slovenia | SLO | Europe | 642.8 | 701.9 | 7 | 7 | 4 | 3 |
12 | Italy | ITA | Europe | 642.6 | 650.4 | 10 | 7 | 4 | 3 |
Issue #4
Released: 2023-09-09
Games: World Cup 2023 after semi-final plus 2 games from classification_5to8
FIBA rating reference: February 2023 (the ORating in the table below)
NRank | Country | IOC | Zone | NRating | ORating | ORank | Games | Win | Loss |
---|---|---|---|---|---|---|---|---|---|
1 | USA | USA | Americas | 808.4 | 757.2 | 2 | 7 | 5 | 2 |
2 | Lithuania | LTU | Europe | 787.2 | 670.4 | 8 | 7 | 6 | 1 |
3 | Germany | GER | Europe | 766.6 | 643.5 | 11 | 7 | 7 | 0 |
4 | Serbia | SRB | Europe | 763.3 | 710.2 | 6 | 7 | 6 | 1 |
5 | Canada | CAN | Americas | 758.9 | 577.8 | 15 | 7 | 5 | 2 |
6 | Argentina | ARG | Americas | 733.6 | 733.6 | 4 | 0 | 0 | 0 |
7 | Australia | AUS | Asia | 714.3 | 740.2 | 3 | 5 | 3 | 2 |
8 | Spain | ESP | Europe | 705.2 | 758.3 | 1 | 5 | 3 | 2 |
9 | Latvia | LAT | Europe | 702.8 | 403.0 | 29 | 7 | 5 | 2 |
10 | South Sudan | SSD | Africa | 675.3 | 170.4 | 62 | 5 | 3 | 2 |
11 | Slovenia | SLO | Europe | 642.8 | 701.9 | 7 | 7 | 4 | 3 |
12 | Italy | ITA | Europe | 642.6 | 650.4 | 10 | 7 | 4 | 3 |
Looking at the live rating estimate between issue #3 and #4, in issue #4, the USA is still number 1 even though GER defeated her. And now GER's rating has gone down. This is illogical. We need to know the details of the K constant in the FIBA formula.
The other reasons could be that at higher rounds such as quarters, semis and finals, the weights are higher if a team wins resulting in lower rating because the sum of weights is a divisor in the rating formula. On top of that, the calculation of rating points RP, is probably not scaled well with respect to the base points BP and opposition ranking points ORP.
D. FIBA Rating Accuracy
FIBA had released this February 2023 a rating list for Men [2] before the current FIBA World Cup 2023 started. Currently all games in the quarter finals of this world cup were finished yesterday 2023-09-06. Let us measure the prediction accuracy rate of this rating list based from the games that were finished up to the quarter final stage.
To summarize, there are 32 teams in this world cup. After round one, three games were played by each team. After round two and classification games, each team now has a total of 5 games. In the quarter finals there is one game played in each team. The four winners will advance to the semi finals while the four losers will play on the classification for 2 more games in each team.
1. Procedure
- Get all the match results of the games that were already played (round 1 up to quarter finals plus the classification_17to32 games).
- Get the rating list that was published by FIBA this February.
- For each match results, get the rating of each team.
- If the team with a higher rating wins then count this as a success, meaning the rating list is correct.
- If the team with a higher rating loses then count this as a failure, meaning the rating list is incorrect.
- The accuracy rate is the count of success divided by the total of success and failure.
2. Code
"""Calculate the prediction success rate of FIBA rating list 2023-02.""" import pandas as pd df_current_rating = pd.read_csv('fiba_ranking_world_2023-02.csv') df_game_results = pd.read_csv('all_results.csv') print(df_current_rating) print(df_game_results) success, failure = 0, 0 for index, row in df_game_results.iterrows(): t1 = row['C1'] s1 = row['C1S'] t2 = row['C2'] s2 = row['C2S'] rtg1 = df_current_rating.loc[df_current_rating['IOC'] == t1].iloc[0]['CURRENT POINTS'] rtg2 = df_current_rating.loc[df_current_rating['IOC'] == t2].iloc[0]['CURRENT POINTS'] # success if rtg1 > rtg2 and s1 > s2: success += 1 elif rtg2 > rtg1 and s2 > s1: success += 1 else: failure += 1 games = success + failure print(f'Number of games: {games}') print(f'Success count: {success}') print(f'Failure count: {failure}') print(f'Success rate: {round(100*success/games, 2)}%')
3. Output
WORLD RANK COUNTRY ZONE RANK IOC CURRENT POINTS +/- RANK * 0 1.0 Spain 1.0 ESP 758.3 0 1 2.0 USA 1.0 USA 757.2 0 2 3.0 Australia 1.0 AUS 740.2 0 3 4.0 Argentina 2.0 ARG 733.6 0 4 5.0 France 2.0 FRA 715.9 0 .. ... ... ... ... ... ... 156 157.0 Cambodia 42.0 CAM 28.6 2 157 158.0 Myanmar 43.0 MYA 26.6 2 158 159.0 Cook Islands 44.0 COK 22.9 2 159 160.0 Haiti 37.0 HAI 22.4 2 160 161.0 Eritrea 33.0 ERI 20.3 2 [161 rows x 6 columns] C1 C1S C2 C2S GI WR1 WR2 0 CAN 65 BRA 69 4 1 2 1 ANG 76 CHN 83 4 1 1 2 CIV 77 BRA 89 3 1 1 3 ANG 67 DOM 75 3 1 1 4 ESP 94 CIV 64 1 1 1 .. ... ... ... ... .. ... ... 79 SLO 100 VEN 85 1 1 1 80 VEN 75 CPV 81 2 1 1 81 GEO 70 VEN 59 3 1 1 82 JPN 86 VEN 77 4 1 1 83 FIN 90 VEN 75 5 1 1 [84 rows x 7 columns] Number of games: 84 Success count: 55 Failure count: 29 Success rate: 65.48%
And so we got our figure. The prediction accuracy of 'FIBA rating list 2023-02 men' is 65.48% when tested on the actual games from world cup 2023, starting from round one up to the quarter finals.
Accuracy Tracking
Games | Accuracy (%) |
---|---|
Up to quarter finals | 65.48 |
Up to quarter finals plus 2 games from class_5to8 | 63.95 |
E. Bayeselo Rating System
Bayeselo [7] is a rating system invented by Rémi Coulom. The system is based on Elo rating system created by an American physics professor Arpad Elo (1903-1992) but uses the Bayes theorem which was invented by an English statistician, philosopher and Presbyterian minister Thomas Bayes (1701-1761).
Bayeselo rating generation is done through the use of the command line program bayeselo.exe [7], [9]. It needs a record of game results as input, stored in a file with a Portable Game Notation or PGN standard format.
1. Bayesian approach according to Rémi
The principle of the Bayesian approach [10] consists in choosing a prior likelihood distribution over Elo ratings, and computing a posterior distribution as a function of the observed results.
P(Elos|Results) = P(Results|Elos)P(Elos)/P(Results)
f(Delta) = 1 / (1 + 10^(Delta/400)) P(WhiteWins) = f(eloBlack - eloWhite - eloAdvantage + eloDraw) P(BlackWins) = f(eloWhite - eloBlack + eloAdvantage + eloDraw) P(Draw) = 1 - P(WhiteWins) - P(BlackWins)
2. Peculiarities of Bayeselo with respect to the current FIBA Basketball ranking system
- Bayeselo rating system has a concept of rating interval and margin of errors. The strength of an entity is not described by a single rating points but a range of ratings. Consider GER in the Bayeselo rating issue #1 below, GER has a mean rating of 1117, an upper margin of error of 326, and a lower margin of error of 216. The strength of GER is in the range [901 - 1443]. In a bad day its strength is only 901 but in a better day it is very strong at 1443.
- Bayeselo rating system has a concept of predicting the winning probabilities between a given two teams through the so called LOS or Likelihood of Superiority.
- Bayeselo rating system has a concept of draw or even result, but in basketball there is no such thing as draw results. But Bayeselo has a way to disable this though the "mm" command without the parameters.
- Bayeselo rating system has a concept of who played first which can be critical in the game such as chess. In basketball, the team that played first is the team that takes the first position of the ball after the "jump ball" in the beginning of the game. No I did not consider this in the bayeselo rating calculation. It is also set to zero through the "mm" command. It could be interesting to get the statistics of this feature and check if this affects the final score of the game.
- Bayeselo rating system is only interested on win/loss/draw results.
- In basketball the difference in the final score of the game is a factor. A difference in one or two points may indicate a high probability of an equal strength. In fact an overtime or OT can happen that is, after the first time allocation is exhausted, if the score is tied, the game is continued with a new time allocation as time extension. This can actually be applied in the Bayeselo rating calculation on basketball. Whenever there is OT, just consider it as a draw in the rating calculation. I have not consider this in rating generation below.
- In basketball there is a rating factor of what year the game is played, where the game is played, tournament type and phase of the game such as group phase, quarter, semis and finals phases. Tournaments in Europe have more weight in rating compared to other regions such as Americas, etc. In contrast, Bayeselo can detect which team is stronger even if the teams have not played. This can be done through common opponents. As always more games are needed to get a better estimate.
- Bayeselo rating system is applied in the generation of ratings for game programs like chess, go, etc. engines and other sports. In the case for computer programs, these entities have a strength that does not change compared to basketball team strength that can vary a lot. As an illustration, the USA team for World Cups may have a different strength from the USA team for Olympics. How about for other countries? This may lead to an idea to create two team names, "USA WC" and "USA Olympics". In computer game engines, these are normal, you will see Stockfish 15, Stockfish 16 and other engine versions.
3. Issue #1, 2023-09-07
The games are from round 1 up to quarter finals plus two games from classification_5to8. Team USA is set to 1000 Bayeselo [7] points as a reference.
Rank Name: Elo + - games score oppo. draws win loss draw 1 GER : 1117 326 216 6 100.0% 833 0.0% 6 0 0 2 SRB : 1089 263 211 6 83.3% 888 0.0% 5 1 0 3 LTU : 1046 265 212 6 83.3% 855 0.0% 5 1 0 4 CAN : 1030 259 204 6 83.3% 853 0.0% 5 1 0 5 USA : 1000 266 219 6 83.3% 798 0.0% 5 1 0 6 LAT : 994 228 205 6 66.7% 894 0.0% 4 2 0 7 ITA : 957 242 217 6 66.7% 864 0.0% 4 2 0 8 PUR : 948 239 226 5 60.0% 885 0.0% 3 2 0 9 SLO : 907 243 230 6 66.7% 795 0.0% 4 2 0 10 DOM : 899 250 236 5 60.0% 848 0.0% 3 2 0 11 MNE : 892 240 225 5 60.0% 839 0.0% 3 2 0 12 AUS : 889 242 224 5 60.0% 846 0.0% 3 2 0 13 ESP : 838 251 242 5 60.0% 782 0.0% 3 2 0 14 BRA : 837 262 243 5 60.0% 782 0.0% 3 2 0 15 SSD : 830 247 228 5 60.0% 787 0.0% 3 2 0 16 FRA : 820 252 241 5 60.0% 759 0.0% 3 2 0 17 JPN : 789 262 243 5 60.0% 742 0.0% 3 2 0 18 GRE : 754 236 253 5 40.0% 815 0.0% 2 3 0 19 GEO : 723 246 259 5 40.0% 784 0.0% 2 3 0 20 LBN : 721 238 252 5 40.0% 778 0.0% 2 3 0 21 MEX : 703 235 247 5 40.0% 753 0.0% 2 3 0 22 FIN : 696 244 253 5 40.0% 761 0.0% 2 3 0 23 EGY : 693 235 249 5 40.0% 755 0.0% 2 3 0 24 NZL : 661 232 244 5 40.0% 725 0.0% 2 3 0 25 CHN : 649 231 278 5 20.0% 823 0.0% 1 4 0 26 PHI : 626 223 277 5 20.0% 791 0.0% 1 4 0 27 ANG : 621 221 274 5 20.0% 792 0.0% 1 4 0 28 CIV : 571 220 272 5 20.0% 739 0.0% 1 4 0 29 CPV : 554 222 274 5 20.0% 714 0.0% 1 4 0 30 IRI : 477 226 342 5 0.0% 757 0.0% 0 5 0 31 JOR : 476 227 344 5 0.0% 762 0.0% 0 5 0 32 VEN : 456 232 349 5 0.0% 734 0.0% 0 5 0
The column 'opp.' is the average rating of the opponent, if this column is high that means a team has stronger opponents.
The '+' and '-' columns are the margin of errors. The margin of errors helps determine the actual rating range of the team. For example, GER has a rating of 1117. The confidence interval is 1117 - 216 or 901 and 1117 + 326 or 1443, meaning the strength of GER is in the range [901 to 1443], with the USA being at 1000 as a reference.
4. Issue #2, 2023-09-08
The games are from round 1 up to semi finals plus two games from classification_5to8. Team USA is set to 1000 Bayeselo [7] points as a reference.
Rank Name: Elo + - games score oppo. draws win loss draw 1 GER : 1205 316 210 7 100.0% 896 0.0% 7 0 0 2 SRB : 1151 256 203 7 85.7% 927 0.0% 6 1 0 3 LTU : 1094 256 201 7 85.7% 883 0.0% 6 1 0 4 LAT : 1078 222 193 7 71.4% 946 0.0% 5 2 0 5 CAN : 1057 224 195 7 71.4% 940 0.0% 5 2 0 6 USA : 1000 231 210 7 71.4% 867 0.0% 5 2 0 7 PUR : 966 243 228 5 60.0% 904 0.0% 3 2 0 8 ITA : 943 219 207 7 57.1% 911 0.0% 4 3 0 9 AUS : 933 247 226 5 60.0% 893 0.0% 3 2 0 10 SLO : 931 221 222 7 57.1% 875 0.0% 4 3 0 11 DOM : 915 254 239 5 60.0% 865 0.0% 3 2 0 12 MNE : 908 243 226 5 60.0% 857 0.0% 3 2 0 13 ESP : 890 253 244 5 60.0% 835 0.0% 3 2 0 14 BRA : 890 263 245 5 60.0% 835 0.0% 3 2 0 15 FRA : 870 254 243 5 60.0% 811 0.0% 3 2 0 16 SSD : 850 252 231 5 60.0% 809 0.0% 3 2 0 17 JPN : 832 268 246 5 60.0% 791 0.0% 3 2 0 18 LBN : 770 240 254 5 40.0% 831 0.0% 2 3 0 19 GRE : 766 240 255 5 40.0% 832 0.0% 2 3 0 20 GEO : 759 252 262 5 40.0% 829 0.0% 2 3 0 21 FIN : 737 249 255 5 40.0% 810 0.0% 2 3 0 22 MEX : 718 238 248 5 40.0% 773 0.0% 2 3 0 23 EGY : 708 238 251 5 40.0% 775 0.0% 2 3 0 24 NZL : 671 232 245 5 40.0% 735 0.0% 2 3 0 25 CHN : 664 235 280 5 20.0% 846 0.0% 1 4 0 26 PHI : 634 223 278 5 20.0% 800 0.0% 1 4 0 27 ANG : 629 221 275 5 20.0% 801 0.0% 1 4 0 28 CIV : 622 220 272 5 20.0% 789 0.0% 1 4 0 29 CPV : 589 223 275 5 20.0% 750 0.0% 1 4 0 30 IRI : 528 226 342 5 0.0% 808 0.0% 0 5 0 31 VEN : 490 232 352 5 0.0% 769 0.0% 0 5 0 32 JOR : 485 227 347 5 0.0% 772 0.0% 0 5 0
The ranks of top 2 teams GER and SRB are as expected as they are the finalists. Both SRB and LTU have identical (6-1) win-loss records, but SRB is ranked higher because in their matchup, the SRB won.
5. Issue #3, 2023-09-09
The games are from round 1 up to semi finals plus four games from classification_5to8. Team USA is set to 1000 Bayeselo [7] points as a reference.
Rank Name: Elo + - games score oppo. draws win loss draw 1 GER : 1283 319 209 7 100.0% 975 0.0% 7 0 0 2 LAT : 1175 216 183 8 75.0% 1021 0.0% 6 2 0 3 SRB : 1156 260 207 7 85.7% 925 0.0% 6 1 0 4 CAN : 1133 224 194 7 71.4% 1017 0.0% 5 2 0 5 LTU : 1082 221 193 8 75.0% 928 0.0% 6 2 0 6 SLO : 1033 209 201 8 62.5% 943 0.0% 5 3 0 7 AUS : 1022 247 227 5 60.0% 982 0.0% 3 2 0 8 USA : 1000 237 213 7 71.4% 868 0.0% 5 2 0 9 BRA : 974 263 246 5 60.0% 920 0.0% 3 2 0 10 ESP : 974 254 245 5 60.0% 920 0.0% 3 2 0 11 FRA : 954 255 244 5 60.0% 896 0.0% 3 2 0 12 PUR : 954 245 230 5 60.0% 892 0.0% 3 2 0 13 JPN : 920 267 246 5 60.0% 877 0.0% 3 2 0 14 ITA : 916 203 201 8 50.0% 931 0.0% 4 4 0 15 DOM : 900 255 241 5 60.0% 851 0.0% 3 2 0 16 MNE : 898 244 227 5 60.0% 848 0.0% 3 2 0 17 LBN : 853 241 254 5 40.0% 916 0.0% 2 3 0 18 GEO : 849 252 263 5 40.0% 919 0.0% 2 3 0 19 SSD : 837 254 233 5 60.0% 797 0.0% 3 2 0 20 FIN : 824 248 255 5 40.0% 896 0.0% 2 3 0 21 GRE : 756 240 256 5 40.0% 824 0.0% 2 3 0 22 MEX : 706 238 249 5 40.0% 763 0.0% 2 3 0 23 CIV : 706 220 272 5 20.0% 873 0.0% 1 4 0 24 EGY : 696 239 251 5 40.0% 765 0.0% 2 3 0 25 CPV : 677 224 276 5 20.0% 841 0.0% 1 4 0 26 NZL : 662 233 245 5 40.0% 727 0.0% 2 3 0 27 CHN : 649 236 281 5 20.0% 835 0.0% 1 4 0 28 PHI : 616 224 279 5 20.0% 783 0.0% 1 4 0 29 IRI : 612 226 342 5 0.0% 892 0.0% 0 5 0 30 ANG : 611 221 276 5 20.0% 784 0.0% 1 4 0 31 VEN : 578 233 354 5 0.0% 861 0.0% 0 5 0 32 JOR : 475 227 347 5 0.0% 764 0.0% 0 5 0
6. Issue #4, 2023-09-10
All games from World Cup 2023 are used to calculate the rating list. Team USA is set to 1000 Bayeselo [7] points as a reference.
Rank Name: Elo + - games score oppo. draws win loss draw 1 GER : 1357 308 201 8 100.0% 1037 0.0% 8 0 0 2 LAT : 1227 218 184 8 75.0% 1073 0.0% 6 2 0 3 CAN : 1202 217 183 8 75.0% 1058 0.0% 6 2 0 4 SRB : 1171 229 202 8 75.0% 999 0.0% 6 2 0 5 LTU : 1102 224 196 8 75.0% 945 0.0% 6 2 0 6 SLO : 1078 211 202 8 62.5% 991 0.0% 5 3 0 7 AUS : 1075 249 228 5 60.0% 1036 0.0% 3 2 0 8 ESP : 1032 255 245 5 60.0% 979 0.0% 3 2 0 9 BRA : 1032 265 247 5 60.0% 979 0.0% 3 2 0 10 FRA : 1012 256 244 5 60.0% 954 0.0% 3 2 0 11 USA : 1000 217 207 8 62.5% 926 0.0% 5 3 0 12 JPN : 972 270 247 5 60.0% 932 0.0% 3 2 0 13 PUR : 968 245 230 5 60.0% 907 0.0% 3 2 0 14 ITA : 937 205 203 8 50.0% 952 0.0% 4 4 0 15 DOM : 915 256 241 5 60.0% 867 0.0% 3 2 0 16 LBN : 910 242 255 5 40.0% 975 0.0% 2 3 0 17 MNE : 905 245 228 5 60.0% 856 0.0% 3 2 0 18 GEO : 899 254 264 5 40.0% 973 0.0% 2 3 0 19 FIN : 876 250 256 5 40.0% 952 0.0% 2 3 0 20 SSD : 850 254 233 5 60.0% 812 0.0% 3 2 0 21 CIV : 763 220 272 5 20.0% 931 0.0% 1 4 0 22 GRE : 761 242 257 5 40.0% 830 0.0% 2 3 0 23 CPV : 727 223 276 5 20.0% 891 0.0% 1 4 0 24 MEX : 712 239 249 5 40.0% 771 0.0% 2 3 0 25 EGY : 703 240 252 5 40.0% 773 0.0% 2 3 0 26 IRI : 670 226 342 5 0.0% 950 0.0% 0 5 0 27 NZL : 665 232 245 5 40.0% 731 0.0% 2 3 0 28 CHN : 662 236 281 5 20.0% 849 0.0% 1 4 0 29 PHI : 631 224 279 5 20.0% 798 0.0% 1 4 0 30 VEN : 628 233 354 5 0.0% 910 0.0% 0 5 0 31 ANG : 626 221 276 5 20.0% 799 0.0% 1 4 0 32 JOR : 478 228 349 5 0.0% 768 0.0% 0 5 0
7. Head to Head
1 GER 1357 8.0 ( 8.0 : 0.0) 1.0 ( 1.0 : 0.0) LAT 1227 1.0 ( 1.0 : 0.0) SRB 1171 1.0 ( 1.0 : 0.0) SLO 1078 1.0 ( 1.0 : 0.0) AUS 1075 1.0 ( 1.0 : 0.0) USA 1000 1.0 ( 1.0 : 0.0) JPN 972 1.0 ( 1.0 : 0.0) GEO 899 1.0 ( 1.0 : 0.0) FIN 876 2 LAT 1227 8.0 ( 6.0 : 2.0) 1.0 ( 0.0 : 1.0) GER 1357 1.0 ( 0.0 : 1.0) CAN 1202 1.0 ( 1.0 : 0.0) LTU 1102 1.0 ( 1.0 : 0.0) ESP 1032 1.0 ( 1.0 : 0.0) BRA 1032 1.0 ( 1.0 : 0.0) FRA 1012 1.0 ( 1.0 : 0.0) ITA 937 1.0 ( 1.0 : 0.0) LBN 910 3 CAN 1202 8.0 ( 6.0 : 2.0) 1.0 ( 1.0 : 0.0) LAT 1227 1.0 ( 0.0 : 1.0) SRB 1171 1.0 ( 1.0 : 0.0) SLO 1078 1.0 ( 1.0 : 0.0) ESP 1032 1.0 ( 0.0 : 1.0) BRA 1032 1.0 ( 1.0 : 0.0) FRA 1012 1.0 ( 1.0 : 0.0) USA 1000 1.0 ( 1.0 : 0.0) LBN 910 4 SRB 1171 8.0 ( 6.0 : 2.0) 1.0 ( 0.0 : 1.0) GER 1357 1.0 ( 1.0 : 0.0) CAN 1202 1.0 ( 1.0 : 0.0) LTU 1102 1.0 ( 1.0 : 0.0) PUR 968 1.0 ( 0.0 : 1.0) ITA 937 1.0 ( 1.0 : 0.0) DOM 915 1.0 ( 1.0 : 0.0) SSD 850 1.0 ( 1.0 : 0.0) CHN 662 5 LTU 1102 8.0 ( 6.0 : 2.0) 1.0 ( 0.0 : 1.0) LAT 1227 1.0 ( 0.0 : 1.0) SRB 1171 1.0 ( 1.0 : 0.0) SLO 1078 1.0 ( 1.0 : 0.0) USA 1000 1.0 ( 1.0 : 0.0) MNE 905 1.0 ( 1.0 : 0.0) GRE 761 1.0 ( 1.0 : 0.0) MEX 712 1.0 ( 1.0 : 0.0) EGY 703 6 SLO 1078 8.0 ( 5.0 : 3.0) 1.0 ( 0.0 : 1.0) GER 1357 1.0 ( 0.0 : 1.0) CAN 1202 1.0 ( 0.0 : 1.0) LTU 1102 1.0 ( 1.0 : 0.0) AUS 1075 1.0 ( 1.0 : 0.0) ITA 937 1.0 ( 1.0 : 0.0) GEO 899 1.0 ( 1.0 : 0.0) CPV 727 1.0 ( 1.0 : 0.0) VEN 628 7 AUS 1075 5.0 ( 3.0 : 2.0) 1.0 ( 0.0 : 1.0) GER 1357 1.0 ( 0.0 : 1.0) SLO 1078 1.0 ( 1.0 : 0.0) JPN 972 1.0 ( 1.0 : 0.0) GEO 899 1.0 ( 1.0 : 0.0) FIN 876 8 ESP 1032 5.0 ( 3.0 : 2.0) 1.0 ( 0.0 : 1.0) LAT 1227 1.0 ( 0.0 : 1.0) CAN 1202 1.0 ( 1.0 : 0.0) BRA 1032 1.0 ( 1.0 : 0.0) CIV 763 1.0 ( 1.0 : 0.0) IRI 670 9 BRA 1032 5.0 ( 3.0 : 2.0) 1.0 ( 0.0 : 1.0) LAT 1227 1.0 ( 1.0 : 0.0) CAN 1202 1.0 ( 0.0 : 1.0) ESP 1032 1.0 ( 1.0 : 0.0) CIV 763 1.0 ( 1.0 : 0.0) IRI 670 10 FRA 1012 5.0 ( 3.0 : 2.0) 1.0 ( 0.0 : 1.0) LAT 1227 1.0 ( 0.0 : 1.0) CAN 1202 1.0 ( 1.0 : 0.0) LBN 910 1.0 ( 1.0 : 0.0) CIV 763 1.0 ( 1.0 : 0.0) IRI 670 11 USA 1000 8.0 ( 5.0 : 3.0) 1.0 ( 0.0 : 1.0) GER 1357 1.0 ( 0.0 : 1.0) CAN 1202 1.0 ( 0.0 : 1.0) LTU 1102 1.0 ( 1.0 : 0.0) ITA 937 1.0 ( 1.0 : 0.0) MNE 905 1.0 ( 1.0 : 0.0) GRE 761 1.0 ( 1.0 : 0.0) NZL 665 1.0 ( 1.0 : 0.0) JOR 478 12 JPN 972 5.0 ( 3.0 : 2.0) 1.0 ( 0.0 : 1.0) GER 1357 1.0 ( 0.0 : 1.0) AUS 1075 1.0 ( 1.0 : 0.0) FIN 876 1.0 ( 1.0 : 0.0) CPV 727 1.0 ( 1.0 : 0.0) VEN 628 13 PUR 968 5.0 ( 3.0 : 2.0) 1.0 ( 0.0 : 1.0) SRB 1171 1.0 ( 0.0 : 1.0) ITA 937 1.0 ( 1.0 : 0.0) DOM 915 1.0 ( 1.0 : 0.0) SSD 850 1.0 ( 1.0 : 0.0) CHN 662 14 ITA 937 8.0 ( 4.0 : 4.0) 1.0 ( 0.0 : 1.0) LAT 1227 1.0 ( 1.0 : 0.0) SRB 1171 1.0 ( 0.0 : 1.0) SLO 1078 1.0 ( 0.0 : 1.0) USA 1000 1.0 ( 1.0 : 0.0) PUR 968 1.0 ( 0.0 : 1.0) DOM 915 1.0 ( 1.0 : 0.0) PHI 631 1.0 ( 1.0 : 0.0) ANG 626 15 DOM 915 5.0 ( 3.0 : 2.0) 1.0 ( 0.0 : 1.0) SRB 1171 1.0 ( 0.0 : 1.0) PUR 968 1.0 ( 1.0 : 0.0) ITA 937 1.0 ( 1.0 : 0.0) PHI 631 1.0 ( 1.0 : 0.0) ANG 626 16 LBN 910 5.0 ( 2.0 : 3.0) 1.0 ( 0.0 : 1.0) LAT 1227 1.0 ( 0.0 : 1.0) CAN 1202 1.0 ( 0.0 : 1.0) FRA 1012 1.0 ( 1.0 : 0.0) CIV 763 1.0 ( 1.0 : 0.0) IRI 670 17 MNE 905 5.0 ( 3.0 : 2.0) 1.0 ( 0.0 : 1.0) LTU 1102 1.0 ( 0.0 : 1.0) USA 1000 1.0 ( 1.0 : 0.0) GRE 761 1.0 ( 1.0 : 0.0) MEX 712 1.0 ( 1.0 : 0.0) EGY 703 18 GEO 899 5.0 ( 2.0 : 3.0) 1.0 ( 0.0 : 1.0) GER 1357 1.0 ( 0.0 : 1.0) SLO 1078 1.0 ( 0.0 : 1.0) AUS 1075 1.0 ( 1.0 : 0.0) CPV 727 1.0 ( 1.0 : 0.0) VEN 628 19 FIN 876 5.0 ( 2.0 : 3.0) 1.0 ( 0.0 : 1.0) GER 1357 1.0 ( 0.0 : 1.0) AUS 1075 1.0 ( 0.0 : 1.0) JPN 972 1.0 ( 1.0 : 0.0) CPV 727 1.0 ( 1.0 : 0.0) VEN 628 20 SSD 850 5.0 ( 3.0 : 2.0) 1.0 ( 0.0 : 1.0) SRB 1171 1.0 ( 0.0 : 1.0) PUR 968 1.0 ( 1.0 : 0.0) CHN 662 1.0 ( 1.0 : 0.0) PHI 631 1.0 ( 1.0 : 0.0) ANG 626 21 CIV 763 5.0 ( 1.0 : 4.0) 1.0 ( 0.0 : 1.0) ESP 1032 1.0 ( 0.0 : 1.0) BRA 1032 1.0 ( 0.0 : 1.0) FRA 1012 1.0 ( 0.0 : 1.0) LBN 910 1.0 ( 1.0 : 0.0) IRI 670 22 GRE 761 5.0 ( 2.0 : 3.0) 1.0 ( 0.0 : 1.0) LTU 1102 1.0 ( 0.0 : 1.0) USA 1000 1.0 ( 0.0 : 1.0) MNE 905 1.0 ( 1.0 : 0.0) NZL 665 1.0 ( 1.0 : 0.0) JOR 478 23 CPV 727 5.0 ( 1.0 : 4.0) 1.0 ( 0.0 : 1.0) SLO 1078 1.0 ( 0.0 : 1.0) JPN 972 1.0 ( 0.0 : 1.0) GEO 899 1.0 ( 0.0 : 1.0) FIN 876 1.0 ( 1.0 : 0.0) VEN 628 24 MEX 712 5.0 ( 2.0 : 3.0) 1.0 ( 0.0 : 1.0) LTU 1102 1.0 ( 0.0 : 1.0) MNE 905 1.0 ( 0.0 : 1.0) EGY 703 1.0 ( 1.0 : 0.0) NZL 665 1.0 ( 1.0 : 0.0) JOR 478 25 EGY 703 5.0 ( 2.0 : 3.0) 1.0 ( 0.0 : 1.0) LTU 1102 1.0 ( 0.0 : 1.0) MNE 905 1.0 ( 1.0 : 0.0) MEX 712 1.0 ( 0.0 : 1.0) NZL 665 1.0 ( 1.0 : 0.0) JOR 478 26 IRI 670 5.0 ( 0.0 : 5.0) 1.0 ( 0.0 : 1.0) ESP 1032 1.0 ( 0.0 : 1.0) BRA 1032 1.0 ( 0.0 : 1.0) FRA 1012 1.0 ( 0.0 : 1.0) LBN 910 1.0 ( 0.0 : 1.0) CIV 763 27 NZL 665 5.0 ( 2.0 : 3.0) 1.0 ( 0.0 : 1.0) USA 1000 1.0 ( 0.0 : 1.0) GRE 761 1.0 ( 0.0 : 1.0) MEX 712 1.0 ( 1.0 : 0.0) EGY 703 1.0 ( 1.0 : 0.0) JOR 478 28 CHN 662 5.0 ( 1.0 : 4.0) 1.0 ( 0.0 : 1.0) SRB 1171 1.0 ( 0.0 : 1.0) PUR 968 1.0 ( 0.0 : 1.0) SSD 850 1.0 ( 0.0 : 1.0) PHI 631 1.0 ( 1.0 : 0.0) ANG 626 29 PHI 631 5.0 ( 1.0 : 4.0) 1.0 ( 0.0 : 1.0) ITA 937 1.0 ( 0.0 : 1.0) DOM 915 1.0 ( 0.0 : 1.0) SSD 850 1.0 ( 1.0 : 0.0) CHN 662 1.0 ( 0.0 : 1.0) ANG 626 30 VEN 628 5.0 ( 0.0 : 5.0) 1.0 ( 0.0 : 1.0) SLO 1078 1.0 ( 0.0 : 1.0) JPN 972 1.0 ( 0.0 : 1.0) GEO 899 1.0 ( 0.0 : 1.0) FIN 876 1.0 ( 0.0 : 1.0) CPV 727 31 ANG 626 5.0 ( 1.0 : 4.0) 1.0 ( 0.0 : 1.0) ITA 937 1.0 ( 0.0 : 1.0) DOM 915 1.0 ( 0.0 : 1.0) SSD 850 1.0 ( 0.0 : 1.0) CHN 662 1.0 ( 1.0 : 0.0) PHI 631 32 JOR 478 5.0 ( 0.0 : 5.0) 1.0 ( 0.0 : 1.0) USA 1000 1.0 ( 0.0 : 1.0) GRE 761 1.0 ( 0.0 : 1.0) MEX 712 1.0 ( 0.0 : 1.0) EGY 703 1.0 ( 0.0 : 1.0) NZL 665
8. Bayeselo Prediction Accuracy
In issue #1 rating list, before the semi-finals are played between USA-GER and SRB-CAN. It correctly predicts that GER will win over USA and SRB over CAN.
In issue #3, before the finals are played between GER-SRB for Gold/Silver and USA-CAN for Bronze, it also correctly predicts that GER will win over SRB and CAN over USA.
9. Download FIBA games in PGN format
You may download the pgn file [8] in my google drive. I use this to generate the bayeselo rating list.
Sample game.
[Event "FIBA World Cup 2023, INA, JPN, PHI, 2023-08-25 to 2023-09-10"] [White "AUS"] [Black "GER"] [Result "0-1"] [WhiteFIBARank "3"] [BlackFIBARank "11"] [WhiteFIBARating "740.2"] [BlackFIBARating "643.5"] [WhitePoints "82"] [BlackPoints "85"] 0-1
White refers to a team at the left when viewed from FIBA page. The Black is a team shown at the right. FIBA ranks and ratings are based from the rating list released by FIBA this February. The Points are the actual scores in the game.
Download the bayeselo.exe and the pgn file from the links in the reference section. Put them in the same folder and run from the terminal.
./bayeselo readpgn fiba_WC2023.pgn elo mm exactdist offset 1000 USA ratings >ratings.txt details >details.txt
Instead of exactdist, you can also use covariance to calculate the confidence interval.
You can also use my modified bayeselo program from my github repository [9]. This is the one I used to generate the rating list above.
F. Summary
Calculation Tree based from FIBA ranking system.
- Rating points calculation
RP = BP + HAP + ORP (for each game)- Base points or BP
- Home or Away Points or HAP
- Opposition ranking Points or ORP
- Weight calculation
Weight = TD x CR x CS x R (for each game)- Time decay, TD
- Competition and Region, CR
- Competition Stage, CS
- Round, R
- Team rating calculations involving the rating points and weights in the last 8 years.
rating = Sum(rp_i x w_i) / max(K, Sum(w_i)) (for all games i)
G. References
[1]. FIBA Basketball official page (accessed 2023-09-05)
[2]. FIBA World Ranking presented by Nike (accessed 2023-09-05)
[3]. FIBA World Cup 2023 (accessed 2023-09-05)
[4]. FIBA ranking for men calculation document (accessed 2023-09-05)
[5]. FIBA ranking calculation examples (accessed 2023-09-05)
[6]. Get FIBA match results by Playwright (accessed 2023-09-05)
[7]. Bayeselo rating system (accessed 2023-09-05)
[8]. Games in PGN format (accessed 2023-09-10)
[9]. Bayeselo from my github repository (accessed 2023-09-10)
[10]. Bayeselo History (accessed 2023-09-18)
[11]. FIBA World Ranking in CSV (accessed 2023-09-18)
Comments
Post a Comment