Stats By Jaiden

2023-02-28

The secrets of SuperCoach AFL scoring

I’ve always been intrigued by the AFL SuperCoach game. Players’ scores are determined by a variety of playing statistics for each game, but we don’t really have any idea what is included. Effective disposals? Uncontested intercept marks? Gathers from hitouts? There are so many statistical categories that some coaches think it is magic! There is also match scaling to ensure each match totals to approximately 3300 points.

Unlocking the secrets behind how SuperCoach is scored will give better insights to the community and help with player selection. Explaining the scoring will help answer how certain players achieve high averages, what stats are important to be good at, and who gets the biggest bonuses.

This is my first blog post so make sure you share if you enjoy! Let’s try and reverse engineer SuperCoach scores!

What we know about scoring

From the SuperCoach T&C’s in 2023 (which match previous years), we have the following scoring breakdown:

Stat Awarded/Deducted
Effective kick 4 Points
Ineffective kick 0 Points
Clanger kick -4 Points
Effective Handball 1.5 Points
Ineffective handball 0 Points
Clanger handball -4 Points
Handball receive 1.5 Points
Hardball get 4.5 Points
Loose-ball get 4.5 Points
Goal 8 Points
Behind 1 Point
Mark uncontested (maintaining possession) 2 Points
Mark contested (maintaining possession) 6 Points
Mark uncontested (from opposition) 4 Points
Mark contested (from opposition) 8 Points
Tackle 4 Points
Free kick for 4 Points
Free kick against -4 Points
Hitout to Advantage 5 Points
Gather from hitout 2 Points

This is a good start but there are three main problems - where the analysis of scoring breaks down:

  1. These stats are too complex and can’t be viewed on the AFL website.
  2. This isn’t a comprehensive list of all stats used.
  3. We haven’t accounted for scaling. I’ll attempt to address these points while tracking how close we are to solving the formula.

1. Using the AFL website stats

Let’s start with the default stats available on the AFL website. Of the SuperCoach score categories we can see:

  • Effective kicks
  • Effective handballs (Effective Disposals - Effective Kicks)
  • Clangers
  • Hard/loose ball gets (Contested Possessions - Contested Marks - Frees For)
  • Goals
  • Behinds
  • Contested marks
  • Uncontested marks (Marks - Contested marks)
  • Tackles
  • Free Kicks

Here is an example of these stats exclusively, via the My Stats option on the AFL website. AFL Website Stats Example

Calculating scores using these stats and their respective point values we achieve this:

sc_stats %>% 
  rowwise() %>%
  mutate(SC_Prediction = sum(
    4 * effective_kicks,
    -4 * clangers,
    1.5 * (effective_handballs), # effective handballs
    4.5 * (contested_possessions - contested_marks - frees_for), # loose/hard ball gets
    2 * (marks-contested_marks), # uncontested marks
    6 * contested_marks,
    4 * tackles,
    4 * frees_for,
    -4 * frees_against,
    5 * hitouts_adv # hitouts to advantage
    )) %>%
  ungroup() %>%
  model_plot(SC_Prediction, Score, "SuperCoach prediction", "SuperCoach score estimation using AFL website stats")

I’ve introduced two metrics here to measure how accurate our predictions are.

  • R-squared, which measures how much variation in the actual scores can be explained by our predictions.
  • MAE, mean absolute error, which is the average difference between our predictions and the actual scores.

While an r-squared value of 83.1% might seem really good, it tells us that only 83% of variation in SC scores can be explained using the initial model. The MAE tells us that our predictions are 11.61 points off on average. Not very useful yet! It appears that middle scores are being underestimated and most huge scores are being overestimated. We need some more stat categories

2. Using advanced stats

We are missing quite a few stats that aren’t directly accessible on the AFL website. I’ve found some stats via a variety of sources, while other stats can be directly calculated using others. Most importantly we can fill out the full list of stats available in the T&Cs! Let’s take a look at what stats we have now:

## tibble [18,216 × 25] (S3: tbl_df/tbl/data.frame)
##  $ season                     : int [1:18216] 2022 2021 2022 2022 2021 2021 2021 2021 2022 2022 ...
##  $ round                      : int [1:18216] 6 10 2 12 16 18 16 20 2 16 ...
##  $ player                     : chr [1:18216] "Callum Mills" "Clayton Oliver" "Lachie Neale" "Max Gawn" ...
##  $ team                       : chr [1:18216] "Sydney Swans" "Melbourne" "Brisbane Lions" "Melbourne" ...
##  $ effective_kicks            : int [1:18216] 21 11 16 12 4 19 14 12 18 11 ...
##  $ ineffective_kicks          : int [1:18216] 1 7 6 4 6 4 5 4 7 5 ...
##  $ clanger_kicks              : int [1:18216] 1 2 2 2 1 0 4 1 1 0 ...
##  $ effective_handballs        : int [1:18216] 13 17 15 9 7 12 18 18 11 13 ...
##  $ ineffective_handballs      : int [1:18216] 0 1 1 1 2 4 2 3 3 3 ...
##  $ clanger_handballs          : int [1:18216] 1 0 1 0 0 0 0 1 0 1 ...
##  $ handball_receives          : int [1:18216] 12 9 12 3 1 13 9 15 14 8 ...
##  $ hard_ball_gets             : int [1:18216] 2 7 0 5 8 5 7 2 4 13 ...
##  $ loose_ball_gets            : int [1:18216] 6 12 18 7 2 7 15 7 4 4 ...
##  $ goals                      : int [1:18216] 1 3 2 3 1 1 1 0 1 3 ...
##  $ behinds                    : int [1:18216] 0 1 2 1 1 1 0 0 2 1 ...
##  $ uncontested_marks          : int [1:18216] 9 0 3 3 5 7 4 5 10 4 ...
##  $ uncontested_intercept_marks: int [1:18216] 0 0 0 1 1 1 1 1 1 0 ...
##  $ contested_marks            : int [1:18216] 2 1 3 6 3 2 1 0 0 1 ...
##  $ contested_intercept_marks  : int [1:18216] 2 0 3 0 1 0 1 0 0 0 ...
##  $ tackles                    : int [1:18216] 5 9 2 0 0 5 3 12 8 6 ...
##  $ frees_for                  : int [1:18216] 6 4 2 5 0 0 1 1 5 1 ...
##  $ frees_against              : int [1:18216] 0 1 1 2 2 0 0 1 0 0 ...
##  $ hitouts_to_advantage       : int [1:18216] 0 0 0 11 22 0 0 0 0 0 ...
##  $ gathers_from_hitout        : int [1:18216] 1 5 0 0 0 1 4 5 0 1 ...
##  $ sc_score                   : int [1:18216] 214 204 198 198 193 193 190 190 189 189 ...

The most exciting thing about this dataset is that we can see where players score their points and how well they do before their score is scaled. If we calculate all the scores based on these new stats we achieve a better fit:

We are almost at 90% of variation explained and the MAE dropped slightly. Still not perfect, but we are making progress! We still haven’t addressed the higher scores being overestimated Scaling should hopefully help with this by bringing them back to standard.

3. Scaling the scores via the 3300 rule

If you weren’t aware, SuperCoach AFL has a set value for total points in a game. Based on the predictions from before, the estimated number of games that hit this value is 93.7%, with the game average at 3582. If this is close to correct, then scaling our predictions will help a lot.

I’ll be scaling each score linearly to 3300, as it’s the best way I could do it. I’ve heard that stats are scaled quarterly but that also goes against the whole ‘every game is equal’ argument. Teams could only win one quarter and still get 4 premiership points.

Let’s see how the scaling affects our scores:

Awesome! The MAE is now single digits and R-squared went above 90%, which isn’t bad at all. So on average, the estimations are 8.27 points different to the actual scores. Let’s see who has the biggest differences:

Most overestimated players
Home & Away matches from 2021-2022
Player Games 2YR SC Average 2YR Estimation Diff
Jarrod Witts 25 107.2 122.0 14.8
Lachie Neale 37 113.5 127.8 14.3
Max Gawn 42 117.1 131.3 14.2
Reilly O'Brien 40 98.7 112.9 14.1
Rory Laird 42 121.8 135.0 13.2
Braydon Preuss 10 91.9 104.9 13.0
Nic Naitanui 30 110.6 122.9 12.3

Seems like the Rucks are being overestimated the most. There must be some extra stats in the ruck department (sharked hitouts would be one) that bring down ruck scores.

Most underestimated players
Home & Away matches from 2021-2022
Player Games 2YR SC Average 2YR Estimation Diff
Dougal Howard 38 74.4 58.3 16.1
Darcy Moore 34 85.4 69.8 15.5
Ryan Gardner 27 56.6 41.2 15.4
Tom Hawkins 44 94.1 79.2 14.9
Lewis Young 26 75.0 62.0 13.0
Harris Andrews 42 87.4 74.5 12.9
Jack Riewoldt 42 70.1 57.6 12.5

The key position players are being underestimated by the estimations. Dougal Howard and the other KPDs are elite in spoils so it is likely that they should be in there. Hawkins and Riewoldt stick out to me as players with a lot of score involvements/assists in high scoring teams.

So where to next?

It is hard to add anything else in with direct certainty. Each year a SC scoring system article is posted, with slight inconsistencies to the T&Cs:

“There are more than 50 statistical categories that count towards every player’s score. … long kicks are worth more than short kicks … a sharked hitout is valued at -1. And you really don’t want any of your players giving away a 50m penalty – that’s a whopping 8.5 points off a player’s total.”

— KFC SuperCoach beginner’s guide: How players score points, scoring system explained - Al Paton 06/02/2023 via FOXFOOTY.

Fortunately, last week Rainman posted some tweets based on SuperCoach score values that originated from a Fantasy Freako tweet in 2018. Thanks Rainman!

There are now more stats that I had with a definitive value:

  • Score assists: 3 points
  • Mark on lead: 5 points
  • Gathers: 1.5 points
  • Spoil: 2 points

Redoing all the data, I found that these stats helped to improve accuracy of score estimates!

The MAE has dropped below 8 points and the R-squared remains above 90. I’ll have to leave it there with what I currently have the resources for, and I’m happy with the end result. Unless anyone can give me a definitive value for long kicks…

View all the scores for yourself!

I’ve created a small app for you to view each match score, player averages and score breakdowns. There are options to filter by player, by team, and check out all the stats from 2021 & 2022. View stat categories as averages, counts, as SC point value, or percentage of SC points. Enjoy!

SUPERCOACH SCORE BREAKDOWNS APP

If you’d prefer a set of spreadsheets, perhaps you would prefer to download the data yourself to use in Excel or Google Sheets! Containing all the same stats, you can view every player, score and stat across the multiple tabs.

SUPERCOACH SCORE BREAKDOWNS Spreadsheet

Browse the scores via the link, or create a copy (Gsheets)/download (Excel) to sort and filter through the data yourself!

Having any issues with the app? I’d recommend trying out the spreadsheets as they contain all the same data, but just without the easy filtering options.

If you have made good use of these resources, consider supporting me on Kofi! Buy me a coffee to help me continue in posting more content like this.

 

Stats By Jaiden Blog

Written by Jaiden Popowski

jaidenstats@gmail.com