| Round | Date / Venue | Home | Score | Δ | Conf% | Conf% | Δ | Score | Away |
|---|
SAGE — Surprise Adjusted Game Evaluation — is a power rating model for AFL teams. It tracks underlying team strength across every game since 2010, weighting outcomes by how surprising they were relative to what the model expected.
Before each game, SAGE calculates a Team Output for each side:
Team Output = SAGE Rating + Rival Advantage (R11) + Ground Advantage (V11) + Rest Penalty
R11 — the average game value across the last 11 head-to-head games between the two teams. Game value is outcome + (margin / 60), where outcome is +1 for a win, −1 for a loss, and 0 for a draw.
V11 — the same calculation across the last 11 games each team has played at the specific venue.
Rest Penalty — applied when a team has had fewer than 6.95 days since their last game: (days − 7) × 0.2. This is always zero or negative.
SAGE Rating — the team's accumulated rating from earlier in the current season. In round 1, or before a team has played their first game of the season, their final rating from the previous season is used instead.
The surprise factor captures how unexpected a result would be given the two teams' outputs:
SF = 1 + tanh((Opponent Output − Team Output) / 30)
A stronger team (higher output) gets a lower SF. An upset win by the weaker team produces a higher SF, meaning the result was more surprising.
Prediction confidence for each team is: 1 − (SF / 2). The stronger team gets a lower SF and therefore a higher confidence percentage.
After each game, a team's SAGE rating changes by:
Δ = (SF × outcome) + (margin / 60) + Century Bonus + Travel Bonus
Outcome is +1 for a win, −1 for a loss, 0 for a draw. Draws still accumulate delta from margin, century, and travel components.
The Century Bonus (+0.2) rewards teams who score 100 or more points. The Travel Bonus (+0.2) applies when a team plays away from their home state, or at a remote venue — Far North Queensland, Northern Territory, overseas, ACT, or Tasmania.
Ratings reset to zero at the start of each season. They accumulate round by round through the year and do not carry over. The previous season's final rating is used only to seed the Team Output calculation for a team's first game of the new season.
All match data is sourced from the Squiggle API. Ratings are recomputed from 2010 and updated every Monday and Thursday morning via GitHub Actions.