Reverse Engineering ESPN’s Total Quarterback Rating Formula with Quantile Regression in Julia, R, and Python
Please note that these material have not yet completed the required pedagogical and industry peer-reviews to become a published module on the SCORE Network. However, instructors are still welcome to use these materials if they are so inclined.
Welcome Video
If you are unfamiliar with ESPN’s Total Quarterback Rating (QBR), you can watch this video to learn more:
Introduction
The National Football League (NFL) has 14 official positions: 7 offensive, 5 defensive, and 2 special teams positions. One of the offensive positions is called Quarterback (QB), and their role is to lead their team on the field. ESPN streams NFL games and provides a lot of data on NFL players, including their Total Quarterback Rating (QBR), a 0-100 score measuring a quarterback’s contribution to winning. Higher scores indicate better performance.
In this module, you will learn how to reverse engineer the Total Quarterback Rating using data from the 2025 NFL Regular season. To reverse enginner QBR, we will use Quantile Regression and you will have the choice of learning it in Julia, R, Python, or multiple languages.
Data
The nfl_qbr.csv dataset contains 540 rows, each row representing a game from the 2025 NFL Regular season with 65 unique quarterbacks.
Download Data: nfl_qbr.csv
Variable Descriptions
| Variable | Description |
|---|---|
| week | Week of the NFL Regular Season |
| player | Full name of the quarterback for this game |
| qbr | ESPN Total Quarterback Rating (0-100) for the quarterback in this game |
| team | NFL team the quarterback played for this game |
| opponent_team | NFL team the quarterback played against this game |
| completions | Number of passes the quarterback completed this game |
| attempts | Number of passes the quarterback attempted this game |
| passing_yards | Total yards gained through the quarterback’s passing in this game |
| passing_tds | Number of touchdown passes thrown by the quarterback in this game |
| passing_interceptions | Number of passes by the quarterback that were intercepted |
| sacks | Number of times the quarterback was tackled behind the line of scrimmage this game |
| fumbles | Number of times the quarterback lost possession of the football |
| prop_total | Proportion of total points scored this game that were scored by the quarterback’s team |
| result | The quarterback’s team score this game subtracted by the opposing team’s score |
Data Source
The data was all scraped from https://www.espn.com/nfl/ using the R packagenflreadr. The uncleaned data included weekly Total QBR, player statistics, and game schedules for the 2025 NFL Regular season. After cleaning, the final dataset includes only quarterbacks and each row represents a game played in the regular season.
Quantile Regression
Quantile Regression is a statistical method that estimates conditional quantiles of the response variable (qbr, in our case).
Getting Started in Julia, R, or Python
Package: QuantReg.jl
Julia codeinstall.packages("quantreg")
library(quantreg)Package: statsmodels
Python codeReferences
Ho T, Carl S (2026). nflreadr: Download ‘nflverse’ Data. R package version 1.5.0.9002, https://nflreadr.nflverse.com.