Showing posts with label Isaac Petersen. Show all posts
Showing posts with label Isaac Petersen. Show all posts

Wednesday, September 11, 2019

Call for Help: Lead R/Shiny Developer

Dear Fantasy Football Analytics Community,

In 2013, we at Fantasy Football Analytics released web apps to help people make better decisions in fantasy football based on the wisdom of the crowd. Over the past six years, the community response has been incredibly supportive, and we continually improved the apps in response to user feedback. The community also contributed directly to the project, with a number of users making additions and edits to our public source R scripts on our GitHub repo and our ffanalytics R package. In sum, we provide web apps built by the people, for the people.

This brings me to our call for help. A key member of our team is stepping down at the end of the season. As we try to keep up with feature requests from the community and the impressive increase in users, we are looking for help. We are looking for a lead R/Shiny developer to help develop our web apps (apps.fantasyfootballanalytics.net). We are looking to help optimize and streamline the apps as well as add features to our popular platform. It would also be preferable for the developer to have some knowledge of American Football and fantasy football.

Crucial skills:

  • R package knowledge
  • Experience developing/testing R code/packages
  • Familiarity with Shiny

Nice-to-have skills (but not required):

  • Knowledge of American Football and fantasy football

To apply, please email the following to jobs@fantasyfootballanalytics.net:

  1. letter of interest with a brief description of relevant skills
  2. resume/CV
  3. how much time you expect to be able to contribute
  4. work sample of R packages and/or Shiny apps that you have developed

Sincerely,
Isaac Petersen

The post Call for Help: Lead R/Shiny Developer appeared first on Fantasy Football Analytics.



from Fantasy Football Analytics https://ift.tt/2ZN8amo
via IFTTT

Wednesday, June 21, 2017

Call for Help: R/Shiny Developer

Dear Fantasy Football Analytics Community,

Four years ago, we released web apps to help people make better decisions in fantasy football based on the wisdom of the crowd.  Over the past four years, the community response has been incredibly supportive, and we continually improved the apps in response to user feedback.  The community also contributed directly to the project, with a number of users making additions and edits to our public source R scripts on our GitHub repo and our ffanalytics R package.  In sum, we provide web apps built by the people, for the people.

This brings me to our call for help.  As we try to keep up with feature requests from the community and the impressive increase in users, we are looking for additional help.  We are looking for an R/Shiny developer to help develop our web apps (apps.fantasyfootballanalytics.net).  We are looking to help optimize and streamline the apps as well as add features to our popular platform.  It would also be preferable for the developer to have some knowledge of American Football and fantasy football.

Crucial skills:

  • R package knowledge
  • Experience developing/testing R code/packages
  • Familiarity with Shiny

Nice-to-have skills (but not required):

  • Knowledge of American Football and fantasy football

To apply, please email the following to jobs@fantasyfootballanalytics.net:

  1. letter of interest with a brief description of relevant skills
  2. resume/CV
  3. how much time you expect to be able to contribute

Sincerely,
Isaac Petersen

The post Call for Help: R/Shiny Developer appeared first on Fantasy Football Analytics.



from Fantasy Football Analytics http://ift.tt/2sQbLPM
via IFTTT

Sunday, June 4, 2017

2017 Fantasy Football Projections

We are releasing our 2017 fantasy football projections in a Shiny webapp using R.  The app allows you to calculate custom rankings/projections for your league based on your league settings.  The projections incorporate more sources of projections than any other site, and have been the most accurate projections over the last 5 years.  New features of the app this season include the ability to view additional variables (including “per game” projections).  You can access the Projections tool here:

http://ift.tt/1dzY10L

For instructions how to use the app, see here.  We also have a Draft Optimizer tool (see here).  See our articles on how to win your Snake Draft and Auction Draft.  We will be updating the projections as the season approaches with more sources of projections.  Feel free to add suggestions in the comments!

The post 2017 Fantasy Football Projections appeared first on Fantasy Football Analytics.



from Fantasy Football Analytics http://ift.tt/2stYaLp
via IFTTT

Monday, March 20, 2017

Who Has the Best Fantasy Football Projections? 2017 Update

In prior posts, we demonstrated how to download projections from numerous sources, calculate custom projections for your league, and compare the accuracy of different sources of projections (2013, 2014, 2015, 2016).  In the latest version of our annual series, we hold the forecasters accountable and see who had the most and least accurate fantasy football projections over the last 5 years.

The R Script

You can download the R script for comparing the projections from different sources here.  You can download the historical projections and performance using our Projections tool.

To compare the accuracy of the projections, we use the following metrics:

For a discussion of these metrics, see here and here.

Whose Predictions Were the Best?

The results are in the table below.  We compared the accuracy for projections of the following positions: QB, RB, WR, and TE.  The rows represent the different sources of predictions (e.g., ESPN, CBS) and the columns represent the different measures of accuracy for the last five years and the average across years.  The source with the best measure for each metric is in blue.
Source 2012 2013 2014 2015 2016 Average
R2 MASE R2 MASE R2 MASE R2 MASE R2 MASE R2 MASE
Fantasy Football Analytics: Average .670 .545 .567 .635 .618 .577 .626 .553 .645 .535 .625 .569
Fantasy Football Analytics: Robust Average .667 .549 .561 .636 .613 .581 .628 .554 .644 .536 .623 .571
Fantasy Football Analytics: Weighted Average .626 .553 .645 .535 .636 .544
CBS Average .637 .604 .479 .722 .575 .632 .500 .664 .559 .625 .550 .649
ESPN .576 .669 .500 .705 .498 .723 .615 .585 .630 .551 .564 .647
FantasyData .531 .639 .531 .639
FantasyFootballNerd .370 .785 .281 .767 .501 .641 .384 .731
FantasyPros .613 .572 .608 .585 .610 .561 .610 .573
FantasySharks .529 .673 .606 .592 .568 .633
FFtoday .661 .551 .550 .646 .530 .659 .546 .626 .574 .618 .572 .620
NFL.com .551 .650 .505 .709 .518 .692 .582 .632 .605 .584 .552 .653
WalterFootball .472 .713 .431 .724 .483 .718 .462 .718
Yahoo .547 .645 .635 .554 .624 .562 .602 .587
Here is how the projections ranked over the last four years (based on MASE):
  1. Fantasy Football Analytics: Average (or Weighted Average)
  2. Fantasy Football Analytics: Robust Average
  3. FantasyPros
  4. Yahoo
  5. FFtoday
  6. FantasySharks
  7. FantasyData
  8. ESPN
  9. CBS
  10. NFL.com
  11. WalterFootball
  12. FantasyFootballNerd

Notes: CBS estimates were averaged across Jamey Eisenberg and Dave Richard.  FantasyFootballNerd projections include only their free projections (not their full subscription projections).  We did not calculate the weighted average prior to 2015.  The accuracy estimates may differ slightly from those provided in prior years because a) we now use standard league scoring settings (you can see the league scoring settings we used here) and b) we are only examining the following positions: QB, RB, WR, and TE. The weights for the weighted average were based on historical accuracy (1-MASE).  For the analysts not included in the accuracy calculations, we calculated the average (1-MASE) value and subtracted 1/2 the standard deviation of (1-MASE).  The weights in the weighted average for 2016 were:

CBS Average: .344
ESPN: .329
FantasyData: .428
FantasySharks: .327
FFToday: .379
NFL.com: .329
WalterFootball: .281
Yahoo Sports: .400

Here is a scatterplot of our average projections in relation to players’ actual fantasy points scored in 2016:

 

Interesting Observations

  1. Projections that combined multiple sources of projections (FFA Average, Weighted Average, Robust Average) were more accurate than all single sources of projections (e.g., CBS, NFL.com, ESPN) every year.  This is consistent with the wisdom of the crowd.
  2. FFA projections were more accurate than projections from FantasyPros.  This may be because we include more sources of projections.
  3. The simple average (mean) was more accurate than the robust average.  The robust average gives extreme values less weight in the calculation of the average.  This suggests that outliers may reflect meaningful sources of variance (i.e., they may help capture a player’s ceiling/floor) and may not just be bad projections (i.e., error/noise).
  4. The weighted average was equally accurate compared to the simple average.  Weights were based on historical accuracy.  If the best analysts are consistently more accurate than other analysts, the weighted average will likely outperform the mean.  If, on the other hand, analysts don’t reliably outperform each other, the mean might be as or more accurate.  Given the mean and weighted average were equally accurate each year, the evidence suggests that analysts don’t consistently outperform (or underperform) each other.
  5. The FFA Average explained 57–67% of the variation in players’ actual performance.  That means that the projections are somewhat accurate but have much room for improvement in terms of prediction accuracy.  1/3 to 1/2 of the variance in actual points is unexplained by projections.  Nevertheless, the projections are likely more accurate than pre-season rankings.
  6. The R-squared of the FFA average projection was .67 in 2012, .57 in 2013, .62 in 2014, .63 in 2015, and .65 in 2016.  This suggests that players are more predictable in some years than others.
  7. There was little consistency in performance across time among sites that used single projections (CBS, NFL.com, ESPN). In 2012, CBS was the most accurate single source of projection but they were the least accurate in 2013.  Moreover, ESPN was among the least accurate in 2014, but they were among the most accurate in 2015.  This suggests that no single source reliably outperforms the others.  While some sites may do better than others in any given year (because of fairly random variability–i.e., chance), it is unlikely that they will continue to outperform the other sites.
  8. Projections were more accurate for some positions than others.  Projections were much more accurate for QBs and WRs than for RBs.  Projections were the least accurate for Ks, DBs, and DSTs.  For more info, see here.  Here is how positions ranked in accuracy of their projections (from most to least accurate):
    1. QB: R2 = .73
    2. WR: R2 = .57
    3. TE: R2 = .55
    4. LB: R2 = .53
    5. RB: R2 = .48
    6. DL: R2 = .45
    7. K: R2 = .38
    8. DB: R2 = .37
    9. DST: R2 = .24
  9. Projections over-estimated players’ performance by about 4–10 points every year across most positions (based on mean error).  It will be interesting to see if this pattern holds in future seasons.  If it does, we could account for this over-expectation in players’ projections.  In a future post, I hope to explore the types of players for whom this over-expectation occurs.

Conclusion

Fantasy Football Analytics had the most accurate projections over the last five years.  Why?  We average across sources.  Combining sources of projections removes some of their individual judgment biases (error) and gives us a more accurate fantasy projection.  No single source (CBS, NFL.com, ESPN) reliably outperformed the others or the crowd, suggesting that differences between them are likely due in large part to chance.  In sum, crowd projections are more accurate than individuals’ judgments for fantasy football projections.  People often like to “go with their gut” when picking players.  That’s fine—fantasy football is a game.  Do what is fun for you.  But, crowd projections are the most reliably accurate of any source.  Do with that what you will!  But don’t take my word for it.  Examine the accuracy yourself with our Projections tool and see what you find.  And let us know if you find something interesting!

The post Who Has the Best Fantasy Football Projections? 2017 Update appeared first on Fantasy Football Analytics.



from Fantasy Football Analytics http://ift.tt/2nI5m49
via IFTTT

Monday, September 5, 2016

Win Your Daily Fantasy (DFS) League with this Lineup Optimizer

In this post, we use an OpenCPU app in R to determine the best possible players to pick in a daily/weekly fantasy football (DFS) league.  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 pick 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:

To Use the DFS Optimizer App

To use the DFS Optimizer App, you will need to subscribe to FFA Insider (for more info, see here).

How it Works

First, we use a script to scrape player’s projected points from numerous sources using R.  Second, we scrape player prices from various DFS websites.  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.

Then, based on how many players you need for each position, your cap available, and your maximum risk tolerance, we use the Rglpk package to find your optimal lineup by selecting the remaining players available that maximize the 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.  For more info on how projected cost is calculated, see here.

It is generally best to select players with minimal risk to ensure solid, if not superior, performance.  We include players’ upside potential (ceiling) in the output, as defined by the players’ 90th percentile of their projected points across analysts.

Note that VOR, ADP, ECR, and AAV are not shown for weekly projections (only seasonal projections).

Strategy

Strategy to win your DFS league: pick the players with the highest sum of projected points (especially floor), while minimizing risk (i.e., a low risk and a high floor).

User Inputs

Season: which season of projections to use.
Week: which week(s) of projections to use.
Number of Starters by Position: how many players in your starting lineup at each position.
League Scoring: source of DFS scoring settings.
Positions: which positions of players to include in calculations.
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 picked (click “Pick” button next to player or type player’s name).
Other Players Drafted: Select players to exclude.

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 projected points.
Player (Team): Player name and team. Click player’s name to add to “Other Players Drafted”.
Pos: Position.
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.
Pos Rank: Position rank.
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:

  1. A density plot of projected points by analyst
  2. 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 DFS Optimizer App

For the DFS Optimizer app, go to:

http://ift.tt/1JXelWd

DFS Lineup

The post Win Your Daily Fantasy (DFS) League with this Lineup Optimizer appeared first on Fantasy Football Analytics.



from Fantasy Football Analytics http://ift.tt/2cj25nn
via IFTTT