RotoGrinders.com is the home of the daily fantasy sports community. Our content, rankings, member blogs, promotions and forum discussion all cater to the players that like to create a new fantasy team every day of the week.

If you or someone you know has a gambling problem, crisis counseling and referral services can be accessed by calling 1-800-GAMBLER (1-800-426-2537) (IL). Gambling problem? Call 1-800-Gambler (NJ/WV/PA), 1-800-9-WITH-IT (IN), 1-800-522-4700 (CO) or 1-800-BETS OFF (IA). 21+. NJ/PA/WV/IN/IA/CO/IL only.

## Comments

Hi everyone,

Planning on playing more NBA DFS on Fanduel, just read Notorious’ breakdown on Cash vs GPP approaches. In basketball, how do you like to determine a player’s floor/ceiling? Look at scoring over time or is there a metric that helps?

Thanks!

Some people

wronglyassume that a player’s floor and ceiling are simply a player’s lowest score (floor) and highest score (ceiling) over a certain period of time. For a number of reasons, none of which I will articulate here, this is a mistake and will result in generally poor floor/ceiling projections.Step-by-step the most common method that is statistically sound is to:1) Identify a player’s total per-game fantasy points for certain period of time, i.e. last 20 games, last 60 games, last season, etc.

2) For each game in step 1), also identify the total minutes played by said player.

3) Calculate the fantasy points per minute for each game (important: do NOT simply add the total fantasy points for all games combined then add total minutes for all games combined, than average BECAUSE you will need the individual numbers per game in Step 5.

4) Calculate the mean (average) fantasy points points per minute for all games in your steps 1-3 sample

5) Using the points per minute number for each game calculated in step 3 (i.e. if you are using data for the last 60 games, you will have 60 different fantasy points per minute numbers for this step 5). You will now calculate 2 standard deviations below the mean fantasy points per minute from step 3 for your floor and 2 standard deviations above the mean fantasy points per minute from step 3 for your ceiling.

6) Use your -/+ (floor/ceiling) 2 standard deviations calculated in step 5, and multiply those results to the projected minutes a player will play for the game under consideration. This will give you the floor and ceiling for the game.

Additionally, there are variations on the above methodology. Two common examples are below, but there are probably hundreds of other statistically valid variations in addition to the following:

1) Instead of using total fantasy points in your calculations above, you could calculate each individual scoring category (points, steals, assists, rebounds, blocks, turnovers) separately, and then calculate each per minute and sum the results, this will give you a slightly more accurate floor and ceiling.

2) Weight each game in your sample, applying a higher weight to more recent games and a lower weight to older games, for example.

Hope this makes sense.

Just to add to that, this calculation of ceiling and floor (mean +/- 2 standard deviations) assumes that the data distribution is approximately normal. If that assumption is correct, then the player will score between the floor and the ceiling 95% of the time. There’s not really a requirement to use 2 standard deviations. Also, some player’s distributions will change due to new teams, roles, etc.

Excellent point !! This is CRITICALLY important.

While there are methods to calculate the floor/ceiling for data not normally distributed, I didn’t mention that above either.

Thanks !!

EDIT: Should have mentioned that in my data dump too. For many players, it’s pretty obvious if their fantasy scoring is not normally distributed by comparing the mean to the standard deviation, particularly when the standard deviation is larger than the mean. For the most part, you’ll see this for players who played very few minutes in a season, and/or players who played sporadic minutes from game-to-game.

## Blogger of the Month

For us analytically challenged players can you explain in simpler terms

Just because a player’s lowest output may be 10 or a player’s highest output is 80, that doesn’t necessarily mean that’s what they are normally capable of. Those could be just be extreme outliers. That 10 point game he may have gotten hurt so you really wouldn’t’ want to say that’s their floor. That 80 point game may have just been when every stud rested or was a blowout and they were getting garbage time. By utilizing 2 standard deviations from their average (their normal output), you can say w/ 95% confidence that this is their floor or this is their ceiling.

Sorry. Tried to make my explanation from a couple of months ago as simple as possible. I’m not really sure how to discuss the term “standard deviation” without using the actual term “standard deviation.” It’s pretty basic. Essentially it’s a measure of how spread out your data is.

If you go to mathisfun.com, a math site for Elementary school math, and the standard deviation explanation at Standard Deviation it should be pretty easy to figure out. It’s really no more difficult than addition, subtraction, or multiplication. You could also try YouTube. There are tons of videos 2-minutes or less in length that will explain the concept.

I think you’ll find it’s a pretty simple concept once you do a few minutes of research on your own.

Can you explain what 2 standard deviations look like? I just calculated 15 games with 1.29 fpm as the mean. Not sure what to do from here. Is it the actual standard dev I calculated?

OK, did a little more research and found my std dev. The question is now how do I utilize such different numbers in a calculation or a projection? My floor is 22 and my ceiling is 71. What’s the purpose of this data?

## Moderator

KSIG, the wider the distribution, the more likely that player is to be a GPP Target as opposed to a cash game target. What I would do is calculate that player’s value at each deviation.

Looking at the

upside potential(adding standard deviations) would quantify the likelihood that player is going to help you win a GPP.Looking at the

failure potential(subtracting standard deviations) would quantify the likelihood that player is going to crush your cash game lineup.If a player is extremely consistent in scoring, but doesn’t have any upside, you might play them in cash, but

notGPP.Absolutely agree with shockermandan here….

In addition, another alternative that I frequently use, particularly where limited data is available, is to not use standard deviations of say 0.5, 1.0, 1.5, 2.0, etc. at all but instead evaluate the numbers using percentiles, at say the 10th, 20th, 30th … 70th, 80th, 90th percentiles and use a count function to identify the historical number of times that a player actually fell within a certain percentile range. Once the percentiles counts have been identified, the resulting numbers can be used for a player’s floor and ceiling, as well as for actual fantasy points projected.

Thanks guys, pretty helpful. @gje can you give me a little more instruction on the count feature. Are you referring to total outcomes (fpts) per game to get more granular? Again, the player I was using gave me a 22.46 floor based on mins and a 71 ceiling. Obviously that is a wide variance from his mean and traditional projections are typically based off of factors on top of fpm. I am trying to attempt to set myself apart from the hurd. Everyone uses the same projections nowadays….

I need to run some errands, but hopefully in a couple of hours (but no later than tomorrow morning) I will do some calculations on actual NBA player data for this year and post in tabular format. I can do both standard deviations and percentiles.

Will this help?

Regarding counting the number of times a player achieved a certain percentile value, the easiest way to accomplish this is to run all your standard deviation, percentile numbers in whatever programming language or program you use for statistics (Excel, R, Python, Julia, etc.) and then simply do the count step in Excel using the SUM or SUBTOTAL functions.

Anything will help. I am not a math junkie, but was able to figure out std dev, ceiling and floor using excel. I guess I need to understand percentiles in the data I have avail. Is there an easier place to get fpm/gm instead of manually calculating it? It’s laborious and time consuming to do each player…and thank you!

Per yesterday, are sample Floor and Ceiling numbers using both standard deviation and percentile methods. I apologize for posting these later than promised. Please note that these numbers are current for the entire 2018-19 NBA season through games played yesterday, 11-21-2018. Also note that due to space limitations and the fact these tables are provided only to illustrate what your numbers may look like I have only included numbers for the top 20 fantasy scorers in the NBA as of 11-21-2018.

Importantly, I have also only included games where a player played a minimum of 8 minutes. The reason for this is that since each game is weighted equally on a per minute basis, a player who only plays a two minutes, for example, may have an unusually high/low mean for that particular game (i.e. a quick turnover for a player playing two minutes may result in artificially low or even negative mean fantasy points for that game; conversely, for example, two consecutive 3-point field goals made will also lead to an artificially high mean for another player who plays the same two minutes).

Since these are only sample calculations, the latter columns “project” each player playing 36 minutes in a game, though these numbers will obviously vary, and minutes projections are perhaps the most difficult yet important calculation to predict when calculating game projections.

Given column width limitations for forum posts, I was only able to include a player’s last name. As this may “read” funny, I apologize for this. Additionally, for the same reason the numbers below are for Draftkings exclusively, though I do have numbers for FanDuel and Yahoo (both sites use identical scoring) as well. Lastly, and again because of column widths, I had to use two tables for percentile numbers.

As I indicated several months ago, there are numerous ways to calculate floors and ceilings, though all include a statistically-valid measure of dispersion. Also, please note the calculations above do not include DvP, Usage Rates, etc. and for some people additional steps/calculations may be more ideal.

Lastly, please advise with questions.

—

TABLE 1: Sample Draftkings Standard Deviation Floor and Ceiling Numbers—

PlayerMean Per Min.Std. dev. Per MinMean Per 36 MinsStd. dev. Per 36 MinsFloor 1.5 Std. dev. Per 36 MinsFloor 2.0 Std. dev. Per 36 MinsCeil 1.5 Std. dev. Per 36 MinsCeil 2.0 Std. dev. Per 36 Mins—

TABLE 2: Sample Draftkings Per Minute Percentile Floor and Ceiling Numbers—

PlayerMinimumMaximum10th Perc.20th Perc.80th Perc.90th Perc.—

TABLE 3: Sample Draftkings Per 36 Minutes Percentile Floor and Ceiling Numbers—

PlayerMinimumMaximum10th Perc.20th Perc.80th Perc.90th Perc.—

EDIT:Sorry…. Forgot one thing….HAPPY THANKSGIVING EVERYONE !!Thanks for these and a couple questions. What’s the purpose of gathering this information and why per/36? Is that the best way to account for production? I ran about 41 players yesterday based on their projected mins that game and for example I came up with a 19 floor for Jokic based on his projected mins and an 81 ceiling. I also ran LBJ for 36 and came out with almost exact figures as yours. Is there a way to put this information to use with projections? I assume you are a player as well as you’re on this forum. I play DK typically and use an optimizer with my settings (off the norm) and custom projections. I always seem to be off by a hair when it comes to winning.

Like is there a way to assign a certain level of differentiation to each projection based on a floor and a ceiling so there’s access to both in an optimization in multi-entry? I have tried this in Python and coded an algorithm, but cant see to get to the bottom of the actual math.

One more thing, how’d you get the percentiles based on this years games?

One more question; If I have two numbers using floor and ceiling as the numbers. Is there a way to find a mean projection with enough variance to account for both floor and ceiling? And is there a way in excel to do it quickly? Ex: 33.56 floor – 53.65 projection – 79.78 ceiling. I am looking for the amount of variance to cover the difference from the mean on both sides giving me access to both floor and ceiling.

Thanks,

Sorry, I’m a little confused by some of your questions but taking one at a time I’ll do my best to answer them….

Whatâ€™s the purpose of gathering this information?I’m particularly confused by this question. Can you clarify?

Without knowing precisely what you’re asking, I guess I would say that I really don’t “gather” this information. Instead, I calculate the statistics/metrics I use and in this instance, the statistics/metrics I use to most accurately identify a floor and ceiling for each player, and more importantly the likelihood that a player will achieve a certain floor/ceiling in any given game.

Why per/36? Is that the best way to account for production?No, I don’t think so. As I tried to explain in my lengthy preamble, while based on real data my whole point in posting these numbers was to illustrate what your numbers might (should) look like as I believe you said that when you eyeballed your numbers you weren’t sure if they were correct…. Sorry, often times I confuse more than I enlighten; and frequently I do this in way too many words, and I think I did exactly that here….

Regarding the 36 minutes, the per minute numbers should actually be multiplied by the projected minutes for each player, and therefore minutes will not be the same for all players…. I guess I could have simply posted the per minute numbers and left it at that, but I thought visually it would be helpful and better illustrate the variation among/between the floors and ceilings of different players, (i.e. some players have floors and ceilings that tend to cluster right around their mean, some players have very high floors relative to their mean but also very low ceilings, and some players land at various points in between).

Thus, I only standardized all players to 36 minutes to demonstrate the variability of fantasy scoring between players.

Is there a way to put this information to use with projections?Yes, that is the purpose of the numbers…. Again, sorry, but I have feeling I’m not answering your question correctly so if you can clarify I will try again.

I assume you are a player as well as youâ€™re on this forum.Yes, I’ve been a very high volume player for 4+ years.

Like is there a way to assign a certain level of differentiation to each projection based on a floor and a ceiling so thereâ€™s access to both in an optimization in multi-entry? I have tried this in Python and coded an algorithm, but cant see to get to the bottom of the actual math.Yes. To vastly oversimplify, when looking at statistical measures of central tendency (mean, median, mode, and derivatives) you are trying to identify what a player’s most likely fantasy score will be. When looking at measures of dispersion (variance, standard deviation, interquartile ranges, percentiles, etc.) you are looking to account for the variation/consistency in a player’s projected fantasy score, (i.e. upside/downside).

One more thing, howâ€™d you get the percentiles based on this years games?I calculate these from actual game data.

One more question; If I have two numbers using floor and ceiling as the numbers. Is there a way to find a mean projection with enough variance to account for both floor and ceiling? And is there a way in excel to do it quickly? Ex: 33.56 floor â€“ 53.65 projection â€“ 79.78 ceiling. I am looking for the amount of variance to cover the difference from the mean on both sides giving me access to both floor and ceiling.Can you try and clarify? If I understand your question, what I think you are trying to get to is one, single number that will accurately predict a player’s mostly likely score (projected score), a player’s floor, and a player’s ceiling. If my understanding of your question is correct, to my knowledge this impossible….

However, with your measures of central tendency and measures of dispersion numbers, you can accurately assign a probability, based on historical player and opponent data, that a player will reach a certain milestone in an upcoming game.

A simple example, using Joel Embiid 36 minute numbers above, you can calculate the probability that Embiid will score 34.56, 41.58, 44.82, 69.12, 71.64, 74.88 DK fantasy points for a particular game.

Again keep in mind this is only an example as technically and by definition, numerically the number of standard deviations from the mean and percentiles take on continuous numerical values and not discrete numerical values (i.e. you can calculate 1.0 standard deviation above or below the mean, but you can also calculate 1.2, 1.37, 1.493…. 1.97546362, etc. from the mean; likewise percentiles can also contain an endless amount of decimal points)…..

Okay, now I’ll stop as I think I’m starting to confuse things more than necessary again….

Let me know where my answers suck, and I can try again….

:)Sorry if some of my questions are not making sense. I see it a certain way and am programmed a certain way from the way I learned DFS. I cant seem to deviate from my process even though its the right way to MME, yet the results are not all that desirable on a night to night basis. Lets see if I can convey this more appropriately.

In regards to the purpose of gathering/calculating the data for floor and ceiling, your answer is pretty clear. I just wish I knew how to come up with the ‘likelihood’ you mentioned.

Second answer; clear.

Projections: So now that we have the floors and ceilings projected. Do you have any advice on a method to create projections? I have messed with it in the past, but see them come out too standardized and when adjusting for pace, dvp etc, the bumps seem so minute that they dont take effect in my optimizations. The problem for me is time and the need to use an optimizer. I have tried everything. Most times my player pool is very sound, but the optimization fails to give me my players. Thoughts?

Percentiles based on game data; of course, as do I, but do you do it in excel? If so, the percentile is calculated off of what? A projection using +/-?

Final question; I guess I am just trying to cover the range of floor, median projection and ceiling. Example using variance or randomness, floor of 34, base projection of 47 and ceiling of say 71. If I were to assume the base projection would need 40% or 18.8 fpts of variance both up or down in order to cover the range. I am having a great deal of difficulty in finding any sort of consistency in my projection and variance assignments in my optimizations.

I hope this helps a bit. Thanks again,

Sorry about the late reply…. Busy holiday weekend.

Regarding your questions….

In regards to the purpose of gathering/calculating the data for floor and ceiling, your answer is pretty clear. I just wish I knew how to come up with the “likelihood” you mentioned.The likelihood is simply the likelihood that, based on prior games, a player has actually achieved a certain milestone. Take for example a player that historically (last 20 games, 50 games, whatever) has a mean DK fantasy point score of 30 fantasy points, 40 fantasy points at the 70th percentile, 50 fantasy points at the 80th percentile, and 60 fantasy points at the 90th percentile (remember, again you are taking historical fantasy point scores divided by minutes played and to get a per minute fantasy score and then multiplying the per minute fantasy score times projected minutes to standardize for the upcoming game you are trying to project).

Thus, regarding the 70th percentile, how many times has that player actually achieved a score that reached that percentile? Same for the 80th percentile, 90th percentile, etc. If a player has achieved the 80th percentile frequently in the past, say 50 times out of every 100 games (50%), but only the 90th percentile 5 times out of every 100 games (5%), and their matchup for the upcoming game is good (using DvP, etc.) you can be relatively confident they have a good chance of reaching their 80th percentile milestone in the upcoming game, but probably not so confident that they will get to their 90th percentile for that game.

Projections: So now that we have the floors and ceilings projected. Do you have any advice on a method to create projections?I may have mentioned this before, but given how I over-complicate things, projections will be based off a measure of central tendency (generally the mean, aka the arithmetic average) while floors and ceilings are based off measures of dispersion (variance, standard deviation, percentiles, etc.). Regardless of the type projection you are calculating (actual fantasy points, floor, ceiling) you will typically calculate a base score for each on per minute basis, and then adjust for the upcoming game based on projected minutes played and usage (opportunity) and matchup (DvP, Pace, etc.).

Percentiles based on game data; of course, as do I, but do you do it in excel?Yes, percentiles based on prior games. I use R and/or Python for data analysis, but you can certainly do this in Excel if you want.

If so, the percentile is calculated off of what? A projection using +/-?The percentile is simply a count of actual (historical) numbers, i.e. the value at which a certain number of observations (historical fantasy scores for our purposes) have fallen at a certain percentile (percentage) or below of all scores in your sample/population. Thus, no +/- calculation is needed, nor would it be appropriate.

Final question; I guess I am just trying to cover the range of floor, median projection and ceiling. Example using variance or randomness, floor of 34, base projection of 47 and ceiling of say 71. If I were to assume the base projection would need 40% or 18.8 fpts of variance both up or down in order to cover the range. I am having a great deal of difficulty in finding any sort of consistency in my projection and variance assignments in my optimizations.Again, fundamentally your base projections will be based on a measure of central tendency and ceilings and floors on a measure of dispersion.

Also, and if I may editorialize just a little. If I read your collective comments accurately, you are trying to develop the “holy grail” of all projection systems…. Don’t do it, given the overall (all players relative to one another) variance in sports this is impossible. In other words, no player projection system can account for a player getting injured early or in early foul trouble in a game (thus playing less minutes than projected), a teammate playing the same position/same role getting injured early or in early foul trouble (thus your player playing more minutes and/or having increased usage than projected), an off shooting night, etc….

Rather, projection systems should not be used as an

absolutenumber, but instead arelativenumber, i.e. how a player is likely to perform relative to other players at the same or similar salary, position, etc. and similarly what a player’s upside/downside (ceiling/floor) potential for a particularly game may be, again relative to other players.Thus, your player projections are only a small part of your analysis of how to construct lineups for any given slate.

Personally, in my opinion, relying 100% on a player’s projected score is by far the biggest mistake a lot of fantasy contestants make in constructing lineups.

Again, in my opinion, there are other equally important (or perhaps even more important) considerations that you should take into account before selecting the players in your lineup.

For example, what is the size of the slate you are playing?

Frequently, you here broad, overly general platitudes like this: “If you want to win a DK NBA GPP, you will need a score of 350 fantasy points.”

This is naive….

In this regard, I sampled hundreds of different NBA slates from 20l7 and 2018 and the fantasy scores needed to win a GPP are all over the board, but similar slates have similar characteristics….

E.g. for slates with 11 games, the optimal play is as follows: in any given lineup of 8 players limit your use of multiple players (team stacks) from the same team to no more than 2 players from a single team and your remaining 6 players from individual teams. Thus, for 11 game slates the optimal play is to have 6 or 8 players from unique teams in your 8-player lineup. Additionally, in an 11-game the minimum lineup score needed on DK to win a GPP 75% of the time, is 382 fantasy points. Thus, only construct and enter lineups using a combination of players that when put together in a group have a reasonable chance of scoring 380 fantasy points or more (here is where looking at historical percentile scores is so important).

Alternatively, on a smaller slate, say 4-games, it is perfectly acceptable/optimal to use multiple team stacks of 2 players from the same team, or even a single 3-player team stack. Also, on a 4-game slate, the historical numbers say you will have a 75% chance of winning a DK GPP with a lineup score only 337 fantasy points.

Furhter, slate sizes also differ regarding the minimal number of players from winning teams needed in a lineup, the minimal number of home players needed in a lineup, etc….

Again, this a just an example of some of the many other considerations that need to be taken into account besides individual player projections when constructing your lineups….

Hope my reply helps/makes sense.

…

P.S.:Sorry about the long-winded post but hopefully it’s at least minimally helpful. Also, in advance sorry about any typos or grammatical errors. Like I’ve said before in other forum threads, I hate to re-read and proof what I write before posting… so I don’t.(:Sent you a DM.

I am this far and confused on what to do next? Do I figure Standard Deviation of the PPM or the Totals and then what do i do with that number?

Thank you

Do this….

1. Calculate your mean fantasy points per minute (PPM).

2. Calculate your standard deviation fantasy PPM.

3. Multiply your mean fantasy PPM by your projected minutes per player. This will be your base projected fantasy points.

4. Multiply your standard deviation fantasy PPM by your projected minutes per player. This will be your projected game standard deviation.

5. For your floor, subtract your projected game standard deviation from your base projected fantasy points (game mean).

6. For your ceiling, add your projected game standard deviation to your base projected fantasy points (game mean).

Obviously, this doesn’t include adjustments for DvP, Pace, etc., so this is the mathematical basics.

@gje sent you a DM the other day.