Skip to content

Predicting 2025 NFL Draft Ranges Based on Consensus Big Boards

Background

The NFL Draft is the annual college player selection event for the National Football League. The draft lasts seven rounds over three days in late April, as each team has the opportunity to add players attempting to turn pro onto their rosters.

Forecasting different parts of the draft has become a significant cottage industry. From prospect projections to evaluations of team picks and trades, grading and forecasting different areas of the draft generates massive interest from mainstream and niche media sources alike.

As a result, there have been numerous analytical metrics developed to model different areas of interest, such as prospect athleticism and draft pick value. Here, we'll attempt to take past NFL Draft data to predict draft pick ranges for the top 100 prospects in the 2025 NFL Draft.

There are no formal or official player rankings, as all of these are subjectively done by a multitude of media outlets. However, the NFL Mock Draft Database has consensus "big boards" dating back to 2016, which represent a consensus reached from the aggregation of hundreds of publicly available player rankings.

Using data from 2016-24, we predicted the landing spots for the consensus Top 100 in the 2025 Draft Class, based on factors such as position value, big board rank, and depth of talent at each position.

Data Preparation

# Load all the necessary R packages for data visualization, data manipulation and data analysis.
library(readr)
library(dplyr)
library(ggplot2)
library(broom)
library(tidyr)
library(purrr)
library(forcats)
install.packages("moderndive")
library(moderndive)
library(caret)
library(ranger)

### Read in the Databases for 2016-24 Consensus Top 200 Big Boards and 2025 Consensus Top 100 Big Board
big_boards_past <- read_csv("NFL Draft Consensus Big Boards 2016-25 - 2016-24 Big Boards.csv")
glimpse(big_boards_past)

big_board_current <- read_csv("NFL Draft Consensus Big Boards 2016-25 - 2025 Big Board.csv")
glimpse(big_board_current)

Exploratory Data Analysis

# Examine Structure of Dataset

str(big_boards_past)
str(big_board_current)

Variables

  • Year: Numeric variable indicating calendar year in which the NFL Draft was held

  • Big Board Rank: Numeric variable indicating a player's rank on the Consensus Big Board that year

  • Player: Character variable containing the player's first and last name

  • Position: Character variable containing the abbreviation of the player's position.

  • Actual Round: Numeric variable indicating which round a player was drafted. The NFL Draft has 7 rounds, while undrafted players (i.e, not picked in the draft) are labeled with an 8.

  • Actual Overall: The overall pick in the entire draft where a player was selected. Undrafted players receive a designation of 275.

  • Pos Year Rank: A player's rank within his position in a given year, based on the Consensus Big Board.

Big Board Rank Based on Position

ggplot(big_boards_past, aes(reorder(Position, `Big Board Rank`, FUN = median), `Big Board Rank`)) +
  geom_boxplot() +
  theme_bw() +
  labs(title = "QBs and OTs had the highest median Big Board ranking of any position",
       subtitle = "Distribution of Big Board Rank By Position",
	   caption = "Based on Consensus Big Boards, 2016-24",
	   x = "Position")

Overall Pick Based on Position

ggplot(big_boards_past, aes(reorder(Position, `Actual Overall`, FUN = median), `Actual Overall`)) +
  geom_boxplot() +
  theme_bw() +
  labs(title = "Apart from QBs, NFL teams drafted trench positions earlier",
       subtitle = "Distribution of Overall Pick Number By Position",
	   caption = "Players Drafted From 2016-24",
	   x = "Position")

Analysis

The boxplots illustrate the distribution of Big Board Rank and Overall Pick for each of the positions, sorted by median. Quarterbacks are unsurprisingly the most valued position and have the earliest median pick. Offensive tackles and edge rushers, are fittingly near the lowest median pick given that the positions typically face off. Centers rank surprisingly high, but some of this stems from selection bias since the sample at that position is the smallest in the dataset (n = 52).

On the opposite end of the spectrum, recent drafts have viewed running backs, guards and linebackers as the least valuable positions based on median draft position.

Overall Pick vs Big Board Rank

big_boards_past %>%
  filter(`Actual Overall` < 275) %>%
  mutate(Position = fct_reorder(Position, `Actual Overall`, median)) %>%
ggplot(aes(`Big Board Rank`, `Actual Overall`)) +
  geom_jitter() +
  geom_smooth(method = "lm") +
  facet_wrap(vars(Position)) +
  theme_bw() +
  labs(title = "Overall Pick vs Big Board Rank Rank, 2016-24",
	   subtitle = "Sorted by Median Overall Pick by Position",
       caption = "Players Drafted From 2016-24",
	   y = "Overall Pick")