Skip to content

mcekovic/tennis-crystal-ball

Repository files navigation

Ultimate Tennis Statistics and Tennis Crystal Ball

Build Status Build Status Web Site Quality Gate Status License Top Language

Logo 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

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

Home Page

GOAT List

GOAT List

Player Profile

Player Profile

Player Tournaments

Player Tournaments

Player Timeline

Player Timeline

Player Rivalries

Player Rivalries

Player GOAT Points

Player GOAT Points

Dominance Timeline

Dominance Timeline

Surface Timeline

Surface Timeline

Greatest Rivalries

Greatest Rivalries

Ranking Charts

Ranking Points Chart

GOAT Points Chart

Peak Elo Ratings

Peak Elo Ratings

Top Performers

Top Performers

Statistics Leaders

Statistics Leaders

Seasons

Seasons

Best Seasons

Best Seasons

Tournaments

Tournaments

Records Book

Records Book

License

Tennis Crystal Ball and Ultimate Tennis Statistics source code is licensed under Apache 2.0 License.

Creative Commons 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.