Designing a data dashboard to predict Rugby League match outcomes
Although there are some existing applications which do this, there are specific meaningful data points that I like to use. I am a software engineer and very passionate about sports so I decided to make my own!
Initially, I am envisioning a fixture list for upcoming round of NRL games. Each individual match will have a dropdown to view a short summary and can be clicked on to see a detailed summary.
I will be using API's where possible to get the data and otherwise using web scrapers. I want to get the following information displayed in the detailed summary:
- Try locations (left, right, middle) scored and conceded for each team in the current season
- Amount of tries scored/conceded
- Competition rank (for example, a particular team has the best right side attack in the competition and the other team has one of the worst left side defences can suggest a player on that side will be more likely to score)
- Percentage of tries scored/conceded on the left/right/middle
- Recent results which can be filtered by number of rounds on front end
- Average points conceded and scored in previous matches can be displayed from this data
- I also want short summaries for previous matches, so that a result that is an outlier can be easily understood at a glance (for example, players sent off in a game or significant players missing)
- Filter by matches with or without a particular player in the side
- Which players and what position they were playing in that game when they scored the try in previous games (for example, to see if a particular team often concedes to a right winger suggests a weak defence on that side)
- Team news (players in/out) and if they are named in a different position to normal
- Which position each player is expected to play in based on team lists released every Tuesday
- Automation to automatically update matches to change for each round and show updated data once matches are played
Once I deploy this project into production I'll look at some further interactive features such as
- Ability to sign up as a user and comment on matches, compare prospective bets with other punters or take other's insights into the match
- Assigning my own value as opposed to the bookie's value
- Using AI to make predictions
- Betting with pretend money to test out before using real money
Data model - V1
The following is the data model required for the first few features (displaying upcoming/current round, previous match results and who scored from which position). This will be extended for future features. Below displays entities and
Match
- Id (PK)
- HomeTeamId (FK)
- AwayTeam (FK)
- Date (string)
- Time (string)
- HomeTeamScore
- AwayTeamScore
Team
- Id (PK)
- Name
Player
- Id (PK)
- Name (string)
- PreferredPosition (string)
- TeamId (FK)
MatchPlayer
- Id (PK)
- MatchId (FK)
- PlayerId (FK)
- PositionPredicted (string)
- PositionPlayed (string)
Tech Stack
I have opted to use a react frontend, with python on the backend using the following tools
- SQLAlchemy for relational database
- Selenium/Beautifulsoup for web scraping
- FastAPI to manage the data to/from frontend
- Celery to schedule the web scraper