Ultimate Tennis Statistics and Tennis Crystal Ball
Ultimate Tennis Statistics is a Tennis Big Data Analysis tool with a nice web GUI. Tennis Crystal Ball is a set of Match Prediction and Tournament Forecasts algorithms powered by AI and machine learning.
Features
- 'GOAT' List - A.k.a. 'GOATometer' - Best players of Open Era ranked by 'GOAT' points with customizable weights (overall and by surface)
- Player Profile - Player information, season summary, tournament results, matches, timeline, rivalries, ranking, performance indicators and statistics with charts, 'GOAT' points breakdown and records
- Timelines - Dominance ('GOAT' points distribution among top players and seasons), Grand Slam, Tour Finals, Masters, Olympics, Davis Cup, Team Cups, Top Rankings and Surface timeline
- Head-to-Head - Head-to-head between two players with H2H matches, season summary, performance and statistics comparison, ranking, performance and statistics charts, 'GOAT' points breakdown and Hypothetical Matchup prediction based on the Neural Network Match Prediction Algorithm
- Heads-to-Heads - Heads-to-heads clusters among several players (i.e. among 'Big 4')
- Greatest Rivalries - Explore greatest rivalries, overall or by season, tournament level, surface or round
- Greatest Matches - Explore greatest matches ranked by special Match Greatness Score formula
- Ranking Tables - Player weekly ranking tables
- EloRatings - Player weekly Elo rating tables (overall, by surface, outdoor or indoor, set or game) using customized Elo rating formula
- Ranking Charts - Player ranking and ranking point charts, compare players by constructing custom charts
- Peak Elo Ratings - Peak Elo ratings list for comparing players in their peaks (overall, by surface, set, service/return game and tie-break)
- Titles and Results - Titles and other results, filtered by various filters
- Titles and Results Charts - Titles and results charts, filtered by level, surface and seasons
- Top Performers - Find top performers in both performance and pressure situations categories
- Performance Charts - Performance charts for various performance categories, filtered by seasons
- Mental Toughness - Compare players by mental toughness using special mental toughness formula, filtered by various filters
- Statistics Leaders - Find statistics leaders in different statistical categories (100+), including dominance and break points ratios
- Top Match Stats - Top single match statistics figures filtered by various filters
- Statistics Charts - Statistics charts for various statistical categories, including dominance and break points ratios
- Seasons - Browse seasons and check season records, tournaments, rankings, performance, statistics and 'GOAT' points distribution among top players
- Best Seasons - Find which are the players' best seasons of the Open Era based on 'GOAT' points (overall and by surface)
- Tournaments - Browse tournaments, see players with most titles, historical tournament levels and surfaces and average participation
- Tournaments Events - Browse all Open Era tournament events, see tournament event draw, performance, statistics, historical winners and records
- Tournament Forecasts - Tournament Event Forecasts for in-progress tournaments driven by Neural Network Match Prediction Algorithm
- Records Book - Various match, tournament result and ranking records, famous and infamous (the best player that never...)
- Live Scores - Live Scores via Enetscores by Enetpulse
Web Site
https://www.ultimatetennisstatistics.com
Data Loaders
- For Jeff Sackmann ATP CSV repository: https://github.com/JeffSackmann/tennis_atp (as of commit cf2201c on 2 dec 2019)
- Database setup instructions: #232
- Docker image mcekovic/uts-database with PostgreSQL database pre-populated with ATP tennis data as of season 2019: #337
Technology
PostgreSQL, Java, Spring Boot, Thymeleaf, JQuery, Bootstrap, Google Charts, Groovy...
Architecture
flowchart LR
user((User)) --> tn
subgraph uts[Tennis Stats]
direction TB
subgraph app[Spring Boot Java App]
direction TB
cc[Caffeine<br>Cache]
mvc(Spring<br>MVC) --> tcb(Tennis<br>Crystal Ball<br>Predictor) & elo(Elo Ratings<br>Manager)
mvc & tcb & elo --> cc
end
tn[[Tomcat<br>Native]] --> mvc
app --> cb[Let's Encrypt<br>Certbot] -- SSL certificate ---> tn
end
subgraph dl[Data Load]
direction TB
load(Data Load<br>Groovy Script) --> gd[[Selenium<br>Geckodriver]] --> ff[Headless<br>Firefox]
end
app -- spawn ---> load
app & load ---> db[(<br>PostgreSQL<br>DB)]
load --> repo[Jeff Sackman<br>Tennis Repo]
ff --> www([www])
style uts fill:DimGray
style app fill:CadetBlue
style mvc fill:Indigo
style elo fill:DarkOrchid
style tcb fill:DarkMagenta
style cc fill:Maroon
style tn fill:ForestGreen
style cb fill:Crimson
style dl fill:DimGray
style load fill:RoyalBlue
style gd fill:IndianRed
style ff fill:OrangeRed
style db fill:SteelBlue
style repo fill:DarkSlateGray
click mvc href "https://github.com/mcekovic/tennis-crystal-ball/tree/master/tennis-stats/src/main/java/org/strangeforest/tcb/stats/controller" _blank
click elo href "https://github.com/mcekovic/tennis-crystal-ball/tree/master/tennis-stats/src/main/java/org/strangeforest/tcb/stats/model/elo" _blank
click tcb href "https://github.com/mcekovic/tennis-crystal-ball/tree/master/tennis-stats/src/main/java/org/strangeforest/tcb/stats/model/prediction" _blank
click cc href "https://github.com/ben-manes/caffeine" _blank
click tn href "https://tomcat.apache.org/native-doc" _blank
click cb href "https://certbot.eff.org" _blank
click load href "https://groovy-lang.org" _blank
click gd href "https://github.com/mozilla/geckodriver" _blank
click ff href "https://www.mozilla.org/en-US/firefox" _blank
click db href "https://www.postgresql.org" _blank
click repo href "https://github.com/JeffSackmann/tennis_atp" _blank
Screenshots
Home Page
GOAT List
Player Profile
Player Tournaments
Player Timeline
Player Rivalries
Player GOAT Points
Dominance Timeline
Surface Timeline
Greatest Rivalries
Ranking Charts
Peak Elo Ratings
Top Performers
Statistics Leaders
Seasons
Best Seasons
Tournaments
Records Book
License
Tennis Crystal Ball and Ultimate Tennis Statistics source code is licensed under Apache 2.0 License.
'GOAT' Formula, customizations of Elo Ratings for tennis, Match Prediction, Tournament Forecasts and other algorithms by Ultimate Tennis Statistics are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
In short: Attribution is required. Non-commercial use only.