The RotoViz Team recently released a new tool called the “Range of Ouctomes App.” This tool will help users to better understand a player’s realistic range of outcomes for the coming season. In this article, Dave Caban overviews the process of building the tool and interpreting its results.
Phillip Lindsay was one of the most exciting surprises of the 2018 fantasy season. The undrafted free agent stormed through defenses for more than 1,000 rushing yards, 10 total touchdowns, and nearly 15 fantasy points per game. But projecting his 2019 outlook is difficult. First, many fantasy players are concerned about his ability to shoulder a similar workload in his second season, assuming that it makes sense for Denver to limit his touches.1 Many also expect fellow sophomore, Royce Freeman, who the Broncos drafted in Round 3 of the 2018 Draft, to earn an expanded role in the team’s offense.
These concerns heavily factor into any subjective projections. As a result, before even considering efficiency, it’s easy to see how his floor and ceiling are likely far apart. Fortunately, there are other ways that we can develop expectations of a player’s range of outcomes. By combining these approaches, our chances of gaining a stronger overall perspective increases.
One way that we can approximate a player’s range of outcomes is by using what the RotoViz Team now calls “Historical Projections.” In the early days of the site, we used “Sim Scores” which were created using a similar approach. Historical projections review a “searched” player’s statistical output in a given year (year n), find players from prior seasons that produced similarly, and review the output these players produced in the subsequent season (year n+1). This output can be used to develop estimates for the “searched” players upcoming season. For 2019, we’ve rolled out a Range of Outcomes app that uses Historical Projections to assist with these efforts.
Using Historical Data to Estimate the Future
Overall, the process is fairly straightforward. However, there are a couple of steps that need to be taken before we can look at individual players. These steps are performed on a positional basis and inform the math that the app uses when searching for matches.
- Identify position-specific statistics that are correlated year over year
- Identify position-specific statistics that are correlated with fantasy points
- Determine position-specific statistics that are correlated year over year and are also correlated with fantasy points
- For example, targets are a major component of wide receiver scoring and correlate strongly year over year. As a result, targets are an included statistic for WRs.
- Weight the statistics determined in 3, in a way that best predicts subsequent year outcomes
- As you’d expect, targets are one of the most heavily weighted WR statistics.
Some statistics that fit the above criteria, despite weaker correlations, do get included in the app, but carry little weight.
The Search and The Match
With our position-specific statistics identified and weightings assigned, we’re ready to search for individual players. Let’s consider Lindsay’s output from 2018.
Note that within the app, certain variables used when searching for “matching” players are not included in “2018 Per Game Stat Line” section. Age, height, and weight are considered but factor into the calculation minimally.
When Lindsay is selected, the app considers the absolute difference between Lindsay’s 2018 output for a given statistic and that produced by every player included in the app’s database. These differences will be calculated for all included statistics and assigned the calculated weightings. The players with the smallest weighted differences will be considered Lindsay’s best matches. As you’d expect, the year n output produced by these player’s is very similar to Lindsay’s.
The Subsequent Season and Searched Player Year N+1 Estimates
By reviewing the results of each matches’ year n+1 we can begin to estimate Lindsay’s 2019 production.
One of the simplest things we can do with data provided by the matches is to calculate an average stat line. This gives a rough estimate of what Lindsay’s 2019 output could look like — 13 rushing attempts per game for 56 yards and 0.3 touchdowns with four targets, two receptions, 20 receiving yards and 0.1 receiving touchdowns. This stat line translates to an average of 12.8 PPR, 11.8 half PPR, and 10.8 standard fantasy points per game.
Of course, there are a number of other takeaways that can be made. For example, comparing the combined PPR points per game of his matches in year n against those produced in year n+1 may give some indication as to whether or not it’s likely that Lindsay will score more or fewer points in 2019. The cumulative year-over-year change of Lindsay’s matches is -2 points per game. From looking at each match individually, it’s clear that the most drastic changes from one year to the next were negative, which isn’t ideal for the Denver back.
Building a Range of Outcomes
While we could identify the lowest and highest scoring matches to create a range of outcomes, our preferred approach is to identify the 25th (low) and 75th (high) percentiles. This prevents outliers from clouding our analysis and forces the ranges of outcomes created into more comparable gaps.
As we expected, Lindsay’s range of outcomes is pretty significant when compared to other RBs. The 7.8 points separating his floor of 8 PPR and ceiling of 15.8 PPR points is the 10th largest of the 40 RBs for which we created Historical Projections. While looking at a player’s floor and ceiling is really helpful in understanding a player’s range of outcomes, a level of context is lost if we don’t look at the full distribution of year n+1 outcomes. To help with this, the app includes histograms for each scoring method. Let’s look at Lindsay’s. PPR points are plotted on the x-axis and the number of matches that scored the included point totals is plotted on the y-axis. For example, four of Lindsay’s matches scored approximately 15 points per game.
*Low, median, and high projections are not included for Half PPR and Standard scoring (averages only), but visualizations are included for each scoring method.
Lindsay’s histogram provides a couple of interesting takeaways. Six of his matches scored less than 10 points per game in year n+1. The most frequently occurring points per game totals were six and 15, and three of his matches scored 17 points per game. More than half of his matches scored 12 or more points per game in year n+1.
Historical Distribution Scores
Of course, reviewing the histograms generated for every player isn’t efficient and comparing multiple players at once would be difficult. For this reason, I created Historical Distribution Scores (HDS). HDS attempts to quantify a player’s range of outcomes into a single metric. It uses a sliding scale starting at 10 points per game to reward players for matches that crushed it in year n+1 and penalize players with matches that struggled. I wrote about HDS last year and would recommend that you check out this post for a detailed explanation.
Image Credit: Ric Tapia/Icon Sportswire. Pictured: Phillip Lindsay.
- Lindsay ranked 15th among RBs in 2018 with 292 total opportunities (rushing attempts plus passing targets). (back)