How Do Auction Values Differ by the Number of Teams in Your League? A Multilevel Model
20Many sites publish fantasy football players’ average auction values (AAV) for use in auction drafts. But these auction values often assume you play in a 10-team league. If you have a different number of teams in your league, the auction values will be different. This post examines how auction values differ based on the number of teams in your league.
Data and R Script
To examine how auction values differ by the number of teams, we examined FantasyPros auction values. They provide auction values for leagues with 4, 6, 8, 10, 12, 14, 16, 18, and 20 teams. You can download the data here:
You can download the R script here:
The Model
To examine the association between number of teams in a league and players’ auction values, one could fit a regression model. However, these auction values data have “dependency” because the same player provides multiple auction values (one for each league size). Thus, the auction values are not independent of each other (Peyton Manning’s auction values are more similar to his than to Tom Brady’s auction values). This dependency would violate the assumption of multiple regression that the residuals are independent (uncorrelated). As a result, I fit a multilevel model (aka mixed-effects model or hierarchical linear model) to account for the dependency of multiple auction values for the same player.
In a typical regression model, the goal is to generalize the results to a broader population. If you add too many parameters to the model, you may over-fit the data by modeling error. This over-fitting model would not predict well in a new data set (i.e., cross-validation). In the current context, on the other hand, we have the auction values for the this season’s players and don’t want to generalize to a different set of players. As a result, we want to model the auction values as accurately as possible, and are willing to add parameters to do so.
To fit an accurate multilevel model examining how auction values differ by league size, I included four predictors and their interactions:
- Number of teams in the league
- The player’s auction value in a 10-team league
- The player’s position
- The player’s position rank
Here’s the model statement using the lme() function from the nlme package in R:
The random = 1|player statement tells the model that multiple auction values are nested within the same player (to account for dependency). This allows different players to have different intercepts (i.e., means or levels) for auction values, also known as “random intercepts”. The random = teams|player statement allows the effect of number of teams on auction values to differ by player, also known as “random slopes”. The I(numTeams^2) statement allows the number of teams in the league to have a nonlinear, quadratic association with auction values.
Results
The model fit the data well, with an R-squared of .996 and a mean absolute scaled error (MASE) of .061. As shown below, auction values differed by the number of teams in the league, but the pattern differed considerably by position and position rank. QBs showed higher auction values in leagues with more teams, but the pattern was more nonlinear among the highest rated QBs. RBs showed a nonlinear, inverted-U pattern that differed by position rank. RBs with high position ranks showed peak auction values in leagues with 14–16 teams. RBs with low position ranks showed increases in auction values up to 20 teams. WRs and TEs generally showed increases in auction values with increasing number of teams. The slopes of WR/TEs’ curves were not as steep (compared to QB/RBs’ curves), suggesting that WRs’ and TEs’ auction values are less affected by number of teams in the league. WRs with high position ranks showed increases up to 18 teams and decreases for 20-team leagues. WRs with low position ranks showed increases up to 20 teams. Most TEs showed increases up to 20 teams, except for the top ranked TE (Rob Gronkowski), who showed slight decreases in auction value in leagues with more teams. DSTs and Kickers showed little variation in auction values by league size, probably because their auction values are so low ($1–$2).
In summary, among lower-ranked players, players’ auction values increased in leagues with more teams, regardless of position (except DSTs and Kickers, who showed little variation by league size). Among higher-ranked players’ auction values:
- QBs: large increases in leagues with more teams
- RBs: large increases in leagues up to 14–16 teams and then decreases in leagues with 18–20 teams
- WRs: small increases in leagues up to 18 teams and then small decreases in leagues with 20 teams
- TEs: small increases in leagues with more teams except the top ranked TE (Rob Gronkowski), who showed decreases in leagues with more teams
- DSTs: little variation by league size (all were $1–$2)
- Kickers: little variation by league size (all were $1)
Plots, separated by position, of the actual auction values and the model-based predicted auction values are below (actual auction values on left, predicted auction values on right).
Conclusion
Player’s auction values differ based on the number of teams in your league and on the player’s position and position rank. Lower ranked players showed higher auction values in leagues with more teams, regardless of position (except DSTs and Kickers, who showed little variation by league size). Higher ranked players showed nonlinear patters that differed by position. Compared to WRs’ and TEs’ auction values, QBs’ and RBs’ auction values were more strongly influenced by league size. Using a multilevel model, we were able to accurately predict a player’s auction value for leagues of different sizes. We use these predictions to adjust auction values in our Auction Draft Optimizer tool.
I don’t pretend to understand all the semantics behind this, but it’s very enlightening. Hope to get to this level of understanding someday. Thanks for sharing!
Isaac, I absolutely love your site. It’s the most enjoyable use of statistical analysis I’ve ever encountered. Our league evolved from snake to auction drafting a couple of years ago, and your findings in this article on AAV well match my experience. I had thought that the value differentials were caused by the additional time required to draft larger leagues, and the inevitable increase in ABV (alcohol by volume) consumption. So, thank you for correcting my assumption.
I don’t mean to rush you — I know you all work your butts off on this stuff! — but with my draft on Saturday morning (8/15), do you have an idea as to whether or not your auction draft tool will be ready in time? I’m just trying to get an idea if I need to do research elsewhere for my picks.
Thanks for all your hard work!
Hi Adam,
We have plans to release a preliminary version within the next couple days, should be before your draft.
Stay tuned!
-Isaac
Awesome. You guys rock!
First of all, the auction draft tool is top notch! Seriously! Words cannot describe how grateful I am. I love seeing the highest floor and highest ceiling teams calculated for me. The only issue I have ran into thus far has to do with changing the lineup numbers. Whenever I add a second flex RB/WR/TE instead of one, the projected optimal teams still only show one flex RB/WR/TE. This isn’t a huge issue since the optimal teams only spend a total of $184 of my $200 cap and I have 8 players on my bench. I would still have $4-8 to spend on an additional flex. I am on Mozilla Firefox using Windows 7. ESPN scoring with PPR=1 point. Starting 1 QB, 2 RB, 2 WR, 1 TE, 1 K, 1 DST, 2 Flex RB/WR/TE and 8 on the bench.
With your settings the optimizer will find 2-4 RBs, 2-4 WRs, 1-3 TEs. When I use your setting then I see that the optimal lineup for points returns 4WRs, 2RBs and 1 TE and a total of 10 players. What were you expecting to see in terms of your flex position?
Now receiving an error stating the AAV are not found if that helps.
What do you do to get the error? Where are you getting an error and what is the exact error?
If I do not mention it, I do not touch it.
(From top to bottom)
Change Data Settings > Number of Teams-12 > Cap Reserved for Bench-8 > Total Players on Roster-18 > Number of Starters by Position WR/RB/TE-2 > League Scoring-ESPN > RB/WR/TE-added 1 for reception for each position > Load
Error-An error has occurred:
object ‘adjustAAV’ not found
In call:
predict(adjustAAV, newdata = aavData, level = 0)
Hey Jeff,
Just fixed this error. Let us know if you continue to run into problems.
Thanks!
-Isaac
Isaac,
I am amazed at how quickly you responded and fixed the error. If we lived in the same city, I would be bringing you a 6 pack of your favorite brew or a bottle of your favorite wine. It is hard to find people in America today who have a high quality work ethic along with accountability and integrity. You, my friend, have all three. I have no doubt you will excel in anything you pursue. Thanks again for this excellent app.
Thanks Jeff, you can give those props to Dennis—he identified and fixed the issue 🙂 I work with a great team!
I am glad you guys are out there. You have saved me a ton of work, sweat, and tears. The only other issue I am experiencing is when I change the risk factor or add a drafted player using the auction tool, the settings automatically default back to 1 WR/RB/TE flex option when I have selected 2. I have found if I go back into the “change data setting” section, scroll down to the bottom, and hit load, it does take everything back to my 2 flex player option. Is there a way to save the settings for the time the tool is in use in an active browser or will I need to go back and hit load every a player is drafted or I decide to change the risk factor?
Hey Jeff,
Good catch! We’re looking into it.
Thanks!
-Isaac
Hi Jeff,
I think we figured it out and fixed it. Let us know if you still run into problems!
Thanks!
-Isaac
Gentlemen,
Top of the morning to you. The auction tool is working flawlessly for me. I am extremely grateful here. If you ever wanted to develop this into a phone/iPad/Tablet app, I would easily pay $10-20 a season for the use of the app. My phone is a lot easier to hide what I am doing as oppose to my laptop. Just a thought. Now to see if you guys can block all additional IP addresses from my part of the state? I can narrow it down to two counties! I would hate for one of my league mates to catch wind of this site! Seriously though, I believe what you guys are doing here is the cutting edge in fantasy football. You are well ahead of the bell curve. Any thoughts on a podcast? I would be more than willing to participate.
Glad to hear, Jeff! Thanks for the kind words and good suggestions. Will keep them in mind! Let us know if you are interested in contributing!
-Isaac
How would you adjust auction values in a keeper league? I am in a league where we keep up to 3 players. They cost their previous year’s auction price + $5, or $5 for a $0-1 FA or $10 for a $2+ FA. E.G. I’m keeping Odell Beckham for $10. So excited to have found this site (love the yardage bonus calculations). Great work!
Hi Brian,
You can adjust AAV by setting the source of AAV and the Low/Mid/High rank and multiplier. I’d suggest looking at MyFantasyLeague for keeper AAV values. We have plans to allow users to input a .csv file with custom costs.
Thanks!
-Isaac