Using KenPom's team and player data, I wrote a simulator in Python that aims to reflect the actual flow of a game, including taking into account the following factors:
Factors Considered
Turnover rate (at the team level)
If turnover, whether the defending team had a steal (StealRate). If so, which defensive player stole the ball
If no turnover, which offensive player took the shot (% Shots), and what type (3PA/FGA)
If a foul was committed (FTRate), points scored off free throws (Free Throw %)
Regardless of foul, if shot was made (2PT FG % or 3PT FG %)
If made, whether the shot was assisted (AssistRate) and which offensive player had the assist
If miss, whether the defending team had a block (BlockRate). If so, which defensive player blocked the shot
If miss, whether the miss was rebounded by the offensive team (Off Reb %). Which offensive or defensive player rebounded the miss
If offensive rebound, possession resets
The opening tip is determined by a formula taking into account each team's effective height. An explanation of all of these stats can be found here, by KenPom.
There are still some complexities that I need to add to the simulator:
Qualifiers
If <= 6-point game with less than 90 seconds remaining, the defending team should foul
If 3-point game with less than 35 seconds left, the offensive team should shoot a three
If a player has 3+ fouls in the first half, they should sit until the start of the second
If a player has 4+ fouls, they should sit until <= 4 minutes left in regulation
If a player has 5 fouls, they're removed from the lineup
However, this rough draft should still represent the flow of an actual college basketball game fairly accurately.
Finally, after 10,000 simulations, here are the results for predicting tonight's game:
Final Score: Wisconsin 69.372, Duke 67.170
Wisconsin: 56.03%, Duke: 43.97%
Total: 136.542
Predicted Box Score:
Wisconsin | Points | Rebounds | Assists |
Kaminsky | 19.639 | 6.961 | 3.144 |
Hayes | 11.965 | 3.776 | 2.053 |
Dekker | 14.075 | 3.651 | 1.400 |
Jackson | 0.5705 | 0.092 | 0.176 |
Koenig | 9.2386 | 1.359 | 2.636 |
Dukan | 4.2493 | 1.487 | 0.542 |
Showalter | 2.0977 | 0.659 | 0.427 |
Gasser | 7.5346 | 2.965 | 2.071 |
Duke | Points | Rebounds | Assists |
Okafor | 13.986 | 4.962 | 1.409 |
Winslow | 11.594 | 5.163 | 2.154 |
Allen | 2.5854 | 0.487 | 0.218 |
Cook | 14.391 | 2.997 | 2.571 |
T Jones | 12.241 | 3.281 | 5.785 |
Jefferson | 3.7338 | 2.186 | 0.507 |
M Jones | 7.091 | 1.820 | 1.230 |
Plumlee | 1.5455 | 0.527 | 0.312 |
For what it's worth, KenPom's prediction is Wisconsin 70-69, 55%
No comments:
Post a Comment