Our new staff dynasty rankings released over the weekend, and if you’ve seen them, then you probably noticed that my contributions are, in places, radically different from those of Bryan and Chad. The root of many of those differences is my personal leaning toward perceived safety over potential longevity, and that is not idle philosophy. I based my rankings heavily on a framework that values players with a statistical model, and so much of the leg work is done before I’ve even considered my opinions. Here is how I got there.
Continued from Part 1.
6. Calculate expected auction prices for 2013
Based on the 2013 projections I created previously, I used the baseline player designations to find expected points above replacement for every player. I found the total of all expected points above replacement of every player in 2013 the same way I did for previous seasons in step 2.
Next, I calculated the price factor, which is the total budget of all teams in the league divided by the expected points above replacement of all players:
Price Factor = Teams * (BudgetPerTeam – (RosterSize * MinPrice)) / ExpPointsAboveReplacement
Price Factor = 10 * ($200 – (16 * $1)) / 6,959.50
Price Factor = 0.264
A player’s expected 2013 auction price (non-dynasty) is his expected points above replacement multiplied by the price factor.
7. Calculate dynasty prices
The previous steps have provided the three inputs needed to calculate dynasty prices with the net present value formula. They are the discount rate, the number of periods—which is the number of years until expected retirement—and the 2013 expected auction price.
If you are working in Excel, the PV formula will take those parameters (in that order) and spit out a price (which will be negative because it is representative of a cash outflow). However, if you are using a database script, there is no built-in functionality to calculate net present value. Even worse, MySQL, specifically, does not allow recursive functions (functions that call themselves), which a summation, such as the present value calculation, requires.
Here is the MySQL workaround I created. Copy this code into a .sql file and execute it, and it will create a NPV function that is analogous to the PV function in Excel:
DROP FUNCTION IF EXISTS NPV;
CREATE FUNCTION NPV (DiscRate decimal(10, 2), Periods int, Price decimal(10, 2)) RETURNS decimal(10, 2)
BEGIN
DECLARE i int DEFAULT 0;
DECLARE val decimal(10, 2) DEFAULT 0;
NPVLoop: LOOP
SET i = i + 1;
IF i > Periods THEN LEAVE NPVLoop; END IF;
SET val = val + NPVHelper(DiscRate, i, Price);
END LOOP NPVLoop;
RETURN val;
END;
DROP FUNCTION IF EXISTS NPVHelper;
CREATE FUNCTION NPVHelper (DiscRate decimal(10, 2), PeriodsAway int, Price decimal(10, 2)) RETURNS decimal(10, 2)
BEGIN
DECLARE num decimal(10, 2);
DECLARE den decimal(10, 2);
SET num = Price;
SET den = POWER(1.0 + DiscRate, PeriodsAway);
RETURN num / den;
END;
The second quirk of this process is that my valuation method is designed to calculate prices for players above the replacement level. However, for our rankings exercise, I am supposed to rank 40 quarterbacks and tight ends and 80 running backs and receivers, each more than the baseline cutoff.
Rather than change the size or setup of the league, which I feel would be a disservice to a majority of readers, I decided to calculate dynasty prices based on expected 2013 prices before I made the adjustment for the baseline player. Since every player listed is expected to score some points and is therefore worth some dollars based on the price factor, the net present value calculation will work for everyone. Then, when I subtract the baseline player, any player below replacement ends up with a negative price, which is an estimation of how much value you would be wasting by deploying that player over the best-available option on the waiver wire.
If you sort those dynasty prices from biggest to smallest, you end up a framework for dynasty rankings, which you can split by position (which we do in our dynasty rankings) or intermingle for overall rankings.
8. Rescale dynasty prices
This is superfluous for how we do our dynasty rankings, but in case you want to use this as a framework for a dynasty auction, you need to take one more step. I’ve recently come around on this as an appropriate method to create a pricing sheet. You need to rescale the generated prices so all players above replacement sum to the total budget.
To do so, multiply each dynasty price greater than $0 by a scale factor of the total league budget divided by the sum of all positive dynasty prices:
Scale Factor = Teams * (BudgetPerTeam – (RosterSize * MinPrice)) / NPVPricesAboveZero
Scale Factor = 10 * ($200 – (16 * $1)) / $3954.88
Scale Factor = 0.465
When you multiply the generated dynasty prices by the scale factor, you get a rescaled price that is relatively balanced against all other players and positions. You can use those as a pricing sheet in your dynasty auction.
Here are the results for quarterbacks:
Player | Pos | Exp2013Price | YTR | Category | DiscRate | Price | ScaledPrice |
Aaron Rodgers | QB | $97.33 | 10 | Star in prime | 0.384 | $68.09 | $32 |
Cam Newton | QB | $95.12 | 15 | Star in prime | 0.384 | $64.56 | $30 |
Robert Griffin III | QB | $94.85 | 16 | Star in prime | 0.384 | $64.00 | $30 |
Drew Brees | QB | $93.11 | 5 | Star in prime | 0.384 | $47.86 | $22 |
Matthew Stafford | QB | $81.07 | 14 | Potential star | 0.254 | $40.86 | $19 |
Tom Brady | QB | $91.56 | 3 | Star in prime | 0.384 | $34.53 | $16 |
Michael Vick | QB | $82.86 | 6 | Star in prime | 0.384 | $28.07 | $13 |
Andrew Luck | QB | $80.93 | 16 | Star in prime | 0.384 | $27.56 | $13 |
Matt Ryan | QB | $80.32 | 11 | Star in prime | 0.384 | $25.37 | $12 |
Tony Romo | QB | $80.23 | 6 | Star in prime | 0.384 | $22.16 | $10 |
Colin Kaepernick | QB | $76.88 | 14 | Star in prime | 0.384 | $16.90 | $8 |
Peyton Manning | QB | $82.59 | 2 | Star in prime | 0.384 | $15.26 | $7 |
Ben Roethlisberger | QB | $74.89 | 8 | Star in prime | 0.384 | $10.96 | $5 |
Russell Wilson | QB | $76.55 | 15 | Non-star | 0.584 | $10.61 | $5 |
Andy Dalton | QB | $71.22 | 14 | Potential star | 0.254 | $3.15 | $1 |
Jake Locker | QB | $70.39 | 14 | Potential star | 0.254 | $0.00 | $0 |
Philip Rivers | QB | $69.76 | 8 | Star in prime | 0.384 | -$1.54 | $0 |
Carson Palmer | QB | $69.25 | 6 | Non-star | 0.584 | -$1.84 | $0 |
Eli Manning | QB | $69.05 | 7 | Non-star | 0.584 | -$2.22 | $0 |
Josh Freeman | QB | $69.77 | 14 | Potential star | 0.254 | -$2.38 | $0 |
Joe Flacco | QB | $67.63 | 11 | Non-star | 0.584 | -$4.74 | $0 |
Matt Schaub | QB | $66.87 | 7 | Non-star | 0.584 | -$5.83 | $0 |
Jay Cutler | QB | $66.88 | 9 | Non-star | 0.584 | -$5.96 | $0 |
Nick Foles | QB | $66.79 | 15 | Non-star | 0.584 | -$6.20 | $0 |
Ryan Fitzpatrick | QB | $66.29 | 9 | Non-star | 0.584 | -$6.95 | $0 |
Matt Hasselbeck | QB | $63.04 | 2 | Non-star | 0.584 | -$7.59 | $0 |
Matt Cassel | QB | $65.46 | 8 | Non-star | 0.584 | -$8.28 | $0 |
Alex D. Smith | QB | $64.58 | 10 | Non-star | 0.584 | -$9.92 | $0 |
Chad Henne | QB | $64.45 | 11 | Non-star | 0.584 | -$10.19 | $0 |
Brady Quinn | QB | $57.33 | 11 | Non-star | 0.584 | -$22.40 | $0 |
Christian Ponder | QB | $61.49 | 14 | Potential star | 0.254 | -$34.09 | $0 |
Sam Bradford | QB | $60.02 | 14 | Potential star | 0.254 | -$39.69 | $0 |
Ryan Tannehill | QB | $59.48 | 14 | Potential star | 0.254 | -$41.77 | $0 |
Mark Sanchez | QB | $58.50 | 13 | Potential star | 0.254 | -$44.99 | $0 |
Blaine Gabbert | QB | $56.22 | 16 | Potential star | 0.254 | -$55.14 | $0 |
Brandon Weeden | QB | $53.57 | 10 | Potential star | 0.254 | -$60.12 | $0 |
Here are the results for running backs:
Player | Pos | Exp2013Price | YTR | Category | DiscRate | Price | ScaledPrice |
Arian Foster | RB | $88.33 | 6 | Star in prime | 0.368 | $108.32 | $50 |
Doug Martin | RB | $82.91 | 9 | Star in prime | 0.368 | $106.34 | $49 |
Ray Rice | RB | $82.33 | 7 | Star in prime | 0.368 | $99.13 | $46 |
Adrian L. Peterson | RB | $80.91 | 5 | Star in prime | 0.368 | $85.30 | $40 |
LeSean McCoy | RB | $75.08 | 8 | Star in prime | 0.368 | $84.43 | $39 |
Trent Richardson | RB | $69.68 | 10 | Star in prime | 0.368 | $73.92 | $34 |
Jamaal Charles | RB | $68.47 | 7 | Star in prime | 0.368 | $65.81 | $31 |
Matt Forte | RB | $65.79 | 6 | Star in prime | 0.368 | $56.63 | $26 |
Marshawn Lynch | RB | $64.33 | 6 | Star in prime | 0.368 | $53.30 | $25 |
Chris D. Johnson | RB | $61.85 | 6 | Star in prime | 0.368 | $47.62 | $22 |
Darren McFadden | RB | $58.46 | 7 | Star in prime | 0.368 | $41.74 | $19 |
Alfred Morris | RB | $68.23 | 9 | RORA | 0.668 | $40.12 | $19 |
Maurice Jones-Drew | RB | $59.75 | 5 | Star in prime | 0.368 | $39.96 | $19 |
Ahmad Bradshaw | RB | $58.44 | 6 | Star in prime | 0.368 | $39.79 | $19 |
Mikel Leshoure | RB | $54.68 | 10 | Star in prime | 0.368 | $35.15 | $16 |
Darren Sproles | RB | $61.37 | 3 | Star in prime | 0.368 | $33.48 | $16 |
Ryan Mathews | RB | $53.76 | 8 | Star in prime | 0.368 | $31.46 | $15 |
Frank Gore | RB | $59.15 | 3 | Star in prime | 0.368 | $29.82 | $14 |
Reggie Bush | RB | $54.62 | 5 | Star in prime | 0.368 | $28.98 | $13 |
Steven Jackson | RB | $57.82 | 3 | Star in prime | 0.368 | $27.62 | $13 |
C.J. Spiller | RB | $52.36 | 7 | Star in prime | 0.368 | $27.08 | $13 |
DeMarco Murray | RB | $51.37 | 8 | Star in prime | 0.368 | $25.53 | $12 |
Knowshon Moreno | RB | $47.24 | 7 | Star in prime | 0.368 | $14.77 | $7 |
Andre Brown | RB | $47.02 | 7 | Star in prime | 0.368 | $14.24 | $7 |
BenJarvus Green-Ellis | RB | $47.71 | 5 | Star in prime | 0.368 | $14.17 | $7 |
Michael Turner | RB | $54.27 | 2 | Star in decline | 0.848 | $10.99 | $5 |
Stevan Ridley | RB | $45.31 | 9 | Star in prime | 0.368 | $10.71 | $5 |
Shonn Greene | RB | $46.89 | 5 | Non-star | 0.498 | $10.08 | $5 |
Fred Jackson | RB | $54.88 | 1 | Star in prime | 0.368 | $10.07 | $5 |
Rashard Mendenhall | RB | $44.97 | 7 | Star in prime | 0.368 | $9.31 | $4 |
Pierre Thomas | RB | $43.30 | 5 | Star in prime | 0.368 | $4.73 | $2 |
Willis McGahee | RB | $45.73 | 2 | RORA | 0.668 | $4.44 | $2 |
Mike Tolbert | RB | $42.33 | 6 | Star in prime | 0.368 | $2.84 | $1 |
Joique Bell | RB | $42.26 | 6 | Non-star | 0.498 | $2.13 | $1 |
Michael Bush | RB | $42.03 | 4 | Non-star | 0.498 | $1.51 | $1 |
Jonathan Stewart | RB | $41.09 | 7 | Non-star | 0.498 | $0.00 | $0 |
DeAngelo Williams | RB | $40.22 | 3 | Star in decline | 0.848 | -$0.86 | $0 |
Peyton Hillis | RB | $40.22 | 6 | Non-star | 0.498 | -$1.58 | $0 |
Danny Woodhead | RB | $39.04 | 5 | Non-star | 0.498 | -$3.55 | $0 |
Kevin Smith | RB | $37.49 | 7 | Non-star | 0.498 | -$6.78 | $0 |
Felix Jones | RB | $39.63 | 7 | Potential star | 0.068 | -$7.87 | $0 |
Rashad Jennings | RB | $35.91 | 5 | Non-star | 0.498 | -$8.99 | $0 |
Ronnie Brown | RB | $29.04 | 2 | Star in decline | 0.848 | -$10.03 | $0 |
Chris Ivory | RB | $35.51 | 8 | Non-star | 0.498 | -$10.70 | $0 |
Marcel Reece | RB | $34.91 | 5 | Non-star | 0.498 | -$10.72 | $0 |
James Starks | RB | $35.07 | 6 | Non-star | 0.498 | -$10.97 | $0 |
Vick Ballard | RB | $34.81 | 10 | Non-star | 0.498 | -$12.31 | $0 |
Jonathan Dwyer | RB | $34.23 | 9 | Non-star | 0.498 | -$13.35 | $0 |
LeGarrette Blount | RB | $32.45 | 7 | Non-star | 0.498 | -$16.26 | $0 |
Curtis Brinkley | RB | $31.62 | 6 | Non-star | 0.498 | -$17.26 | $0 |
Jacquizz Rodgers | RB | $31.36 | 10 | Non-star | 0.498 | -$19.11 | $0 |
Beanie Wells | RB | $37.65 | 8 | Potential star | 0.068 | -$20.53 | $0 |
Mewelde Moore | RB | $21.63 | 2 | Non-star | 0.498 | -$21.62 | $0 |
Brandon Bolden | RB | $29.93 | 10 | Non-star | 0.498 | -$21.91 | $0 |
Dorin Dickerson | RB | $28.84 | 8 | Non-star | 0.498 | -$23.52 | $0 |
Jackie Battle | RB | $25.57 | 4 | Non-star | 0.498 | -$24.90 | $0 |
James Casey | RB | $26.56 | 5 | Non-star | 0.498 | -$25.22 | $0 |
Cedric Peerman | RB | $27.28 | 7 | Non-star | 0.498 | -$25.99 | $0 |
John Kuhn | RB | $22.60 | 3 | Non-star | 0.498 | -$26.01 | $0 |
Lance Dunbar | RB | $27.81 | 10 | Non-star | 0.498 | -$26.08 | $0 |
Anthony Allen | RB | $27.42 | 8 | Non-star | 0.498 | -$26.26 | $0 |
Tashard Choice | RB | $25.69 | 5 | Non-star | 0.498 | -$26.73 | $0 |
Lance Ball | RB | $25.52 | 5 | Non-star | 0.498 | -$27.04 | $0 |
Michael Robinson | RB | $21.76 | 3 | Non-star | 0.498 | -$27.19 | $0 |
Chris Ogbonnaya | RB | $26.17 | 6 | Non-star | 0.498 | -$27.21 | $0 |
Isaac Redman | RB | $25.29 | 5 | Non-star | 0.498 | -$27.43 | $0 |
Dion Lewis | RB | $27.12 | 11 | Non-star | 0.498 | -$27.61 | $0 |
Lex Hilliard | RB | $23.44 | 4 | Non-star | 0.498 | -$28.32 | $0 |
Leon Washington | RB | $15.58 | 2 | Non-star | 0.498 | -$28.34 | $0 |
Vonta Leach | RB | $15.54 | 2 | Non-star | 0.498 | -$28.38 | $0 |
Bryce Brown | RB | $26.18 | 11 | Non-star | 0.498 | -$29.47 | $0 |
Jason Snelling | RB | $22.62 | 4 | Non-star | 0.498 | -$29.64 | $0 |
LaRod Stephens-Howling | RB | $25.02 | 7 | Non-star | 0.498 | -$30.25 | $0 |
Lawrence Vickers | RB | $19.57 | 3 | Non-star | 0.498 | -$30.27 | $0 |
Darrel Young | RB | $24.52 | 7 | Non-star | 0.498 | -$31.19 | $0 |
Donald Brown | RB | $35.29 | 7 | Potential star | 0.068 | -$31.25 | $0 |
Shaun Draughn | RB | $24.51 | 8 | Non-star | 0.498 | -$31.86 | $0 |
Anthony Dixon | RB | $24.35 | 8 | Non-star | 0.498 | -$32.17 | $0 |
Justin Forsett | RB | $23.40 | 6 | Non-star | 0.498 | -$32.28 | $0 |
Le'Ron McClain | RB | $21.70 | 5 | Non-star | 0.498 | -$33.66 | $0 |
Baron Batch | RB | $23.46 | 8 | Non-star | 0.498 | -$33.86 | $0 |
Jed Collins | RB | $22.40 | 6 | Non-star | 0.498 | -$34.08 | $0 |
Brian Leonard | RB | $19.64 | 4 | Non-star | 0.498 | -$34.42 | $0 |
Daryl Richardson | RB | $23.22 | 10 | Non-star | 0.498 | -$35.10 | $0 |
Evan Royster | RB | $22.47 | 8 | Non-star | 0.498 | -$35.77 | $0 |
Armando Allen | RB | $22.17 | 9 | Non-star | 0.498 | -$36.83 | $0 |
Bruce Miller | RB | $19.93 | 7 | Non-star | 0.498 | -$39.81 | $0 |
Darius Reynaud | RB | $19.48 | 7 | Non-star | 0.498 | -$40.67 | $0 |
Danny Ware | RB | $17.51 | 5 | Non-star | 0.498 | -$40.94 | $0 |
Quinn Johnson | RB | $18.88 | 7 | Non-star | 0.498 | -$41.80 | $0 |
Henry Hynoski | RB | $19.22 | 9 | Non-star | 0.498 | -$42.59 | $0 |
Chris Rainey | RB | $15.82 | 8 | Non-star | 0.498 | -$48.54 | $0 |
Mike Goodson | RB | $31.54 | 7 | Potential star | 0.068 | -$51.46 | $0 |
Alex Green | RB | $32.01 | 8 | Potential star | 0.068 | -$54.22 | $0 |
Daniel Thomas | RB | $31.57 | 8 | Potential star | 0.068 | -$56.85 | $0 |
Ben Tate | RB | $30.94 | 8 | Potential star | 0.068 | -$60.60 | $0 |
Bilal Powell | RB | $30.77 | 9 | Potential star | 0.068 | -$67.23 | $0 |
Shane Vereen | RB | $30.73 | 9 | Potential star | 0.068 | -$67.48 | $0 |
Mark Ingram | RB | $30.86 | 10 | Potential star | 0.068 | -$71.85 | $0 |
Montario Hardesty | RB | $26.57 | 7 | Potential star | 0.068 | -$78.27 | $0 |
Kendall Hunter | RB | $28.33 | 9 | Potential star | 0.068 | -$83.11 | $0 |
Delone Carter | RB | $25.65 | 7 | Potential star | 0.068 | -$83.23 | $0 |
Jamie Harper | RB | $28.19 | 10 | Potential star | 0.068 | -$90.58 | $0 |
Toby Gerhart | RB | $23.65 | 7 | Potential star | 0.068 | -$94.00 | $0 |
Rhett Ellison | RB | $26.58 | 9 | Potential star | 0.068 | -$94.52 | $0 |
Lamar Miller | RB | $27.33 | 11 | Potential star | 0.068 | -$103.20 | $0 |
David Wilson | RB | $24.03 | 11 | Potential star | 0.068 | -$127.93 | $0 |
Joe McKnight | RB | $18.66 | 8 | Potential star | 0.068 | -$133.94 | $0 |
Robert Turbin | RB | $21.49 | 10 | Potential star | 0.068 | -$137.65 | $0 |
Isaiah Pead | RB | $21.34 | 10 | Potential star | 0.068 | -$138.70 | $0 |
Bernard Pierce | RB | $21.10 | 11 | Potential star | 0.068 | -$149.89 | $0 |
Ronnie Hillman | RB | $19.26 | 12 | Potential star | 0.068 | -$173.40 | $0 |
Continued in Part 3.
—
Scott Spratt also works for Baseball Info Solutions and writes for The Hardball Times. Feel free to ask him questions on Twitter – @PFF_ScottSpratt
Find more of our Dynasty Content here.