A position-adjusted framework for evaluating player contribution

Joseph Reina · Independent Analytics Project


Overview

For years, I’ve wanted to change the way our league and our sport compares players. We have positions and raw point totals, yes, but ask anyone around the league and they’ll tell you that there’s a big difference between Chad Poarch and Chad Vandegriffe. Both are highly-regarded, elite defenders but if you were to watch the two play, you’d notice immediately they have very little in common.

Poarch is a tall, graceful presence, who carries the ball out of the back and turns possession into dangerous chances. In his first two MASL seasons with the Baltimore Blast, he’s scored 43 goals in 44 appearances with a further 18 assists to boot. He’s an offensive juggernaut but on average, he blocks a shot roughly once every other game.

Compare that with Vandegriffe who joined Lehigh Valley this summer ahead of their inaugural season. He’s enjoyed a 12 year MASL career and he’s known much more for his defensive feats than his prowess going forward. He’s blocked 449 shots throughout his career, nearly two per game, but has never scored more than six goals in a single regular season campaign.

So it’s settled then. Vandegriffe is the better defender. He blocks more shots and does more defending than his namesake in Baltimore. But is it really that simple? Does that really mean he’s a better defender? What about a midfielder or forward who tracks back and blocks shots? Can we compare the three field positions on a level playing field?

Methodology

To answer this question I began with the league’s spreadsheet of player data from last season. I wanted to first see which players were standing out compared to their teammates. I added each team’s total goals scored to the dataset along with their total blocks. These are stats I already keep from individual game pages throughout the season.

DATA AVAILABLE

Core data

  • Games Played (GP)
  • Goals (G)
  • Assists (A)
  • Points (Pts)
  • Shots (Sh)
  • Blocks (BS)
  • Team
  • Position

Additional league statistics are retained for contextual analysis and future development.


I started by creating Shots Per Game (SPG) and Blocks Per Game (BPG) stats to go with the league’s Points Per Game (PPG). From there I created a stat called Share Of Team Offense (SOTO) and Share Of Team Blocks (SOTB) [Note: I didn’t call it Share Of Team Defense (SOTD) because I felt blocks are an incomplete way of analyzing defense performance and while I am doing this project with limited data, I felt it best to not get out over my skis].

Next, I created a percentage column for all five stats: PPG, SOTO, SPG, BPG, and SOTB. These percentages are not throughout the league as a whole but rather each position so defenders are compared with defenders, midfielders are compared with midfielders, and forwards are compared with forwards. Now that this is done, we can proceed to the next step: creating ratings for each player.

We’ll start with Offensive and Defensive Ratings for every player. I attempted to weight all three attacking stats fairly evenly so as to not overly reward a player who excels in one area and not the others. The formula I used is as follows:

Offensive Rating = PPG% x 0.4 + SOTO% x 0.3 + SPG% x 0.3

Defensive Rating = BPG% x 0.6 + SOTB% x 0.4

Rather than just giving every player an even split in the overall rating, we’ll tailor each player’s rating to their expectations based on their position and the weighting is influenced by stats from last season. Forwards accounted for roughly ~68.6% of all goals last season (goals and assists), midfielders came in next with ~66.4%, and defenders were last with ~39.4%. When looking at blocks, defenders led the way with ~50.2%, while midfielders made ~33.2% of all blocks leaving just ~16.5% for the forwards.

With all this data in mind, I created initial positional rating models based on each position as follows:

Forwards: Offensive Rating x 0.8 + Defensive Rating x 0.2

Midfielders: Offensive Rating x 0.67 + Defensive Rating x 0.33

Forwards: Offensive Rating x 0.44 + Defensive Rating x 0.56

As a final adjustment, I added an availability rating based on what percentage of their team’s games each player appeared in. I also used some team weighting stats from MasseyRatings.com to create slight boosts and detraction based on the strength of each player’s team, after noticing that that players on better teams have slightly lower stats than those on worse teams, likely because they are sharing the spotlight with other good players. The changes are less than plus or minus two rating points.

The Final Ratings

Offensive contribution + Defensive contribution + Availability + Team context

It’s important to note, a rating of 100 would not represent a theoretically perfect player. It represents the top end of the evaluated player population. Also, My model’s output mirror’s that of EAFC’s ~50-100 scale player-rating systems for the sake of immediate familiarity.

To illustrate these ratings, I created two interactive graphics based on team and player position. This allows us to sort all players in the MASL by their position and visually see where everyone falls in the chart.

Players in the top right are our well rounded players; They’re proficient on both sides of the ball relative to their positional peers. Players in the top left quadrant contribute significantly more on defense while players in the bottom right quadrant contribute significantly more on offense. Players in the bottom left are below the league average in both categories.

Position Explorer

With that, we have our final ratings. If we could look at our defenders Chad, you’ll immediately notice they are on seemingly opposite ends of the graph. Vandegriffe’s red bubble lives near the top of the upper left quadrant thanks to his defensive score of 98.8 while Poarch sits just below the Defensive Score mean on the far right side of the graph. His Offensive Score of 98.3 is behind only two defenders, Milwaukee’s Mario Alvarez and his Baltimore teammate Oumar Sylla.

By comparing the two Chads, we can see how our model picks a favorite. Despite the weight given to defensive ability for defenders (Off: 44%, Def: 56%) Poarch (87.7) still ranks above Vandegriffe (85.4) in our model, but only just. Alvarez, who was crowned Defender of the Year last season, boasts an 87.7 Final Rating but he’s just the 10th best defender according to our model.

Leading the way is Empire’s Player/Head Coach Robert Palmer (94.6), who accounted for 26% of his team’s blocks last season. He also led the Strykers with 14 assists and contributed to 14% of his teams goals offensively. Kansas City’s Lesia Thetsane (92.1), St. Louis’ Robert Williamson (90.3), and San Diego’s Cesar Cerda (90.1) are the only other 90+ rated defenders, while Utica City FC’s Geo Alves (89.4) just missed out.

Team Explorer

Current Limitations

The model is constrained by the publicly available MASL statistical dataset.

The current defensive component does not capture several actions that would ideally contribute to a complete evaluation of defensive performance, including:

Blocks are therefore used as the primary consistently available defensive measure.

With access to more granular event-level or tracking data, the model could be expanded to provide a more comprehensive evaluation of two-way player contribution.

What I’d Like to Explore Next

Future iterations with better data could incorporate:

The long-term goal is not simply to produce a single player number, but to build a framework that better represents how the game is actually played.