So, you are planning to make the best use of the summer by trying out something new, something that would help your NBA betting produce better results over the next few seasons or more. That kind of enthusiasm will surely drive your business in this industry as it’s a constant race to improve and figure out little advantages that could be transposed to a profit.
Investing your time and knowledge in a new statistical model is no small deal. It takes a lot of preparation, thinking, testing and evaluating. No matter how you have come up with your fair numbers, it shouldn’t stop you from exploring new fields, but some paths are better to walk on.
As much as building an NBA players-based model sounds scientific and advanced, it comes with several obstacles. Join me in our everlasting quest for improvement to explore whether this is the path to be stepped onto.
What is an NBA player-based model?
The usual approach to setting up odds, whether as a bookmaker or a punter, is to use the NBA team stats in some way, to evaluate and compare the two matching up in a game. There’s very few drawbacks to this system, the reason for why so many people use this modeling system. One of the things that are going against it, is that so many people are using it – so it is very hard to gain any edge on the rest of the players on the market. There’s still enough public bettors that are losing their money to make money with it, but perhaps a new approach would give you better results. By the new approach, I mean the NBA player-based mathematical model.
The NBA player-based model would collect individual stats and rankings, combine them by a player’s role within a certain squad to form team’s value (or ranking) that could then be used to get the spreads and total points lines. If you are intrigued, you are not alone. This system holds a lot of promise if executed properly, but there are some obstacles to be hurdled.
The players are the base unit in the NBA. They get injured or suspended. They change teams. Finally, the players are the ones who are playing. Yes, they combine together to form more or less successful NBA teams, but a team is kind of a sum of those base units. Think of it like how would it be if you would use 15 yards as a base instead of a single yard. The best model in theory would be one that’s based on the base units, or, in this case, the players.
If the calculations would be based on the players’ performances, it would be much easier to exclude them in certain scenarios like injuries, rest, etc. Not only that we would get more precise adjustments, but we could do simulations on how a team would perform without each of their players and be ready in advance, making our reaction time to such news much shorter.
Also, it would give us the ability to better understand player types and the similarities between how the teams were build, depending on how they would react to a certain type of injury. Those simulations would also give us a better understanding on how quickly the NBA teams can make up for the absence of a player and by how much. Ultimately, we could switch things up and place players to different teams to be instantly ready to wager games of teams who just traded away or for a new player.
It’s not only about the absences or trades. Such model should theoretically be more accurate than team stats based models, if done properly. So the idea and the concept is good, it’s the execution that is creating some issues to overcome.
Kudos to you if you are not afraid of complicated stuff. But this gets ugly quickly. There are many factors in a single player’s game that would have to be implemented to describe it properly. Depending on how precise you aim to be, you would be looking somewhere between 25 and 50 attributes.
Not all of the attributes are dynamic, as some would describe the player’s abilities that don’t change from game to game, or even season to season, but there are still plenty of stats that would have to be entered daily for all the players. That’s a lot of manual work, or an additional tool needed to scrap all the data to your files. And, this is just the start of the chaos.
Even if you set up this big database and figure out the way to feed it from the box scores, you will have to fight a very significant task – setting the model up in blind. Because of the fact that single player’s singular stats are only vaguely related to the outcome of his team’s game, the approach would have to come from the top down, breaking the NBA team’s level of success into smaller chunks until you get to the players’ ground and the measurable attributes and stats.
Working bottom up wouldn’t work well, believe me. It’s a more natural approach to say – we can measure player’s assists, his jumping ability and defensive work rate, let’s build a model from there – but the problem is that you are going to miss too many important attributes or use too many, as some probably overlap with each other. Redundant variables do not only complicate the calculation, but also skew the function to the point where an error that be that it’s better to start over than to try to correct it.
If you do start from the top and break apart the success, you won’t get any redundancy, but you might end up with attributes that are not commonly measured, such as ‘pass that sets up an open shot’, or worse. Even if you tackle this by training a team of scouts to observe the more obscure stats for the players, those categories might not feel instinctive and you would have trouble modifying the model by working with such variables.
The solution is to have many iterations of testing. This will help your model learn what the best predictive attributes are, and yourself to get used to the more obscure relations and stats. No promises. It would work with the bottom-up approach as well, though it might require too much testing to actually pay off, and without any guarantees that it would become smooth enough to use.
The NBA player-model is too robust to set up, to maintain and to test. If you can win those battles, it’s efficient to use and would open up many doors in basketball analytics for your eyes only.
Tips for a quick start
If you had hoped to get a full tutorial on how to make an NBA player model, I’m sorry to disappoint you. My personal take, based on experience, is that it’s not worth the trouble. Once you endure the entire process and come up with the product that is not exactly the one you had hoped for, you’ll probably think the same. But, if you have smaller expectations and would like to get a sense on how to set up the basics, here are a couple of tips to get you started.
– avoid using PER or other bundled stat creations, they were not made for this purpose and have numerous flaws. If you are looking for a simplest way to allow yourself a peek of the whole thing, you should use the 1-, 3-, and 5-clustered modulations of adjusted plus-minus, with 1-cluster being the single player, 3-cluster consisting of the player and the two teammates he plays most minutes together with and 5-cluster the entire unit the player is most frequently part of.
– instead of losing much time, try modeling only starting units first, as if they play 48 minutes each game.
– use only up to 10 attributes in the first go. Set at least two of them to be arbitrary and static – offensive work rate and defensive work rate. Limit the scope of your data collection to just the previous season.
Hope you’ll find these advices and the analysis useful and that it will nudge you in the right direction.
- Washington Wizards vs. Toronto Raptors 11/19/17 Odds, Pick and Preview - November 19, 2017
- Denver Nuggets vs. Los Angeles Lakers 11/19/17 Odds, Pick and Preview - November 18, 2017
- Golden State Warriors vs. Brooklyn Nets 11/19/17 Odds, Pick and Preview - November 18, 2017
- Utah Jazz vs. Orlando Magic 11/18/17 Odds, Pick and Preview - November 18, 2017
- Sacramento Kings vs. Portland Trail Blazers 11/18/17 Odds, Pick and Preview - November 18, 2017
- SV WERDER BREMEN vs. HANNOVER 96- German Bundesliga (Round 12) - November 17, 2017
- SCHALKE 04 vs. HAMBURGER SV – German Bundesliga (Round 12) - November 17, 2017
- BRIGHTON vs. STOKE CITY – English Premier League (Round 12) - November 17, 2017
- WATFORD vs. WEST HAM UNITED – English Premier League (Round 12) - November 17, 2017
- BORDEAUX vs. MARSEILLE – French Ligue 1 (Round 13) - November 17, 2017