How the NBA uses analytics to create an efficient schedule that features 1,230 games in 169 days?

August 21, 2017 by J.H. Yeh

Pursuant to the newly revised CBA (Collective Bargaining Agreement), the new NBA season has been extended by a week, from 170 days to 177 days starting from the 2017-18 season. The reason is simple: To maximize rest and basketball quality while minimizing injuries and logistical constraints. And the goal is even more clear — to generate more revenue through a user-friendly schedule.

In the past, I’ve only focused my basketball analytics on the game aspect, but this time — with the release of the new NBA schedule last week — I’ve decided to take my analytics onto the league level. Creating an NBA schedule is an intriguing yet strenuous mathematical challenge that requires intricate computational models to find a fair balance within it. The NBA can only play its regular season games over a span of 177 days (170 days prior to the 2017-18 season). And realistically, games can only be scheduled over a period of 169 days since the NBA has official breaks on Christmas Eve, All-Star Week (6 days), and the NCAA Championship game. There are 30 NBA teams and every team is required to play 82 games — with 41 home games and 41 away games — which yield a grand total of 1,230 NBA games. And from there, the combinatoric calculations can diverge into a multitude of possible scheduling outcomes!

Furthermore, each team needs to meet the following four basic criteria mandated by the league:


  1. Each team must play 4 games (2 home and 2 away) against each team in the same division (16 games)
  2. Each team must play 4 games (2 home and 2 away) against 6 teams from the same conference but different divisions (24 games)
  3. Each team must play 3 games (at least 1 home) against each of the 4 remaining teams on the same conference but different divisions; a five-year rotation determines which out-of-division conference teams are played only 3 times (12 games)
  4. Each team must play 2 games (1 home and 1 away) against each of the 15 teams on the other conference (30 games)


As a result, 82 games ( 16 + 24 + 12 + 30 ) will be played by each team and 1,230 games ( 41 x 30 ) will be played each year. Aside from these main criteria (and constraints) stated above, the league office also mandates teams to provide their own individual constraints for the league to work around their schedules. The two individual constraints must be provided by each team before early March in order for the NBA to work on its scheduling procedure. Moreover, arena conflicts such as NHL games in the same building must be resolved by then in order to proceed further. The two individual constraints are listed below:


  1. At least 50 dates in which the home arena is available for games
  2. Out of these 50 days at least 4 must be Mondays (unattractive days for games), and at least 4 must be Thursdays because TNT does national broadcast only on that day of the week


Besides the aforementioned two individual constraints, teams may add their own special constraints. A notable one is the San Antonio Spurs’ “rodeo trip” because their home arena, the AT&T Center, hosts annual rodeo fair in February which forces the Spurs to be on the road for two weeks during that stretch. Other smaller constraints include the dates around the NCAA Final Four, the Super Bowl, and other pre-determined major sport competitions or non-sport events (such as a major 3-day Rihanna concert in LA) to avoid these public occasions stealing each other’s businesses. All these constraints are sent to the NBA headquarter at the Olympic Tower in New York City, where the NBA scheduling staff, currently led by Tom Carelli (SVP of NBA Broadcasting), who works hand in hand with Evan Wasch (SVP of Basketball Strategy) and Jason Rosenfeld (Dir. of NBA Basketball Analytics) to strategically build an NBA season.

Throughout the scheduling process, there will be at least three key dates in the calendar when Carelli and his scheduling team have to reassess their works: 1) the release of the NFL schedule (usually mid to late April), 2) the release of the NHL schedule (usually mid to late June), and 3) the NBA free agency (early July). The release of the NFL and NHL schedules will create some must-watch football and hockey games, in which the NBA will try and avoid playing similarly compelling matchups in those cities. Additionally, the release of the NHL schedule will inevitably reduce the arena availability since 11  NBA franchises share the same arenas with an NHL team. Moreover, conflicts often arise when scheduling games in Los Angeles because three professional teams play in the Staples Center. Below is a complete list of arenas shared by the NBA and NHL teams.




Moreover, NBA free agency (only applies to star players) always creates major story lines, which result in the emergence of more appealing games that must be factored into TV partners’ schedules on both local and national levels. For example, Gordon Hayward’s return to Salt Lake City and Jimmy Butler’s return to Chicago will be two of the many highly anticipated games for this coming basketball season.

After an introduction on the scheduling constraints, now let’s take a dive into how the league uses analytics to put together an NBA schedule. From a league perspective, several considerations need to be factored in such as players’ wellness, injury prevention, adequate rest, game quality, local businesses, competitive balance, and TV broadcast requirements. Meanwhile, the league will also take a look at ways to effectively reduce costs such as lowering the number of back to back games and the dreaded occurrence of playing four games in five nights. The league will also reduce the number of flight trips that cross multiple time zones to help eliminate fatigue. That said, ideally, a good quality, revenue-generating basketball game will feature healthy and well-rested players from both teams to play on a weekend with a national TV broadcast providing coverage for the game.

Before we go any deeper into this, let’s take a look at how the league has used analytics to revolutionize the scheduling procedure. Before Carelli took over the scheduling process, all NBA schedules were done by hand by former SVP of Scheduling & Operations Matt Winick for the past 30 years. Joining the NBA at the mid 1970s when there were only 20 full time staff, Winick planned all NBA games through a manual process from 1985 until the mid 1990s, when the league hired an outside firm to assist with the task due to the league expansion. The job was eventually returned to Winick in the late 1990s for purposes of internal operations and confidentiality — and this time he had an assistant and a computer to prevent him from making some basic mistakes. Winick retired in September 2014 and the 2015-16 schedule was the first without Winick’s guidance. The league now has five people, including Carelli, to do Winick’s singular expertise while implementing a scheduling system provided by KPMG’s analytics practice to mathematically optimize a season-long schedule. The 2015-16 schedule was the first time the NBA fully utilized an advanced computer program to analytically design an efficient NBA schedule.

One of the biggest issues the league promised to address in the last couple years is decreasing the number of back to back games. Below is the progress of minimizing back to back NBA games and four games in five nights. Note that the league has come a long way since the 2014-15 season in successfully reducing 146 back to back games and 69 four games in five nights. And the 2017-18 season is the first time in league history with no four games in five nights. Moreover, all these numbers in each of the past three NBA seasons are all time lows. (Do note that the 2017-18 season is extended by seven days; however, that is still an impressive feat to have zero four games in five nights.)




It’s easy to think of an optimizing technique but forget about the huge challenge that comes with it. Simply put, a traditional optimizing tool wouldn’t work on an NBA schedule (or any sport) due to the many variables it presents, such as — to name a few — the national TV windows, local business dynamic, business implications, unforeseeable sensitive contingencies (that cause more attractive matchups to emerge later in the season), arena availability, and many more other constraints to achieve or to avoid. Therefore, it’s impossible to simply use an optimizer to generate a schedule because there are many restrictions that need to be accounted for.

When scheduling NBA games, the league prioritizes certain big matchups on certain dates. And from there, the league can know where each team is at during certain periods of time and schedule accordingly from there. For instance, the incumbent champion team will always be at home on the season opener for the ring ceremony, so this year, the league will have the Golden State Warriors to play in Oakland on October 17th. Their season opener opponent will be the Houston Rockets, and since the Rockets have to cross multiple time zones to play at a non-division opponent, the league will likely schedule the Rockets to play a couple more away games in the California area before flying back to Houston (in this case, it’s true as the Rockets will fly to Sacramento to play against the Kings before going back to Houston for their home opener). Similarly, the NBA always keeps its tradition of featuring an NBA Finals re-match on Christmas Day. For this coming season, the Cleveland Cavaliers will visit the Warriors, which means the Cavaliers will be in the west around that time frame. As a result, the league scheduled the Cavaliers to play against multiple western teams after the Christmas game for efficiency’s sake. Another example is the Spurs’ annual “rodeo trip.” With the two week long rodeo festival taking place at their home in every February, the league knows the Spurs will have to be away and it’d only make sense to send them out to the east or to non-division teams for farther road trips.

In summary, the league schedules its games by having a good idea of where each team will be at a certain time. And from there, the league work its way by scheduling marquee matchups first, then the dates that will be broadcast by a national TV partner (TNT and ABC), and then cross-conference games, next the cross-division games, and finally same division games, which teams can usually play during any given day. However, as mentioned earlier, things aren’t as simple as it sounds because it is impossible to have a computer that optimizes a 1,230 game schedule that automatically maximizes profit and minimizes costs. And this is where the software kicks in.

Below is a screenshot of the program, the NBA Scheduler, used by the league that assists Carelli and his team to concoct an analytically efficient schedule.




As shown on the screenshot, the league imposes certain more strict constraints, or requirements, when planning a team’s 82-game schedule. And the constraint differs from team to team due to different geographical relations, market size, and other special requests, etc. That in mind, the Portland Trail Blazers, who are the northwesterly team, will always average much more travel distance than the other 29 teams. As a result, geography can present an obstacle when scheduling NBA games because the Trail Blazers value day offs more than any other teams in the league.

Constraints vary between teams. Below are some of the more advanced constraints when creating a schedule:


  1. Prevent a team from playing two different conference teams in two days
  2. Prevent a team from playing the same opponent in the same home court two times in a row
  3. Force a team to play more than one non-conference team when crossing more than two time zones


And from there, more constraints can be added the the NBA Scheduler as the NBA branches the constraints into three main categories: 1) business constraints, 2) structural constraints, and 3) travel constraints. And each constraint is assigned to a penalty point on a scale 0 to 9,999, with 9,999 obviously being the highest. The higher the penalty point is, the less likely the scheduling system will violate. Through this program, users are able to make a list of constraints while changing the days (number of days, weekdays, weekends, holidays), arena (home or away), time period (from a specific date to another specific date, or any given time stretch), teams (selected teams or all teams), and time zones. Along with the assigned penalty point and the conditional operators, (such as or, and, all, either, etc.) the user then can feed all the information to the NBA Scheduler and the it, in return, will systematically generate an analytically designed scheme that accommodates all the specific requirements for further examination and review.

As shown on the screenshot, preventing a team from playing the same opponent in the same arena in seven days is awarded the highest penalty point (9,999) because it does not make sense to play the same opponent twice in the same building since it’s going to hurt the business and TV views. Similarly, preventing all teams from playing games over a two day period is awarded a measly 10 penalty points because back to back games aren’t viewed as detrimental (from a business and structural perspective) as other constraints. This also explains why playing four games in five days is assigned to 100 penalty points because the league (in their defense) affirms that decreasing the number of games played over a short amount of time, without shortening the number of games played in a season, is the best way to prevent injuries and maintain good game quality and its TV viewership with teams’ star players healthy and playing. Do keep in mind that a constraint with 100 penalty points is difficult to violate so it is extremely impossible for the system to violate a constraint with 9,999 penalty points. So far, the NBA has kept its promise by putting together a user-friendly schedule for the upcoming season that only features 14.4 back to back games per team and zero four games in five nights.

It’s also good to keep in mind that 82 games are played in 169 days — which means each team plays every other day or three and a half games per week. In a game of opportunity cost, this shows that whenever a team has a two day break there is going to be back to back games scheduled somewhere later in the season. And if the NBA knows the team will be at home for the weekend and can’t travel far and any nearby teams are all away, but the team’s home arena isn’t available for both Saturday and Sunday because it has events, say, an Ed Sheeran concert and a hockey game, then that means there’s another back to back somewhere in the future.

With the challenging task of creating fewer back to back games, the NBA purposely schedules more games in the weekends and tactfully move some attractive games to Thursday nights because TNT has two broadcast windows usually at 7pm and 10pm EST and ABC broadcasts on Sunday afternoon. Doing so helps the league to satisfy national TV windows since national TVs historically have limited slate of games (note: not to confuse national TV with local TV such as MSG network). More importantly, scheduling marquee matchups on Thursdays and Sundays can also spread out the density of the games. For instance, if two matchups are played on each Thursday and Sunday and are broadcast nationally, that means the majority of the teams will be playing their three and a half games over a period of five days instead of seven days, which will lead to back to backs. Despite that, doing so can gain a better sense of which teams can get a day off on certain days of the week, and having pre-calculated day offs enables the league to juggle different teams and have them to be featured on a Thursday or Sunday game as the season progresses — which will benefit the TV partner as more attractive matchups emerges as the season progresses.

To add on, certain teams have different markets, and in an effort to fulfill their market needs, the league will also intentionally schedule more or fewer home games in the weekend for those teams. A quintessential example is the Utah Jazz. The NBA never schedules a Sunday home game in Utah because Sundays are never a good market for the Jazz due to its high population of members of The Church of Jesus Christ of Latter-day Saints. Below is a breakdown of all the Sunday games for the past five years.




Mega market teams are the six teams located in five of the biggest markets in the US. They are different from big market teams. These five super big market cities are Los Angeles (two teams), New York, Boston, Philadelphia, and Chicago. Note how these teams play way more Sunday games at home than they do away. Interestingly, not only the Jazz have the fewest Sunday games, they play those games away and haven’t played a Sunday home game in 16 years! The last time the Jazz played at home on a Sunday evening was on January 21st, 2001, when they beat the Phoenix Suns 109-98.

To sum up, with a high focus on player wellness and game quality, the NBA has incorporated analytics on constructing its season schedules that feature 1,230 games in 169 days with its end goal of delivering the best product to the fans while keeping bankable star players healthy. The agenda of such approach is to maximize profit and minimize costs — meaning to reduce the density of games and fatigue while striking a good parity of television deals, local market considerations, and adequate rest in order to maintain its competitive balance. As a result, business, structural, and travel considerations are all factored into creating a feasible schedule for the sake of business efficiency that is ultimately backed by analytics.



— J.H. Yeh



(all tables are created by me, and all sources of stats are courtesy of,  42 Analytics, and SSAC as of August 18, 2017; the screenshot image is captured from SSAC)


%d bloggers like this: