• How To
    • Win Your DFS League
    • Win Your Auction Draft
    • Win Your Snake Draft
    • Download Projections
    • Scrape Projections
    • Calculate Projections for Your League
    • Examine Accuracy of Projections
    • Identify Sleepers
    • Save Custom Settings
    • Use the API
  • Strategy
    • Fantasy Football is Like Stock Picking
    • Use Projections, Not Rankings
  • Projections
    • Our Projections
    • Who has the Best Projections?
    • Draft the Best Starting Lineup
    • Projections are More Accurate than Rankings
    • Points by Position Rank
    • Players’ Risk Levels
    • Value Over Replacement
    • Bid-Up-To Value
    • Player Value Gap
    • Gold Mining
    • Weekly Variability
    • Are Subscription Sources More Accurate?
  • Statistics
    • How To Learn R
    • R is Better than Excel
    • Do Stats Help in Fantasy Football?
    • Download/Run Our Scripts
    • ffanalytics R Package
  • Apps
    • Auction Draft Optimizer
    • Snake Draft Optimizer
    • Weekly Lineup Optimizer
    • Rankings/Projections for Your League
    • API
    • Other Tools
      • Stock Analysis
    • Error Logging
  • Testimonials
  • About the Site
    • About
    • Authors
      • Isaac Petersen
    • FAQ
    • FFA Insider
    • Privacy Policy
    • Terms of Service
  • Donate

Fantasy Football Analytics

How Fantasy Football is Like Stock Picking (Including a Shiny App)

30
  • by Isaac Petersen
  • in R · Theory · Tools
  • — 17 Mar, 2015

In this post, I compare fantasy football to stock picking.  There are important lessons we can learn from financial forecasting that can be applied to forecasting football players’ performance.

Fantasy Football is Like Stock Picking

When picking players for your fantasy team or when picking stocks, your goal is to pick players/stocks that others undervalue.  But what’s the best way to do that?  You could do lots of research to pick players/stocks with strong fundamentals that you think will do particularly well next year.  By picking these players/stocks, you’re predicting that they will outperform their expectations.  However, all of your information is likely already reflected in the current valuation of the player/stock, so your prediction is basically a gamble.  This is evidenced by the fact that people don’t reliably beat the crowd/market.

Not even so-called experts beat the market reliably.  There is little consistency in the performance of mutual fund managers over time.  The following charts are from Leonard Mlodinow’s book, “The Drunkard’s Walk: How Randomness Rules Our Lives“.  The chart on the left depicts the performance of the top mutual funds from 1991 to 1995.  The chart on the right depicts the performance of the same funds in the same order over the subsequent 5 years (1996 to 2000):

full

The best funds from 1991–1995 weren’t necessarily the best funds from 1996–2000.  This suggests that mutual fund managers differ in great part because of luck or chance rather than reliable skill.  That’s likely why a cat beat professional investors in a stock market challenge.  Although our sample size is much smaller with fantasy football projections, there also appears to be little consistency in fantasy football sites’ rank in accuracy over time, suggesting that the projection sources aren’t reliably better than each other (or the crowd) over time.

The market reflects all of the knowledge of the crowd.  One common misconception is that if you go with the market, you will receive “average” returns (by “average”, I mean that you will be in the 50th percentile among investors).  This is not true—it has been shown that most mutual funds (about 80%) underperform the average returns of the stock market.  So, by going with the market average, you will likely perform better than the “average” fund/investor.  Consistent with this, I demonstrated that crowd-averaged fantasy football projections are more accurate than any individual’s projection.

Another important lesson from investing is diversification.  If you have too much money in one asset and that asset tanks, you will lose your money.  In other words, you don’t want to put all of your eggs in one basket.  By owning different asset classes (e.g., domestic and international stocks and bonds), you can limit your downside risk without sacrificing much in terms of expected return.  This lesson can also apply to fantasy football.  If you draft your starting QB and WR from the same team (e.g., the Cowboys), you are exposing your fantasy team to considerable risk.  You can limit your downside risk by diversifying—drafting players from different teams.  That way if the Cowboys’ offense does poorly in a given week, your fantasy team won’t be as affected.  As Jonathon pointed out, however, sometimes having two players on the same team might be beneficial because some positions may be uncorrelated or even negatively correlated, which can also reduce risk.  For instance, the performance of the TE and RB on the same team tends to be slightly negatively correlated, so it might not be a bad idea to start the TE and RB from the same team.  For a correlation matrix of all positions on the team, see here.

Why Does This Matter?

Okay, fantasy football might be similar to stock picking, so what?  You are most likely to pick the best players if you go with the wisdom of the crowd (e.g., average projections) and diversify.  Most projections are public information, so you might wonder whether using crowd projections gains you anything because everybody else has access to public information.  However, this is also the case with stocks, and people still consistently perform best over time when they go with the market.  We are the only site that creates crowd-averaged projections that are customized for your league settings.  Moreover, part of drafting is picking players with the best value.  That’s why we also offer value-based drafting tools for auction and snake drafts, and for identifying sleepers.

The Efficient Frontier: A Shiny App

The ultimate goal is to draft players for your starting lineup that provide the most projected points and the smallest downside risk.  This is similar to the notion in investing of the efficient frontier, where your goal is to pick funds that have the greatest expected returns for the least risk (where risk is the variability in returns over time).  To demonstrate the efficient frontier in investing, I created a Stock Portfolio Analysis tool in Shiny that is based on Michael Kapler’s Systematic Investor Toolbox (see his blog here).  The tool downloads returns from Yahoo based on the ticker symbols you enter.  Then, it calculates a correlation matrix and the efficient frontier based on funds’ historical returns, and allows you to specify expected future returns and variability to calculate an efficient frontier for future returns.  It also determines the maximum Sharpe Ratio (ratio of return to risk), and the portfolio allocation at this ratio.  The Stock Portfolio Analysis tool is located here:

http://apps.fantasyfootballanalytics.net/stocks/

Efficient Frontier

An important caveat: I am not providing investing advice, and future returns obviously do not mirror historical returns.  I just created the tool to demonstrate some of the risk and reward principles that are similar between fantasy football and investing.

How to Interpret the Graph

The graph depicts the risk vs. reward profile of different stocks/bonds and various portfolio allocations with different combinations of these funds.  The x-axis is the day-to-day variability in the returns of an asset, and represents an asset’s risk (volatility).  The y-axis is the annual return of an asset, and represents the asset’s reward.  Each stock/bond asset has some combination of risk and reward, and is plotted with an empty circle.  Often, bond index funds have lower risk and lower potential for reward (bottom left of the graph), whereas stocks tend to have a higher risk and higher potential for reward (top right of the graph).

The solid black circles indicate points along the efficient frontier.  The points along the efficient frontier indicate, for a given level of return (reward), what the lowest risk is for a portfolio with some allocation of the various assets.  The points along the efficient frontier, therefore, reflect the risk of the “optimal portfolio” for each level of return.  The solid red circle indicates the portfolio with the highest reward-to-risk ratio (i.e., the Sharpe ratio).  A table in the app indicates the portfolio allocation at the Sharpe ratio (i.e., the percentage of your portfolio that is allocated to each fund).

Conclusion

When picking stocks or fantasy players, you are best off 1) going with the wisdom of the crowd (using average projections; index funds) and 2) diversifying (picking players on different teams or, if from the same team, from positions that aren’t highly positively correlated; having different asset classes).  The goal is to pick the funds and fantasy players with the highest projected returns/points and the least risk (except when drafting bench players, see here).  Our apps are specifically designed to help you meet these goals to pick the best collection of funds and players.

Share this:

  • Click to share on X (Opens in new window) X
  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on Reddit (Opens in new window) Reddit
  • Click to email a link to a friend (Opens in new window) Email

Like this:

Like Loading...

Related

Share

Tags: Rshinystocks

— Isaac Petersen

My name is Isaac and I'm an assistant professor with a Ph.D. in Clinical Psychology. Why am I writing about fantasy football and data analysis? Because fantasy football involves the intersection of two things I love: sports and statistics. With this site, I hope to demonstrate the relevance of statistics for choosing the best team in fantasy football.

30 Comments

  1. Jonathan says:
    March 17, 2015 at 6:21 pm

    Very interesting article, and I love the site overall!

    One question though: how correlated are players on the same team? For example, what is the covariance between a given team’s QB and RB, or QB and K?

    I would definitely think that a team’s QB and WR scores would be positively correlated, since WR points (yards, TDs) are directly related to QB performance. But, performance at RB might be uncorrelated (or even better – negatively correlated!) with the QB on the same team; if the team hands off for a TD, the RB will get points but the QB will get nothing. Likewise, a team’s K might be negatively correlated with the QB on the same team; more FGs mean fewer TD opportunities.

    If these positions are negatively correlated, that would help push out the efficient frontier for a given risk tolerance. Have you looked into this at all? Looking forward to hearing your thoughts!

    Reply
    • Isaac Petersen says:
      March 22, 2015 at 8:24 pm

      Hi Jonathon,

      Excellent point. Players from the same team might be uncorrelated or even negatively correlated depending on the positions (e.g., TE + RB). I updated the article to reflect your point. We haven’t looked at the weekly data yet (we’re in the process of creating the weekly tools), but I found this resource that shows the correlation matrix for all positions on the same team:

      http://rotoviz.com/2014/10/correlation-matrix-answers-every-question-youve-ever-dfs-stacking/

      Hope that helps!
      -Isaac

      Reply
      • Jonathan says:
        June 23, 2015 at 10:08 pm

        Hey Isaac,

        That is awesome. I just got around to visiting the site again and noticed your comment and link, and it was exactly what I was thinking about. Very interesting! I’d love to see your data when the tools are available, and I can’t wait for the upcoming season!

        Thanks,
        Jonathan

        Reply
  2. Apurva Shah says:
    March 19, 2015 at 8:28 am

    Very nice implementation in shiny. Will like to talk to you on a specific project that I am doing for my university project. Will you be able to help advice on scripting in shiny ?

    Look forward to having a conversation.

    Thanks
    Apurva

    Reply
    • Isaac Petersen says:
      March 22, 2015 at 8:24 pm

      Hi Apurva,

      What are you looking to do?

      -Isaac

      Reply
  3. Elliot says:
    April 14, 2015 at 1:16 pm

    Love the article and the tool.

    I’ve long been a proponent of the crowd average beating individual performance, not only in fantasy sports but even in things such as weekly game picking pools.

    One of the more interesting facets of using this is not merely to be able to identify who is the best value at a point in time, but it’s also immensely useful in pre-draft strategy.

    There are tons of “experts” out there who will tout strategies with regards to what picks to make in what round (from conventional wisdom such as RB/RB/WR or RB/WR/RB… to extremes like zero-RB). But these strategies have the same vulnerability as the individual projections, they rely on the accuracy of the player projections. That is, what good is going with the “right” strategy of RB/RB if it means you overvalued one or both picks.

    I’ve experimented with using (relatively) simple spreadsheet goal-solving formulas (ie Excel solver), to project the optimal picks for the first 7 rounds of a draft (presuming for the moment that you’d defer on K/DST), given a set of projections (ie your app). I set it it up to maximize total projected points for these first 7 picks from each draft position (1-12). Basically for each of the first 7 rounds I’d have a best guess at who SHOULD be available at each position for example:
    First Position drafting (2014):
    Round 1 (pick 1) RB Charles, WR Megatron, QB Peyton, TE Graham
    Round 2 (pick 24) RB Ellington, WR Cobb, QB Peyton, TE J Thomas
    Round 3 (pick 25) RB Stacy, WR Cobb, QB Brees, TE J Thomas
    Round 4 (pick 48) RB C Johnson, WR Crabtree, QB Luck, TE Gronk
    Round 5 (pick 49) RB F Gore, WR Harvin, QB Luck, TE Gronk
    Round 6 (pick 72) RB F Jackson, WR Maclin, QB Foles, TE J Witten
    Round 7 (pick 73) RB F Jackson, WR Maclin, QB Kaepernick, TE Witten

    Now here’s the fun part. While I used the Shiny app for projected points, I used ADP (widely available) for who would likely be available at each pick.

    Obviously you get less repetition in the middle positions of a snake draft. Next I set up the formula to only allow combinations where you end up with 1QB, 2RB, 3WR, 1TE. And turned it loose to maximize points from each draft position.

    While the results pointed at specific players, what it really did was point out which position to target (because while I would know the optimal pick given 10s of thousands of permutations), with your projections in hand I would almost always have a player at each position who should have already been taken). It led to some fascinating results, most notably a ton of “zigging when everyone else is zagging”. From the top 4 draft positions as well as 11/12, you would end up with the traditional 2RB and 1 WR in the first three rounds, but in the middle positions, you maximized projected points by getting 2WR (and sometimes 3!) with the first 3 picks.

    It made for one of the least stressful drafts I’ve ever had. No worrying about position runs, or players I like being around. Your tool made it all possible. Thanks!

    Reply
  4. Christian says:
    June 9, 2015 at 11:58 pm

    Hi,
    I find these apps to be the best around for Fantasy Football. Have you done any analysis for other sports?
    It would be ideal to create an app in which you can remove players as they are being drafted in your league and adjusts calculations on your next pick taking into consideration players in the same team and position correlation. Have you considered this? If so, is it too complicated/reliable?

    Thanks, Christian

    Reply
    • Isaac Petersen says:
      June 10, 2015 at 10:21 pm

      Hi Christian,

      Thanks for the kind thoughts and helpful suggestions. We have some thoughts about how to make the tools “dynamic” during the draft to account for who’s been drafted and who’s left, but we haven’t fully decided on an approach. One option we’re considering is a Dynamic VOR based on a positional need multiplier (see section 6: http://footballguys.com/05vbdrevisited.htm). It’s a complicated process not only mathematically but also practically to update calculations throughout the draft because that requires lots of server calls and when many users are using it simultaneously, that could crash the servers. Thoughts on what calculations you’d update throughout the draft?

      Thanks,
      Isaac

      Reply
      • Sean says:
        June 11, 2015 at 10:44 am

        I will certainly be using your auction draft app this season, since I found your site this past year and can’t get enough of it. In reference to Christian asking about removing players from the app as they get drafted, last year I used a draft app (http://jayzheng.com/ff/#/draft-aid) which made this very simple by just clicking on the players name when they are drafted. I found this to be an extremely convenient and intuitive way to do this, instead of typing in the players name.

        Reply
        • Isaac Petersen says:
          June 11, 2015 at 11:56 am

          Thanks Sean, we’re hoping to build in this functionality to “click to exclude”. We’re looking for a UI developer if you guys know any.

          -Isaac

          Reply
      • Christian says:
        June 19, 2015 at 11:06 pm

        Hey,

        I was thinking it would be a lot of help to update based on how many players of the same team you have on your roster and if they share bye weeks with other players, both on your roster and those who haven’t been picked. I will read up on Dynamic VOR. You should also check out http://www.nflproject.com/home.html. These guys started to uses machine learning algorithms and what I believe to be similar data analysis techniques as the ones used on this site to make predictions on NFL games. They were incredibly accurate. Maybe you can contact them and share info/techniques.

        Thanks, Christian

        Reply
        • Isaac Petersen says:
          June 21, 2015 at 8:33 am

          Hi Christian,

          We have plans to implement Dynamic VOR—see section 6 of this article: http://footballguys.com/05vbdrevisited.htm. It has some technical challenges, though, so it’s lower on our priority list. Thanks for passing on the NFL Project info. Will look into it!

          -Isaac

          Reply
          • Christian says:
            June 21, 2015 at 9:50 pm

            I visited the website that contains the article above and noticed they host a high-stakes fantasy football league. It is a PPR, 12 team league that allows 2 flex positions. I was wondering if you have ever participated/considered participating in this contest. It has a grand prize of $300,000 so I would assume that someone with your skills would be very interested in. You should start a thread on this site discussing strategy on that contest.

            -Christian

  5. blotka says:
    August 10, 2015 at 7:54 am

    Hi,

    Would it be possible to share your code for Stock Portfolio Analysis shiny application? I found it extremely interesting and more detailed when compared to Michael Kapler’s :).

    Reply
    • Isaac Petersen says:
      August 10, 2015 at 8:01 pm

      Hi Blotka,

      Glad you like it! Many of the functions are built on Michael Kapler’s tools, and I’d prefer to get his permission first.

      -Isaac

      Reply
      • blotka says:
        August 11, 2015 at 3:15 am

        Isaac,

        Thank you for your reply. Kapler’s version is available to everyone, I downloaded it (server.R, global.R, ui.R), modified it slightly (still leaRning R) and am using it for quite awhile. Your features are very exciting and (more) useful as far as portfolio analysis is concerned.

        Thanks a lot!

        Reply
  6. Mara says:
    October 7, 2015 at 11:20 am

    Hey,
    Already tweeted you to this effect, but Polson and Stern’s “The implied volatility of a sports game” reminded me so much of this post, that I thought it’d be worth covering all my bases. (Don’t know if I can post links in a comment, but I’m trying anyhow: http://www.degruyter.com/view/j/jqas.2015.11.issue-3/jqas-2014-0095/jqas-2014-0095.xml).

    With Fantasy Basketball season just around the corner, I’m already examining my potential player portfolio, and, with roto categories, it really is very investor-esque.

    Reply
  7. Robert says:
    October 25, 2015 at 10:48 pm

    Hey Isaac,

    When it comes to the wisdom of the crowd for stocks, isn’t the market valuation significantly subjective? I don’t have solid math skills, but let me see if I can explain. If I go with the crowd to guess the weight of a cow, then I have a better chance of accuracy using its prediction than guessing the weight myself. The weight of the cow in pounds is the objective measure. With the market, the crowd not only predicts, but can actually change the weight of the cow. It’s rather like bootstrapping with stocks, the crowd both assesses and sets the market value. So with the market, is it less about accurate evaluation and more about following the money (where people are investing) when selecting a market fund that mimics the S&P.

    Also, how to you find undervalued stocks if the wisdom of the crowd will always find the optimal price?

    Thanks!

    Reply
    • Isaac Petersen says:
      October 27, 2015 at 6:04 pm

      Hi Robert,

      Good point and good question. I’m not a financial analyst, so I won’t provide financial advice 🙂 In agreement with your point, research has shown that the wisdom of the crowd is more accurate in the case of more objective outcomes. I don’t think many would argue that the wisdom of the crowd (i.e., the market) always reflects the optimal price (i.e., the market is not 100% efficient). For instance, some stocks are under-/over-valued and bubbles occur. Nevertheless, the market does consider expected future performance in its valuation. The broader point is that it’s quite difficult to reliably/consistently outperform the market over time. Even the vast, vast majority “experts” don’t.

      Hope that clarifies,
      Isaac

      Reply
  8. David Robertson says:
    October 31, 2015 at 1:29 am

    Issac – thanks for the site… i was looking at the “fantasy football… like stock picking” tab and found that the link “https://fantasyfootballanalytics.net:3838/Stocks/” wasn’t working… any suggestions?
    thanks.

    Reply
    • Isaac Petersen says:
      November 5, 2015 at 10:18 pm

      We lost Shiny server when we upgraded our servers. It’s on our to-do list.

      Reply
    • Isaac Petersen says:
      November 8, 2015 at 11:24 pm

      Should be up and running again now.

      Cheers!
      -Isaac

      Reply
  9. John Koegel says:
    December 31, 2015 at 2:32 pm

    Hey Isaac,

    I love reading your posts and using your scripts/editing them. I was wondering if you could put your shiny code out there for your Systematic Investor Toolbox example so that I can peruse your code.

    If not, no big deal.

    Thanks,

    John

    Reply
  10. Ron LaFleur says:
    July 7, 2016 at 6:53 pm

    Isaac,

    I liked reading your plots and data tables.

    Is there a written report available showing the formulas used to produce the efficient frontier plots? The downloadable report and data do not appear to have this info.

    Thanks,
    Ron LaFleur

    Reply
    • Isaac Petersen says:
      July 7, 2016 at 8:17 pm

      Hi Ron,

      We do not make the scripts for the Shiny app available for various reasons, including that we are incorporating others’ code. Nevertheless, it’s very easy to compute the efficient frontier in R. To compute the efficient frontier from historical data, we use the portfolioFrontier() function of the fPortfolio package. To compute the efficient frontier from expected returns and variability, we use the formulas here:
      http://www.calculatinginvestor.com/2011/06/07/efficient-frontier-1/

      Hope that helps!
      -Isaac

      Reply
      • Ron LaFleur says:
        July 11, 2016 at 8:24 am

        Issac,

        Thanks for the reply. The link you sent was helpful. I incorporated this approach and reproduced the single graph for four securities, shown by the link, using MATLAB. The code is easily extended to portfolios of any number of securities (and players).

        However, I am still unable to reproduce the two graphs you have. I need more information on how your variables are defined (expected annual returns, compound annual growth, variability). I have moved forward with known definitions and can not obtain the efficient frontier curves you show.

        As there is a large list of posts by the link to Michael Kapler’s Systematic Investor Toolbox, could you give a specific reference in this list that you used?

        Thanks,
        Ron LaFleur

        Reply
        • Isaac Petersen says:
          July 11, 2016 at 6:02 pm

          I’ll send more info by email.

          Reply
  11. Spencer Harrison says:
    September 9, 2016 at 6:32 pm

    Isaac,

    I was hoping to take a look at this tool to see if there were any applications to daily fantasy but the link seems to be broken again. Please let me know if there is a way to access that I can’t seem to find.

    Thanks

    Reply
    • Isaac Petersen says:
      September 10, 2016 at 1:24 am

      Looking into this, thanks!

      Reply
  12. julian diego ventura says:
    September 12, 2019 at 12:10 pm

    Are you going to be doing seasonal rankings, because when I choose season for general settings, its not updated. For example, Tyreek Hill is still put in the top 5

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • Previous story Who Has the Best Fantasy Football Projections? 2015 Update
  • Next story 2015 Fantasy Football Projections using OpenCPU
  • Tabs

    • Most Popular
    • Recent Posts
    • The ffanalytics R Package for Fantasy Football Data AnalysisJune 18, 2016
    • 2015 Fantasy Football Projections using OpenCPUMay 28, 2015
    • Win Your Fantasy Football Auction Draft: Determine the Optimal Players to Draft with this AppJune 14, 2013
    • Win Your Fantasy Football Snake Draft with this AppSeptember 1, 2013
    • Post-Combine Mock: Team Needs and TargetsMarch 10, 2025
    • Fantasy Football Weekly Cheat Sheet: Week 18 (2024)January 3, 2025
    • Fantasy Football Weekly Cheat Sheet: Week 17 (2024)December 26, 2024
    • Fantasy Football Weekly Cheat Sheet: Week 16 (2024)December 18, 2024
  • FFA Insider

    Logo
  • Categories

    • About the Authors
    • Articles
    • Auction Drafts
    • Draft Optimizer
    • FFA Insider
    • Gold Mining
    • How To
    • In the Media
    • Luck
    • Package
    • Projections
    • R
    • Risk
    • Theory
    • Tools
    • Trade Strategy
    • Uncategorized
    • Weekly
  • Facebook

  • Twitter

  • Our Partners

    R-bloggers

  • Support us building things... Even a cup of coffee ($1.99) helps us stay awake!

  • Subscribe to the Fantasy Football Analytics mailing list (no spam).
    Loading

        © Fantasy Football Analytics

        %d