Fantasy Football Starting Lineup Model (FFF)

January 1, 2024
I developed a fantasy football formula (FFF) to help determine a starting lineup each week throughout the season. I hope you find it helpful, and I’m always looking to improve it if you have any suggestions. Here are some general notes.
- In school, I always favored math homework over writing and literature, so I apologize if this article is a bit confusing. I may come back to it and refine it to make it better, and again, I’ll take any suggestions you may have.
- FFF is based on the idea that a player will produce a certain amount of points on average but will deviate based on his matchup. So if a player has an easier matchup, he will produce more points, and if the player has a harder matchup, he will produce less points.
- I developed the formula for a redraft league, but it could be used for any type of league, including daily fantasy league formats.
- The formula is used to compare QB’s, RB’s, WR’s, TE’s, and K’s. I also have a slightly different formula for defense/special teams groups. I have not done any research on individual defensive players (but could in the future).
- The formula may change some from league-to-league based on different scoring formats, but it would only really change for very unusual scoring formats. (Example: if a quarterback gets negative points for scoring a touchdown.)
- It is by far not a perfect formula. I tested it with statistics from 5 seasons, and using a regression analysis, the R-squared value is about 0.2 instead of 0.9. However, I do consider it a good general guide for figuring out a starting lineup, and I think it shows what factors are important when considering a starting lineup.
- I personally run the FFF formula using an SQL-based program. Perhaps one of these days I’ll learn how to run a calculation directly on this website so you can use it as an app.
Below is the complete FFF formula to use for players (QB’s, RB’s, WR’s, TE’s, or K’s).

As shown, the formula consists of factors A through N. Here is a breakdown of each factor:

As shown in the formula, almost each factor (everything except A) is broken down into two versions with a “bias” subscript and “int” subscript.
- Variables with a “bias” subscript indicate numbers that will change based on the player’s position. The numbers were all determined from regression analyses, which I may discuss in a future article. The table below shows all bias factors by position.

- Variables with an “int” subscript indicate statistics to input. However, the “int” is short for “interpolated”. Each number needs to be interpolated, so all the numbers fall on the same scale. I use a standard interpolator equation that you can find on the internet. Here’s a snapshot of the equation that I have on VBA, and below that is a table showing all the min and max values to use for interpolating each factor.


All values were calculated using a best fit line for data over the past five years. (I can probably go over this in detail in a future article.) Note that offensive line rankings, receiving corps rankings, and home-away inputs are set as bins or toggled values, so the max and mins are set as 1 and -1, respectively. Also, age and opportunities are zeroed out on the kicker formula, so that is why the max and mins are set as “N/A”.
I like to interpolate all values to fantasy points to make a good comparison between players. So let’s do an example. Russell Wilson is 35 years old. In the table above, the age band is between 19.87 and 39.97, and the points band is between 21.77 and 9.22. Age is reversed because a younger quarterback will interpolate to higher points, so as an older quarterback, Russell Wilson’s points interpolated from age is fairly low at 12.32. He’s not playing anymore, but by comparison, Tom Brady (age 46) has his interpolated points even lower at 5.45. (Incidentally, the bias for age on quarterbacks is 0, so at the end of the day, age is really not a factor for quarterbacks. I think Tom Brady was a big part in my analysis to rule it out.)
So for good measure, let’s finish out an entire FFF example with Russell Wilson. I did a calculation of him a couple of weeks ago when he played at home versus New England. Here are all the inputs.
- Name: Russell Wilson
- Position: QB
- Team: Denver
- Matchup: Home versus New England
- Estimated fantasy points (I used his average points for the year): 16.76
- Estimated opportunities (I used his average for the year): 34.71. This interpolates to 14.10 points.
- Denver’s win percentage: 0.5 (7-7 record). This interpolates to 15.49 points.
- Offensive line ranking: I’m estimating Denver’s offensive line as average, so I set this to 0. This interpolates to 15.49 points.
- Receiving corps ranking: I’m estimating Denver’s receivers as average, so I set this to 0. This interpolates to 15.49 points.
- QB rating: Russell Wilson’s passer rating is 98.0. This interpolates to 17.76 points.
- Age: 35, interpolated to 12.32 as shown above.
- Home-Away: Home, which I’ll toggle to 1. This interpolates to 21.77 points.
- New England’s points allowed: 21.36 points per game. This interpolates to 13.45 fantasy points.
- New England’s yards allowed: 348.07 yards per game. This interpolates to 15.59 points.
- New England’s passing yards allowed: 223.36 yards per game. This interpolates to 13.94 fantasy points.
- New England’s rushing yards allowed: 99.93 yards per game. This interpolates to 12.22 fantasy points.
And with the bias factors for quarterbacks above, we get this calculation:

FFF, then, equals 15.50.
Where the formula really comes in handy is when I compared Russell Wilson to Matthew Stafford that week. Matthew Stafford was at home and playing against the New Orleans Saints. Here’s how the calculation compares Russell Wilson to Matthew Stafford:
Russell Wilson: 15.50
Matthew Stafford: 13.91
And here were the actual fantasy points from that week:
Russell Wilson: 21.76
Matthew Stafford: 18.36
So it is not perfect, but in this case the calculation was successful.
Thanks for checking out my fantasy football predictive model. I hope this isn’t too confusing. Again, this is my first go of it, so as I get time, I will try to refine it and improve my craft.