Fantasy Football Coach
Undergraduate Honors Thesis
May 10, 2006
Johns Hopkins University
Raaid Ahmad
The Johns Hopkins University
raaid@jhu.edu
Venkat Bhagavatula
The Johns Hopkins University
venkat@jhu.edu
Jeffrey Dvornek
The Johns Hopkins University
jdvornek@jhu.edu
Abstract
Millions of people play some fantasy sport and finding a way to create an optimal team to
win the game is extremely difficult. Fantasy Football Coach (FFC) attempts to predict
player performance and analyze scoring and league specifications to allow managers to
draft the best teams possible. FFC employs three algorithms to enhance a manager’s
preparation for the fantasy football season. A pre-draft algorithm uses normalization and
regression techniques to predict player performance and create a ranking of NFL players.
A live-draft algorithm attempts to re-order the pre-draft lists as a live draft is occurring
based on draft trends and other in-draft factors. Finally, a trade evaluation algorithm
allows managers to determine the benefit they receive from a trade. The study concluded
that the various algorithms employed yielded teams that were between 7% and 10%
better than teams created using existing draft lists (ESPN, Yahoo, etc). The conclusions
imply that statistical research and methods can better predict player performance than
subjective measures.
I. Introduction
I.A. What are Fantasy Sports?
Fantasy Football is a game in which a group of players create and manage their
own football team. Each player’s team consists of real NFL (National Football
League) athletes that the players draft to be on their team. Once a real NFL player
has been selected to be on a team, he may not be a member of any other team.
The goal is to create the best possible team and at the end of the season, the
manager with the best team wins the league championship.
I.A.1. The Draft
The way each manager creates his/her team is through a process known as a
fantasy draft. Every manager is assigned a “draft pick” at random. The draft pick
denotes the position at which the manager may choose a player. The manager
with the first pick in the draft has his/her choice of any player in the NFL. The
second manager will then pick from any player that remains. This continues until
the last manager has picked a player. At this point, every manager has selected
one player and then the draft order reverses and continues. This means that the
last manager to pick in round 1 receives another pick right after their first pick,
i.e. the first pick in round 2. In this way, the draft “snakes” around as illustrated in
Figure 1. The draft continues until a team’s entire roster has been filled (typically
between 15 and 21 players, depending on the settings of the league).
Figure 1 – Illustration of “Snaking” Draft Progression
I.A.2. Scoring
Each week, a manager selects which of the players on their roster will “start” for
their team that week. The rest of the players are “benched”. Only players who are
started will earn points for their team during that given week. The manager must
select his/her starting lineup before the beginning of real NFL games that week.
Once the lineup is set, it cannot be changed after live games have started. Figure
2 illustrates a sample roster of players that a manager drafts.
POSITION PLAYER TD
PASS
YDS
RUSH
YDS
REC
YDS FG PAT
quarterback Peyton Manning 39 3745 121 0 0 0
quarterback Kerry Collins 26 3200 345 0 0 0
running back Deuce McAllister 11 0 1134 373 0 0
running back Clinton Portis 19 0 1674 2128 0 0
running back Warrick Dunn 9 0 899 555 0 0
Wide receiver Torry Holt 11 0 0 1100 0 0
Wide receiver Anquan Boldin 9 0 0 1254 0 0
Wide receiver Rod Smith 7 0 0 900 0 0
Wide receiver Ashley Lelie 5 0 0 875 0 0
Wide receiver Wayne Chrebet 4 0 0 993 0 0
tight end Jerramy Stevens 6 0 0 751 0 0
tight end Jeremy Shockey 5 0 0 627 0 0
kicker David Akers 0 0 0 0 29 34
kicker Martin Gramatica 0 0 0 0 18 28
Figure 2 – Illustration of a Sample Roster with Sample Statistical
Performances (Simplified by reduced number of statistical categories)
Of all the players available in the roster, the manager must choose who to start
based on league roster restrictions. A sample of a roster scheme is given in Figure
3. In the example league, since the manager can only start 1 quarterback and 2
running backs, he may choose to start Peyton Manning in lieu of Kerry Collins
and Clinton Portis and Deuce McAllister in lieu of Warrick Dunn. Whenever an
NFL player earns statistics in real life, (i.e. scores a touchdown, gains yards,
throws a completed pass, fumbles the ball) these feats earn the player a varying
number “fantasy points”. Every player that a manager has designated as a starter
will earn points for the manager’s team based on their real-life performance.
Figure 4 illustrates the conversion of real life statistics to points.
POSIT RTION STA ERS
quarter 1 back
running 2 back
wide re 3 ceiver
tight en 1 d
kicker 1
Figure 3 – Listing of a Sample League’s
Starting Position Restrictions
STAT IT TS ISTIC UN S P
TD 1 6
PASS 5 1 YDS 2
RUSH 0 1 YDS 1
REC 1 YDS 10
FG 1 3
PAT 1 1
Figure 4 – Listing of a Sample League’s
Scoring Scheme
For example, if a quarterback passes for 250 yards, he will earn 1 point for every
25 yards passed, or according to the table, 10 points. Figure 5 shows an example
of the calculations require in the conversion from statistical output to fantasy
points.
TD
PASS
YDS
RUSH
YDS
REC
YDS FG PAT
Peyton Manning 39 3745 121 0 0 0
Fantasy Point Formula 6*39 3745/25 121/10 0/10 3*0 0*1 Total
Fantasy Point Total 234 149.8 12.1 0 0 0 395.9
David Akers 0 0 0 0 29 34
Fantasy Point Formula 6*0 0/25 0/10 0/10 3*29 34*1 Total
Fantasy Point Total 0 0 0 0 87 34 121
Figure 5 – Calculation of fantasy score from real statistics, given scoring
scheme from Figure 4.
Finally, each week, one manager’s team will be pitted against another manager’s
team. At the conclusion of the games for the week, the fantasy team to have
earned the most fantasy points from real life performances will be declared the
winner for that week and will earn a win. The team’s opponent will in turn,
receive a loss. At the end of the season, (unless playoffs are used in the league)
the fantasy team with the best win/loss record will be crowned the champion.
I.B. Handling Variation
A difficulty in analyzing and mastering fantasy sports lies in many sources of
variance. This study deals primarily with 3 forms of variance and attempts to
account for 2 forms of variance and attempted to predict, or minimize the 3rd
source of variance. The three primary sources of variance that will be discussed
in this study are variance in scoring scheme, roster restrictions and player
performance. The scoring scheme plays a very important role in which team wins
a game during a given week. Many different leagues have different scoring
systems and this often changes the value of different players and different
positions. A second and equally important variation between leagues comes from
the league roster composition. The number of starters at any given position
changes from league to league as well as the total number of roster slots. This
changes the value of different positions and causes variations analyzing different
leagues. Finally, perhaps the most prevalent source of variation is the player
performance itself. While athlete performances can be projected, they are by no
means certain.
I.C. Current Applications
There is no shortage of data available regarding player projections for upcoming
years (ESPN.com, Yahoo.com, etc). There is also no shortage of listings that list
players in terms of statistical output, by position. However, the main problem
with this data is that it does not allow the user to use any of their own judgment
when making modifications to the projections. While in the specific case of
fantasy sports, statistical analysis is necessary, it is necessarily true that a purely
objective approach will almost never be optimal since the statistics cannot take
into account player slumps or breakouts.
Additionally, a major shortcoming of the current approach is that while it may not
be too difficult to analyze a league metric and rate various players in a given
position, (yet very few applications do this) it is significantly more difficult to
place players from every position into one comprehensive list, taking into account
the relative values of different positions. This comprehensive list is necessary to
give league managers an idea of which positions are more valuable than others.
Finally, and possibly most significantly, there is a huge void in the area of live
draft applications. There are no applications which give players updated rankings
during a player draft. A major reason for this is because algorithms for doing this
are by no means trivial. The algorithm requires information regarding the players
and information about the draft, such as the players that have been taken and what
teams have taken which players.
I.D. Fantasy Sports Coach’s Innovation
A major innovation offered by Fantasy Sports Coach is its ability to allow the user
to determine what quantitative data to use and what subjective modifiers should
be left to the user’s judgment. To date, the few fantasy sports applications that
exist use their own algorithms to create a player list based on statistics,
projections, and all quantitative criteria and end the analysis at that stage. Fantasy
Sports Coach offers users the ability to add modifiers to players based on their
personal feelings, hunches, or extra information that they have about a player that
cannot be captured in statistics alone. Given that a purely objective approach will
never be optimal (due to the large statistical variance in player performances from
year to year), allowing players to use their own extra information to modify a
baseline ranking (which was created via quantitative data) creates the possibility
for better rankings.
Fantasy Sports Coach brings unparalleled customization capability to the fantasy
sports frontier. First, users can customize Fantasy Sports Coach to create player
rankings based on the specific league format they play in. Users can specify the
number of starting spots in a league, the number of bench spots, and every single
detail of the scoring scheme of the league. Each of these pieces of information
provides Fantasy Sports Coach valuable data that can be used to optimize player
rankings. Second, users may manually add modifiers to players to move them up
and down on the application-generated rankings. This allows intangibles and user
based predictions to be used in the statistical rankings, something that does not
exist in any status quo applications.
II. Algorithms
II.A. Player Rating Algorithm (Pre-Draft)
Pre-ranking players for a fantasy football league draft requires consideration of
many factors. The first set of factors has to do primarily with the format of the
league and the makeup of the teams. In our program, the user provides details
concerning the scoring system of a league, the number of teams, and the positions
included.
When a fantasy league is created, a certain point value is assigned to each type of
major accomplishment in football (i.e. touchdowns, rushing yards, receiving
yards, passing yards, tackles, field goals, etc.). For example, at 1 point for every
10 receiving yards and 6 points per touchdown, a wide receiver would gain 9.5
points if he caught a 35 yard pass for a touchdown. Our ranking algorithm
therefore first reviews the statistics of current NFL players over the number of
years specified by the user, and calculates the number of points that each player
would have scored under the scoring system provided for each year. To do so,
each player is sorted into a container for his respective position, and the scoring
system is consulted to determine his absolute output weight. The “weight” of a
player can be thought of as a scaled number representing his value.
∑ ∑
=
∗=
Years
i
iAO ValuementAccomplishYearPlayerWeight
#
1
%)(
Figure 6 – Absolute output weight formula
Above we see the “absolute output weight” (shown as WeightAO) as the number of
points that the player would have scored over a certain number of seasons,
augmented by declining percentage significance for each season after the most
recent one. The number of seasons taken into account and the percentage assigned
to each season can be set by the user, but is defaulted to 75% for the most recent
season, 20% for the one prior, and 5% for the season before that.
Once each position has its players ranked by absolute output weight, it is
necessary to begin considering the more difficult problem of determining how
best to compare a player in one position to a player in another. Unfortunately, this
is not as simple as comparing the number of points achieved under the scoring
system. Each position is unique, in that the offensive achievement of a player in
one position could easily be more valuable to a team even though there are
players in other positions that have more total points for a season. The reason for
this boils down to averages: a player who produces significantly more than the
average number of points for his position is usually more valuable to a team than
a player who scores more points but whose production is similar to many others in
his own position (this relates to the concept of “position scarcity” discussed in the
Live Draft section). Because players are required for each position, it is important
to create a team that produces well across each one. In this way, drafting only
Quarterbacks (because they tend to score the most overall points) is useless since
a team can only garner statistics for a given number of Quarterback roster slots.
The most obvious solution to this issue is to take the average weight of each
position and score each player in that position according to how well they do
relative to the average. However, since there are only a certain number of players
that actually start in each position for each team, taking the average across every
player in a given position doesn’t provide an accurate benchmark to judge fantasy
players by (as there would be many players included in the average that are near
the bottom of their position and would never be drafted in the first place).
Because of this, our algorithm creates positional averages only across “drafted
players”. For a given position, this is equal to 1.5 times the number of starting
slots (the extra 0.5 accounting for backup) multiplied by the number of teams in
the league. Once the average is taken, all of the players in each position are
assigned new weights based on the percentage of points they score above or
below the average for their position. This is called the drafted average weight of
a player. The formula for this new weight for the ith player is below:
=kη (1.5 * # Starters for position k)
=
kp
μ Expected number of points scored by kη players for position k
⎟⎟
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜⎜
⎜
⎝
⎛ −
+=
k
p
k
p
iAO
iAOiDA
k
kWeight
WeightPlayerWeight
η
μ
η
μ
1)(
Figure 7 – Drafted average weight formula
Though these new weights could conceivably be compared as is, the comparison
would still not exactly provide a user with what he needs to have a good draft.
Because different leagues assign a different number of slots for each position,
each league has the potential to favor a different position. Thus, it is important to
compute what percentage of a team’s total production can be expected from a
given position. This is done by taking the average number of points for a given
position and multiplying it by the number of starting slots for that position. These
values are then summed to determine the expected average production of a team
in a given league. Once this is done, the percentage of total production for each
position can be computed. Every player’s drafted average weight is then
multiplied by his respective position’s percentage, providing the relative average
weight.
∑
=
= n
k
p
p
k
k
k
1
μ
μβ
kiDAiRA WeightPlayerWeight β*)( =
Figure 8 – Relative average weight formula
Above, we define βk as the percentage of a team’s expected output that can be
expected from position k (this is calculated for each of the n positions). This value
is then multiplied by a player’s drafted average weight to created his relative
average weight (WeightRAi above). With the relative average weight, it is now
possible to compare a player in one position to another. The algorithm combines:
• The total number of points a player would produce under the current
scoring system
• How well the player does compared to the rest of the players in his
position
• The expected total average output for a given player’s position on a team
All of this is used to create a comprehensive ranking list of the players in NFL
based which players would be most suited to a particular league’s configuration.
For thoroughness, 4 different variations of the main algorithm were used in
testing and a simplified version of our original algorithm was found to be
superior. All four algorithms are summarized here:
Algorithm 1: The main algorithm discussed above.
Algorithm 2: Simplified algorithm which just ranks players based on their
absolute output weight. (Biases positions which score more, i.e. quarterbacks)
Algorithm 3: Algorithm which rates players based on their relative average
weight. The number of players used in this average is a static number.
Algorithm 4: Same as algorithm 3, except the number of players over which the
average is taken is not static, but instead is dynamic and equal to the number of
starting players of the given position (i.e. the drafted average weight is included
as well).
II.B. Live Draft Algorithm
There are several issues to consider when re-ranking fantasy players in a live
draft. The first is “position scarcity”. The idea of position scarcity in fantasy
football is best illustrated by the tight end position. A tight end is an offensive
player whose primary role it is to block for the quarterback or running back.
Sometimes, however, the tight end will receive passes from the quarterback in
either surprise plays or last-ditch efforts. Because of the scoring in fantasy
leagues, the tight end is not judged by how good he is at playing his position (i.e.
blocking effectively), but rather by his offensive production. Unfortunately,
because of the position’s blocking responsibility, there are very few tight ends
that are able to become star receivers. This makes the tight end position “scarce”
in a fantasy league: there are a small number of stars that are a great deal better
than the rest.
After some analysis, it was decided that the best way to deal with the position
scarcity issue during live drafting was to reprioritize the draft list every time a
player in a “scarce” position is drafted to reflect the increased value of the
remaining “good” players at that position. Here, a “good” but scarce player is
defined as one that is several statistical deviations above his peers, with the rest of
the players at his position having relatively similar statistics. To do this, a “drop
score” was assigned to each player to reflect the percent difference between him
and the next ranked player in his position.