Note: this post was originally published for The Strickland. Give them a click!
The New York Knicks are entering yet another pivotal offseason.
There are a myriad of decisions to be made by the front office: which free agents to add, which current team options to accept or decline (which they did today), and how many minutes to play each player per game once the season actually tips off. Luckily for them, they have a lot of flexibility — they have control over how they use their salary cap, roster spots, and minutes allocations throughout the season.
What do the numbers say they should do? Basketball isn’t played on a spreadsheet or in mathematical models — but spreadsheets and models can still be hugely valuable tools to help us make better basketball decisions.
Our goal in this study was to optimize the Knicks’ decisions using mathematical modeling (Integer Linear Programming, to be specific) – can we maximize team performance, based on multiple advanced player impact metrics – taking into account the real-world constraints facing the team?
For our model, we utilized lots of data, including:
- 2020-2021 Salaries
- 2020-2021 Player Impact Metrics
None of these catch-all metrics are perfect by any means, but they all take differing paths toward quantifying NBA player impact. While looking at one specific metric would be highly misleading, pulling in insights across them to look for consistencies and inconsistencies could be deeply insightful, as we’ll touch on in a bit.
There’s a well-known saying in statistics – “all models are wrong, but some are useful”. In order to make this work with the tools at our disposal, we had to make assumptions for our model:
- Player-by-player impact will be the same this season as it was last season
- This, of course, won’t be true, but for the purposes of this study, the best predictor of next year performance is previous year performance!
- Projected free agent salaries will realize once they are signed in real life
- Bobby Marks’ projected free agent salaries are just that – projected. Since we don’t know what the true market value for these players will be, we had to roll with the predictions here.
- Player performance does not decrease if they play more minutes
- When building our optimal lineups, we assumed performance at the first minute would be identical to performance at the 35th (though we capped each player’s minutes at 36 per game)
- Free agents we choose to sign will agree to sign
- As Knicks fans know as well as anyone, free agency doesn’t just mean you pick a player and a salary and they then become a member of your team. However, considering we’re really looking at “optimal” scenarios here, combined with the fact that none of this offseason’s free agents are blockbuster stars, we thought this was fair to run with.
- The Knicks won’t make any trades
- Young prospects will play at least 15 minutes per game for development
- The Knicks’ youngsters – how can we say this – don’t generally do so hot in the advanced impact metrics. We assumed New York would devote at least some developmental minutes to the following players:
Let’s get to the fun part! We built four separate models in Python Gurobi, allowing many free variables, including whether or not a specific player was on the roster (including team options and a pool of 27 available free agents) and how many minutes each rostered player should play in a game. The objective of each model: across all of the minutes played per game, maximize the sum of that impact metric times the number of minutes the respective player played.
Of course, statistical models like these don’t have a deep understanding of reality like we do, and they’ll try to maximize that objective using all of the resources they’re given, regardless of real-life concerns. To keep things sane, we applied these constraints to the models:
- Only 15 players can be on the roster (including the draft pick)
- Players can only play minutes if they are on the roster (sounds easier than it was)
- Sum of all rostered salaries (including the draft pick) must fit under the salary cap
- Total minutes per game must not exceed 240 (including the draft pick; this is just 48 minutes times 5 players)
- Each player can play no more than 36 minutes per game
- 7 players must be on the roster (contract guarantees)
- Each position should play no more than its share of total minutes
- We defined only 3 positions – guard, wing, and big. Guards play no more than ⅖ of the total minutes, wings ⅖, and bigs ⅕.
- Young prospects, as previously outlined, must play at least 15 minutes per game
Alright, now we can welcome everyone who understandably scrolled through the fluff to get to the meat and potatoes. What were the results?
Our models yielded four different optimal teams, which we can view holistically and which the Knicks could take action upon by noting key similarities and differences across objectives:
We say this with the known risk of Knicks fans losing all confidence in impact metrics, so let’s just get it out of the way – PIPM loves Elfrid Payton.
How about a Langston Galloway reunion? The onetime Knick diamond in the rough shot 40% from 3 last season on 5 attempts per game, and could be a great fit next to the Knicks’ many non-shooters (especially, in this scenario, Payton). He wouldn’t demand the ball – he’s happy just standing in the corner:
He’s also shown the ability to create a bit off ball; getting open in his favorite spots by setting screens and diving out:
Michael Kidd-Gilchrist is another interesting case here – PIPM wants to not only sign him to the roster, but give him 30 minutes per game. As you’ll see, though, he appears on none of the other 3 optimal teams. This is a perfect example of what we touched on earlier with regard to looking at one specific advanced metric vs. pulling in insights across them.
You also, of course, love to see Melo back in the Garden.
Some real differences here! DJ Augustin is an interesting free agent target for the Knicks, in some ways playing like (and costing like) a dollar-store version of Fred VanVleet. Reggie Jackson is RPM’s version of Michael Kidd-Gilchrist – most Knicks fans would likely balk at a potential deal here.
Christian Wood, as you’ll continue to see, is a developing theme across these models, and we’d argue he would be a nice fit with his age and offensive versatility.
He can beat good defenders for backdoor lobs:
Or pick-and-pop elite bigs for easy treys:
For a big man, it’s eye-popping how much he does here: runs off a screen, pump-fakes, drives out of the double, then splits two more defenders for the ferocious yam:
This is a guy who can play next to Mitch, simply hold down the rest of the big man minutes, or even (look away) supplant him if needed.
Apologies to the tanking stans among us, but this team looks… very good? A well-rounded starting lineup with shooting, playmaking, and defense, with a bench unit of some of the more developmental projects.
Fred VanVleet, one of the most talked-about potential acquisitions, shows up here for the first time, but not the last. He’s a true offensive creator (he shot 41% on three pointers taken after 7+ dribbles last season) but can also play a tertiary role (44% on catch-and-shoot 3s). We already know about his championship-level defensive ability:
Still young enough to gel with the Knicks’ core for at least a few years, it’s no wonder he’s many fans’ top free agent available.
Meanwhile, it’s another big appearance for a couple of former Knicks in Justin Holiday and Danilo Gallinari, both multi-tooled players that could help the team win without stunting the development of younger players.
The final team continues to fit into previous themes – Rondae Hollis-Jefferson is RAPTOR’s outlier, while FVV, Holiday, and Christian Wood remain advanced stats darlings. Not a contender by any means, but this team could make a playoff run while keeping future assets intact.
We can aggregate across the four models to see which players showed up the most and played the most minutes:
Even with the manual constraint of the Knicks’ youngsters playing at least 15 minutes a game each, 4 of the top 5 played players were drawn from the free agent pool. Considering the Knicks as a unit are coming off a 21-win season, this shouldn’t be all that shocking to see. With many rumblings about Tom Thibodeau wanting to push more of a win-now priority, it seems likely that there will be new faces coming in in an attempt to improve the roster.
Even so, can we say it’s now mathematically proven that Julius Randle should play 0 minutes per game?
by Derek Reifer & Duncan Holmes, Northwestern University
follow Derek on Twitter @d_reif
follow Duncan on Twitter @StemmedEagle
follow Corner Three on Twitter @corner3sports
follow The Strickland on Twitter @TheStrickland
cover art by @aighttho
the code we used is available here