Win Your Fantasy Football Auction Draft: Determine the Optimal Players to Draft with this App
375In this post, we use a Shiny app in R to determine the best possible players to pick in a fantasy football auction draft. The app includes the most accurate fantasy football projections available, and calculates a robust average of more sources of projections than any other website (see here for a list of the sources of projections). You can even choose how much weight to give each source. Based on your league settings, it determines which players you should draft to maximize your starting lineup’s projected points. It also allows you to change your risk tolerance to avoid picking risky players. Best of all, the app updates the selections automatically with your inputs, and you can download the data for yourself. So let’s get to it. Here’s a more thorough description:
How it Works
First, we use a script to scrape player’s projected points from numerous sources using R. Second, we scrape average auction values from various sources. Third, based on the user’s league scoring settings, we calculate players’ projections using an average of the analysts’ projections (by default, the sources are weighted according to historical accuracy). You can choose which projection sources to include, modify the weights, and choose to calculate a mean, weighted average, or robust average. A robust average is less affected by outliers (crazy projections). Fourth, we calculate players’ risk levels, as defined by the average of: 1) injury risk from Sports Injury Predictor, and 2) the standard deviation of the players’ projected points and rankings across analysts. Note that risk is standardized to have a mean of 5 and a standard deviation of 2. Fifth, we calculate the value of each player over a typical replacement player at his position (VOR) to determine player rankings.
Sixth, we take players’ average auction values (AAV) from the source you select (e.g., Yahoo, ESPN), and adjust them based on the league cap and the number of teams in your league. Seventh, we calculate a player’s cost by deflating/inflating the adjusted AAV according to your inputs. Consistent with a Harvard analysis on the optimal draft strategy, by default, we apply a 10% premium to the top players and a 10% discount to the lower-tiered players. According to the study, the majority of one’s excess cap should be spent on the starting lineup, and you should spend less on bench players. This is because bench players do not contribute much to the team’s projected points. Although bench players are important in the case of a starter’s injury or under-performance, it is generally best to draft starters with minimal risk to ensure solid, if not superior, performance. On the other hand, one should accept more risk with bench players because such a move has a low risk, high reward potential. This 10% adjustment results in a (projected) cost that reflects the cost you can expect and should be willing to pay for a player if he is selected by the optimizer. Note: The projected costs don’t always map onto the projected points because the projected cost is derived from the AAV of the site you selected and not the projected points. That’s because your draft costs will be in large part driven by your site’s AAV, which greatly influences what other people in your league will be willing to pay for each player.
Then, based on how many starters you need for each position, your cap available, the players already drafted, and your maximum risk tolerance, we use the Rglpk package to find your optimal starting lineup by selecting the remaining players available that maximize the starting lineup’s sum of projected points while meeting all of the constraints. For a similar execution using Excel’s Solver function, see here.
We also display the “dropoff” in projected points for the next best 2 players at the same position. If a player has a high dropoff, you should consider targeting him because that position drops in value very quickly. For more info on how projected cost is calculated, see here.
Note on risk: although bench players are important in the case of a starter’s injury or under-performance, it is generally best to draft starters with minimal risk to ensure solid, if not superior, performance. On the other hand, one should accept more risk with bench players because such a move has a low risk, high reward potential. For bench players, value over replacement may be less important than a player’s upside. We include players’ upside potential (ceiling) in the output, as defined by the players’ 90th percentile of their projected points across analysts.
Note on VOR: you may notice that the top Defenses and Kickers have a negative VOR value. Why? We added a penalty to the VOR values for DSTs and Kickers to make the rankings more realistic and to reflect the fact that DSTs and Kickers are the least predictable. The penalty was based on where the DST and Kickers were placed before penalty. The Kickers were about 17–20 points over where the Expert Consensus Ranking (ECR) would have placed them and DSTs were 5–7 points over, so the VOR penalty is -18 for Kickers is -6 for DSTs.
Strategy
- Draft your offensive starting lineup first before drafting bench players. Spend less on Kickers and Defenses because they are less predictable and score fewer points.
- Spend most (or even all) of your cap on starters. A Harvard analysis showed that most people over-spend on bench players and under-spend on key starters. Bench players only benefit your team if a starter gets injured or they outperform a starter. In a standard league, 1500 points would likely put you in the top 10% of teams. Your goal is to maximize your starting lineup’s projected points, as discussed in the next item.
- For starters, pick the players with the highest sum of projected points (especially floor), while minimizing risk (i.e., a low risk and a high floor).
- For bench players, pick the players with a high ceiling. That way, one or more of your bench players has a chance to outperform your starters or be a solid replacement if your starters get injured. You should be willing to accept a higher risk for bench players than for starters.
- Give players more weight if they have a high dropoff (the player is projected to score many more points than the next best players at the same position)
User Inputs
Season: which season of projections to use.
Week: which week(s) of projections to use.
Number of Teams: the number of teams in your league.
League Cap: the cap available for each team at the beginning of the draft.
Cap Reserved for Bench: how much cap to reserve for your bench players.
Total Players on Roster: the total number of players on roster, including bench players.
Number of Starters by Position: how many players in your starting lineup at each position.
High Rank: the rank of the highest tier of players for inflating costs.
Low Rank: the rank of the lowest tier of players for deflating costs.
High Rank Cost Multiplier: the inflation/deflation multiplier for players with a High Rank (or higher).
Mid Rank Cost Multiplier: the inflation/deflation multiplier for players with between the High Rank and Low Rank.
Low Rank Cost Multiplier: the inflation/deflation multiplier for players with a Low Rank (or lower).
AAV: source of average auction values.
League Scoring: source of scoring settings.
Positions: which positions of players to include in calculations.
VOR Baseline: the position rank set to be the “typical replacement player” for each position. We set the default baseline VOR value as the number of players drafted at each position within the top 100 picks, based on ADP on MyFantasyLeague.com. You can modify the VOR baseline values. For info on how to select a typical replacement for each position, see here.
Impute Replacement-Level Points for Missed Games: Select yes to add points of the “typical replacement player” for each game a player is expected to miss due to suspensions. For example, if Player X is projected for 180 points over 12 of a possible 16 games, and our calculation determines 10 points per game as replacement-level production, the points column will show 220 points (180 + 4*10). Select no to avoid imputing replacement-level points for missed games. Projected number of games missed comes from ProFootballFocus.com.
Calculation Type: the type of average to calculate: mean, weighted average, or robust average. By default, a weighted average is used with analysts weighted by their historical accuracy. You can modify the weights in the weighted average. The mean is equivalent to a weighted average where all analysts are equally weighted (weight = 1). The robust average gives less weight to outliers (crazy projections).
Analysts: Select which analysts to include and, if weighted average, the weights for each analyst (i.e., how much weight to give each source of projections when calculating projected points). For instance, if you want to exclude ESPN projections, you would give them a weight of 0. If you want to give Yahoo projections twice the weight of CBS, you would give Yahoo a weight of 2 and CBS a weight of 1. The default weights reflect historical accuracy (higher = more accurate). Note that FantasyPros shows a default weight of zero because we already include all of their sources in our projections, so it would be double counting to give them a weight above 0. You can certainly do so, though, if you’d like. FantasyFootballNerd also shows a default weight of zero because it uses the same projections as FantasyData.
Scoring Settings: specify the number of points for each statistical category and position.
Sidebar
Maximum Risk Tolerance: Selects the maximum risk allowed for any player to be considered for inclusion in the optimal starting lineup. Players’ risk levels have a mean of 5 and a standard deviation of 2 (see below for more info on how risk is calculated).
Remaining Cap for Starters: How much cap you have remaining to spend on starters.
Players You Drafted: Select all players you’ve already drafted (click “Pick” button next to player or type player’s name).
Other Players Drafted: Select all players that other teams have drafted (click player’s name or type player’s name).
Output
Lineup with Highest Points: Players with highest sum of projected points within your league cap and risk tolerance.
Lineup with Highest Floor: Players with highest sum of projected floor within your league cap and risk tolerance.
Lineup with Highest Ceiling: Players with highest sum of projected ceiling within your league cap and risk tolerance.
Pick: Click “Pick” button next to player to add to “Players You Drafted”.
Rank: Overall rank by VOR
Player (Team): Player name and team. Click player’s name to add to “Other Players Drafted”.
Pos: Position.
VOR: Value Over Typical Replacement Player. Used to rank players across positions. Calculated by comparing players’ projected points to a “typical” replacement player at the same position (determined by VOR baseline values). For more info on how VOR is calculated, see here.
Points: Average projected points for a player across analysts.
Ceiling: A player’s upside, calculated as the 90th percentile of a player’s projected points across analysts.
Floor: A player’s downside, calculated as the 10th percentile of a player’s projected points across analysts.
ECR Rank: Expert Consensus Ranking from FantasyPros.
Pos Rank: Position rank.
AAV: Average auction value.
Dropoff: The “dropoff” in projected points for the next best 2 players at the same position.
Risk: Risk of injury and degree of uncertainty of players’ projected points, calculated as the average of: 1) injury risk from Sports Injury Predictor, and 2) the standard deviation of the players’ projected points and rankings across analysts. Standardized within position to have a mean of 5 and a standard deviation of 2 (higher values reflect greater risk).
Graph
Displays two types of graphs:
- A density plot of projected points by analyst
- Line plot of each optimal starting lineup by projected points, floor, and ceiling
A density plot shows, for each analyst, what proportion of players are projected to score a given number of points. Density plots can be helpful for comparing analysts and finding analysts with wildly different projections. In the line plots, the dot represents the average (mean, weighted average, or robust average) estimate of projected points for each player. The line shows the range from a player’s floor to ceiling.
The Auction Draft Optimizer App
For the Auction Draft Optimizer app, go to:
http://apps.fantasyfootballanalytics.net
Great app! Does this app update projections-wise when FantasyPros updates their projections? If so, this will be very useful when my draft comes around in a month or so.
No worries at all! We usually draft after the last pre-season game to cover unexpected injuries, etc. so towards the end of the pre-season would be great.
Also, one quick question: After filling in my league settings and downloading the data, I noticed there is a column for both “points” and “projectedPts.” What is the utility of the “points” column? I noticed the risk column is next to “points.” Thanks! Great stuff!
Thanks for your interest! Unfortunately, I haven’t been able to find a way to auto-update the data when FantasyPros updates their projections. I just updated the data for you, though, so it should be up to date. I plan to update the data every few weeks. Feel free to let me know a week before your draft, and I’d be happy to update it beforehand.
I am looking at using your FFA Draft optimizer and this information is not up to date. For example Frank Gore does not play for SF anymore, Nick Foles is not with the eagles anymore.
Dear Anonymous,
We haven’t released the Auction tool yet for this draft season. We are currently working on it and hope to release it soon. For our Projections/Snake app for the current season, see here:
http://apps.fantasyfootballanalytics.net/projections
Stay tuned for the Auction tool!
-Isaac
Will the auction tool be available soon? Season is just a week away.
Thank you for the question. Once logged in, f you navigate to settings, click on the auction settings tab, you can adjust the settings and then download a custom cost template. Hope this helps.
Thanks for bringing that to my attention. I just deleted the points column, so now there should be no confusion which is the column for projected points (projectedPts). Hope that helps.
This is excellent. But does it take into account how many teams are in a league?
Thanks Oz. The app does not currently adjust for the number of teams in a league. I’d imagine that the number of teams in a league could affect players’ costs (with more teams leading to higher player costs). This could be a pretty easy fix if you know how to adjust for the number of teams. How would you propose adjusting players’ costs depending on the number of teams in one’s league? The FantasyPros average costs are calculated with 10 teams. Thanks for the suggestion!
Great stuff. Probably a stupid question: What do “cost” and “projectedCost” reflect? It seems to me that if either one is supposed to reflect the auction “value” of a player, all the values should add to about 2000 (10 teams x $200 per team). For the settings I tried, both columns added up to well above 2000.
Thanks for your work! I may too be asking for this to be updated before my draft. 🙂
Good question, Justin. The variable “cost” reflects the average auction values from fantasypros (http://www.fantasypros.com/nfl/auction-values/qb.php). The variable “projectedCost” reflects a 10% premium for the top players and a 10% discount for the lower-tiered players, as suggested by the Harvard analysis on how much to bid for players (http://harvardsportsanalysis.files.wordpress.com/2012/04/fantasyfootballdraftanalysis1.pdf). These values are also scaled to your league cap. Does that make sense? I’d be happy to re-update the projections prior to your draft. Just let me know. Glad you find it useful!
Isaac, is there any way to add additional point categories? For instance, my main league gives 0.2 points per rush attempt and decent points for big games, i.e. 300 yard passing and 100 yard rushing/receiving.
Hey Kevin: I could add point categories for any category that has a projection. FantasyPros does have projections for rushing attempts, but does not have projections for “big games”. Would you like me to add rushing attempts as a point category?
This is awesome! Is there any chance you can update the projections this Friday or Saturday? Thanks!
Thanks for your interest Ben! I’ll plan to update the projections on Saturday (I’m traveling on Friday). Thanks!
2 Things.
1. To calculate for different league sizes can be done but it is a little harder. Basically all of your values will go up because there is more overall money available but the same amount of players. You would have to build up from the bottom. take all the money that will be spent, subtract out your dollar players and then allocate the rest similar to how it is now. An easier way would be to have a percentage increase for the higher percentage of money available. Probably could acheive the same goal by just increasing the Budget to what it would be for the new number of teams. (240 for a 12 team which is 12*200/10)
2. How are you generating the list of 7 starters on the right side of the calculator? I want to do something similar in an offline excel file.
Nevermind I see how to do it in Excel now. Thanks. But I hope you take my advice on the larger leagues it would help a lot 🙂
Hey McConnell and Ben, updated the draft optimizer app with the latest FantasyPros projections and I revised the app to take into account the number of teams in one’s league (https://fantasyfootballanalytics.net/2013/08/update-to-draft-optimizer.html). Thanks!
Thanks again!!!
Isaac, great tool! Thanks so much for sharing. I have one request that would be very helpful for me. We do an auction keeper league, so each of us starts out each draft with up to four players and a certain amount less than the total cap. For instance, we have 10 teams, 20 roster spots, and $250 cap each. But there are 39 players being kept for a total value of $893. So the total cap available to be used on the remaining players should be deducted by that amount to get a better estimation on each player’s worth. Would it be possible for you to account for this in the app? Basically you would need to ask how much total cap money has been spent prior to the draft and then figure the remaining values accordingly. That would be awesome if you could that. Not sure if you would have time to add this beforehand, but my draft is next Saturday. Thanks so much for all the work you have done already!
Well, the available cap will be different for every team, but if I understand what you are saying, I would take the total cap available and divide by 10? So the original cap is $250 per team (or $2500 for the league). The total cap used is $893. So $2500-$893=$1607 / 10 = $160.7. So I would enter $161 in the available cap? Thanks for your time.
Ok, thanks for the clarification. Yeah, that’s not doing what I was hoping it was. When you have some teams you acquired players at less than their going rate (for instance, I picked up Alfred Morris for $1 off waivers last season), then you need to have a way to evaluate the value of the remaining draftable players. The total available cap (all teams) need to be considered in relation to the players still available. Naturally, a premium will be placed on the remaining players. I am just trying to figure out a way to get a proper value on the remaining players. See this for an idea of what I am talking about: http://espn.go.com/fantasy/football/story/_/page/NFLDK2K13_inflation_calculation/how-calculate-inflation-fantasy-football-auction-keeper-league.
Hey Scott. Thanks for your interest! If I understand correctly, what might be easiest would be to set your league cap to your “available cap” when accounting for the keeper players. Then it should give you what you’re looking for. In other words, if your 4 keeper players cost $120 total, input your league cap as $130 for the draft optimizer (250-120 = 130). Does that make sense?
Hey Scott, each team has different numbers and costs of keeper players, right? If so, you’ll have to calculate the cost of *your team’s* keepers and subtract that from 250 to determine your team’s available cap. If each team has the same number and cost of keeper players ($893/10 = 89.3), you’ll subtract 89.3 from 250 to get your team’s available cap (160.7).
This comment has been removed by the author.
Isaac, thanks for this tool, it’s fantastic. If I understand this correctly, can I update while drafting in my actual league? Also, any plans to allow input on who was drafted and for what price to see if that would update the projected cost?
Hey Hank, yes, you absolutely should be able to use the tool and update it while drafting. Just add the players that you draft and that others draft, and the cap that you spend, and it will update with the best available remaining players.
It’s a very intriguing idea you have to update the projected costs based on the costs of other players who are drafted. I imagine the user would need to input every player and what cost they were drafted for, so it would be pretty tedious. I’d have to think about the correction that would be applied to the remaining players. Any suggestions? Nevertheless, the tool will update with the best available players for your remaining cap space.
The AAV should change as each pick is made. For example, if Team 1 takes Quincy Carter for $150 with the first pick in the draft the remaining player values become inflated to the other teams in the draft since Team 1 has spent their money elsewhere.
Here is a link that better describes the adjustment needed: http://www.rotowire.com/basketball/showArticle.htm?id=21393
Even though it is tedious to input all the amounts paid, I would do so as the draft progesses to get accurate bid up to amounts and projected costs.
Thanks for the updates. also picking selected players is much easier now too!
Hi Isaac, this looks like a wonderfully useful tool. I was just about to try and make something like this myself using R.
Right now I get a page that says Not Found at URL http://spark.rstudio.com/isaactpetersen/FantasyFootballDraftOptimizer/session/8cb41f40d1e224ad3d50293f587a16d4/download/downloadData every time I try to run analytics (the session id changes each time)
Use this website to access the tool:
http://apps.fantasyfootballanalytics.net/lineupoptimizer
If you want to download the data, press the Download Data button at the bottom of the page.
Just updated the projections for those with drafts coming up. Good luck!
IM DRAFTING NOW AND IT BROKE HALFWAY THOUGH!! F my life….
I get “An error has occurred / The application exited unexpectedly.” And then a bunch of messages that “data length exceeds size of matrix”
I had the same thing happen to me as Anonymous
Yup something is borked with it now.
Warning in matrix(align.tmp[(2 – pos):(ncol(x) + 1)], nrow = nrow(x), ncol = ncol(x) + :
data length exceeds size of matrix
So sorry, man. What’s the problem? It’s working for me… Hope your draft ends up okay.
Thanks, and sorry for the error. I think I pinpointed the problem and fixed it. Let me know if you run into any other errors. Thanks!
Draft is tonight and it seems that its not working. or am I the only one? It was working perfectly fine an hour ago. and its an awesome tool! Thanks Isaac!
Hmm, it might be a server issue. I’ll try to contact the server admin. Hope it stays up and running for your draft tonight. Good luck!
Isaac… You are awesome! Thank you for this great tool. Have you considered adding a column in the spreadsheet for bye week? That would be helpful to have during a draft.
I just received this response from the server admin: “We recently switched the way we communicate between Shiny Server and Shiny, to use Unix domain sockets instead of the normal way (TCP connections). When testing under load we’ve found Unix domain sockets to be less stable after all, so we’ve gone back to TCP connections–this should be deployed to glimmer and spark on Friday of this week. It should fix this problem.”
Bottom line: it should (hopefully) be fixed Friday.
Thanks man! I haven’t included bye weeks for two reasons: 1) FantasyPros does not include bye weeks on their projection pages, so I would have to merge them from somewhere else, which is more complicated and could be messy, and 2) it makes sense to draft the best possible team regardless of bye weeks because you don’t know how the bye weeks will help or hurt your chances. For instance, it might actually be beneficial for all of your starters to have the same bye week. Yes, you might lose that particular week, but you’ll be more likely to win all of the other games. Nevertheless, I might consider adding them if I can be convinced they’re useful for picking the best team.
Can you share the formula you are using for projected cost? I’d like to make on the fly adjustments based on how draft money has already been spent. Awesome tool Thanks!
It applies a 10% premium to the highest-tier players and a 10% discount to the lowest-tier players. It adjusts the projections according to the number of teams and the league cap (from the original projections derived from a league with 10 teams and a cap of $200).
For those looking for an optimizer tool for snake drafts, I just finished creating one.
Shiny App: http://apps.fantasyfootballanalytics.net/projections/
Accompanying blog post: https://fantasyfootballanalytics.net/2013/09/win-your-fantasy-football-snake-draft.html
Awesome tool Isaac! Any way you can update the rankings today? I have a draft tonight.
Finally draft day and its down 🙁
Not sure what the problem was.. I might need to look into a new server for hosting. Any suggestions? I’d prefer a free one.
Hostgator.com is pretty good
We updated the app and placed it on our servers. It should be more reliable now.
This tool has got me into a championship game this year! 1 game to go!!! Amazing job isaac!
Congrats Homy! How’d you do in your league championship? We’ll be updating the data for the app this offseason to prepare for next year’s draft. Good luck!
Isaac,
How easy would it be to update with the 2014 Preseason Rankings? I have a Draft tomorrow I’d like to use this with. Additionally, can this be customized with a 32 team league?
Hey RGH,
I’m planning to update the data when sites make their 2014 projections available (still waiting on ESPN, NFL.com, and FantasyPros). The app uses projections as opposed to rankings (you can derive rankings from projections but not other way around), so unfortunately I wouldn’t be able to use preseason rankings for the app. Check back soon, though, for update data based on preseason projections. Regarding a 32-team league, the app allows you to specify how many teams, so it feasibly could be customized, but I don’t know how well the cost values would extrapolate to a 32-team league. Might take a look at it to seem if the values seem reasonable.
-Isaac
Isaac,
Exactly the tool I was looking for (you should try to monetize it). What you may consider factoring in is Yahoo’s and ESPN’s projected auction values which is what many auctioneers will be referencing when drafting on one of the two fantasy hosting services. Then you apply the inflated values for the top end players. Again, awesome tool and I will have this up and running during my draft this year!
Great point, Ryan. I’ll try to find a way to incorporate ESPN and Yahoo projected auction values. Glad you find it helpful!
Hey Ryan, just added Yahoo, ESPN, and FantasyPros auction values to the apps. Cheers!
-Isaac
Awesome Isaac. Can’t tell you how impressed I am. Not sure what your opinion on this is or how it would be factored into your calculations but check out ESPN’s 2013 analysis on fantasy consistency (http://espn.go.com/fantasy/football/story/_/page/consistency131231/russell-wilson-wes-welker-prove-consistent-again). I think consistency is extremely overlooked in fantasy football when you’re competing in head-to-head leagues. Cheers
*week-to-week consistency
Week-to-week consistency is an interesting topic, and it was the topic of my recent simulation:
https://fantasyfootballanalytics.net/2014/07/weekly-variability-simulation.html
Not sure about the best way to incorporate it into the app because a simulation takes time to run, and its findings would depend on the inputs (e.g., your league settings).
1 quick update – please allow for 0.5 PPR
Are you sure it’s not allowing you to enter 0.5 PPR? It works for me (even though the cell is highlighted red, the calculations appear to update correctly).
The 0.5 does work – my apologies. However, now the ‘Players You Drafted’ and ‘Other Players Drafted’ are not working properly. When I click to type in there is only 1,2,3 etc. and not the list of names as before then if I type in a name it gets deleted after entered. I tried using the optimizer tool on both Chrome and Safari with the same result.
Another quick comment – could you order the player output by projected cost rather than first name?
Just fixed the “Players Drafted” bug to show player names instead of numbers. Let me know if you still have problems with it. Is there a reason for sorting by cost? I thought it’d be best to be able to see all players sorted by name so you can easily find any player. If you want to find players the fastest, typing in their name is probably best (it will autofill based on what you type). What are your thoughts?
My thought was that auction drafts typically start with the highest projected players and you are thinking in a top down approach. If I dont win this player, who is the next best player I can spend my money on?
Do you mean sorting the player list or the table of players in the output? If the former, that’s easy. If the latter, I found a way to do that, but I won’t be able to release the update until we upgrade our Linux server (it requires a newer version of R packages). We’re looking to pay someone to upgrade our Linux server. Hopefully this happens soon, but if you know someone qualified let me know!
Just updated the app with sortable projections in the output. Is that what you’re looking for?
I’m set to release a fairly important update to the apps, but I’m having some linux trouble. If you’re good with linux, please contact me.
Just updated the app with sortable projections. Cheers!
saw that. thanks!
I see that Defenses are not taken into account. I have won weeks based on a strong defense pulling through for me. Would this not be a valid addition to the analytics?
Hey Ricky,
The reason why I haven’t included Defenses is because 1) very few sites have projections (not just rankings) of defenses, 2) it’d be a lot of scripting (i.e., time) to include them here and 3) one should generally draft kickers and defenses last because they are the least predictable (https://fantasyfootballanalytics.net/2013/07/expected-points-by-position-rank-in-fantasy-football.html). That said, if someone is willing to help me include them, I think it’d be a great addition.
-Isaac
Thanks!
is there any way in the provided data to incorporate consistence? maybe use the stand dev or risk column somehow just a gauge/ reference point?
Hey Brent, the standard deviation reflects the variability/consistency from source to source in a player’s projections. If you want an estimate of a player’s week-to-week consistency, we conducted a simulation to calculate that (https://fantasyfootballanalytics.net/2014/07/weekly-variability-simulation.html). It would be difficult to incorporate this into the app because a simulation takes time to run, and its results would depend on your league scoring settings (so it wouldn’t be very user friendly because the app would be slow). That being said, the code is on GitHub, so you can run it for your custom league settings to get an idea of players’ week-to-week consistency for your league settings.
This is fantastic! Great work!
Im a little confused on the snake draft “typical replacement” options. Can you clarify exactly what those are please?
Also, wouldn’t it matter how many starters/teams there are in the snake draft in order to calculate best picks?
Hey Ricky, the “typical replacement” is for snake drafts (the app on this page is for auction drafts). Here’s info on the snake draft app:
https://fantasyfootballanalytics.net/2013/09/win-your-fantasy-football-snake-draft.html
Basically, “typical replacement” is the position rank of each position that you want to normalize each player’s score against. For more info on a player’s value over a typical replacement player (VOR), see here:
https://fantasyfootballanalytics.net/2013/04/win-your-snake-draft-calculating-value.html
The snake app shows the two best players remaining at each position. You can then pick which player to draft based on which players have highest VOR and which positions you need. Not sure why the best remaining players at each position would depend on roster/league size.
Hope that helps!
Hi Isaac,
Thanks for all of the work you’ve put in to this and for not putting it all behind a paywall. Your effort is much appreciated.
My question relates to the AAV. Why are there multiple options and why does it change the results so much? Shouldn’t the dollar value for each player be calculated by league settings, dollars remaining, and available players?
Hey Justin,
Good question. The multiple options are to select which auction values you want to use. If you’re drafting in Yahoo, I’d use one of theirs. If ESPN, use theirs. The short answer is that each site provides considerably different auction values, so I’d recommend using the site you’re using for your draft. Yahoo provides 2 different ones (AAV and projected value). I like to use the average of the two in my personal drafts, but that’s personal preference. You’ll want to pick whichever will most closely align with the costs people will bid in your draft.
The auction values are further scaled to your league cap and the number of teams in your league. The top players receive a 10% premium and the worst players get a 10% discount.
Hope that helps!
-Isaac
Doesn’t using the dollar values from just one site nullify the aggregation of the different predictions? Shouldn’t the value you’re willing to pay for a player be totally dependent on his projected stats?
What *you* bid should absolutely depend on a player’s value. There are two problems in this context: 1) it’s difficult to determine a player’s value in terms of cost because it’s not a linear transformation. Here’s my attempt to calculate a bid-up-to value: https://fantasyfootballanalytics.net/2013/08/calculating-bid-up-to-values.html. 2) More importantly, what *others* will bid will depend largely on the site you’re using. As a result, you wouldn’t want the draft optimizer to tell you to draft a player at a cost lower than you will be able to be draft him for.
I’m still confused. So, you use projections to get projected fantasy points. Then you use the auction values as the cost of the player for the optimizer? Stately differently, the projections determine their points and the auction values represent the cost to get that player. You’re not generating an independent auction value based on projections before generating the final auction values.
If that’s true, then the site’s auction values serve as the base, correct? None of your values will be lower than ESPN’s auction values?
You are correct that I am generating the projections and costs separately. The costs come from the different sites (Yahoo, ESPN, etc.). I then scale them to the number of teams in your league (more teams = higher cost) and your league cap (higher cap = higher cost). Then, as suggested by a Harvard study (http://harvardsportsanalysis.files.wordpress.com/2012/04/fantasyfootballdraftanalysis1.pdf), I apply a 10% premium to top players and a 10% discount to bottom players. The costs could be lower than ESPN’s if you have fewer than 10 teams, a lower cap than 200, or are looking at bottom players. Hope that clarifies!
If others are “overbidding” based on the stats a player is projected to generate, how could that be an optimal selection? Regardless of the site you’re drafting on, every player has to have a projected value based on your leagues scoring rules, roster size, and budget.
Yes, players have a value. You can compute a cost for this value. If you rely on bidding on players at their value-based cost, however, you won’t get the best players necessary to maximize your projected points. Don’t take my word for it. See here for more info: http://harvardsportsanalysis.files.wordpress.com/2012/04/fantasyfootballdraftanalysis1.pdf. To help you gauge a player’s true value, I recommend using the “bid-up-to” value.
Upgrading our server to handle more traffic. Apps will be down for a bit. Will get the up as soon as possible.
-Isaac
Apps are back up now!
When you mention “Bid up to” earlier in your comments for deciding how much to bid on a player, you are referring to the projectedCost on your stats? We shouldn’t pay more than the projectedCost (generally speaking), but getting someone for less than that variable would be a “success”?
thanks- great work
Hey JM,
The Bid-Up-To value is calculated by one of my scripts:
https://fantasyfootballanalytics.net/2013/08/calculating-bid-up-to-values.html
It calculates the optimal value for each player. It is different than the projected cost, which is the cost you can expect each player to go for in your league (i.e., what you would have to bid in order to win a player). Unfortunately, there’s not an easy way to add Bid-Up-To value to the app because it is a simulation that takes several minutes to run, so it would be too slow for users in the app. I don’t think the Bid-Up-To value is crucial, however, because if you know about how much each player will go for, you can estimate fairly well the best lineup to draft given your league settings and constraints.
Hope that clarifies!
-Isaac
Excellent tool for fantasy. One question I have is the projected cost vs. position rank. It appears that in some instances lower ranked players have a higher projected cost. If the definition of projected cost is “cost you should allot to pay for a player” why would one pay more for a lower ranked player?
For example, Cam Newton is the 8th ranked QB with a projected cost of $11, while Andrew Luck is the 4th ranked QB with a projected cost of $7. Why would one allot more money to pay for Newton when he is projected to do worse than Luck?
Hey Mike,
Great question. The projected cost is how much you can expect players to go for in your league. It comes from your site’s AAV. As a result, it is not necessarily how much you should bid for a player (that’s the Bid-Up-To value, see here: https://fantasyfootballanalytics.net/2013/08/calculating-bid-up-to-values.html). Obviously, for your league, Luck is a better value than Newton. The app is just telling you that Newton is likely to cost more than Luck in your league’s draft according to the site’s AAV that you selected. As a result, the tool would be more likely to select Luck than Newton because he contributes more points to your lineup with a lower cost.
Does that make sense?
-Isaac
These tools are simply fantastic. One question I have is whether there is a way to figure out bid-up-to value using the projections or auction optimizer without using the optimizer loop in R? I have absolutely no experience or understanding with R, so I was hoping I could use the other tools available to figure out a rough estimate for bid-up-to value.
Any ideas on that front? Again, thank you again for putting these tools out there and making them freely available. Easily the best analytical tools I’ve seen.
Hey Doug,
Many people have requested this feature, so I’ve spent some time thinking about how to incorporate it. One way would be to calculate the Bid-Up-To value only for the selected players (and not all available players). That would be a much faster loop than estimating it for all players. I’ll look into this when I get back from travels.
Thanks for the suggestion,
Isaac
It appears that when I download the results I get something very different from the top 5 preview shown on the page. Would you expect QBs to take all the top spots? Did I do something strange in the settings to make that happen?
Also, if you don’t have a cost cap in your league, is there a way to deactivate that?
Alright – I get that the downloaded sheet contains everyone, not the suggested drafts, but I’m still confused that it appears that all the top values/costs/ranks go to QBs – how do I need to sort the sheet to make sense of it? And what about teams where there is no cost cap – just a draft order consideration?
Hey Josh,
If your league doesn’t have a cap, then you probably want the Snake Draft optimizer (not the Auction Draft optimizer):
http://apps.fantasyfootballanalytics.net/projections
If you’re just looking for rankings or projections, see here:
http://apps.fantasyfootballanalytics.net/projections
The rankings depend on your league scoring settings and your “typical replacement” selections. If your league scoring settings weight QBs highly, then the rankings will favor QBs. The default scoring settings don’t appear to favor QBs, though (Peyton is the only QB in the top 20). This suggests to me that some of your inputs (e.g., league scoring settings like points per passing TD) are giving more weight to QBs.
Hope that helps,
Isaac
That’s really helpful – thanks. It does seem partially to do with the league scoring rules, but also that the page I was looking at doesn’t seem to have values for some of the things we add points for (field goals, defensive stuff that isn’t safeties)… I’ll look more closely to see if I’m missing anything.
Isaac, I have my auction draft on Sunday – when will you be updating the player projections and AAVs? Thanks again!
Ryan
PS. Can I buy you a beer via Venmo?
Hey Ryan,
Hope to update the data Friday. Thanks for the offer for the beer! How about I make you a deal.. Tell some friends about the site (obviously friends who aren’t in your league), and we’ll call it even.
How does that sound?
-Isaac
You got it! Thanks and if it wouldnt be too much of a bother can you comment here if you update them friday- will give me a little more peace of mind Sunday when I’m relying on this app to win my league
Just updated the data and added return TDs to the draft apps. Go win your draft!
Cheers!
-Isaac
Thanks for all your work. I’m a huge fan! I’ve got one suggestion, though:
The app doesn’t seem to factor in the roster size in calculating auction values — instead, it seems to allocate 99% of the cap to a starting lineup, in which case a team would have zero dollars for bench players. Is that the intention or am I doing something wrong?
We have a larger roster of 15 players in our league, and spending 5-15% of the cap on bench players has been a successful strategy to mitigate injury disasters, stash breakout candidates, and make weekly substitutions based on matchups.
Sorry, I just looked and we now have a roster of 20 players, and the minimum cost for the additional 13 players would be 5% of the cap, and 10% allocated would probably enable an owner to get the best pickings of players who would other be waiver wire material.
Hey Justin,
The default settings leave $1 for each bench player, and find the starting lineup with the highest sum of projected points with your remaining dollars. That’s because bench players don’t contribute to your starting lineup unless they outperform starters. If you want to allocate more dollars to bench players, put the extra amount you want to reserve in the “cap spent” section, and it will be taken out of the pool you can spend on starters. The projected costs do take into account roster size. They are scaled proportionately. It’s not clear to me how accurate this scaling is with super large leagues (e.g., 20 players), however. Take a look and see if the costs seem reasonable. If not, you may want to enter fewer teams in the app until the costs seem appropriate.
Hope that helps!
-Isaac
Great website! I included all the players already drafted, but is there anyway to factor in the remaining cap space of all other teams? Each teams keepers carry different values.
Hey Jon,
There’s not currently a way to do this in the app because the auction costs are derived from average auction values (AAV) and not other teams’ remaining cap per se. I can consider adding this, though I suspect it would be fairly complicated.
-Isaac
Hi Isaac
I can’t tell you how much I love this website. I have played with the auction app everyday for the last two weeks in preparation for my draft this Sunday. I too am a statistics nerd, and I love the fundamentals you’ve applied to fantasy football.
I have a couple of questions for you:
1. Will you be doing any projections updates between now and Sunday? I want to make sure I have all the latest information on all of my printouts.
2. It looks like the apps are down right now. You can promise me that they will be working at 1 PM Central on Sunday right? 🙂
Hey Peter,
1) I’ll be traveling this weekend, but I just updated them last night, so they should be ready to go.
2) The apps are back up now. Sorry about the downtime! That’s one of the downsides of running a free operation — we don’t have the largest server capacity. We are looking into creating standalone software so people don’t have to rely on an internet connection or on our server. Should be good for Sunday, though.
Good luck in your draft!
-Isaac
I think the Shiny app is really good, but I think the one area for improvement would be in customizing expected auction values. The method of maximizing points works better when expected auction values are more accurate.
I think an easy solution would be to provide sliders to inflate or deflate expected values for certain classes of players. For example, you could have a slider for the top 10 most expensive players that would allow you to inflate or deflate those values. Then you could have a slider for 11-20, or any other kind of combination. You could do it by position or do it overall with, obviously, more sliders allowing for more customization. This would allow people to get closer to what they think they’re league will spend on players.
Is this even possible?
Thanks so much for your work!
Thanks for the suggestion, Andy. The number of players in the dataset will likely be very large when we include D/ST and IDP, so there would be hundreds of sliders if we adjusted costs by 10 players at a time. It might make more sense to do adjustments in 10% groups (top 10% of players, 11-20%, 21-30%, …, bottom 10%). That would be 10 sliders for all players and would be more manageable. I’ve also considered allowing users to upload a .csv file with player costs from a template. This would be more time-consuming than 10 sliders, but would allow more user control. I want to find the best system for allowing user customizability, but still ensuring ease of use. Thoughts?
Personally, the .csv file would be best. It would allow for estimation that you expect for every single player. I would guess most people using this site are proficient in editing a .csv file or, at the very least, have Excel or Libreoffice.
I know nothing about the Shiny App, so I don’t want to cause a ton of work. Sliders would be good enough for me.
Great, I figured out how to implement a .csv upload for custom player costs. Will upload the newest version of the app when next season’s projections are released!
Cheers!
-Isaac
What an awesome resource, thanks so much for creating! Are you going to continue to update for the upcoming fantasy drafts for the 2015-2016 season?
Hey Nick,
Yes, we’re currently in the process of updating the tools and projections. Still waiting on more sites to release their projections, hope to have them up soon!
-Isaac
Awesome, you guys ROCK.
This is just what I have been looking for! Have you guys updated yet for the 2015-2016 season?
We’ve updated our projections tool for the 2015-2016 season (http://apps.fantasyfootballanalytics.net/projections), and we’re hoping to release our new auction tool soon!
-Isaac
Will the auction draft tool be updated soon? The projections look great though.
Hey Austin,
We’re working on it now and hope to release it later this month.
-Isaac
Any update on the Auction Draft tool?
Still working on it, stay tuned!
-Isaac
Hi Isaac – do you still have plans to update the Github code to reflect updates for 2015? Most of the projection scraping is broken right now. I’m looking forward to using your code base offline for an auction draft. Great work on the site!
Hi Steve,
Yes, we plan to update the R code on the GitHub repo when we finish the tools for this draft season.
Thanks,
Isaac
Hi there,
I’m really enjoying using your VOR analytics to help me choose which players to draft. I’ve started keeping track of the total VOR score for my starting line-ups (from mock drafts) as a way to compare various drafting strategies. I’ve found that my total VOR usually comes in between 400-450. Has anyone else tried calculating this? Any ideas on what is a good total VOR to shoot for in a starting line-up?
Thanks for this awesome tool!
This may have been answered many times over, but I wanted to ask direct. In an auction league, do you have a way to account for a keepers league? Payton Manning is a high auction value yes, but not for a dynasty league. Thanks for this great app!
Hi Ross,
See here:
https://fantasyfootballanalytics.net/2015/07/accuracy-of-fantasy-football-projections-interactive-scatterplot-in-r.html#comment-33690
Would welcome your thoughts if you have any.
Thanks,
Isaac
Isaac, you have a great site here. Pardon if this has been posed before. In the Lineup Optimizer (draft tool), you allow us to set, among other things obviously, how many starters we have at each position. The resulting suggestions for what lineup gives you the most total points is perfect. However, as you draft players and the engine updates, it doesn’t seem to account well for the picks you’ve made. For instance, I just ran a simulation where I took two WRs in the first two rounds, and my highest ranked suggestions were two more WRs. This came at great cost to the other positions. Would there be value in specifying how many of each position you wanted as a max? Perhaps I’m not understanding fully the results I’m seeing, in which case could you please explain it to a simpleton 🙂
Hi Clayton,
Good catch! We’re looking into it.
Thanks!
-Isaac
Hi Clayton,
Just fixed the issue you noticed.
Thanks!
-Isaac
Thanks for all your hard work on the site. I love just reading through all the articles and comments. Do you have an ETA on the draft tool? I’m so curious to see how it works. And where will it be? Under Apps?
We already released it!
http://apps.fantasyfootballanalytics.net/lineupoptimizer
Cheers!
-Isaac
Woohoo! Thanks!
Can you talk a little bit about how to think about this situation?
I play in a keeper league, and you are able to keep previous years players (often for a slight or even major reduction).
So…
1. Not all players are available
2. Players are kept for less than they would have been drafted for.
How does this affect the prices of players left in the draft?
I would imagine that if I entered every player that was drafted (and their price) your auction draft tool should be able to manage this… If the top 3 RBs are kept at half price, what would that do to the other players? Does it affect the remaining RBs more than other players? (It seems like it should)…
Hi Brian,
I’m less familiar with how auction drafts are structured in keeper leagues. I’d imagine you’d want to find a source of AAV for keeper leagues. You might try MyFantasyLeague.com.
Hope that helps,
Isaac
So, it sounds like more than you may be able to delve into now, but here’s the idea behind it (it is a fun/interesting way to play, that makes drafting more difficult):
Every keeper league is different, and there is no accepted standard for each player. Eddie Lacy for instance is a top tier RB and in a 10 team standard league starting with $200 has a value somewhere between $55-$65. So far, this is a normal auction league.
The difference comes in the keeper part. Each league has it’s own set of keeper rules. My keeper league for instance lets you keep 4 players from last year’s roster. You can keep them for whatever price you acquired them for last year, but you have to add $5. So Lacy’s owner from last paid $37. So this year, he gets to keep Lacy for $42! A great bargain! Peterson was dropped last year, and a player grabbed him off of waivers for $8!! He only has to pay $13 to keep him this year!
So as you can imagine, there is more money to spend on less players, which will inevitably drive the prices of the remaining players up. I’m just not sure how to account for a reasonable price for the remaining players. With DeMarco and Latavius Murray, Jeremy Hill, CJ Anderson, Lamar Miller, Adrian Peterson, Jonathan Stewart, LeVeon Bell, Mark Ingram, and Carlos Hyde already gone, you’d have to imagine that is going to drive Charles, Lynch and Forte up, up, up. But where is the smart cut off?
Just putting this out there for you to mull over. Again, all these numbers are so fun to play with… 🙂
Hi Brian,
Thanks for sharing the structure. We have plans for a custom user input of costs, which would help you deal with keeper leagues.
Thanks,
Isaac
Hey Issac,
Love the draft optimizer. I even gave a donation. Being able to custumize the auction values with the high rank/low rank percentages is great and gets me close to my auction’s top heavy values from last year. A suggestion though, when the app gets to the drop from high to mid or mid to low, can you make it so there is a gradual drop to the next percentage? I use 120% to 100% and changing the high rank number from 24 to 25 can make a big difference. Just a suggestion. Great app.
Hi Dave,
Thanks, we’ll keep this in mind. We do have plans to allow users to input custom costs.
Many thanks for your support!
-Isaac
Isaac –
Awesome app. I saw a reference in an old post that you made about “bid up to” costs (the cost up to which a particular player remains in the optimal lineup). Would it be possible to include a column of this nature in the app…or maybe something like a buy now cost (i.e., the cost at which a player is low enough that they would be in the optimal lineup assuming all other players go at expected values)?
Hi Josh,
We’d have to think how to calculate the “Bid-Up-To” value in the webapp. In the past, we’ve calculated it with a simulation (https://fantasyfootballanalytics.net/2013/08/calculating-bid-up-to-values.html), but that takes a while to calculate and is impractical for a webapp. Open to ideas for how to estimate a player’s cost value if you have any. One of the tricky things is that it’s a huge (false) assumption that all players will be drafted at their expected values.
Thanks,
Isaac
Isaac,
What happened to some of the Analysts in the app? Most notably, I noticed that the football guys were gone.
Rob B
Hi Rob,
We decided not to include subscription projections in the calculations of our tools.
-Isaac
Isaac,
Can you confirm which ones you’ve dropped?
Rob
Hey Isaac,
Great work with this. Do you have any plans on open sourcing any of the R scripts that you used? On a similar note, any ideas on an API for this data source?
I’d be happy to help creating an API if that’s interesting to you. Furthermore, if you want to talk about improving or polishing up the interface, I’d be more than happy to contribute.
Last note – if the engine could also take into account the cost of other players picked by other coaches, I believe that you can in real time adjust projections on what you should pay for players on your optimal lineup, relative to the budget. This might require a more complicated parallel analysis but I think it can be done relatively efficiently.
Thanks again!
Tim
Hi Tim,
Our R scripts are open source on our GitHub repo, though we haven’t had a chance to update most of them for this season—that’s on our to-do list. The idea of adjusting costs relative to other players drafted is a complicated one and would considerably slow down the tool because it would have to re-generate after every selection. Will consider it though.
I love the idea of an API but have no idea how to set one up (or if it costs money). Let me know if you’d like to take the lead setting one up! Always open to ideas on polishing the UI.
Thanks,
Isaac
Hey Isaac,
I know this is probably a tough question to answer, but when would you say is a good time to pick a player who isn’t in the optimize? How good a deal does it have to be before I should move? Is it just if a player with a higher projected points than the one in my optimizer is going for less than the optimized player’s cost?
Thanks,
Tom
Hi Tom,
This is a very good question and, as you suspected, a challenging one. I’m not sure the best way to calculate the highest value you should be willing to bid on a player who isn’t selected by the optimizer. In the past, we’ve calculated the “Bid-Up-To” value using a simulation that finds the cost up to which each player is selected by the optimizer:
https://fantasyfootballanalytics.net/2013/08/calculating-bid-up-to-values.html
The simulation takes a while to run, however, so it would not be practical for a webapp. Nevertheless, if you are interested in calculating the Bid-Up-To value, you might look at running the R script (it will likely need to be adapted for this season—we haven’t gotten around to updating the scripts on the repo yet). Otherwise, I would suggest deviating for a player not selected by the optimizer if (1) it’s for a starter, (2) the player is projected to score more points than the player at the same position selected by the optimizer (unless it’s K/DST/IDP), (3) you don’t bid above the “Cost”, and (4) the player is within your risk tolerance. It’s not a fool-proof system, but it might help get you started.
Hope that helps,
Isaac
Thanks so much for the response, Isaac, I’ll take a look at that script and see if I can utilize it.
For (3) above, do you mean the cost of the Optimizer’s player, or the cost of the non-optimizer’s player?
Hi Brian,
I was envisioning not bidding above the player’s cost, but this isn’t a fool-proof system, just a rule of thumb.
Hope that helps,
Isaac
When do you think you’ll post the new files to github?
Has there been an update recently? This is a great tool and site, can’t wait to use it for my upcoming drafts! Thanks for sharing all your extensive work.
Hi Tyler,
Yes, we update the data regularly and they are up-to-date.
Good luck in your draft!
-Isaac
Wow! I am a stock quant … so this is my site! Question, I am in a keeper auction league. Is there anyway to include the price paid for the “other players taken” to compensate for the inflation in keeper auction leagues. Thanks.
Hi Brian,
Not currently, although that’s a more advanced analysis for future consideration.
Thanks,
Isaac
Sounds good. Good site.
What an awesome tool! I can’t wait to share this with everyone I know…after my draft of course! Draft is Monday, any chance information is updated by then?! Thanks again!!
I think your site is great. Thanks so much for all the work you’ve put into it.
I’m getting an error on the lineup optimizer page. It says:
An error has occurred:
cannot popen ‘/usr/bin/which ‘uname’ 2>/dev/null’, probable reason ‘Resource temporarily unavailable’
In call:
system(paste(which, shQuote(names[i])), intern = TRUE, ignore
The projections seem to be working though. Thanks again.
Hi Mike,
This is because we’ve been experiencing heavy traffic. We’re working on upgrading our servers.
Thanks,
Isaac
I’ve noticed that even though I specify that my league has an DL/LB/DB starter slot, the program does not recognize this when calculating the ideal starting lineup. Is this a bug in the program? My league has 11 starters: QB, WR, WR, RB, TE, K, DST, DL/LB/DB, W/R, W/R/T, W/R/T. Am I doing something wrong?
Also, love the program. Minor complaint above
The DL/LB/DB position clearly doesn’t work at the moment. It is never included in the optimal lineup, and if you try it alone, the app returns an error. I’m sure it will be fixed soon though.
Hi Charley,
It works for me. Did you select the checkboxes next to the IDP positions in addition to putting values in the starters textboxes? Let me know what inputs you changed.
Thanks,
Isaac
Hi Isaac.
Yes, that is the issue. If you check the IDP boxes things work fine.
Thanks
Eirik
Is there a problem with the optimizer? For some reason the last 2 days I have gotten blank screens when I bring it up.
Hi Isaac
This seems like an interesting tool! I have a decent idea of how it works as I you have provided good information on how to use the tool. A couple of quick questions:
Will you be updating for this week? 09/17/2015 (NFL week 2)?
What is the difference between the optimizer and projection app?
Week 2 data are up! The Projections tool is described here:
https://fantasyfootballanalytics.net/2014/06/custom-rankings-and-projections-for-your-league.html
The Optimizer tool is described here:
https://fantasyfootballanalytics.net/2013/06/win-your-fantasy-football-auction-draft.html
Great tool. Is this basically performing a Cartesian product query with a salary filter and returning the lineup with the highest aggregate projected points?
It’s not a simple database lookup or merge. It’s a calculation using nonlinear optimization that finds the lineup with the highest projected points within your cost cap and your risk tolerance. We use an R implementation (https://cran.r-project.org/web/packages/Rglpk/index.html) of the GNU Linear Programming Kit (https://www.gnu.org/software/glpk/). You can see our scripts in our GitHub repo.
love your site! I’m having issues with the weekly lineup app. Everytime i try to exclude a player, it never completely refreshes. just says its updating but nothing ever happens.
Thanks, we’re working on it.
Should be working now. Cheers!
Hi Isaac,
I’m excited to try this app, but when I follow the link I get this error:
Exception: Packets larger than max_allowed_packet are not allowed.
Controller: lineupoptimizer
Action: Index
Best regards,
Dan
Should be up and running again. Thanks, Dan.
Awesome app. Thanks!
Hi Isaac,
When can we expect the NFL week 16 projection data to be available?
Thanks,
Dan
For the past two weeks, I’ve been getting this message from Lineup Optimizer:
Error
An unexpected error has occurred. Please contact the system administrator.
Exception: Packets larger than max_allowed_packet are not allowed.
Controller: lineupoptimizer
Action: Index
Also, if the page loads and I change the data to Draft Kings, it doesn’t load Draft Kings info.
Should be up and running now, thanks!
Same thing as last week. Thanks.
Up and running!
How are you creating the auction value?
See the “How it Works” section in the above article.
I’m no math expert, so when I read that section I found it confusing. How can comparing AV to rank add up to being accurate? In baseball I’ve seen auction values created by using a quantified number like Standard Gain Points (SGP) or in football you can use VOR or VBD to get your auction value. Since all those stats are based on your league’s scoring and roster size, they already take into account position scarcity. I only ask because you have Andrew Luck as the 4th best QB, that makes him elite at his position and yet Newton who is the highest ranked QB, is only worth $89. My league is 10 Team, starts 2 QB, and has a team CAP of $680. In 2QB leagues, QBs are valuable due to scarcity, as is true with any position that doesn’t have the depth of talent for the players at the position that would be started. The app has Luck’s value at $52.43. In my league, elite QBs go for over $100, in fact, Luck has never been owned at less than $126 (high of $154). We can convert that to a $200 CAP of $37-45. So seeing Luck so low in price has me questioning.
With the model you are using, aren’t you ignoring the value of position scarcity? Surely in a 1QB league, QB’s are not as valuable, but in a 2QB league or a league that starts 3-4RBs instead of 2RBs, the value of the position’s depth of talent would affect the AV. Right? If that is true, then wouldn’t the model be wrong as it doesn’t account for that factor? Again, I’m no math major, just trying to get a better understanding.
You guys are outstanding… one of my favorite sites.
Hi Jason,
The model for calculating cost accounts for AAV, league cap, number of teams in your league, and position rank (for inflation/deflation). You are correct that the model does not currently account for roster settings. We’d be open to ways to consider that if you have formulas that adjust based on roster settings. The statistician George Box wrote, “All models are wrong, but some are useful.” There are infinite variables to consider in a model like this (e.g., all possible roster adjustments, all possible scoring setting adjustments, who’s been drafted, the price at which each player has been drafted, which teams need which positions, how the teams in your league have drafted in the past, etc.). Models are inherently a simplification—nevertheless they can still be useful. Either way, we’re hoping to allow users to input custom costs in the future.
Thanks,
Isaac
I use a modified version of Larry Schechter’s model for SGP (baseball). Instead of SGP I convert to VBD (similar to VOR). Total VBD of all draftable players (10 team, roster size of 21 = 210). So in this example, of the 210 players they account for 10,658 VBD points. Now we take the league’s budget ($680 x 10 teams = $6,800) and subtract 210 draftable players to get $6,590. Our goal is to get a dollar value per VBD. So we divide the $6,590 by 10,658 VBD to get $0.62. To create the auction value per player, we take the player’s VBD x $0.62.
VBD or VOR are basically the same thing. They identify the replacement player for each position. That player is the baseline to subtract the player’s fantasy points from. By using VBD, you are taking into account position scarcity and increasing the value of players who are in a weaker value-wise position, like RB or QB (2 QB leagues).
The formula easily scales for any league setup. I use excel still as i’m still learning R. But I can’t imagine this would be difficult to add to the app.
You can even add inflation into the mix. Inflation formula is the same, but the draftable players subtracts as players are won. In turn, the remaining VBD total will also get reduced as players are won. That takes away from the total, which in turn adjusts the dollar value per VBD, creating an inflation value.
Again all of this can be found in the Winning Fantasy Baseball book by Larry Schechter. These formulas are easy to convert to football. Since SGP is simply a quantifiable value of worth, just like VOR and VBD are.
Interesting, thanks for sharing, Jason. If I understand correctly, it’s finding the $ value per VOR point. I like the idea. Not sure how to handle negative VOR values within that formula. Also, it doesn’t appear to adjust auction values (not just the total VOR of draftable players) by the number of teams in the league, which is related in nonlinear ways to AAV:
https://fantasyfootballanalytics.net/2015/08/how-do-auction-values-differ-by-the-number-of-teams-in-your-league.html
Hello,
New to the apps this year, and loving them as I prepare for multiple auctions. I’ve noticed a recent data refresh and many of the floor values came down noticeably, especially among top WRs. An example, Antonio Brown’s floor points went from 404 to 384 for my league settings. Is that level of swing in projected points normal for the projections you are pulling in or was there a formula change somewhere in the site?
Thanks much!
JD
Actually, that seems to have swung back up with a recent update today.
Hi Jeff,
The swings in floor/ceiling may happen as we add more sources of projections (as we just did). They should stabilize the more sources we add as we approach the season.
Hope that helps!
-Isaac
Hey Isaac,
So for negative VOR, you default to the minimum bid ($1). Every player has a value of the minimum bid regardless of how low their VOR or VBD value is.
My apologies on the league size aspect of your question. There is another part of the formula that I didn’t explain. I make a small chart in my Settings tab that helps determine the VBD. As an example, I’ll do QBs.
Part 1 – The formula is designed as a multiplier to give us a baseline for how many of that position get drafted. For a 1 QB league, it would be 0.9*(10*1)= 9. (10*1)=(Teams*QBs started). For a 2 QB league, it would be 1.5*(10*2)= 30. To provide a better average, I do a -2 and a +2 off that value in the next 2 columns. So now we have 30, 28, 32.
So that you have all the formulas in case you want to implement this theory. Flex positions needs to be considered for RB and WR.
Flex has 3 values: It’s a really long formula so I’ll just share the results. The Flex values are created using percentages of your starting roster setup. If want any of this, just email me and I’ll be happy to break it all down.
2.7, 3.3 and 1.0
RB = 2 RB league = (10*2.7)
2+ RB league = 1.7*(10*2.7)
WR = 1.6*(10*3.3)
TE = 1.3*(10*1.0)
K = 1.1*(10*1) — (10*1) = teams x starting kickers, no flex in kickers.
Part 2 – Will identify the QB who ranks 30th, 28th and 32nd (from above) and return their projected fantasy points. So that gives us 215, 235 and 150. We average those 3 values and get 215. This number represents the VBD amount to subtract from a QB’s fantasy points.
So as you see it very much does take into account league size and roster size at the same time. It’s also important to note that every league is different. My league overpays for elite talent. To adjust for that you change the percentage multiplier that determines replacement level (in our example that was 90% and 150%). Moving the value lower will increase auction prices. I know my QBs need be around $120-160 for the top 4. So i adjust accordingly, but I have found most of the time these values get the job done.
Again this is not my formula. VBD was invented by Footballguys and the dollar conversion formulas was provided by Larry Schechter. But they work perfectly together. I win all the time and usually have one of the best drafts in my many leagues. Projections are the key to finding value.
Hi Jason,
Thanks for this info. I’ll have to spend more time looking through this. It’s still not clear to me that the formula takes into account the non-linear effect of number of teams on AAV (e.g., RBs have their highest AAV in leagues with 14 teams, and lower AAV in leagues with more or fewer teams). Nevertheless, this seems like an interesting approach. I hope to dig into it more later.
Thanks!
-Isaac
Getting the following error when trying to run projections and auction optimizer:
An error has occurred:
object ‘projData’ not found
In call:
merge(projData, playerRisk, by = “playerId”, all
Sorry for the hassle! I’m not getting this error—could you help us reproduce it?
https://fantasyfootballanalytics.net/about-the-site/faq#errors
Yes, the settings I was using are:
10 team
200 budget
$14 for bench
16 roster size
PPR scoring
no kicker, add second flex (RB,WR,TE)
DST only, no other defensive players
6 point passing TD
-2 fumbles
5 point bonus for 300 yards, 100 receiving, 100 rushing
0 points return TD
165% for top players
115% for middle players
85% low players
all else was your default
Should be fixed, thanks!
Hello – seems the auction app isn’t working? Can’t select positions or get results from data changes?
Thanks,
JD
Sorry for the hassle! We’re looking into this.
-Isaac
I think I found the issue. It’s working for me now. Let me know if you’re still having issues. We’re still looking into the AAV issue.
Thanks,
Isaac
Yep – working well now, thanks!
The auction app optimal floor lineup was loading 2 TEs even though I had selected only 1 starting TE and no option for a TE in Flex. It sorted itself out through the draft, but seemed odd that would happen given I didn’t have the ability for two TEs to start. FYI
I’ve tried the same settings 3 times now, and this happened 2 of 3 times.
I’m not seeing that issue, could you help us reproduce?
https://fantasyfootballanalytics.net/about-the-site/faq#errors
I have not had it happen the last few times I’ve used the app, thanks!
Had this issue happen again today where both Greg Olsen and Jason Whitten showed in the highest floor recommended lineup with settings at 1 TE and 0 for WR/RB/TE flex.
We’d need more info to be able to reproduce. Could you tell us what specific changes you made to get that result?
Thanks,
Isaac
The settings I used were default except: $14 cap reserved for bench. 16 total roster spots. 0 kicker. 0 DST. 0 QB. 2 WR/RB. 0 WR/RB/TE. High rank cost multiplier 160. Mid 110. Low 85. League scoring PPR. Positions = RB, WR, TE. 5 point bonus for 100 yards receiving and rushing. 0 points return TD. -2 fumbles.
I only get 1 TE for all 3 lineups using those settings:
http://i63.tinypic.com/2wn9qna.png
Excellent app Isaac, won my league last year using it.
i was wondering if there was a way for the max auction price to pay value to change during the draft to adjust for inflation.
For example, player A max price of $50 and B max price $20. Player A is drafted for $1 so now there is $49 more cap money than expected to bid with. Therefore player B should now have his max price raised.
i noticed this issue last year as I firmly held at the max values suggested but left money on the table artthe end of the auction as I wasnt bidding the extra dollars i had saved or accounting for higher max values from everyone else having extra money from players being drafted for less than their worth.
Hi William,
We aren’t aware of a good formula that calculates a dynamic Bid Up To value. Consistent with a Harvard analysis on the optimal draft strategy, by default, we apply a 10% premium to the top players to help ensure you get strong starters. Based on your league’s draft history, however, you might modify the premium and discount values to other values. Currently, you’ll still have to (manually and mentally) adjust your notion of a player’s value as the draft proceeds. Let us know if you know of a good formula to calculate a dynamic Bid Up To value.
Hope that helps,
Isaac
Hi Isaac,
I made a sample spreadsheet that updates to what I think is a good estimate of a players live auction inflation adjusted value that I will link here for anyone to check out:
https://www.dropbox.com/s/44hkkal4onhn6jf/Fantasy%20Inflation.xlsx?dl=0
It’s based off the theory in this (unnecessarily complex) article:
http://www.fangraphs.com/fantasy/how-to-account-for-keeper-inflation-in-your-auction-draft/
The basic theory is
(Total league budget – total cost of drafted players) / (total league budget – total original projected fair value of drafted players)
For example my league is full PPR,12 people $200 budget each. Antonio brown fair value is $65 and say he went for $1.
(2400-1)/(2400-65) = 1.027 inflation
Now remaining players fair value should all be multiplied by 1.027 to account for more money than expected chasing the same amount of value.
If this could be incorporated into the tool to re-optimize based off the inflated values to maximize point potential I think it would help from leaving money on the table / prevent dropping out of a bid war too early and missing a valuable pick.
Thanks, William. Hope to be able to look at this more closely. There are technical/server challenges to updating each player’s Bid-Up-To value after every draft selection, but we’ll look into this.
Thanks!
-Isaac
Any idea when a projections data update will be done? Thanks!
Just updated!
This will be my 3rd year using this tool, so I’m extremely grateful for the work that you guys do and familiar with the methodology.
It looks like something isn’t working for the AAV right now. If I just use the default settings and set the AAV field to ESPN, the optimizer says Antonio Brown’s AAV = 44.8 and Cost = 50. However when I look at the page where the values are scraped from, it shows AB’s AAV = 59.7.
Am I missing something here? I would think that the AAV should equal 59.7 and the Cost would be 66.
Thanks for catching that. We’re aware that the AAV is not updating in the lineup optimizer currently when selecting different sources. It’s working in the Projections tool now, however. Hope to fix it in the lineup optimizer soon.
Thanks!
-Isaac
Any ballpark estimate as to when you guys will have the AAV update working? I’d like to get a couple of mocks done in the next week or so in prep for my draft. I just want to make sure I don’t need to be prepping for different draft strategy than FFA.
Working on several things at the moment, hoping to have it out soon!
-Isaac
Isaac,
First off, great stuff! This is my second year on your site and I have really bought in to what you do.
I have a question regarding strategy. I think this is similar to a question from William Spratt further up the message board. What approach do you recommend when the top tiers of positions, particularly RB/WR, get bid up over the AAV or recommended cost?
I ask because as amazing as your tool is it seems to me that it always assumes bids will fall in line with rational behavior on the part of other owners. It seems to me when the top tiers are bid up in value the recommended cost for subsequent tiers could/should increase because of reduced cap within the rest of the league. I also believe this dynamic introduces a situation where there is a danger of waiting too long for value based drafts and missing out on top tier talent.
Thanks for any input you have, and thanks again for all that you have done here.
Matt
Hi Matt,
Totally agree that if you determine a player’s value solely based on their AAV, then you might miss out on the best starters and wait too long to pick. It is for this reason that, by default, we apply a 10% premium to the cost of the top players to help ensure you get strong starters (consistent with a Harvard analysis on the optimal draft strategy). Based on your league’s draft history, however, you might modify the premium and discount values to other values.
Hope that helps,
Isaac
Do you have a good way to use this if our league’s roster is relatively nonstandard?
I realize it’s in theory totally adjustable, but since we play 2QB, my league members aren’t really meaningfully influenced by Yahoo’s AAV, and consequently, the prices listed for top players are way off the mark.
Uploading custom costs is on our to-do list. In the meantime, your best bet might be to use the inflation/deflation indices to help them more closely approximate the prices.
Hope that helps,
Isaac
Hello! Great work, I just have a quick question.
When I edit the scoring variables and click update it doesn’t seem like the projected points totals change? Why would this be?
Example would be changing the scoring manually to include 100yd bonuses – and on update no values change. Or if I manually input .5 into each of the reception fields for half point PPR when I update the projected points are the same.
Thanks for all the hard work!
Hmm, both the 100yd bonuses and receptions categories are working for me when they change. Could you give me a test case so we can reproduce? What specific changes you made, and what a given player was before the update and after the update.
Hi Isaac,
I’m having the same problem as Bobby. Before I make any data changes, the default lineup with the highest points is 1788.79 with Antonio Brown at 239.15, Lamar Miller at 208.41, etc.
When I click on change data settings I only change receptions from 0 to 1 for RB, WR and TE. Then I click Load at the bottom of the page. After “Generating Optimized Lineup” leaves the screen, all the values are still the same (highest points 1788.79, and so on).
I tried using different browsers in case that was the problem (safari, chrome) but got the same result.
Thanks in advance, I love the site and got awesome results using the apps last season!
Thanks, we’ll look more into this!
-Isaac
I noticed that the AAV is off…for instance, Antonio Brown’s AAV is around $6 and others are similarly priced. I used the average of all the sources for AAV and then tested it with ESPN’s as well but still not working correctly. Am I missing something? Thank you!
We’re aware of an issue with AAV, but not sure if it’s this issue or not. What specific changes do you make to get Brown’s AAV as $6? When the app loads for me, it’s $45.91.
I was also running into a similar issue. He is the info I inputted….
Data Settings
Season
Week
Number of Teams
12
League Cap
200
Cap Reserved for Bench
4
Total Players on Roster
13
9 starters
Number of Starters by Position
QB
1
RB
2
WR
2
TE
1
K
1
DST
1
DL
0
LB
0
DB
0
WR/TE
0
WR/RB
0
WR/RB/TE
1
QB/WR/RB/TE
0
DL/LB/DB
0
High Rank
39
Low Rank
82
High Rank Cost Multiplier
121.8
%
Mid Rank Cost Multiplier
110.7
%
Low Rank Cost Multiplier
99.6
%
AAV
League Scoring
PositionsQB RB WR TE K DST DL LB DB AllOffNon-IDPNone
VOR Baseline
11
QB
28
RB
37
WR
6
TE
0
K
0
DST
5
DL
15
LB
1
DB
Impute Replacement-Level Points for Missed Games?
Calculation Type
Analysts
0.344
CBS: CBS Average
0.329
ESPN
0
FantasyFootballNerd
0
FantasyPros
0.327
FantasySharks
0.379
FFToday
0.329
NFL
0.281
WalterFootball
0.4
Yahoo Sports
0.428
FantasyData
Scoring Settings
QB
Passing Yards (pts/yd)
1
per
25
Passing Attempts
0
Passing Completions
0
Passing Incompletions
0
Passing TDs
4
Passing Ints
-2
Pass of 40+yd
0
Passing 300yd Bonus
3
Passing 350yd Bonus
0
Passing 400yd Bonus
5
Rushing Yards (pts/yd)
1
per
10
Sacks
0
Rushing Attempts
0
Rush of 40+yd
0
Rushing TDs
6
Two Points
2
Fumbles Lost
-2
RB
Rushing Yards (pts/yd)
1
per
10
Rushing Attempts
0
Rushing TDs
6
Rush of 40+yd
0
Rushing 100yd Bonus
2
Rushing 150yd Bonus
3
Rushing 200yd Bonus
5
Reception
0.2
Receiving Yards (pts/yd)
1
per
10
Receiving TDs
6
Reception of 40+yd
0
Return Yards (pts/yd)
0
per
10
Return TDs
6
Two Points
2
Fumbles Lost
-2
WR
Rushing Yards (pts/yd)
1
per
10
Rushing Attempts
0
Rushing TDs
6
Rush of 40+yd
0
Receptions
0.2
Receiving Yards (pts/yd)
1
per
10
Receiving TDs
6
Reception of 40+yd
0
Receiving 100yd Bonus
2
Receiving 150yd Bonus
3
Receiving 200yd Bonus
5
Return Yards (pts/yd)
0
per
10
Return TDs
6
Two Points
2
Fumbles Lost
-2
TE
Rushing Yards (pts/yd)
1
per
10
Rushing Attempts
0
Rushing TDs
6
Rush of 40+yd
0
Reception
0.2
Reception Yards (pts/yd)
1
per
10
Receiving TDs
6
Reception of 40+yd
0
Receiving 100yd Bonus
2
Receiving 150yd Bonus
3
Receiving 200yd Bonus
5
Return Yards (pts/yd)
0
per
10
Return TDs
6
Two Points
2
Fumbles Lost
-2
K
Extra Points
1
Field Goal 0-19
3
Field Goal 20-29
3
Field Goal 30-39
3
Field Goal 40-49
4
Field Goal 50+
5
Field Goal Miss
-2
DST
Fumble Recovery
2
Interception
2
Safety
2
Sack
1
Touchdown
6
Blocked Kick
2
Return Yds (pts/yd)
0
per
10
Threshold Points
<=
0
12
<=
6
8
<=
13
4
<=
20
2
<=
27
0
<=
34
-2
<=
<=
<=
<=
99
-4
Points Allowed
0
Sorry its so long.
Could you send just the specific changes you make to the default settings, or even better, the specific change(s) that break the functionality?
I really am loving this site! Why is there no download button on the auction optimizer but there is on the snake version? Usually this wouldn’t be a problem and I’d just be able to copy all the data but that is seeming impossible, too.
Thanks in advance, Isaac!
Hi Bobby,
Yes, we currently only have the download button for the Projections tool. It’s on our to-do list to add one to the Lineup Optimizer.
Thanks!
-Isaac
Hey, getting an error : “annot allocate vector of size 127″, Production server: True”
Works for me. We’d need more info to reproduce. You might try a different browser, deleting your cache, and removing ad blockers.
I’ve gotten this error a few times now using the Lineup Optimizer. The only thing I’ve done is click ‘Change Data Settings’ and changed the number of teams in the league three times.
You might try disabling adblockers, deleting your cache, and/or trying a different browser.
I had a similar error running this in the Safari browser. I tried running it in google chrome and it is also generating a similar error. I have some unique league point settings and I wonder if this may be messing up the algorithm.
We’ll need more info to reproduce. What changes to the settings did you make? Have you tried clearing your cache and disabling your adblockers?
Trying to access the tool and getting the following.
Error
An unexpected error has occurred. Please contact the system administrator.
Exception: Object reference not set to an instance of an object.
Controller: lineupoptimizer
Action: Index
Apps should be up now!
Hey Isaac,
Thanks for all the great work you’ve done! I just ran into a weird problem with the app. I changed the settings to roster size of 15, $6 for bench, 3 WRs, 0 TE/WR/RB, and Yahoo scoring. But after I bought Antonio Brown and Golden Tate, the lineup optimizer was still telling me I needed 2 more WRs. So it was budgeting for 10 starters when I only needed 9. I have screenshots of the exact circumstances if you have problems replicating it and need more information. Thanks for your help!
Hmm, when I use those settings I only get 1 WR left (Decker) after drafting Brown and Tate. Could you walk me through step-by-step what you did to get that?
I was using the Highest Floor lineup and the draft order went:
robinson, brown ($70), d. johnson (Ari), gurley ($52), newton, l. bell, d. martin, l. miller, elliott, peterson, cooper, gronk, green, hopkins, rodgers, j. jones, lacy, m. evans, b. marshall, beckham, tate ($12)
I typed in Tate’s name instead of clicking on him because he wasn’t in the optimized lineup at the time, and then it still had 7 players in the optimized lineup including T.Y. Hilton and Michael Floyd. Interestingly, when I drafted my 9th starter the optimized lineup dropped from 2 players to 0.
Also, I was able to fix it by “picking” another wr at $0 so it didn’t end up affecting my draft, but I wanted to make sure you were aware.
Hmm, I tried that order and it worked for me. Could you try to replicate on different browsers? Make sure you’ve deleted your cache and disabled your adblockers.
I tried replicating but it didn’t happen again. Not sure what was up with it but seems like a one-time glitch. Thanks for the help! I’ll let you know if I come across it again.
My league has ESPN standard scoring with 1 QB, 2 RBs, 3 WRs, 1 TE, 1 K & 1 D/ST. We have an auction draft with $200 budgets and allow teams to keep 3 players from their squad from last year. The keepers cost what was paid for them last year + $5. Because teams keep players for cheaper than they’d go on the market normally, auction costs are typically 40% higher than normal, but every year is different, and I can’t calculate inflation until after the keeper deadline. I’m definitely keeping Cam Newton for $13 and Dez Bryant for $42. What other player do you think I should keep? My main options are Coby Fleener for $5, AJ Green for $54, or Jamaal Charles for $59.
This is absolutely awesome! Exactly what I had been looking for. I did have one quick question and I don’t know if it was posted on here already or not. I noticed that the rushing bonus points for 100, 150, & 200 yards were only applied to the running back. If I apply points to that will it also be taken into account for QBs? Same with receiving yard bonus being applied to RBs as well when calculating. Thanks.
Bonus yards for 100-yard rushing games are only applied to RBs (passing for QBs, receiving for WRs, etc.) because our sources of projections only provide projections for those combinations.
Isaac – how does this tool value the flex position. As example – here is the my league positions: (QB, WR, WR, RB, RB, TE, Flex, Flex (QB included), K, DEF in a PPR format. Does the tool optimize for flex and two QB leagues?
Also, is there a way for the tool to sit locally on my pc such that I can store my custom scoring and jump between projections and lineup optimizer during my draft?
Re flex and 2 QB leagues:
https://fantasyfootballanalytics.net/about-the-site/faq#2qb-flex
We don’t have a local version of the tool, but you can download the projections to your PC and use them locally in Excel:
https://fantasyfootballanalytics.net/about-the-site/faq#download
I love this site. I’m currently working on a project, designing an autodrafter for an auction draft. I’m somewhat confident that using some statistics and machine learning, I can let a computer out-draft my friends. I like your projections and advice, but I’m wondering if you have any insight into a deeper system. Let’s define some requirements:
– The system should make no assumptions about nomination order. (That is, the league will nominate players in an order it sees fit)
– The system should take into account other players needs (i.e. If the 11th QB off the board is up, its value will be higher than its VOR because of need). This implies that, even given the same projections for all participants, the current player has different values for different bidders.
– The system should be able to incorporate real-time inflation estimates.
– The system should run in less than 1 min (the bid time)
As learning inputs I have 5 years of projections from fantasypros (although I can get more) and corresponding actual output. I also have 5 years of auction data from my league. (I’d love to get even more)
I have a few ideas for how to proceed. I could implement one of the known strategies, or alternatively, just a knapsack problem solver. But VOR with adjustments doesn’t accurately reflect the way a real auction works and so static projections are insufficient. If Aaron Rodgers is the 10th QB off the board his value will be very different than if he’s the first.
Ideas welcome.
Ok So I’ve read a bunch of stuff in this thread, so I figured I’d make some further comments:
– We can assume that inflation is temporally accurate -> That is to say that if the inflation over our previous N-1 bids was +.7 then the value per point is .7x higher and we don’t need to recalculate for anyone other than the currently nominated player.
– Each player has needs, but positional scarcity should be easy to calculate. Thus, if there are only 2 remaining QBs who are startable, then those players who don’t have QBs should be willing to pay more for them, even if every prior QB has no inflation. We should be able to approximate positional scarcity by calculating all points available at a position and the number of players available at that position. This is not the same as VOR, instead taking into account what percentage of available points at that position the current player accounts for.
– We don’t need to optimize for nominations. We can just hard-code a list
– We don’t need an ideal output, just a “good enough” output.
Hi Bob,
Interesting ideas! I agree that it’s a good idea to read through the thread as there are a lot of good ideas in the other comments. There are limitless numbers of factors one could consider when creating an auction draft algorithm. As with any model (which is an over-simplification of reality), I think it makes sense to start simple with the most key factors and gradually add complexity. Did you have specific questions that I/we could help you think through?
Let us know if you’d be interested in contributing to the site!
-Isaac
I’m seeing strange behavior when attempting to use ESPN’s AAV as my baseline in the optimizer. The returned values for players is extremely low, resulting in an optimal team that costs way below the maximum spend for a given team. For instance, I see Antonio Brown as having an AAV of $12.91, and therefore the optimizer thinks I should be able to get him for $15. This means that my list is all of the top players at each position, and it’s only going to cost me $82!
If I switch AAV source to AVG, I get much more rational values, but since my league is going to be staring at the ESPN values when we draft, I’d strongly prefer that those be my baseline. I’ve tried this in both Chrome and IE, and get similar results either way.
Any thoughts?
It looks like it’s not specifically a problem with setting AAV to ESPN, but when I try to troubleshoot it myself by setting a small handful of changes, updating to see if it breaks, and then making more changes, I eventually run into an error like:
An error has occurred:
“annot allocate vector of size 127”, Production server: True
This makes determining exactly where the problem lies a particular challenge.
I’ve run into this error on 3 different browsers (Chrome with and without Adblock, IE, and a brand new installation of Firefox), so I don’t know if there’s a particular setting that creates this problem.
The AAV seems to fluctuate wildly though – on separate instances within a 15-20 minute window of refreshes, I’ve seen Antonio Brown have an AAV of:
$4.80
$46.59
$60.88
$8.23
Should be fixed now for non PPR/0.5 PPR leagues, thanks! Hope to fix it for PPR leagues soon!
Isaac – I see that the link to the excel solver version of the optimizer tool is broken. Do you have one that works? The site runs a bit slow for me so I’d like to build an excel version for my draft on Saturday (or if an excel of offline version exists, I’d love to track that down as well.)
Thanks!
I updated the link to the Excel Solver article using a cached version of the article.
Cheers!
-Isaac
Thanks for the prompt reply!
Issac,
Using the auction app, I get a different ESPN AAV for the app than from your projections / ESPN’s AAV.
For example, for Julio Jones, when I use the auction app his ESPN AAV is 46.45.
When I go to the projection app, his AAV is 57, which looks like the more accurate value.
Am I doing something wrong?
Thanks!
-Andrew
Can you try again? You may have to delete your cache and disable your adblockers. You may also have to click “Load Data” a second time, for some reason.
I’m also having a problem using the ESPN AAV. When I select those values and then edit the data to add 1 point per reception, on the projection app all the auction values go to “—“, and on the lineup optimizer, all the auction values turn into oddly low numbers. For example, just by adding 1 point per reception, Antonio Brown’s AAV goes from $67.24 (based on my other league settings) to $4.70. If I use AVG AAV, I don’t get these weird results, but the numbers are too low for ESPN.
The changes I’m making to the default settings are: 12 teams, 220 league cap, 16 players on roster, 2 QBs, AAV = ESPN, League Scoring = ESPN, 1 point per reception.
To recap, everything works, until I add the ppr scoring change, then Antonio Brown’s AAV drops to $4.70.
ESPN doesn’t provide AAV for PPR leagues. The only AAV we have for PPR is from MFL.
https://fantasyfootballanalytics.net/2016/05/2016-fantasy-football-projections.html#comment-18217
I get the following error: “An error occurred while updating the data. Please try again. Last updated: 8/25/2016”
Any idea? Draft is in 30 min.
Ive been getting the same thing today while trying to add IDP.
When trying to plug in custom scoring and our 3 IDP positions into the Auction Lineup Optimizer today, I was met with, “An error occurred while updating the data. Please try again. Last updated: 8/29/2016”
Can I anticipate that this will be fixed by tomorrow at 6:00pm (PST) tomorrow 6/30/16? Draft day is tomorrow!
Same as Patrick 🙁
It looks like the apps are down. I’m getting the error (An unexpected error has occurred. Please contact the system administrator.) on multiple devices. Any estimate as to when the apps will be up and running again?
I have been getting the same error. It has been going on for a few days. I adjust settings in Optimizer and then see the error.
Try using it outside peak hours when we have high levels of traffic.
This issue only stopped when I downloaded chrome and ran the tool with that. You may want to share that with other users who have an issue.
app looks awesome cant wait to use it for my draft tomorrow. Is there a way to get a total lineup draft including my bench players. I see it leaves me 11 dollars for bench players? if I’m reading this right. Also not by much but the cost of players seems to vary a little. Example my last 5 mocks Thomas Rawls has never went under 23 projections says I should be able to get him for 19? Thanks again
The lineup optimizer is for selecting your starting lineup. You can change the amount of cap you reserve for your bench in the app. You could use our Projections tool for selecting your bench. Costs are based on AAV from different sites (you can select the source of AAV). You can modify the costs’ inflation/deflation.
I cant seem to get the data to change it keeps reverting back to the baseline scoring. I’m even went to put like 100 points per yard and the projected points all stayed the same when I uploaded. Any idea what I’m doing wrong?
like I’ll change the scoring to PPR and it still says that AB points will be 240 when going by projections in PPR he’ll get more then half that in catchs alone?
Hello Isaac, I was wondering if you could take a look at this math to tell me if anything is wrong. I want to be able to come up with the amount of VOR points I should be getting with each auction dollar.
Step 1
Use fantasyfootballanalytics.net to assimilate a list of VOR values. I’m going to be using a 10 man league standard scoring from ESPN.
Baselines used:
• 11 for QB
• 11 for TE
• 30 for RB
• 37 for WR
Step 2
Establish the amount of buying power in your league.
• $200 per person
• $7 reserved for bench
• $1 reserved for DST
• $1 reserved for K
• $200-7-1-1 = $191 buying power left for 7 positions.
• (10 man league) x ($191) = $1910 buying power for all QBs/TEs/RBs/WRs – 70 positions.
Step 3
• Create a sum of all the positive VOR values from the table you created in step 1.
• My total VOR sum is 2945.562, which went down to around the 88th player in my table.
• Divide total VOR by the total buying power: 2945.562/1910 = 1.542179
o This number means every $1 is worth 1.542179 VOR points.
Step 4
• Download your projections to get it into excel
• Make a new column to the right of the VOR column, name it ‘Auction Value’
• Divide each players VOR by 1.542179
Conclusion
You now have a column that will tell you exactly how much each player is worth.
Sounds like a reasonable approach. I’d have to try it out to get a sense of the practicality. How do your results look? You’ll see other approaches (some are similar) in the comments above.
Hi.
When I load leagues settings, it never updates the cost on the lineup optimizer? Please help. THanks!
Hi Tara,
We’d need more info to reproduce. What changes do you make?
Thanks,
Isaac
Will you be updating the projections once more before this drafting weekend gets going?
Just updated!
Isaac – when changing the data settings and then hitting the load button the settings are not being saved….consequently the tool does not update any projections. any ideas? just joined and paid today and don’t have a programming background to download R and learn this tool. thoughts?
users – I closed my browser and signed out / signed in and this problem has not reoccurred
Happy to help! We’d need more info to reproduce. Could you try a different browser, clearing your cache, and disabling your adblockers? What specific settings do you change?
Hi Isaac, I’m very impressed with your site. I’d love to use your auction draft optimizer for my upcoming draft, but when I add players that have been picked to the simulation it doesn’t not update fast enough to keep up. Can you make any recommendations on how to improve solving speed so I can use the tool in real time?
Isaac,
I’m trying to run the auction draft optimizer, but keep getting the following error. Can you please assist?
Server Error in ‘/’ Application.
Runtime Error
Description: An exception occurred while processing your request. Additionally, another exception occurred while executing the custom error page for the first exception. The request has been terminated.
Apps should be up now. For more info on why they were down, see here:
https://fantasyfootballanalytics.net/app-down-heavy-traffic
Hi, Isaac. My draft is in 30 minutes and i’m getting a Runtime Error. This error appears to happen occasionally as I read through previous comments. Is this something that can be fixed soon? Thanks!
Is anyone having the same problem tonight?
Apps should be up now. For more info on why they were down, see here:
https://fantasyfootballanalytics.net/app-down-heavy-traffic
Hey Isaac. I apologize if this has already been asked or is explained elsewhere but I couldn’t find anything. A friend just told me about this site yesterday and I’m still trying to get the hang of it (as well as being new to fantasy). Is there a way to input my full team (bench players and all), and the site to compute the best lineup I should start each week? I’ve been trying to mess around with the lineup optimizer, but not sure if that is what that’s for?
Hi Kristen,
You can use the Projections tool (for more info, see here) to compare projections for players in your lineup. To compare the projections for players in your lineup, open the Projections tool, set your league scoring settings, click “Load”, and (on the right side of the page) type the names of the players you want to compare in the “Compare Players” textbox.
Hope that helps,
Isaac
Hey, here to report a bug.
1) what browser (and version) you’re using: Chrome Version 53.0.2785.143 (64-bit)
2) your computer’s operating system (and version): OS X El Capitan 10.11.4
3) what error you’re getting: None of the interactive elements on the page are working, just the direct RESTful routes. The main app for projections is not loading or filling at all. Upon opening the console, I get these errors:
Uncaught SyntaxError: Unexpected end of input
http://apps.fantasyfootballanalytics.net/projectionsIndex.js?date=09-27-2016-v2 Failed to load resource: the server responded with a status of 404 (Not Found)
require.js:1 Uncaught Error: Script error for: projectionsIndex
http://requirejs.org/docs/errors.html#scripterror
http://apps.fantasyfootballanalytics.net/domReady.js?date=09-27-2016-v2 Failed to load resource: the server responded with a status of 404 (Not Found)
require.js:1 Uncaught Error: Script error for: domReady
http://requirejs.org/docs/errors.html#scripterror
require.js:1 Uncaught Error: Load timeout for modules: domReady!_unnormalized2
http://requirejs.org/docs/errors.html#timeoutC @ require.js:1h @ require.js:1(anonymous function) @ require.js:1
4) what you did to receive the error (i.e., all the steps you took or changes you made in the app): All I did was attempt to load the page. I have tried all of the advice listed in the FAQ, and nothing seems to be working.
Hi, apps aren’t loading at all.
1) I’m using newest versions of Chrome and Firefox
2) 64 bit Windows 7 pro
3) When I open the projections page, it stays blank and none of the links work. Sign in–change settings–about–graph–nothing works. The URL changes but nothing loads. Started happening out of nowhere.
4)I updated my flash player, however it doesn’t seem to be running on flash. Other than that I cleared the cache, tried using chrome instead of firefox, disabled popups, and still nothing works.
Any help would be appreciated.
Okay, so I’m having a bit of problems with my projections app. As you had asked I will post it here with as much detail as possible. I am using safari 10.1.1, OS X El Capitan v. 10.11.6 on my mac. I am not receiving any specific errors, but am experiencing some irregularities with it.
First, if I go to Scoring Setting and customize it to my league it updates the projections accordingly. If I then go to League Setting and set my number of teams to 12, roster size to 17 and change starting WR’s to 3 the custom scoring settings are reset to default. Also, if i reopen League Settings the number of teams remains at 12 but roster size has reset to default 9 and starting WR’s has reset to 2. If I change them again and save it is correct.
The next problem is with the AAV. It seems something isn’t right. If I set my setting to my leagues custom scoring settings, the values are so low I could have the top players from every position on my team. As an example David Johnson is valued at 22.81. My Scoring Settings are default with the following changes: passing 1 pt per 20 yards, 2 pts for 40 yd td, 2 pts for 400 yd pass bonus, INT=-2. Rushing; 40 yd rush td=2, 200 yd rush bonus=2. Revieving; receptions=1, 40 yd rec td=2, 200 yd rec bonus=2; Fumbles=-2; Return yards are 1 pt per 25 yards.
Finally, the Auction Settings for rank and multiplier do nothing no matter what I change the values to.
As a side, I seem to get kicked from the server randomly. I chalked this up to the server being busy and my account being a free one. Do paying account get priority or would being disconnected continue?
Thank you.
Thanks Forrest. This will help troubleshooting the app. We do have other users reporting being kicked off randomly and will be looking into this as well.
To what extent do the consensus projections typically vary between June and week 1? Will data downloaded today be reliable for a draft that takes place between preseason game 4 and week 1, or are there material updates to the source projection data throughout camp and preseason?
Hi Mike. We will update the projections throughout the preseseason up to the start of the season. The frequency of the updates will increase as we get closer.
Hi Isaac,
Great site! A couple questions on the app: When determining how much to bid vs. aav is that what the cost column is for? For example, if David Johnson AAV is $50 do I use the cost column to determine my max bid? Also, what platform runs the app best, mobile phone or desktop windows 10? Thanks Steve
Yes, use the cost column, but only for the players selected by the app. We recommend desktop, but hopefully will be adapting the apps to mobile in the future!
Question on using the app. How do I pick players for other teams during the draft? if I search for a player and the name comes up, the only option I see is to pick, which puts them on my team. What am I missing? Also, using windows 10 does the app run better on IE or Edge, any difference?
Click the player name. We recommend Chrome.
Isaac, when I click on a player’s name the only two choices are cancel and pick. I don’t see any way to draft for another team…
Can you send a screenshot? It works fine for me in Chrome.
How do I get the screenshot to you? It won’t let me paste and I don’t see an option to upload an image?
You can contact us, for more info see here:
https://fantasyfootballanalytics.net/2016/08/introducing-ffa-insider.html
I think I figured out how to load screenshot. This is from Chrome. [IMG]http://i66.tinypic.com/aya5xd.jpg[/IMG]
If that didn’t work lets try this:
http://tinypic.com/r/aya5xd/9
Not sure how easy it is to see but the two boxes available after you click a player are cancel and pick player.
We’ll fix that. In the meantime, it should work if you click the player’s name in the bottom table (not the lineup table at the top).
Thanks Isaac, FYI I am clicking on the bottom table, I even tried players not in the suggested lineup and get the same result. One other question, in the league settings is there a way to set custom scoring options?
We believe we have fixed the issue. Clicking the player’s name should allow you to set the player’s cost and send them to “Other Players Drafted”. Click the “Settings” tab to set custom scoring options.
Hey Isaac, unfortunately still not working on my end. I tried clearing my cookies etc. on IE, also tried Chrome but the only option I get is to pick player. If I adjust the price I still just have the option to cancel or pick player…
Can you create and share/send a screencast? After entering the player’s name, entering the player’s cost, and clicking “Pick Player”, it should send them to “Other Player’s Drafted”. Also, we’d need more info to reproduce (see here: https://fantasyfootballanalytics.net/about-the-site/faq#errors).
Isaac, here is a screencast. I’ll send the other info in a second post.
http://youtu.be/X3zH3uTzCPw?hd=1
Not sure that posted, here is the screenshot.
http://youtu.be/X3zH3uTzCPw?hd=1
I am using Microsoft Edge 40.15063.0.0, Chrome Version 59.0.3071.115 (Official Build) (64-bit) and Windows 10. I’ve tried clearing cookies/cache and rebooting.
I’ve tried posting a youtube video with a screencast but it doesn’t seem to post?
Hey Steve, looks like it went to spam we just saw it! We have received your screencast, you need to complete clicking “Pick Player” at the end of the video to add to the “Other Players Drafted” list.
Thanks Val my mistake. I didn’t realize the pick player in green was different than the pick player in blue… One other question. When I change the league settings, scoring settings etc. is there a way to save those settings so that next time I log in they are there? Or do I need to put them in each time I want to see projections?
We’re working on this, thanks.
I also have this problem and was wondering if it is an issue with my browser? I only have the option to click the blue “Pick Player” button and thus cannot move players into the “Other Players Drafted” pool…Has this been resolved? My draft is this afternoon, so thanks for any insights!!! AMAZING SITE!
Nevermind, I figured it out…You click on the blue “PICK” button when you have picked the player.
When someone else has drafted the player, you click on the PLAYERS NAME and it presents the green button to put it in the other players drafted list…This app is awesome. Thanks for making this platform a reality Isaac!
I’m having the same issue as Steve regardless of the browser. I also don’t actually see the optimal lineups populating. I get “no data available in table”.
Hi Jeff, can you provide the additional information requested here: https://fantasyfootballanalytics.net/about-the-site/faq#errors so we can reproduce the new error you’re experiencing?
Hi, I am using safari 10.1.1, OS X El Capitan v. 10.11.6 on my mac. When i try to open the projections app “loading data” flashes across the screen really quickly then disappears and I am left on a white screen that never changes. Every once in a while when I open the app it will flash “loading data” then the screen will turn gray and the disconnected from server dialogue box will pop up (though this isn’t very often). It does work for me with another browser, but I felt like I should bring this to your attention since it was working just a few days ago with safari.
Using the Auction / Lineup Optimizer – the optimized lineup is not updating based on picks made. The lineup remains static once determined. I expect the lineup to optimized based on available players and the players I have picked.
Chrome / Windows 10
https://fantasyfootballanalytics.net/about-the-site/faq#errors
Fantastic site! I noticed that Khalil Mack appears in the lineup as both DL and LB. Small error, but wanted to notify you.
I believe he is classified in different positions in different websites, so we retain both to give you the option of which to use.
Any thoughts on building a feature into the auction optimizer to “test” whether a given player is part of the point-maximizing lineup at a cost that his higher or lower than projected? For example, in the default settings it looks like David Johnson is part of the optimal lineup. But suppose he gets bid up to $80. Is he still worth acquiring at this higher price? Or conversely, Antonio Brown isn’t part of the optimal lineup at $67, but is he worth bidding $60 for?
Correct me if I’m missing something, but right now it looks like the tool doesn’t have a way of answering that question. Thanks in advance for all your work on this. It’s truly a phenomenal tool!
Great suggestion, we’ve added this to our to-do list, thanks!
Isaac,
When using the auction draft optimizer app, whenever I go to “auction settings” and try to change the source I get disconnected from the server. The average settings results seems way off on some players so I wanted to try different sources. Thx
Please try clearing your cache and logging in again. If that does not work we need more info to reproduce: https://fantasyfootballanalytics.net/about-the-site/faq#errors
I am using Google Chrome. I cleared the cache, logged in again and same result. If I change the source for auction settings from avg to ESPN, the screen goes grey and there is a message on the bottom of the screen that says “disconnected from server” and “reload” underneath. Tried this on two different computers and two different browsers.
Update, seems to be working now. However if I choose “yahoo” as the source, all player costs are $1?
This is a great app, I especially like the way it shows AAV vs. Cost. However due to the speed of the auction I am in I don’t think using the app during the draft will be practical. Is there a way to print out or download the rankings from the app? If not, is there a way to include the cost as a field when downloading the projections?
Any update on this guys? My draft is this weekend! Thx
Disregard I see now that when you download the projections it includes the cost. Awesome!
Hi Isaac,
Love the concept of this app. Just wanted to point out a few small bugs that could use fixing. 1. On the Lineup Optimizer, I am unable to pick beyond the top three players when simply sorted by rank. Not sure if the selection buttons are broken but they don’t even want to show up. 2. I’m confused on how to select players that other teams have chosen. The pick buttons that work only seem to want to direct the player to my team. 3. If I want to modify the selected columns that are shown I can’t select the ones that are further down the list. Happy to provide more information if needed.
Hey Blake, can you provide some more detail on error 1. What are you seeing when you look for players beyond the top 3? For error 2, please click the player’s name to exclude from you team. We will look into the UI issue in error 3. Thanks!
Thanks for the quick response. For error 1, looks like there doesn’t always seem to be an issue with it. For instance, if I just click through the ranking filter it seems to give me the option to make the pick selection again. Just right off the bat all of the player data shows up including the image of the pick button but when going to select it and add the player to my team I was unable to. The arrow didn’t switch to the pointer either. Thanks for the clarification on error 2.
I can’t seem to get the site to actually save my settings and have them reflected in the Optimized Lineup output… Any advice?
In the Lineup Optimizer, I’m having trouble saving custom league scoring across sessions. I can create and save custom league settings, and I can even change scoring rules. I don’t see any errors and don’t get any browser messages about blocked content. However, when I log out and log back in, the custom scoring rules revert back to default. The custom league is still available and the league settings are still accurate, but scoring is back to default.
I am using Chrome Version 60.0.3112.113 (Official Build) (64-bit) on Windows 10. I have tried on Firefox and Edge on same computer w/ same result. I have cleared cache, don’t have an adblocker and am allowing js.
To give you an example of what is and isn’t saved.
Starters by Position – I set kickers to 0 (we use kickers by I’m trying to reflect some weird salary rules we have). This is always saved in a custom league even after I log out and log in.
Scoring – I set passing TDs to 125pts per TD. This is only saved in the current session. If I log out and log in, it reverts to 4.
I need to change almost all of the scoring rules, but have been testing just the one noted because I’m tired of continually retyping them.
Hello,
1. When selecting League=DraftKings Scoring for Def TDs is 0. I believe it shoud be 6 if I understand correctly.
2. When selecting League=DraftKings … the Points change but not to the DraftKings scale. I have noticed if I change something in the General settings it will force a recalc and the player points then show correctly.
Thanks for letting us know, we will look into this issue!
The above comment should have been placed in the LIneUp Optimizer page.
I have been unable to load the Lineup Optimizer for week 2 all week. I have tried on Chrome and Chrome Mobile (one on Mac and one on Android 8). Both in regular and in incognito mode. Each time I try to load Week 2, I get a “Disconnected From Server” message. Season lineups and Week 1 lineups load fine.
Week 2 data is now available on the Lineup Optimizer, we apologize for the downtime.
Thanks Val. It looks like there is a separate issue with the lineup optimizer. It’s selecting Michael Thomas (New Orleans) and attributing the cost of the New Orleans Michael Thomas and the Minnesota Michael Thomas. I think this is isolated to fanduel. There is a workaround to the issue by selecting Thomas as drafted by another player. Something you’ll probably want to look into though.
Fixed, thanks for letting us know!
Using Google Chrome, Version 60.0.3112.113 (Official Build) (64-bit). Tried in Incognito and regular Chrome. Also tried in Safari. Cleared my cache and verified Java and AdBlocker. Using macOS Sierra Version 10.12.6. When I try to load the Lineup Optimizer it says “Disconnected from the server” and has a button to reload that doesn’t work. It also shows a script on the right side of the page that says “Data Redistributions” and is forever trying to load. In Safari (Version 10.1.2 (12603.3.8)), when I try to load the rankings/projections for your league app it comes up a blank page. Please advise. Thank you.
1) I am receiving an error when I try to load the LineUp Optimizer application. It says “Disconnected from Server. Reload” Obviously I have tried clicking reload, along with all of your other troubleshooting steps. 2) I have tried the latest versions of both Chrome and Firefox and 3) Windows 7.
Week 2 data is now available on the Lineup Optimizer, we apologize for the downtime.
I can’t find a dollar value that’s based on VOR. Do I have to do that part myself?
Hi Dan,
You can view this in the AAV column of the app table.
Thanks,
FFA Team
Isaac,
Love the site, been a user for the last 3 years with great results. I am having issues with the auction values/costs and assumptions with the tool though.
In two of my leagues, quarterback value is immensely increased. 20 yards =1 point and 6 points per passing TD. This is in a standard scoring league otherwise.
In that league, QBs go at a premium. Aaron Rodgers was the #1 QB last year and went for about $45 as an example.
My custom VBD/Auction sheets where I manually calculate value from VBD principles. As well as things like “Beersheets” as well as ElBoberto’s sheets ALL show a more appropriate “cost” or “auction price” to what the tool here shows. ($30 default based on $27 AAV and a 10% premium)
Currently its taking AAV from various sights (or maybe just fantasy pros) and then inputting either a premium or a discount depending on settings.
This doesnt help tell us the true nature of the relative value of the player since AAV is based on default scoring…. When a position gets a facelift (like the QB in two of my leagues), it would be nice if your tool were able to use some sort of VBD auction calculation to determine not just AAV but if the “Cost” column told you how much the player was ACTUALLY worth…. Not just what his AAV was plus or minus a premium.
I think this is the single greatest tool for snake drafts, but I am having a hard time using this over other custom sheets due to that fact.
Also, another issue with the lineup optimizer is In one league we use 2 RB 3 WR 0 Flex, but the optimizer tool told me to pay for 3 RBs and 2 WRs….. Seemed a bit off since the 3rd RB would be a backup and now im missing a WR as a starter….
My own calculations btw, are very simple. You total the budget of all teams (12*$200) = $2400.
Net $1 for all players (we have 15 on each team, so -$180, leaves us with $2,220 to spend on all “premium” players (above a baseline).
I then have used various methods of determining baseline, but that is irrelevant for your tool since you let us input our own baseline.
It seems like an improved function would be in determining the auction values. Not just allow us to input our own, but let the tool calculate a players actual WORTH based on the inputs provided in that tab.
Thanks!
Hey man, how do you use the snake draft optimizer? It looks like it doesnt work … the auction optimizer loads up and works fine, but the snake one … is another story unless im blind and not seeing something :/
https://fantasyfootballanalytics.net/2013/09/win-your-fantasy-football-snake-draft.html
Hi Aaron,
We also have interest in calculating a player’s “worth”. I have yet to see a good formula for doing so, because a player’s worth depends on many things, including the league’s scoring settings, the number of teams in the league, roster settings, who’s been drafted, how much each player has been drafted for, etc. If you know of a good formula to calculate a player’s “worth” that includes those inputs, then let us know!
Also, please let us know specifically what settings you used to get 3 RBs even though you only requested 2. We’d need that info to try to reproduce and fix the bug.
Cheers,
Isaac
Isaac, usually the VBD Value in an auction draft is calculated by dividing the sum of all available auction dollars in the league by the sum of the Value Over Replacement Player points for all starters in the league. This produces a value per VORP point. Then you can simply multiple this value times the expected VORP of each player to arrive at a calculated value.
Alternatively, your optimizer app approach seems to optimize your lineup based on league cost (as you have done in your optimizer); and then assume their league cost +10% is the “bid up to value” for that player.
The problem is, good values will be sold before your “optimal lineup” players are nominated. So, my optimal lineup was david johnson, leveon bell, alex collins, and some $2-$3 wide receivers; but hypothetically if Antonio Brown comes along for a $10 bid, THAT WOULD FIT IN MY OPTIMAL LINEUP!! So we need “bid-up to” values that are independent of the optimal lineup application.
You describe a looping function for this problem in the R application; I am guessing \ hoping that this would be a dual simplex method of deriving the “break even” point for each individual player; above which he no longer would make it into the optimal lineup. Every “startable” (top 25 at WR \ RB) should have such a value; independent of whether or not the optimizer function has selected them in your optimal lineup. However, at this point in time my knowledge of R is still minimal and I need to quickly decide upon my “toolset” for draft day, which will be here before I have time to learn R.
This is probably the only thing from stopping me from being a paid subscriber. I have to manually do what Noah described above and it would be a HUGE time save if it calculated this for me.
2 Variables that would take FFA from being “Good” to “OMG Take my money” would be this:
Feature 1) Automatically update recommended Baselines on league settings.
When I select we have 14 teams 2 QBs, compared to an 8 team 1 QB league, it would be AMAZING if the work wasnt left up to me to calculate what # of QB should be my baseline. I have read more than I care to about this and even went as far as researched the last 10 years of data to look at injury, etc. to help determine this. I have NOT been able to find an easy single source that simplifies all of this. Ive tried “top 100” ive tried “top 120” Ive tried “man games supplied” all the methods and they all produce MASSIVE variation of “VOR” depending on if you use worst starter vs top 120 (Example 24 RBs in a 12 teams 2 RB league, versus top 120 would have like 35-40RBs).
I agree I should be able to MODIFY it. Based on league tendancies. If I know guys undervalue TEs for example, I can modify it, but if it would atleast pre-fill based on RECOMMENDED settings for baseline. It would be great.
Feature 2) Calculating players expected “worth”. The “average auction value” is meaningless to me when I have a custom league. When I have a superflex league. or lets say super custom QB scoring that rewards .5 pass completion points but -.2 for incomplete passes. Etc. The value of a QB might be $60 and then the optimizer tool will say to draft R. Wilson for $20 because thats his AAV across sources but the reality is, people will pay $55 for Wilson in this new system and ill be left with a $1 Quarterback.
As Noah described above, the calculation I do is as follows.
Total Auction Dollars (12*200= 2400 example)
Total Players (12*15 = 180)
So we now know that 2220 is available for “premium” players (over baseline).
You Sum up ALL the VOR points (lets say like 5,000) and now you have an adjuster to multiple by VOR points: (2220/5000 = .444).
So now if Aaron Rodgers has 100 VOR points, his “Estimated Value” would be $44.4 OVER $1 (meaning $45.4) for the auction.
You do this for all players and will have $2400 allocated based entirely off VOR.
If you do both of these features. (auto generate baselines + allocate auction dollars based on budget/vor) I would pay for premium service here. Even if these were free I would pay to support this.
For reference, you should see BeerSheets (on reddit) who does this exact thing but I have two beefs with Beersheets. (#1 – he uses FantasyPros which is less accurate than FFA. #2 – I dont quite buy into his method of baselines. Ive tested a few of his sheets and they were pretty wack outside of basically default roster/scoring).
BONUS FEATURE I WOULD PAY FOR: sportsinjurypredictor.com claims that “The results from the predicted games missed model and the chance of in-season injury model suggest that injuries are not completely random and that we have models that are going to add value to your decision-making ”
So incoorperating some of their work (such as missed games prediction) in tandem with projections – might make for some interesting variables!
Anyways. I love the site, but its just missing this little umph to get me over the purchasing hump.
Right now I have to download your projections and then manually do all this work when it could be fairly easily incoorperated into your site.
A few notes:
1) We do include SportsInjuryPredictor estimates of injury risk and games missed due to injury in our risk estimates.
2) Thanks, we’ll consider different ways of calculating VOR baselines and players’ VOR-based “worth”.
-Isaac
Hello,
I have to say, great job, thanks for allowing us to use your code, and also that every time I’ve used your auction optimizer, I’ve either won my league, or come in 2nd. Sure the sample size for that is small, 2 out of 4 seasons, but still.
A feature I’d gladly pay for is a save draft feature. Either allow me to save my draft progress, or have some sort of autosave feature. We use a live draft and I’ve lost my progress halfway through the draft both years I used the optimizer. I’ve also had to much about with keeping track, multiple lists, and all that goers with not using the app as well as using the app since I know that I might be disconnected, lose network connectivity for a minute, or for whatever reason lost the progress of my draft. It would also allow me to setup my draft pre-draft day since my league uses keepers.
I did try downloading and setting up your open source items, which are very cool. Those don’t give the draft optimizer apps, which I don’t blame you for not providing free to everyone. those are certainly your IP and are something I can totally understand you keeping to yourself, unless I missed something and those are available for use on my local machine.
Again, such a great job, the stuff really works well, and I am grateful for all you’ve done here. And I would gladly subscribe for a year if the autosave function on the draft optimizer was something you added. If I missed that there is a save draft function, please point me to it.
Thanks!
If I can add my two cents on auctions: I find them a bit too fast moving for the app to work for me, plus the connection problem mentioned above. Plus I’m not sold on the concept of max out your starters and take $1 players after that. What I would pay for would be your projections with an extra column next to the AAV, which would be what your projections calculate that player is worth. That would be really helpful. I’ve looked at other sites calculated values and they seem to be either a guess or overly simplified.
https://fantasyfootballanalytics.net/2013/06/win-your-fantasy-football-auction-draft.html#comment-22929
Well Isaac, you guys are the math guys I was hoping you would figure that out! Lol. But here is an idea maybe you can figure a formula around it? First, you would have to predict how many at each position would be drafted. Then, you would have to set a budget for each position. So let’s say it’s a 10 team league, you expect 50 RBs selected. You then compare the projected points of each player above the 50th RB. Each point would then be worth a set dollar amount. The tricky part is you have to spread those $$ around 5 players with most of it going to the top 2 or 3 guys. Not sure how to figure that part out. You might have to allocate a percentage to RB1, RB2 etc.
So as an example, lets say Gurley is projected at 279 and the 50th guy is Chubb at 85. The $ per point would be 279-85=194. Dollar per point is 194/RB budget. So if my budget were $85, it would be 194/85 = $2.3 per point. Then lets say I am allocating 60% of my RB budget for RB1. 85 x .6 = $51. So I can spend $51 on RB1. Gurley is “worth” $84. (194/2.3) But if I stick to my budget I need to get him for $51 or less. Kamara would be 225-85= 140 points over 50th guy. So he is 140/2.3 = $60
So I would need to up the percentage of the budget I am willing to spend on RB1 if I want a top guy. With the AAV you guys provide I could get a good sense of what I would need to spend to get someone I wanted compared to how they are valued based on projections. (That is of course assuming my attempt at a formula makes any sense!)
Intuitively it makes sense to me in the sense the a guy like Gurley is worth the $67 price he is getting, assuming it is worth it to you to not have a lot of money left for your other RBs. (And assuming he stays healthy) There is probably even some way to work in the floor/ceiling numbers to come up with a value range as well.
Well I gave it a shot, I’m sure there is a flaw in my math somewhere but maybe it is a start?
Are you guys going to say anything about the app completely crashing last night in the middle of drafts?
Crickets. Awesome.
So things you need to do:
1) Solve the too-many-connections problem that disabled the app on 9/4.
2) The setting/saving/loading of custom settings needs to be vastly improved. It’s too disjointed, unintuitive, and too easy to cause the App to crash.
3) The player table needs to be filterable by position.
4) The player table needs to not reset the custom columns every time a player is drafted.
5) The ESPN average draft values need to be fixed (all $1 when I loaded it)
6) A big one – draft progress need to be recoverable.
7) This is one is my pie-in-the-sky dream: – Abandon Shiny. After all these years it is still not ready for prime time.
Any availability on this amazing tool? Seems like the link is broken…
The link should work: https://apps.fantasyfootballanalytics.net