NBA SEASON 2019-20



Following the NBA’s suspension of games in March due to the coronavirus lockdown, the NBA Data Challenge has sadly now concluded early. 

Well done to all of our winners; we hope everyone enjoyed the competition, and make sure you follow us on Twitter for when we announce our next data challenge!


Welcome to the G-Research NBA Data Challenge! Each month we’ll be giving a prize out to the contestant who comes closest to predicting NBA scores, with a grand prize at the end of the season.

Getting Started

To get started, head over to our signup page at the registration page.

Entry format

We will ask you to provide a python function which makes predictions for upcoming games using past NBA data. For each game, your function will predict the points difference and total points scored. We will run your code on our servers each week to generate your weekly predictions. More details of the format of the python function can be found in the GitHub template repo.

UPDATE: The V3 data API is now available, with play-by-play data.

Key information:
  • Plays are available from the 2017 season onwards
  • There are 2.1 million plays available for you to work with
  • We will update the play-by-play data every week with the latest matches

You can obtain the updated libraries by running in your own repository.

For examples, please see:

Rules of the Competition

We’ll have a number of rules for the competition:

  • Use only the data provided. We will disqualify any submissions that use additional data sources. G-Research will regularly update the available data set with scores from this season, so you can continue to improve your model
  • Only models submitted through the above process will be evaluated. The final submitted function will need to be written in Python
  • You can edit your model and update your GitHub repository at any time, and change the Primary commit hash you submit as frequently as you like. There is a cutoff time before each round of testing, which will be 09:00 UTC every Monday
  • There will be monthly prize draws, and we will inform you when the dates and times for these are decided
  • Full terms and conditions can be found here


Here’s how we’ll be scoring your predictions. For each game, we give your predictions a single-game score using the following formula:

your_error = abs(actual_diff - predicted_diff) + abs(actual_sum - predicted_sum)
baseline_error = abs(actual_diff) + abs(actual_sum - 200)
single_game_score = baseline_error - your_error

The baseline error represents a very simplistic model which predicts 0 points difference and 200 total points for each game. Subtracting your error from the baseline error means that the better your prediction is, the higher your score will be. Your total score is then the sum of all your single game scores.


Each month we’ll be handing out 3 prizes to the top 3 closest predictors:

  • 1st place prize is a £1,500 cash prize
  • 2nd place prize is a £750 cash prize
  • 3rd place prize is a £250 cash prize

At the end of the season, during the play-off period we’ll be giving out 3 grand prizes to the top 3 closest predictors:

  • 1st place prize is a £15,000 cash prize
  • 2nd place prize is a £3,000 cash prize
  • 3rd place prize is a £2,000 cash prize

The months and prize announcements will run as follows:



Deadline for submissions

Final game

1 (TEST)

9 Dec 2019

15 Dec


Month 1


Deadline for submissions

Final game

Round 2

16 Dec 2019

22 Dec

Round 3

23 Dec 2019

29 Dec

Round 4

30 Dec 2019

5 Jan 2020

Round 5

6 Jan 2020

12 Jan 2020

Round 6

13 Jan 2020

19 Jan 2020

Winner announced: Mon 20th Jan


Month 2



Final game

Round 7

20 Jan

26 Jan

Round 8

27 Jan

2 Feb

Round 9

3 Feb

9 Feb

Round 10

10 Feb

16 Feb

Winner announced: Mon 17th Feb


Month 3



Final game

Round 11

17 Feb

23 Feb

Round 12

24 Feb

1 Mar

Round 13

2 Mar

8 Mar

Round 14

9 Mar

15 Mar

Winners announced: Mon 16th Mar


Month 4



Final game

Round 15

16 Mar

22 Mar

Round 16

23 Mar

29 Mar

Round 17

30 Mar

5 April

Round 18

6 April

15 April

Winner announced: Thurs 16th April


Details coming soon