It’s time for the annual post outlining the methodology used for our elo ratings. I’m going to start with some general information, that’s of interest to most readers, before we get into the nitty-gritty of the methodology. Some of you just may want to see what it’ll look like, feel free to skip to the images.

General Information

What are elo ratings?

We’ve gone into this a few times, like in our 2017 article which is a major foundation for our calculations, but it’s always good to review for people new to the term.

In 1997, Bob Runyan adapted Hungarian-American mathematician Dr. Árpád Élő’s system for rating chess players to international football. Since then, the system has been adapted for use by to rank teams across the world, and FIFA has modified it for use in ranking Women’s International Soccer.

In turn, Brotherly Game used a modified version that in-turn accounted for the unique qualities of the beautiful game in North America to account for the unique league and competition structures in the US. At the time of NSXI’s adoption, Brotherly Game used data streaming from 2011-2013, including 4,600 competitive matches, for determining their weights and the current ratings of teams in Canada & the United States.

NSXI first attempted to use elo ratings in 2014. It took a number of modifications, and a couple of restarts, but we feel we’ve been able to properly adapt the system to reflect the circumstances of soccer in Canada.

From 2014 – 2016, each year was held independent. Data did not carry over to the following year, and all teams restarted level in their league. This was necessary as we were still playing around with the formulas, weighting, etc.

As of 2017, ratings have been continuous. This provides greater accuracy in the long-term, and allows a better look at what teams have consistently performed well (or poorly) compared to their competition. It also allows leagues to float relative to one another due to their performances in National & International play.

The Basics

ELO was adapted to soccer by weighting for the type of match, adjusting for the home team advantage, and adjusting for goal difference in the match result.

Post-match, each team’s ELO-ratings is adjusted based on:

  • The team’s old rating
  • The importance or weight of the match
  • The goal difference of the match
  • The result of the match including home field advantage
  • The expected result of the match

We’ve made further adaptations to account for a changing home field advantage between divisions, home & away aggregate matches, and have developed a standardized formula for determining match weights.


Elo is based primarily on objective measures, and uses a team’s historical prowess to help determine their relative rating. Every match’s results, including the goal difference, is used to calculate the new ratings. Those match results are weighted based upon both the importance of the match/competition and the expected outcome of the match based upon each team’s history in the competition.


The weight or importance of the matches are decided by the ratings-designer. Therefore there is a subjective element to the weights of the match. Explanation on how we’ve addressed this can be found below under “Game Weights.”

Each team must start with a score, which is chosen by the ratings-designer. Again, a subjective element. This has been minimized by Brotherly Game by using the US Open Cup results to develop starting points. We’ve used their starting point, but adjusted based upon the official division of the league, and then used the more recent US Open Cup, Canadian Championship, & Interprovincial Cup results to modify those starting points.

There is a goal difference factor. The original was very strong, so we’ve utilized the same as Brotherly Game. A team that wins a game by two goals will get 50% more points for that outcome than if they had won by 1 goal. A three goal difference gets 75% more than 1 goal difference.

Changes for 2020

This year is extra special, as we’ve chosen to make a major expansion to our ratings by including all of the top amateur leagues & cups across the country. If the competition leads to competing for the Challenge Trophy, they’re included.

The Voyageur’s Cup/Open Cup linked leagues never actually get to play against the Challenge Trophy leagues. As a result, it’s not really accurate to put them beside each other in a single ranking. We’ll still do it, but unless you’re a Patreon, you’ll only see it at the beginning & end of 2020.

Instead, you can expect two updates per month. One for the Voyageur’s Cup/Open Cup stream (when in season), and a second for the Challenge Trophy stream.

Feel free to mark your calendars, because we’ve a pretty solid schedule:

The following leagues/cups are/have been tracked for each competition:

Challenge Trophy Stream

  • Newfoundland & Labrador Challenge Trophy (NLCT)
  • Nova Scotia Soccer League (NSSL)
  • New Brunswick Premier Soccer League (NBPSL – started 2019)
  • Ligue de Soccer Elite Quebec (LSEQ)
  • Ontario Cup (ON Cup – started 2019)
  • Manitoba Major Soccer League (MMSL)
  • Saskatchewan Cup (SK Cup)
  • Alberta Major Soccer League (AMSL)
  • Fraser Valley Soccer League (FVSL)
    • Pakenham Cup (starting 2020)
  • Vancouver Metro Soccer League (VMSL)
    • Imperial Cup (starting 2020)
  • Vancouver Island Soccer League (VISL – started 2018-19 season)
    • Jackson Cup (starting 2020)
  • British Columbia Cup (BC Cup)
  • Challenge Trophy (CT)

Voyageur’s Cup Stream

  • Major League Soccer (MLS)
  • Canadian Premier League (CanPL)
  • USL Championship (USL-C)
  • North American Soccer League (NASL)
  • League1 Ontario (L1O)
  • L1O Cup (if running)
  • Premiere Ligue de Soccer du Quebec (PLSQ)
  • PLSQ Cup (if running)
  • League 1 British Columbia (L1BC – if running)
  • L1BC Cup (if running)
  • USL League1 (USL-1)
  • National Independent Soccer Association (NISA)
  • USL League2 (USL-2)
  • National Premier Soccer League (NPSL)
  • NPSL Member’s Cup (NPSL MC)
  • NPSL Extended Season (NPSL ES)
  • Voyageur’s Cup (V-Cup)
  • Open Cup (O-Cup)
  • CONCACAF League (CL)
  • CONCACAF Champions League (CCL)


If you’re not a math or numbers person, feel free to skip this section, you’ll likely find it quite dull. It’s mostly being re-posted to provide easy reference for those wondering about the methodology.

Formula & Variable Definitions

Rn = Ro + K*G (W – We)

Rn = The new team rating
Ro = The old team rating
K = Weight index regarding the tournament of the match
G = A number from the index of goal differences
W = The result of the match
We = The expected result

Goal Differential = G

Only the score during regular & extended time is used. Any penalty kicks after extra time do not count in determining the goal differential.

The number of goals is taken into account by use of a goal difference index. G is increased by 25% if a game is won by two goals, and if the game is won by three or more goals by a number decided through the appropriate calculation shown below;

If the game is a draw or is won by one goal

G = 1

If the game is won by two goals

G = 1.25

If the game is won by three or more goals

G = (11+N)/10

Where N is the goal difference

Result of the Match = W

W is the result of the game (1 for a win, 0.5 for a draw, and 0 for a loss).

Expected Result of Match = We

We is the expected result (win expectancy with a draw counting as 0.5) from the following formula:

We = 1 / (10^(-dr/400) + 1)

(Home Field) Advantage = dr

There are two versions of this formula. As every team in the Challenge Trophy stream is in the same “division”, there’s no need to alter the home field advantage based on division. So it has a simpler formula.

In contrast, the Voyageur’s Cup stream has teams across multiple divisions. We’ve provided a base 25-points and then 10 extra points per difference in division.

Challenge Trophy Stream:

Home Elo – Away Elo


Away Elo – Home Elo

Voyaguer’s Cup Stream:

(Home Elo + (25 + (10 * |Home Div – Away Div|)))-Away Elo


Away Elo- (Home Elo + (25+(10* |Home Div – Away Div|)))

Weight Index = K

K = 5*(5-(Div-2))+FA*5+Post*10+Silver*5+CLQual*15+CCLQual*25+Agg1*(-5)+Agg2*(5)

Div = The highest skill-division playing. CanPL & MLS =1, USL = 2, etc.

FA = Whether the match is a Cup match. L1O & PLSQ either have or have had “FA Cups”. FA can either be a 1 or 0.

Post = Whether the match is a post-season match. Post can either be a 1 or 0.

Silver = Whether silverware is awarded as a result of the match. This means both Finals & Conference Finals. Basically, if you can put “final” at the end, it counts as a 1, otherwise, it’s a 0. There are a couple exceptions… If post-season playoffs are a round robin with the highest overall receiving the silverware (LSEQ 2017 & 2018), then it’s a 0.5. Additionally, if there are no playoffs of any sort, or if there’s a “Spring” and “Fall” champion followed by a playoff (ie CanPL, NISA, PLSQ, etc), then there’s a 1 for every regular season match.

CLQual = CONCACAF League qualification. If winning the match allows the team to take part in the CONCACAF League then this is a 1, otherwise it’s a 0. For our purposes, this means the CanPL Finals & the CONCACAF League Preliminaries.

CCLQual = CONCACAF Champions League qualification. If matches lead to the team to take part in Champions League, this is a 1, otherwise it’s a 0. This means for the Voyageurs & Open Cup, the MLS Final, and the CONCACAF League (non-preliminary) matches this will be a 1. It is also a 1 for CONCACAF Champions League matches.

Agg1 & Agg2 = Home & Away aggregate game 1 & game 2. If the score accumulates via aggregate, then these are toggled 1 or 0 depending on the game. If results are not determined by aggregate, both of these will be 0. Since the 2nd match in an aggregate series is more important, that is now reflected in the weighting.

Current match wieghts:

2020 Match Weights - Revision 4 - 9 Mar 2020
Last revised: 9 Mar 2020
Click for Full-Size.

Based on data available at time of publishing.

Starting Weights

Starting Weights:

When calculation first began in 2017 (or when the league was introduced), leagues had the following starting weights:

Challenge Trophy Leagues800

All league’s starting averages began to “float” at the beginning of 2018, except for those in Challenge Trophy Stream, which starts floating with 2020.

2020 New Team Starting Weights:

Click for full-size.

Based upon elo ratings calculated since Spring 2017 & information available at time of publishing.

The Visuals


Click for full-size.

Voyageur’s Cup/Open Cup stream:

Click for full-size.

Challenge Trophy stream:

Click for full-size.


Our elo ratings systems has had quite a few tweaks over the years, but we’re finally settling into a proper pattern. With the 3 BC leagues currently in play, we will have our 1st Challenge Trophy elo-ratings update on the 15th, unless you’re a Patreon (who get one every Wednesday).

A combined ratings update will be released just before the launch of the 2020 CONCACAF Champions League, which should account for any additional growth or contraction in teams for the coming seasons.

See you on the 15th!

error: Content is protected !!