Introducing APV – A Single-number Player Evaluation Metric

The ultimate goal of hockey analytics is to win as many games as possible. There are many factors that influence the results of a hockey game given the sheer amount of almost random events that take place every single shift. And while some factors are intangible, such as leadership, much of what happens on the ice can be quantified. Single-number metrics tend to be effective ways to measure performance because they provide an instant comparison of all players and can be easily understood.

Actual Player Value (APV)

The goal of my project was to create a single-number metric that evaluates forwards, defencemen, and goalies in a comparable manner. I also wanted to make sure that this metric had a strong correlation to winning hockey games. I called my new metric Actual Player Value (APV) and it measures the value of the regular season performance of every player in the QMJHL. The APV scores go from 0 (negligible positive value) to close to 1000, with the league average being 100. Any player with a score above 100 is generally considered “above average”, and less than 100 “below average”.

MVP Nominees 2016-2017

This season for example, the skater with the highest APV was Samuel Girard at 680 (see table). He was nominated for league MVP, but Vitalii Abramov ultimately won it. All three nominees had very high APV scores and were all certainly deserving of the nomination. The reason that Girard’s APV is higher than Abramov or Roy is that, as a defenceman, he plays a larger share of his team’s ice time, and therefore brings more value to a team. Likewise, goaltenders can potentially have very high APV scores because they can significant impact a game.

Creating a Single-number Metric

At the NHL level, many have tried to create a “catch-all” metric. The gold standard for a catch-all metric is baseball’s WAR (wins above replacement). It’s an all-inclusive stat that can be used to compare players of all positions. However hockey is a far more fluid game than baseball, so no such perfect metric exist. Two of the best metrics that have been created are Tom Awad’s GVT (goals versus threshold) and Justin Kubatko’s Point Shares. Unfortunately, both use time-on-ice stats, which aren’t publicly tracked by the QMJHL. The player stats that are published in the QMJHL are fairly basic, so I only focused my work on the following stats: games played, goals, assists, penalty minutes, goals against average, and save percentage.

Calculating the APV Formulas

To create the formulas for my APV metric, I treated this as an optimization problem. I collected all regular season player stats from the past 10 QMJHL seasons (2007-2008 to 2016-2017), as well as the standing points for every team in the past 10 seasons. For the player stats mentioned above, I calculated the optimized weights that generated the highest correlation with team points.

Correlational Coefficients

The chart above shows the coefficients of correlation between a team’s total APV score and their points in a given season. As is often the case when quantifying players by position, forwards are the easiest ones to evaluate, followed by goaltenders, then defencemen. When added up together, a team’s total APV has an r-squared of 0.892, which means that the APV score can explain about 89% of the variance in a team’s points. With such as high r-squared value, the total team APV can also serve as a predictor of playoff success.

President's Cup Winners APV

The team with the highest APV has actually won the President’s Cup in all 10 years for which I’ve collected data. This metric could end up having a higher predictive value than my SRS team ranking system, at least when it comes to predicting the President’s Cup champion. However, APV is designed to be used as a player evaluation metric, not a team metric.

The breakdown by position gives an interesting look in how those championships teams were built. For example, the 2010 Moncton Wildcats had incredible goaltending and defencemen, while the 2013 Halifax Mooseheads where an offensive machine led by elite-level forwards.

Limitations of APV

Like all single-number metrics, APV has some limitations. It is most effective at evaluating forwards, although it is slightly biased against power forwards who take a lot of penalties, such as Jeffrey Viel or Boko Imama. It is fairly good at evaluating goaltenders, but those who play behind strong defensive teams will have their stats inflated. Finally, it is least effective at evaluating defencemen who don’t produce many points, given that there is no stat that directly measures “defensive ability”. As long as these limitations and the underlying assumptions behind the metric are understood, APV can be used as a simple yet effective way of measuring every single player in the league. However, for important player decisions, all available sources information should be taken into consideration to make the best decision possible.

Tagged with: , , , , , , , , , , , ,
Posted in APV Analysis
2 comments on “Introducing APV – A Single-number Player Evaluation Metric
  1. Mel B says:

    Could you please explain the R and R2 measures? I love your blog, keep up the good work!


  2. qmjhlanalytics says:

    Thank you for the kind words! “R” measures the strength and direction of a relationship between 2 variables, in this case a team’s APV and the number of points they had. “R^2” measures how much of the change in one variable (team points) can be explained by a change in another variable (team APV). The high R and R^2 numbers in my analysis indicate a very strong positive relationship between those two variables.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Follow on Twitter
%d bloggers like this: