Series Previews:
*All Vegas numbers from Bovada
Potential future areas of improvements:
1) Determine a more systematic method for estimating minutes, potentially involving a combination of regular season averages, past playoff minutes/minutes increases, and minutes during the regular season series.
2) Research home court advantage. The four points adjustment is currently based on a quick google search, and could be inaccurate. Furthermore, home court advantage could affect matchups differently, depending on the relative team strengths. Using a constant point differential adjustment means that closely matched teams are affected significantly more in terms of win percentage, and using a constant win percentage adjustment means that closely matched teams are affected significantly less in terms of point differential. The most accurate adjustment could be something in between.
3) Use an actual estimate for number of possessions that would likely involve the average possessions per game for each team. Obviously, the prediction should be somewhere in between the two teams' averages, but slower teams could affect pace more than faster teams or vice versa. This is similar to the idea that batter/pitcher pace might not just be an arithmetic mean of each member's averages.
4) Examine the dependency of individual games of a series. Conceptually, injuries/adjustments during one game should affect the subsequent games in the series.
5) Backtest how the model would have done in predicting prior playoffs. This would likely require xRAPM numbers for regular seasons only (which might not exist if Jeremias Engelmann updates previous season numbers to include the playoffs). Furthermore, a non-subjective minutes estimate would also be needed first, as any subjective estimate would be influenced by hindsight.
6) Attempt a similar endeavor for estimating regular season win% prior to the season that uses Monte Carlo simulations for each team's entire schedule.
List of minutes estimates and xRAPM ratings:
Show/Hide
Spurs:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
Boris Diaw | 22 | 0.55 | 1.45 | 2.00 | 0.25 | 0.66 | 0.92 |
Cory Joseph | 5 | -0.83 | -3.38 | -4.21 | -0.09 | -0.35 | -0.44 |
Danny Green | 25 | 0.68 | 2.61 | 3.29 | 0.35 | 1.36 | 1.71 |
Kawhi Leonard | 38 | 0.58 | 1.84 | 2.42 | 0.46 | 1.46 | 1.92 |
Manu Ginobili | 30 | 4.66 | -0.11 | 4.55 | 2.91 | -0.07 | 2.84 |
Marco Belinelli | 15 | 1.03 | -2.94 | -1.91 | 0.32 | -0.92 | -0.60 |
Matt Bonner | 5 | 2.05 | 0.37 | 2.42 | 0.21 | 0.04 | 0.25 |
Patty Mills | 10 | 2.70 | 0.50 | 3.20 | 0.56 | 0.10 | 0.67 |
Tiago Splitter | 20 | -0.92 | 4.59 | 3.67 | -0.38 | 1.91 | 1.53 |
Tim Duncan | 35 | -0.10 | 5.37 | 5.27 | -0.07 | 3.92 | 3.84 |
Tony Parker | 35 | 3.16 | -0.07 | 3.09 | 2.30 | -0.05 | 2.25 |
Mavericks:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
Brandan Wright | 22 | 1.74 | -0.48 | 1.26 | 0.80 | -0.22 | 0.58 |
DeJuan Blair | 5 | -2.21 | 0.11 | -2.10 | -0.23 | 0.01 | -0.22 |
Devin Harris | 30 | 1.92 | -0.38 | 1.54 | 1.20 | -0.24 | 0.96 |
Dirk Nowitzki | 38 | 4.48 | 2.01 | 6.49 | 3.55 | 1.59 | 5.14 |
Jae Crowder | 10 | -0.05 | 1.75 | 1.70 | -0.01 | 0.36 | 0.35 |
Jose Calderon | 18 | 1.43 | -3.67 | -2.24 | 0.54 | -1.38 | -0.84 |
Monta Ellis | 42 | 3.10 | -1.34 | 1.76 | 2.71 | -1.17 | 1.54 |
Samuel Dalembert | 15 | -3.51 | 3.08 | -0.43 | -1.10 | 0.96 | -0.13 |
Shawn Marion | 30 | -1.79 | 0.68 | -1.11 | -1.12 | 0.43 | -0.69 |
Vince Carter | 30 | 1.98 | 2.04 | 4.02 | 1.24 | 1.28 | 2.51 |
Thunder:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
Caron Butler | 18 | -0.75 | -3.61 | -4.36 | -0.28 | -1.35 | -1.64 |
Derek Fisher | 22 | -1.14 | 2.00 | 0.86 | -0.52 | 0.92 | 0.39 |
Jeremy Lamb | 5 | -0.49 | -0.79 | -1.28 | -0.05 | -0.08 | -0.13 |
Kendrick Perkins | 20 | -7.12 | 2.73 | -4.39 | -2.97 | 1.14 | -1.83 |
Kevin Durant | 45 | 6.36 | 0.17 | 6.53 | 5.96 | 0.16 | 6.12 |
Nick Collison | 18 | 2.75 | 3.40 | 6.15 | 1.03 | 1.28 | 2.31 |
Reggie Jackson | 20 | 0.81 | 0.50 | 1.31 | 0.34 | 0.21 | 0.55 |
Russell Westbrook | 35 | 4.30 | 0.19 | 4.49 | 3.14 | 0.14 | 3.27 |
Serge Ibaka | 32 | 0.88 | 3.03 | 3.91 | 0.59 | 2.02 | 2.61 |
Steven Adams | 10 | -2.68 | -0.93 | -3.61 | -0.56 | -0.19 | -0.75 |
Thabo Sefolosha | 15 | -1.14 | 2.29 | 1.15 | -0.36 | 0.72 | 0.36 |
Grizzlies:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
Beno Udrih | 5 | 0.38 | -1.61 | -1.23 | 0.04 | -0.17 | -0.13 |
Courtney Lee | 25 | 0.42 | -0.52 | -0.10 | 0.22 | -0.27 | -0.05 |
James Johnson | 10 | -1.94 | 0.55 | -1.39 | -0.40 | 0.11 | -0.29 |
Kosta Koufos | 10 | -1.75 | 2.63 | 0.88 | -0.36 | 0.55 | 0.18 |
Marc Gasol | 40 | -1.53 | 5.39 | 3.86 | -1.28 | 4.49 | 3.22 |
Mike Conley | 42 | 4.43 | 0.45 | 4.88 | 3.88 | 0.39 | 4.27 |
Mike Miller | 20 | 1.84 | -3.10 | -1.26 | 0.77 | -1.29 | -0.53 |
Tayshaun Prince | 23 | -1.51 | 0.21 | -1.30 | -0.72 | 0.10 | -0.62 |
Tony Allen | 25 | -0.64 | 2.91 | 2.27 | -0.33 | 1.52 | 1.18 |
Zach Randolph | 40 | 1.45 | 0.74 | 2.19 | 1.21 | 0.62 | 1.83 |
Clippers:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
Blake Griffin | 42 | 2.58 | 1.88 | 4.46 | 2.26 | 1.65 | 3.90 |
Chris Paul | 40 | 5.44 | 1.84 | 7.28 | 4.53 | 1.53 | 6.07 |
Danny Granger | 5 | 0.30 | 0.70 | 1.00 | 0.03 | 0.07 | 0.10 |
Darren Collison | 15 | 1.48 | -3.00 | -1.52 | 0.46 | -0.94 | -0.48 |
DeAndre Jordan | 36 | 0.68 | 3.60 | 4.28 | 0.51 | 2.70 | 3.21 |
Glen Davis | 10 | -3.08 | 2.00 | -1.08 | -0.64 | 0.42 | -0.23 |
Hedo Turkoglu | 5 | -0.96 | 0.24 | -0.72 | -0.10 | 0.03 | -0.08 |
J.J. Redick | 22 | 2.98 | -2.96 | 0.02 | 1.37 | -1.36 | 0.01 |
Jamal Crawford | 25 | 1.55 | -2.31 | -0.76 | 0.81 | -1.20 | -0.40 |
Jared Dudley | 10 | -0.76 | 0.24 | -0.52 | -0.16 | 0.05 | -0.11 |
Matt Barnes | 30 | 2.14 | 0.58 | 2.72 | 1.34 | 0.36 | 1.70 |
Warriors:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
Andre Iguodala | 36 | 1.94 | 5.01 | 6.95 | 1.46 | 3.76 | 5.21 |
David Lee | 35 | -0.12 | 1.17 | 1.05 | -0.09 | 0.85 | 0.77 |
Draymond Green | 27 | -0.89 | 3.98 | 3.09 | -0.50 | 2.24 | 1.74 |
Harrison Barnes | 20 | -2.73 | -0.28 | -3.01 | -1.14 | -0.12 | -1.25 |
Jermaine O'Neal | 20 | -3.47 | 2.44 | -1.03 | -1.45 | 1.02 | -0.43 |
Jordan Crawford | 3 | -0.29 | -2.48 | -2.77 | -0.02 | -0.16 | -0.17 |
Klay Thompson | 40 | 2.61 | -0.03 | 2.58 | 2.18 | -0.03 | 2.15 |
Marreese Speights | 8 | -5.00 | -0.65 | -5.65 | -0.83 | -0.11 | -0.94 |
Stephen Curry | 42 | 6.41 | -0.38 | 6.03 | 5.61 | -0.33 | 5.28 |
Steve Blake | 9 | -1.23 | -0.16 | -1.39 | -0.23 | -0.03 | -0.26 |
Rockets:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
Chandler Parsons | 40 | 1.35 | 0.58 | 1.93 | 1.13 | 0.48 | 1.61 |
Donatas Motiejunas | 10 | -1.35 | 0.46 | -0.89 | -0.28 | 0.10 | -0.19 |
Dwight Howard | 36 | -0.72 | 5.14 | 4.42 | -0.54 | 3.86 | 3.32 |
Francisco Garcia | 10 | -2.50 | 0.44 | -2.06 | -0.52 | 0.09 | -0.43 |
James Harden | 40 | 5.90 | -2.73 | 3.17 | 4.92 | -2.28 | 2.64 |
Jeremy Lin | 22 | 0.04 | 0.19 | 0.23 | 0.02 | 0.09 | 0.11 |
Jordan Hamilton | 5 | -1.79 | -1.21 | -3.00 | -0.19 | -0.13 | -0.31 |
Omer Asik | 11 | -2.34 | 4.99 | 2.65 | -0.54 | 1.14 | 0.61 |
Omri Casspi | 15 | -2.61 | 0.25 | -2.36 | -0.82 | 0.08 | -0.74 |
Patrick Beverley | 35 | 3.21 | 1.54 | 4.75 | 2.34 | 1.12 | 3.46 |
Terrence Jones | 16 | 0.42 | -2.07 | -1.65 | 0.14 | -0.69 | -0.55 |
Blazers:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
C.J. McCollum | 5 | 0.03 | -0.66 | -0.63 | 0.00 | -0.07 | -0.07 |
Damian Lillard | 40 | 4.31 | -2.03 | 2.28 | 3.59 | -1.69 | 1.90 |
Dorell Wright | 10 | -0.86 | -0.94 | -1.80 | -0.18 | -0.20 | -0.38 |
LaMarcus Aldridge | 40 | 1.73 | 3.17 | 4.90 | 1.44 | 2.64 | 4.08 |
Meyers Leonard | 5 | -4.22 | -0.98 | -5.20 | -0.44 | -0.10 | -0.54 |
Mo Williams | 25 | 0.28 | -2.66 | -2.38 | 0.15 | -1.39 | -1.24 |
Nicolas Batum | 40 | 1.47 | -1.19 | 0.28 | 1.23 | -0.99 | 0.23 |
Robin Lopez | 35 | -0.29 | 3.38 | 3.09 | -0.21 | 2.46 | 2.25 |
Thomas Robinson | 2 | -2.37 | -2.03 | -4.40 | -0.10 | -0.08 | -0.18 |
Wesley Matthews | 38 | 1.54 | -0.89 | 0.65 | 1.22 | -0.70 | 0.51 |
Pacers:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
C.J. Watson | 20 | 0.39 | -0.40 | -0.01 | 0.16 | -0.17 | 0.00 |
David West | 35 | 0.98 | 2.33 | 3.31 | 0.71 | 1.70 | 2.41 |
Evan Turner | 16 | -1.14 | -1.12 | -2.26 | -0.38 | -0.37 | -0.75 |
George Hill | 35 | 2.00 | 0.60 | 2.60 | 1.46 | 0.44 | 1.90 |
Ian Mahinmi | 18 | -4.85 | 4.05 | -0.80 | -1.82 | 1.52 | -0.30 |
Lance Stephenson | 36 | 0.79 | -0.04 | 0.75 | 0.59 | -0.03 | 0.56 |
Luis Scola | 12 | -3.27 | 0.76 | -2.51 | -0.82 | 0.19 | -0.63 |
Paul George | 40 | 0.03 | 2.49 | 2.52 | 0.03 | 2.08 | 2.10 |
Roy Hibbert | 28 | -0.94 | 3.68 | 2.74 | -0.55 | 2.15 | 1.60 |
Hawks:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
Cartier Martin | 7 | -2.33 | -0.52 | -2.85 | -0.34 | -0.08 | -0.42 |
DeMarre Carroll | 38 | 1.37 | 1.96 | 3.33 | 1.08 | 1.55 | 2.64 |
Elton Brand | 12 | -2.82 | 1.92 | -0.90 | -0.71 | 0.48 | -0.23 |
Jeff Teague | 35 | 0.08 | -0.79 | -0.71 | 0.06 | -0.58 | -0.52 |
Kyle Korver | 36 | 2.46 | 0.50 | 2.96 | 1.85 | 0.38 | 2.22 |
Louis Williams | 18 | 1.75 | -3.72 | -1.97 | 0.66 | -1.40 | -0.74 |
Mike Muscala | 6 | -3.27 | -1.35 | -4.62 | -0.41 | -0.17 | -0.58 |
Mike Scott | 15 | -2.00 | -2.65 | -4.65 | -0.63 | -0.83 | -1.45 |
Paul Millsap | 40 | 0.20 | 2.00 | 2.20 | 0.17 | 1.67 | 1.83 |
Pero Antic | 20 | -1.21 | 1.70 | 0.49 | -0.50 | 0.71 | 0.20 |
Shelvin Mack | 13 | 0.51 | -1.16 | -0.65 | 0.14 | -0.31 | -0.18 |
Heat:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
Chris Andersen | 18 | 0.42 | 3.99 | 4.41 | 0.16 | 1.50 | 1.65 |
Chris Bosh | 38 | 0.29 | 3.70 | 3.99 | 0.23 | 2.93 | 3.16 |
Dwyane Wade | 32 | 1.23 | 0.87 | 2.10 | 0.82 | 0.58 | 1.40 |
LeBron James | 40 | 8.72 | -0.16 | 8.56 | 7.27 | -0.13 | 7.13 |
Mario Chalmers | 35 | 0.54 | 1.03 | 1.57 | 0.39 | 0.75 | 1.14 |
Michael Beasley | 2 | -2.94 | -2.89 | -5.83 | -0.12 | -0.12 | -0.24 |
Norris Cole | 12 | -1.60 | -1.87 | -3.47 | -0.40 | -0.47 | -0.87 |
Rashard Lewis | 8 | -2.34 | -0.72 | -3.06 | -0.39 | -0.12 | -0.51 |
Ray Allen | 20 | 2.03 | -2.77 | -0.74 | 0.85 | -1.15 | -0.31 |
Shane Battier | 17 | -0.29 | 1.36 | 1.07 | -0.10 | 0.48 | 0.38 |
Toney Douglas | 6 | 0.25 | -1.62 | -1.37 | 0.03 | -0.20 | -0.17 |
Udonis Haslem | 12 | -4.21 | 1.60 | -2.61 | -1.05 | 0.40 | -0.65 |
Bobcats:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
Al Jefferson | 38 | 1.15 | 1.00 | 2.15 | 0.91 | 0.79 | 1.70 |
Anthony Tolliver | 22 | -0.16 | 2.29 | 2.13 | -0.07 | 1.05 | 0.98 |
Bismack Biyombo | 5 | -3.82 | -0.29 | -4.11 | -0.40 | -0.03 | -0.43 |
Chris Douglas-Roberts | 13 | -0.77 | 0.20 | -0.57 | -0.21 | 0.05 | -0.15 |
Cody Zeller | 10 | -2.95 | 1.09 | -1.86 | -0.61 | 0.23 | -0.39 |
Gary Neal | 17 | 0.64 | -4.65 | -4.01 | 0.23 | -1.65 | -1.42 |
Gerald Henderson | 35 | -1.54 | -0.89 | -2.43 | -1.12 | -0.65 | -1.77 |
Josh McRoberts | 32 | -0.17 | 0.46 | 0.29 | -0.11 | 0.31 | 0.19 |
Kemba Walker | 38 | 0.76 | 0.86 | 1.62 | 0.60 | 0.68 | 1.28 |
Luke Ridnour | 5 | -1.24 | -2.73 | -3.97 | -0.13 | -0.28 | -0.41 |
Michael Kidd-Gilchrist | 25 | -0.77 | 1.84 | 1.07 | -0.40 | 0.96 | 0.56 |
Raptors:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
Amir Johnson | 27 | 1.75 | 3.42 | 5.17 | 0.98 | 1.92 | 2.91 |
Chuck Hayes | 5 | -1.71 | 2.26 | 0.55 | -0.18 | 0.24 | 0.06 |
DeMar DeRozan | 40 | 0.39 | -0.48 | -0.09 | 0.33 | -0.40 | -0.08 |
Greivis Vasquez | 18 | 1.31 | -0.82 | 0.49 | 0.49 | -0.31 | 0.18 |
John Salmons | 15 | -1.45 | 0.07 | -1.38 | -0.45 | 0.02 | -0.43 |
Jonas Valanciunas | 25 | -2.00 | -0.11 | -2.11 | -1.04 | -0.06 | -1.10 |
Kyle Lowry | 38 | 3.76 | 0.05 | 3.81 | 2.98 | 0.04 | 3.02 |
Nando de Colo | 5 | -1.69 | -1.36 | -3.05 | -0.18 | -0.14 | -0.32 |
Patrick Patterson | 20 | 0.31 | 0.90 | 1.21 | 0.13 | 0.38 | 0.50 |
Steve Novak | 5 | 2.07 | -0.44 | 1.63 | 0.22 | -0.05 | 0.17 |
Terrence Ross | 30 | 0.75 | -2.09 | -1.34 | 0.47 | -1.31 | -0.84 |
Tyler Hansbrough | 12 | -2.97 | -0.04 | -3.01 | -0.74 | -0.01 | -0.75 |
Nets:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
Alan Anderson | 7 | -0.88 | -1.64 | -2.52 | -0.13 | -0.24 | -0.37 |
Andray Blatche | 5 | -0.54 | -0.04 | -0.58 | -0.06 | 0.00 | -0.06 |
Andrei Kirilenko | 25 | -0.72 | 1.16 | 0.44 | -0.38 | 0.60 | 0.23 |
Deron Williams | 35 | 4.69 | -1.86 | 2.83 | 3.42 | -1.36 | 2.06 |
Joe Johnson | 38 | 3.39 | -1.08 | 2.31 | 2.68 | -0.86 | 1.83 |
Jorge Gutierrez | 2 | -2.11 | -1.27 | -3.38 | -0.09 | -0.05 | -0.14 |
Kevin Garnett | 25 | -2.86 | 6.57 | 3.71 | -1.49 | 3.42 | 1.93 |
Marcus Thornton | 15 | -0.12 | -1.96 | -2.08 | -0.04 | -0.61 | -0.65 |
Mason Plumlee | 18 | -0.90 | -1.34 | -2.24 | -0.34 | -0.50 | -0.84 |
Mirza Teletovic | 15 | -0.28 | -2.16 | -2.44 | -0.09 | -0.68 | -0.76 |
Paul Pierce | 30 | -0.62 | 3.14 | 2.52 | -0.39 | 1.96 | 1.58 |
Shaun Livingston | 25 | -0.18 | 0.27 | 0.09 | -0.09 | 0.14 | 0.05 |
Bulls:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
Carlos Boozer | 25 | -4.09 | -0.04 | -4.13 | -2.13 | -0.02 | -2.15 |
D.J. Augustin | 28 | -0.06 | -4.02 | -4.08 | -0.04 | -2.35 | -2.38 |
Jimmy Butler | 40 | 0.93 | 1.37 | 2.30 | 0.78 | 1.14 | 1.92 |
Joakim Noah | 42 | 0.68 | 3.88 | 4.56 | 0.60 | 3.40 | 3.99 |
Kirk Hinrich | 30 | -1.58 | 1.31 | -0.27 | -0.99 | 0.82 | -0.17 |
Mike Dunleavy | 35 | 1.42 | 2.07 | 3.49 | 1.04 | 1.51 | 2.54 |
Nazr Mohammed | 5 | -4.95 | 1.64 | -3.31 | -0.52 | 0.17 | -0.34 |
Taj Gibson | 32 | 0.43 | 3.57 | 4.00 | 0.29 | 2.38 | 2.67 |
Tony Snell | 3 | -3.95 | -1.66 | -5.61 | -0.25 | -0.10 | -0.35 |
Wizards:
player | minutes | orpm | drpm | rpm | onet | dnet | net |
Al Harrington | 6 | -0.29 | 0.22 | -0.07 | -0.04 | 0.03 | -0.01 |
Andre Miller | 10 | 1.80 | 0.12 | 1.92 | 0.38 | 0.03 | 0.40 |
Bradley Beal | 37 | -0.86 | -0.08 | -0.94 | -0.66 | -0.06 | -0.72 |
Drew Gooden | 8 | -0.97 | -2.19 | -3.16 | -0.16 | -0.37 | -0.53 |
John Wall | 42 | 2.54 | -0.46 | 2.08 | 2.22 | -0.40 | 1.82 |
Marcin Gortat | 36 | -0.16 | 3.85 | 3.69 | -0.12 | 2.89 | 2.77 |
Martell Webster | 20 | 2.19 | -2.87 | -0.68 | 0.91 | -1.20 | -0.28 |
Nene Hilario | 28 | -1.65 | 4.39 | 2.74 | -0.96 | 2.56 | 1.60 |
Trevor Ariza | 37 | -0.26 | 0.94 | 0.68 | -0.20 | 0.72 | 0.52 |
Trevor Booker | 16 | -0.12 | -2.77 | -2.89 | -0.04 | -0.92 | -0.96 |
R Script:
Show/Hide
library(XML)
library(RCurl)
v.pages <- 1:11 #change if increase in number of pages on http://espn.go.com/nba/statistics/rpm/_/page/1/sort/RPM
v.column.names <- c("player","team","orpm","drpm","rpm")
v.teams.home <- c("sas","okc","lac","hou","ind","mia","tor","chi")
v.teams.away <- c("dal","mem","gsw","por","atl","cha","bkn","was")
v.teams <- c("sas","dal","okc","mem","lac","gsw","hou","por","ind","atl","mia","cha","tor","bkn","chi","was")
hca <- 4 #difference between neutral court and home court; this is total hca adjustment, not the adjustment for each team
avg_eff <- 104 #average league points per 100 possessions
df.rpm <- data.frame(player=character(0),team=character(0),orpm=numeric(0),drpm=numeric(0),rpm=numeric(0))
for(page in v.pages)
{
v.url.rpm <- paste("http://espn.go.com/nba/statistics/rpm/_/page/",page,"/sort/RPM",sep="")
table <- readHTMLTable(v.url.rpm)[[1]]
table <- table[as.character((table[,2]))!="NAME",]
table2 <- cbind(as.data.frame(matrix(unlist(strsplit(as.character(table[,2]),", ")),ncol=2,byrow=TRUE),stringsAsFactors=FALSE)[,1], as.data.frame(matrix(unlist(table[,3]),ncol=1,byrow=TRUE),stringsAsFactors=FALSE), as.data.frame(matrix(unlist(table[,6]),ncol=1,byrow=TRUE),stringsAsFactors=FALSE),as.data.frame(matrix(unlist(table[,7]),ncol=1,byrow=TRUE),stringsAsFactors=FALSE),as.data.frame(matrix(unlist(table[,8]),ncol=1,byrow=TRUE),stringsAsFactors=FALSE))
table2[,3] <- as.numeric(table2[,3])
table2[,4] <- as.numeric(table2[,4])
table2[,5] <- as.numeric(table2[,5])
colnames(table2) <- v.column.names
df.rpm <- rbind(df.rpm,table2)
}
#minutes distributions and individual xrapm:
df.sas.r1 <- data.frame(player=c("Tony Parker","Tim Duncan","Kawhi Leonard","Marco Belinelli","Boris Diaw","Danny Green","Manu Ginobili","Tiago Splitter","Patty Mills","Cory Joseph","Matt Bonner"),minutes=c(35,35,38,15,22,25,30,20,10,5,5))
df.sas.r1 <- merge(df.sas.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.dal.r1 <- data.frame(player=c("Monta Ellis","Dirk Nowitzki","Shawn Marion","Jose Calderon","Vince Carter","Devin Harris","Samuel Dalembert","Brandan Wright","Jae Crowder","DeJuan Blair"),minutes=c(42,38,30,18,30,30,15,22,10,5))
df.dal.r1 <- merge(df.dal.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.okc.r1 <- data.frame(player=c("Kevin Durant","Serge Ibaka","Russell Westbrook","Reggie Jackson","Caron Butler","Thabo Sefolosha","Jeremy Lamb","Kendrick Perkins","Derek Fisher","Nick Collison","Steven Adams"),minutes=c(45,32,35,20,18,15,5,20,22,18,10))
df.okc.r1 <- merge(df.okc.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.mem.r1 <- data.frame(player=c("Zach Randolph","Mike Conley","Marc Gasol","Courtney Lee","Tayshaun Prince","Tony Allen","Mike Miller","James Johnson","Kosta Koufos","Beno Udrih"),minutes=c(40,42,40,25,23,25,20,10,10,5))
df.mem.r1 <- merge(df.mem.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.lac.r1 <- data.frame(player=c("Blake Griffin","DeAndre Jordan","Chris Paul","Jamal Crawford","J.J. Redick","Matt Barnes","Darren Collison","Jared Dudley","Danny Granger","Glen Davis","Hedo Turkoglu"),minutes=c(42,36,40,25,22,30,15,10,5,10,5))
df.lac.r1 <- merge(df.lac.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.gsw.r1 <- data.frame(player=c("Stephen Curry","Klay Thompson","David Lee","Andre Iguodala","Harrison Barnes","Draymond Green","Steve Blake","Jermaine O'Neal","Marreese Speights","Jordan Crawford"),minutes=c(42,40,35,36,20,27,9,20,8,3))
df.gsw.r1 <- merge(df.gsw.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.hou.r1 <- data.frame(player=c("James Harden","Chandler Parsons","Dwight Howard","Patrick Beverley","Jeremy Lin","Terrence Jones","Omer Asik","Francisco Garcia","Omri Casspi","Donatas Motiejunas","Jordan Hamilton"),minutes=c(40,40,36,35,22,16,11,10,15,10,5))
df.hou.r1 <- merge(df.hou.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.por.r1 <- data.frame(player=c("LaMarcus Aldridge","Nicolas Batum","Damian Lillard","Wesley Matthews","Robin Lopez","Mo Williams","Dorell Wright","C.J. McCollum","Thomas Robinson","Meyers Leonard"),minutes=c(40,40,40,38,35,25,10,5,2,5))
df.por.r1 <- merge(df.por.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.ind.r1 <- data.frame(player=c("Paul George","Lance Stephenson","George Hill","David West","Roy Hibbert","Evan Turner","C.J. Watson","Luis Scola","Ian Mahinmi"),minutes=c(40,36,35,35,28,16,20,12,18))
df.ind.r1 <- merge(df.ind.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.atl.r1 <- data.frame(player=c("Kyle Korver","Paul Millsap","Jeff Teague","DeMarre Carroll","Louis Williams","Shelvin Mack","Elton Brand","Pero Antic","Mike Scott","Cartier Martin","Mike Muscala"),minutes=c(36,40,35,38,18,13,12,20,15,7,6))
df.atl.r1 <- merge(df.atl.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.mia.r1 <- data.frame(player=c("LeBron James","Dwyane Wade","Chris Bosh","Mario Chalmers","Ray Allen","Norris Cole","Shane Battier","Chris Andersen","Rashard Lewis","Toney Douglas","Michael Beasley","Udonis Haslem"),minutes=c(40,32,38,35,20,12,17,18,8,6,2,12))
df.mia.r1 <- merge(df.mia.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.cha.r1 <- data.frame(player=c("Kemba Walker","Al Jefferson","Gerald Henderson","Josh McRoberts","Michael Kidd-Gilchrist","Gary Neal","Chris Douglas-Roberts","Anthony Tolliver","Cody Zeller","Luke Ridnour","Bismack Biyombo"),minutes=c(38,38,35,32,25,17,13,22,10,5,5))
df.cha.r1 <- merge(df.cha.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.tor.r1 <- data.frame(player=c("DeMar DeRozan","Kyle Lowry","Amir Johnson","Jonas Valanciunas","Terrence Ross","Patrick Patterson","Greivis Vasquez","John Salmons","Tyler Hansbrough","Chuck Hayes","Nando de Colo", "Steve Novak"),minutes=c(40,38,27,25,30,20,18,15,12,5,5,5))
df.tor.r1 <- merge(df.tor.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.bkn.r1 <- data.frame(player=c("Joe Johnson","Deron Williams","Paul Pierce","Shaun Livingston","Marcus Thornton","Alan Anderson","Andray Blatche","Kevin Garnett","Mirza Teletovic","Andrei Kirilenko","Mason Plumlee","Jorge Gutierrez"),minutes=c(38,35,30,25,15,7,5,25,15,25,18,2))
df.bkn.r1 <- merge(df.bkn.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.chi.r1 <- data.frame(player=c("Jimmy Butler","Joakim Noah","Mike Dunleavy","D.J. Augustin","Kirk Hinrich","Taj Gibson","Carlos Boozer","Tony Snell","Nazr Mohammed"),minutes=c(40,42,35,28,30,32,25,3,5))
df.chi.r1 <- merge(df.chi.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.was.r1 <- data.frame(player=c("John Wall","Trevor Ariza","Bradley Beal","Marcin Gortat","Nene Hilario","Martell Webster","Trevor Booker","Drew Gooden","Al Harrington","Andre Miller"),minutes=c(42,37,37,36,28,20,16,8,6,10))
df.was.r1 <- merge(df.was.r1, df.rpm[,c(1,3,4,5)], by="player", all.x=TRUE)
df.sas.r1$onet <- df.sas.r1$minutes * df.sas.r1$orpm / 48
df.dal.r1$onet <- df.dal.r1$minutes * df.dal.r1$orpm / 48
df.okc.r1$onet <- df.okc.r1$minutes * df.okc.r1$orpm / 48
df.mem.r1$onet <- df.mem.r1$minutes * df.mem.r1$orpm / 48
df.lac.r1$onet <- df.lac.r1$minutes * df.lac.r1$orpm / 48
df.gsw.r1$onet <- df.gsw.r1$minutes * df.gsw.r1$orpm / 48
df.hou.r1$onet <- df.hou.r1$minutes * df.hou.r1$orpm / 48
df.por.r1$onet <- df.por.r1$minutes * df.por.r1$orpm / 48
df.ind.r1$onet <- df.ind.r1$minutes * df.ind.r1$orpm / 48
df.atl.r1$onet <- df.atl.r1$minutes * df.atl.r1$orpm / 48
df.mia.r1$onet <- df.mia.r1$minutes * df.mia.r1$orpm / 48
df.cha.r1$onet <- df.cha.r1$minutes * df.cha.r1$orpm / 48
df.tor.r1$onet <- df.tor.r1$minutes * df.tor.r1$orpm / 48
df.bkn.r1$onet <- df.bkn.r1$minutes * df.bkn.r1$orpm / 48
df.chi.r1$onet <- df.chi.r1$minutes * df.chi.r1$orpm / 48
df.was.r1$onet <- df.was.r1$minutes * df.was.r1$orpm / 48
df.sas.r1$dnet <- df.sas.r1$minutes * df.sas.r1$drpm / 48
df.dal.r1$dnet <- df.dal.r1$minutes * df.dal.r1$drpm / 48
df.okc.r1$dnet <- df.okc.r1$minutes * df.okc.r1$drpm / 48
df.mem.r1$dnet <- df.mem.r1$minutes * df.mem.r1$drpm / 48
df.lac.r1$dnet <- df.lac.r1$minutes * df.lac.r1$drpm / 48
df.gsw.r1$dnet <- df.gsw.r1$minutes * df.gsw.r1$drpm / 48
df.hou.r1$dnet <- df.hou.r1$minutes * df.hou.r1$drpm / 48
df.por.r1$dnet <- df.por.r1$minutes * df.por.r1$drpm / 48
df.ind.r1$dnet <- df.ind.r1$minutes * df.ind.r1$drpm / 48
df.atl.r1$dnet <- df.atl.r1$minutes * df.atl.r1$drpm / 48
df.mia.r1$dnet <- df.mia.r1$minutes * df.mia.r1$drpm / 48
df.cha.r1$dnet <- df.cha.r1$minutes * df.cha.r1$drpm / 48
df.tor.r1$dnet <- df.tor.r1$minutes * df.tor.r1$drpm / 48
df.bkn.r1$dnet <- df.bkn.r1$minutes * df.bkn.r1$drpm / 48
df.chi.r1$dnet <- df.chi.r1$minutes * df.chi.r1$drpm / 48
df.was.r1$dnet <- df.was.r1$minutes * df.was.r1$drpm / 48
df.sas.r1$net <- df.sas.r1$minutes * df.sas.r1$rpm / 48
df.dal.r1$net <- df.dal.r1$minutes * df.dal.r1$rpm / 48
df.okc.r1$net <- df.okc.r1$minutes * df.okc.r1$rpm / 48
df.mem.r1$net <- df.mem.r1$minutes * df.mem.r1$rpm / 48
df.lac.r1$net <- df.lac.r1$minutes * df.lac.r1$rpm / 48
df.gsw.r1$net <- df.gsw.r1$minutes * df.gsw.r1$rpm / 48
df.hou.r1$net <- df.hou.r1$minutes * df.hou.r1$rpm / 48
df.por.r1$net <- df.por.r1$minutes * df.por.r1$rpm / 48
df.ind.r1$net <- df.ind.r1$minutes * df.ind.r1$rpm / 48
df.atl.r1$net <- df.atl.r1$minutes * df.atl.r1$rpm / 48
df.mia.r1$net <- df.mia.r1$minutes * df.mia.r1$rpm / 48
df.cha.r1$net <- df.cha.r1$minutes * df.cha.r1$rpm / 48
df.tor.r1$net <- df.tor.r1$minutes * df.tor.r1$rpm / 48
df.bkn.r1$net <- df.bkn.r1$minutes * df.bkn.r1$rpm / 48
df.chi.r1$net <- df.chi.r1$minutes * df.chi.r1$rpm / 48
df.was.r1$net <- df.was.r1$minutes * df.was.r1$rpm / 48
#team-level xrapm
df.all.r1 <- data.frame(team=v.teams)
df.all.r1$onet <- as.vector(t(data.frame(sas=sum(df.sas.r1$onet),dal=sum(df.dal.r1$onet),okc=sum(df.okc.r1$onet),mem=sum(df.mem.r1$onet),lac=sum(df.lac.r1$onet),gsw=sum(df.gsw.r1$onet),hou=sum(df.hou.r1$onet),por=sum(df.por.r1$onet),ind=sum(df.ind.r1$onet),atl=sum(df.atl.r1$onet),mia=sum(df.mia.r1$onet),cha=sum(df.cha.r1$onet),tor=sum(df.tor.r1$onet),bkn=sum(df.bkn.r1$onet),chi=sum(df.chi.r1$onet),was=sum(df.was.r1$onet))))
df.all.r1$dnet <- as.vector(t(data.frame(sas=sum(df.sas.r1$dnet),dal=sum(df.dal.r1$dnet),okc=sum(df.okc.r1$dnet),mem=sum(df.mem.r1$dnet),lac=sum(df.lac.r1$dnet),gsw=sum(df.gsw.r1$dnet),hou=sum(df.hou.r1$dnet),por=sum(df.por.r1$dnet),ind=sum(df.ind.r1$dnet),atl=sum(df.atl.r1$dnet),mia=sum(df.mia.r1$dnet),cha=sum(df.cha.r1$dnet),tor=sum(df.tor.r1$dnet),bkn=sum(df.bkn.r1$dnet),chi=sum(df.chi.r1$dnet),was=sum(df.was.r1$dnet))))
df.all.r1$net <- as.vector(t(data.frame(sas=sum(df.sas.r1$net),dal=sum(df.dal.r1$net),okc=sum(df.okc.r1$net),mem=sum(df.mem.r1$net),lac=sum(df.lac.r1$net),gsw=sum(df.gsw.r1$net),hou=sum(df.hou.r1$net),por=sum(df.por.r1$net),ind=sum(df.ind.r1$net),atl=sum(df.atl.r1$net),mia=sum(df.mia.r1$net),cha=sum(df.cha.r1$net),tor=sum(df.tor.r1$net),bkn=sum(df.bkn.r1$net),chi=sum(df.chi.r1$net),was=sum(df.was.r1$net))))
df.all.r1$home_perc <- (avg_eff+df.all.r1$onet+hca/4)^14/((avg_eff+df.all.r1$onet+hca/4)^14+(avg_eff-df.all.r1$dnet-hca/4)^14)
df.all.r1$away_perc <- (avg_eff+df.all.r1$onet-hca/4)^14/((avg_eff+df.all.r1$onet-hca/4)^14+(avg_eff-df.all.r1$dnet+hca/4)^14)
#specific round 1 matchups
df.r1.matchups.1 <- data.frame(team=v.teams.home, opponent=v.teams.away, stringsAsFactors = FALSE)
df.r1.matchups.1$team_home_perc <- merge(data.frame(team=df.r1.matchups.1$team),df.all.r1[,c(1,5)], by="team", all.x=TRUE, sort=FALSE)[,2]
df.r1.matchups.1$team_away_perc <- merge(data.frame(team=df.r1.matchups.1$team),df.all.r1[,c(1,6)], by="team", all.x=TRUE, sort=FALSE)[,2]
df.r1.matchups.1$opponent_home_perc <- merge(data.frame(team=df.r1.matchups.1$opponent),df.all.r1[,c(1,5)], by="team", all.x=TRUE, sort=FALSE)[,2]
df.r1.matchups.1$opponent_away_perc <- merge(data.frame(team=df.r1.matchups.1$opponent),df.all.r1[,c(1,6)], by="team", all.x=TRUE, sort=FALSE)[,2]
df.r1.matchups.1$team_matchup_home_perc <- (df.r1.matchups.1$team_home_perc - (df.r1.matchups.1$team_home_perc*df.r1.matchups.1$opponent_away_perc))/(df.r1.matchups.1$team_home_perc + df.r1.matchups.1$opponent_away_perc - (2*df.r1.matchups.1$team_home_perc*df.r1.matchups.1$opponent_away_perc))
df.r1.matchups.1$team_matchup_away_perc <- (df.r1.matchups.1$team_away_perc - (df.r1.matchups.1$team_away_perc*df.r1.matchups.1$opponent_home_perc))/(df.r1.matchups.1$team_away_perc + df.r1.matchups.1$opponent_home_perc - (2*df.r1.matchups.1$team_away_perc*df.r1.matchups.1$opponent_home_perc))
df.r1.matchups.1$series_perc <- df.r1.matchups.1$team_matchup_home_perc^4 + 4*df.r1.matchups.1$team_matchup_home_perc^3*(1-df.r1.matchups.1$team_matchup_home_perc)*(1-(1-df.r1.matchups.1$team_matchup_away_perc)^3) + 6*df.r1.matchups.1$team_matchup_home_perc^2*(1-df.r1.matchups.1$team_matchup_home_perc)^2*((3*df.r1.matchups.1$team_matchup_away_perc^2*(1-df.r1.matchups.1$team_matchup_away_perc))+df.r1.matchups.1$team_matchup_away_perc^3)+4*
df.r1.matchups.1$team_matchup_home_perc*(1-df.r1.matchups.1$team_matchup_home_perc)^3*df.r1.matchups.1$team_matchup_away_perc^3
df.r1.matchups.2 <- df.r1.matchups.1[,c(2,1)]
colnames(df.r1.matchups.2) <- c("team","opponent")
df.r1.matchups.2$team_home_perc <- df.r1.matchups.1$opponent_home_perc
df.r1.matchups.2$team_away_perc <- df.r1.matchups.1$opponent_away_perc
df.r1.matchups.2$opponent_home_perc <- df.r1.matchups.1$team_home_perc
df.r1.matchups.2$opponent_away_perc <- df.r1.matchups.1$team_away_perc
df.r1.matchups.2$team_matchup_home_perc <- 1-df.r1.matchups.1$team_matchup_away_perc
df.r1.matchups.2$team_matchup_away_perc <- 1-df.r1.matchups.1$team_matchup_home_perc
df.r1.matchups.2$series_perc <- 1-df.r1.matchups.1$series_perc
df.r1.matchups <- rbind(df.r1.matchups.1,df.r1.matchups.2)
df.r1.matchups <- df.r1.matchups[order(df.r1.matchups$series_perc, decreasing=TRUE),]
#print results
df.r1.matchups
df.all.r1[order(df.all.r1$net,decreasing=TRUE),c(1:4)]
df.sas.r1
df.dal.r1
df.okc.r1
df.mem.r1
df.lac.r1
df.gsw.r1
df.hou.r1
df.por.r1
df.ind.r1
df.atl.r1
df.mia.r1
df.cha.r1
df.tor.r1
df.bkn.r1
df.chi.r1
df.was.r1
Game 1 Bets:
ReplyDeleteATL +7.5 (Adj Model: ATL +4, Game Result: ATL -8, Confidence: 3.5, Bet Result: 15.5)
MIA -10 (Adj Model: MIA -13, Game Result: MIA -11, Confidence: 3, Bet Result: 1)
BKN +3.5 (Adj Model: BKN +1.5, Game Result: BKN -7, Confidence: 2, Bet Result: 10.5)
MEM +7 (Adj Model: MEM +6, Game Result: MEM +14, Confidence: 1, Bet Result: -7)
GSW +7 (Adj Model: GSW +5.5, Game Result: GSW -4, Confidence: 1.5, Bet Result: 11)
HOU -5.5 (Adj Model: HOU -7.5, Game Result: HOU +2, Confidence: 1.5, Bet Result: -7.5)
Observations:
ReplyDeleteATL/IND
-Matchup issues might be even bigger than expected
-Hibbert's minutes probably should be adjusted further down as Vogel appears ready to go to better matchups
-Teague shouldn't be expected to shoot this well going forward so I'm not sure Hawks should be favorite going forward, but I would probably further adjust my model towards Atlanta another point or so
MIA/CHA
-I stupidly expected Tolliver would get a lot of minutes based on my own preferences
-If Miami continues to give so many minutes to non-offensive-creators like Allen and James Jones, Charlotte might be able to get away with smaller lineups. Not clear who this helps more though.
-Even in a decent game from Charlotte, Miami still ultimately covered. Gives me more confidence in my model's results
TOR/BKN
-Amir Johnson doesn't look healthy as he played only 21 minutes. Does not bode well for Toronto
-Brooklyn's defense was very effective. Lowry pick-and-roll largely ineffective at creating open threes, despite his 8 assists
-I would probably adjust my model towards Brooklyn by another point or so
CHI/WAS
-Nene played 35 minutes and looked great. Adjusting his minutes towards the other starters bodes well for Washington
-Not sure anything else about this matchup was surprising as Chicago's offense is sometimes just this bad.
-Simply adjusting some of Harrington, Gooden, and Booker's minutes to give Nene an extra 8 minutes lowers Chicago's neutral court advantage from 0.9 points to 0.4 points.
SAS/DAL
ReplyDelete-Dallas unexpectedly switched a lot of pick-and-rolls. This limited the help responsibility for defenders guarding three-point shooters and likely contributed significantly the Spurs' offensive inefficiency.
-Loved how few minutes Calderon, Dalembert, and Marion got and how many minutes Harris, Carter, Wright, and Crowder got. This was the one matchup in which my aggressive minutes adjustments were true in Game 1.
-Popovich did adjust his halftime offensive approach to include more Duncan postups and Ginobili pick-and-rolls against the switching Dallas defense, so I never want to count out Popovich. However, Dallas was surprisingly successful defensively, and really only lost this game due to offensive inefficiency from Ellis and Nowitzki and I expect the two of them to bounce back. As a result, I still would adjust my model towards Dallas by a point or so.
OKC/MEM
-I wasn't too concerned about Memphis' horrendous first half, as they seemed to get some of their normal shots on offense and simply missed them, and I was actually looking forward to the public perhaps overreacting and pushing the OKC line up.
-The one bad sign for Memphis was Brooks' surprising early decision to take advantage of Durant at PF as much as possible. While the minutes for Perkins and Adams were similar to what I predicted, I expected it might take a while for this to happen.
LAC/GSW
-Very surprised by how little Barnes played. Doc Rivers definitely loved his two-pg look in the regular season but I didn't expect it to continue in this series. It certainly got them into trouble in Game 1 due to the Thompson postups and it was exacerbated by Big Baby's incomprehensible tendencies to help whe nhe shouldn't have.
-The Lee at Center lineup was even more successful offensively than I expected. The Bogut and four perimeter players lineup is probably still the best Warriors lineup, but while Bogut is a very good passer, he's just so much less effective on rolls to the basket. Golden State effectively used the other big as a release valve when the Clippers trapped Curry pick-and-rolls to then hit the screener (Lee) on rolls.
-Golden State still exhibited a frustrating tendency for iso-posts when up late, but the isos certainly seemed less frequent early in the game.
-Given the better offensive play calling from the Warriors and the issues presented by the Curry pick-and-roll (even though the Clippers will definitely adjust their coverage going forward), I would adjust my model towards Golden State by another point or so.
HOU/POR
-Terrence Jones predictably had no chance defending Aldridge. Portland smartly ran a lot of pick-and-rolls with Harden's man as the screener. Stotts correctly realized that a sample size of two is way too small to be predictive and continued to Hack-a-Howard despite Howard making his first two tries.
-Both teams switched liberally, which is probably smart given how efficient both offenses are at seeking threes.
-While Houston led the league in offensive free throws per game by a large margin, Portland doesn't foul much defensively.
-The Hack-a-Howard strategy makes it awfully difficult for Houston to cover large spreads as it prolongs games and gives the defense an alternative to Houston's normally efficient offense.
-I would adjust my model towards Portland by a point or so.
Vegas Game 2 lines for 4/21:
ReplyDeleteOKC -7 / MEM +7
OKC -330 / MEM +265
LAC -7.5 / GSW +7.5
LAC -420 / GSW +310
I was going to post theoretical Game 2 bets as well, but it appears that there is significant anti-correlation between games that Vegas already adjusts for. For example, Clippers and Raptors are larger favorites in Game 2 (by 0.5 points and 1 point respectively) than in Game 1 despite looking worse than expected. I would still bet Memphis and Warriors for the 4/21 games anyways, but I'm just not sure how much to adjust for anti-correlation in determining my confidence in the bets.
Vegas Game 2 lines for 4/22:
ReplyDeleteIND -7.5 / ATL +7.5
IND -380 / ATL +290
TOR -4.5 (-115) / BKN +4.5 (-105)
TOR -190 / BKN +165
CHI -5.5 / WAS +5.5
CHI -240 / WAS +200
Similarly, I would still bet Atlanta and Brooklyn and abstain from Bulls-Wiz.
Vegas Game 2 lines for 4/23:
ReplyDeleteMIA -10.5 (-105) / CHA +10.5 (-115)
MIA OFF / CHA OFF
SAS -7.5 / DAL +7.5
SAS -360 / DAL +280
HOU -7 (-115) / POR +7 (-105)
HOU -300 / POR +250
Betting based off of Game 1 lines (because I have no idea how to adjust for the anticorrelation between games), I would still abstain from the Spurs Mavs game, even after adjusting my model towards Dallas. After adjusting my model towards Portland slightly, I can no longer bet on Houston given how large the spread is at home for them and my worry that Hack-a-Howard will prolong games and narrow margins of victory for Houston. I would still bet Miami even after the slight increase in the spread, (which, in effect, is probably bigger due to the anticorrelation effect).
IND -3 / ATL +3
ReplyDeleteIND OFF/ ATL OFF
OKC -3 / MEM +3
OKC OFF/ MEM OFF
LAC -3 (-105) / GSW +3 (-115)
LAC -150 / GSW +130
Nothing about the Game 2's in the first two series would cause me concern. There has been some indication that there was more variety in player movement (/screening) from the Pacers, but they had the same screening conversion issues that they've had for a while. They simply made their jumpers and Atlanta missed theirs. Memphis also limited Prince's minutes in favor of Allen's (given that Allen plays Durant significantly better), so if anything, I'd adjust my prediction towards Memphis.
The Clippers blowout doesn't mean much in the grand scheme of things, but they trapped the Curry PNR much better with Griffin on the floor instead of Big Baby. Curry did have more success in the third quarter splitting the traps, but that strategy is somewhat concerning given Curry's turnover issues and the Clippers' fast breaking ability.
Still, I would continue betting Atlanta, Memphis, and Golden State
Vegas Game 3 lines for 4/25:
ReplyDeleteTOR +5 (-115) / BKN -5 (-105)
TOR +170 / BKN -200
CHI +2.5 / WAS -2.5
CHI +130 / WAS -150
HOU +2 / POR -2
HOU +130 / POR -150
I haven't watched as much of the Raptors-Nets series as I'd have liked (no NBATV subscription), so the following comments may be based off of a limited sample size. I "hate" on Valanciunas a lot, but he might be necessary to prevent Brooklyn from liberally switching every PNR (which is a way to force teams away from PNR and into isolations, and even then, Brooklyn shouldn't be afraid of switching the Valanciunas PNR). If this becomes an isolation battle, Brooklyn has an enormous advantage because they simply have much better isolation players and they have bigger mismatches. Toronto's wings are simply too small (or too limited offensively to get playing time) to guard Joe Johnson. Zach Lowe mentioned potentially having Amir guard JJ and a wing guard Pierce, but as much as I respect Amir's lateral quickness and defensive awareness (or, simply, his game in general), I'd be wary of having bigs guard the ball handler on PNRs because they have no experience fighting through screens. Toronto also doesn't really have the same switching options other teams in the playoffs do, because Valanciunas is too slow and Lowry is probably still too small. Brooklyn -5 at home is similar to Brooklyn +3.5 on the road (if we assume a HCA of 4 points and there's no added effect of a series being tied 1-1 as there is for a series being 1-0), so I would still be comfortable betting Brooklyn.
Although the other two series are at similar stages (teams down 0-2 on the road) with similar point spreads both in Game 1 and in Game 3, I feel differently about them. Yes, Nene has played more than I expected and even better than I expected (and the ability of both of Washington's bigs to hit PNR jumpers is huge against Chicago, given that an open long-two is actually a good shot against them), but looking beyond the actual score, nothing has been especially surprising. Many of Washington's adjustments for Chicago have solutions. Chicago's defensive issues (not that there are many) have mostly been Augustin-related, and if he's going to be forced off the ball by Ariza as he was in Game 2, then there's no reason for him to play over someone like Dunleavy who can provide the same floor spacing without the same defensive issues (or either Hinrich or Butler could be subbed out instead as there are diminishing marginal returns for on-ball skills, even defensive on-ball skills). They could mix up their PNR coverage a little by having the bigs play the ball handler more aggressively, which could also in turn force live ball turnovers that add significant value for a team that has trouble scoring in the half court. I have enough confidence in Thibs to make those necessary adjustments (and any ones I haven't identified) before Game 3. Given the desperation factor should definitely be greater for Chicago (my admission of the existence of such a factor is based on the fact that home teams that lost Game 1 actually saw bigger point spreads in Game 2), it looks to me like the market has moved in Washington's favor more than I believe it should have. After abstaining from the first two games of this series, I would bet Chicago.
cont.
ReplyDeleteHouston's case is different because I actually expect them to make incorrect adjustments (/overreact to Game 1 and 2 trends) and they already began doing so in Game 2. Terrence Jones cannot guard Aldridge whatsoever (where "guard" is defined as keeping Aldridge away from 60-70% shots in the paint), so they mostly resorted to the Asik-Howard combo with Asik on Aldridge. This was likely partly because Howard exerted too much effort from the postups on offense to defend Aldridge himself and partly because he was in foul trouble, and neither should be an excuse. If Howard isn't defending Aldridge in this series, he's adding very limited value late in games beyond defensive rebounding (which, admittedly, is important against Lopez), because Portland doesn't drive often enough to the rim for his rim protection to matter and Houston veers away from his postups on offense in crunch time. If Howard fouls out in the fourth quarter, it's not a big deal, as Asik is Howard's equivalent on defense (and on offense, actually, if we're only talking about actual offensive impact and not offensive ability, because Houston on average wastes too many possession utilizing Howard's post game "strength"). I maintain that Houston should go small so that they gain much more offensively from the floor spacing than from whatever rebounding they lose against Lopez, but I have absolutely no confidence McHale will do so. Furthermore, Aldridge's hot streak on his turnaround jumpers (which are essentially unchallengeable by one defender) likely will cause Houston to overreact and start sending double teams, which is the worst overreaction to a small sample size possible (I'm sure the front office understands that Aldridge turnarounds are still better shots for the defense than open threes created from doubling but I don't know how much impact they have on the coaching staff). This would seem to indicate that I would bet Portland, but given that I really have no idea how many "desperation" points a team should get when down 0-2 in a series needing to win at least two of three on the road, I would have to abstain from this game.
Vegas Game 3/4 lines for 4/26:
ReplyDeleteIND -3 / ATL +3
IND -150 / ATL +130
SAS -4 / DAL +4
SAS -175 / DAL +155
MIA -5 / CHA +5
MIA -210 / CHA +175
OKC -3.5 (-105) / MEM +3.5 (-115)
OKC -165 / MEM +145
Not much to say about the two 1-8 matchups or Memphis-OKC except that all underdogs seeds have shown significant matchup/strategic problems for the favorites seeds (the shooting for Atlanta, the switching for Dallas, and Tony Allen for Memphis), and yet Vegas does not seem to have corrected for it enough. I would bet Atlanta, Dallas, and Memphis.
In Miami's case, I don't see systematic reasons that Charlotte has been playing much better than expected. Part of it might be that Miami has motivation problems for large point spreads, so they might be able to cover smaller point spreads on the road more easily than larger spreads at home. Even accounting for the fact that this is probably the game with the largest discrepancy in "desperation" (merely a guess), I would still bet Miami.
Vegas Game 4 lines for 4/27:
ReplyDeleteCHI +2 / WAS -2
CHI OFF / WAS OFF
LAC -2 (-105) / GSW +2 (-115)
LAC OFF / GSW OFF
TOR +4 / BKN -4
TOR +155 / BKN -175
HOU +2.5 / POR -2.5
HOU OFF / POR OFF
I'm as big of a Nene fan as anyone, and even adjusting for the anti-correlation effect (judging from Houston-Portland, it should be worth maybe 0.5 points), I don't think the line adjusted enough. As a result, I'd still bet Chicago.
Draymond Green is by far Golden State's best "big" in this series, and rumors are that he might start Game 4 and thus play more minutes. O'Neal has been largely horrible in this series outside of a stretch in Game 1, and given that I've been betting Golden State this entire series, I would continue betting Golden State.
Not much has changed about the other two series so I would still bet Brooklyn and abstain from Portland-Houston.
Vegas Game 4/5 lines for 4/28:
ReplyDeleteMIA -8.5 / CHA +8.5
MIA -420 / CHA +310
IND -6.5 / ATL +6.5
IND -320 / ATL +260
SAS -4.5 / DAL +4.5
SAS -210 / DAL +175
I have no idea in which direction a line should be adjusted when a team is up 3-0, and Al Jefferson's status for the game is a likely reason why the line is so high for Miami on the road. While Jefferson is indeed the foundation of the Bobcats, he's just not as good as most people think. Miami -8.5 on the road is equivalent to Miami -14.5 to -16.5 at home, which is essentially what my model predicted for Game 1. Sure, the potential for no Jefferson makes the Bobcats worse, but there's enough uncertainty in the variables I don't know (namely, the 3-0 factor) for me to abstain.
Indiana won its last game and San Antonio lost its last game, but I'm more optimistic about San Antonio. The Spurs adjusted to Dallas' strategy to switch almost all Parker PNRs by using more Ginobili PNRs, and switching is much more dangerous against him because he can hit threes. Game 3 was a lot about Dallas players, including non-shooters like Ellis and Marion, simply hitting a bunch of jumpers. I am as optimistic about the Spurs now as I have been at any point since before the series, and given that the Spurs are only giving an additional 0.5 points compared to Game 3 despite losing that game and now being down 2-1, I would bet San Antonio.
Yes, Indiana finally limited Hibbert's minutes given the matchup issues, but I still don't see any evidence of a significantly better team. I would hypothesize that the line for Game 5 of a 2-2 series should normally be very similar to that of Game 1 of that series, and given that the line moved only 1 point in Atlanta's favor, I would still bet Atlanta.
Vegas Game 5 lines for 4/29:
ReplyDeleteCHI -3.5 / WAS +3.5
CHI -160 / WAS +140
OKC -7 (-115) / MEM +7 (-105)
OKC -350 / MEM +275
LAC -7 (-105) / GSW +7 (-115)
LAC -310 / GSW +255
Vegas has definitely reacted to Washington's blowout win in Game 4, but so have I. Many of Chicago's Game 4 issues involve Washginton aggressively overplaying a lot of Chicago's offensive actions (which was part of the reason for Gibson's big night) leading also to fast breaks. Chicago has had a disturbing inability to score without Augustin given that their bigs can't overpower Washington's bigs either on postups or offensive rebounds, and Augustin has had a disturbing inability to defend anyone. As a result, Washington should now be the favorite on a neutral court. However, I have no idea how big of a boost Chicago should get from being down 3-1, so I would have to abstain from this game.
The other two matchups both have the same spreads as their Game 1 spreads, and I'm more confident about the underdogs now than I was before. As a reuslt, I would still bet Memphis and Golden State.
Vegas Game 5 lines for 4/30:
ReplyDeleteSAS -6 (-115) / DAL +6 (-105)
SAS -290 / DAL +245
TOR -3 / BKN +3
TOR -155 / BKN +135
HOU -5 (-105) / POR +5 (-115)
HOU -230 / POR +190
I would still bet San Antonio and Brooklyn. I would be tempted to bet Houston given they've been maxing shooting recently (with Beverley, Daniels, and Parsons around Harden and Howard), but Beverley's flu bug worries me. There's enough uncertainty for me surrounding this game (including Houston's desperation factor down 3-1) that I would abstain.
Vegas Game 6 lines for 5/1:
ReplyDeleteIND +1.5 (-115) / ATL -1.5 (-105)
IND OFF / ATL OFF
OKC -3 (-105) / MEM +3 (-115)
OKC OFF/ MEM OFF
LAC -1 / GSW +1
LAC OFF / GSW OFF
I would still bet Memphis and Golden State, but I would abstain from Atlanta.
Vegas Game 6 lines for 5/2:
ReplyDeleteTOR +4.5 (-115) / BKN -4.5 (-105)
TOR +170 / BKN -200
SAS -3.5 (-105) / DAL +3.5 (-115)
SAS -160 / DAL +140
HOU +4 (-115) / POR -4 (-105)
HOU +160 / POR -180
I would still bet Brooklyn and abstain from the other two games.
Vegas Game 7 lines for 5/3:
ReplyDeleteIND -6 (-115) / ATL +6 (-105)
IND -290 / ATL +245
OKC -9 (-115) / MEM +9 (-105)
OKC -600 / MEM +400
LAC -7 (-115) / GSW +7 (-105)
LAC -350 / GSW +275
I would usually take a Zach Randolph suspension as a even more reason to bet on Memphis given that he's their fourth best player but perceived as their first or second best player, and this is especially true in this series given that he's been totally ineffective offensively. However, a Randolph absence isn't the only problem. Conley has a hamstring strain and Allen has a migraine. This was a very top heavy team to begin with (with the top defined as Gasol and Conley in most cases and Allen as well in this series), so I just can't justify betting Memphis here with the line at only -9.
I would still bet Atlanta and Golden State however.
Vegas Game 6 lines for 5/4:
ReplyDeleteTOR -2.5 / BKN +2.5
TOR -130 / BKN +110
SAS -6.5 / DAL +6.5
SAS -310 / DAL +255
I would still bet Brooklyn and abstain from Spurs-Mavs.