NBA 2K25: MyNBA

Dated Aug 31, 2024; last modified on Sun, 15 Dec 2024

MyNBA is my favorite playing mode in NBA 2K. Starting out as the GM of the Seattle Supersonics in 1983, how well can I steer the franchise?

Playing all 82 games per season would need \(82 \text{ games/season} \times 41 \text{ seasons} \times 20 \text{ min/game} \approx 47 \text{ days}\) to catch up to today’s NBA and that’s not accounting for the playoffs. Simulating games is the way to go; might help improve my understanding of the game.

Reading the Stats

Unlike the real NBA, MyNBA is a software program that runs on deterministic rules. While I can’t control the outcome of each game as there is pseudo-randomness, it should be possible to intentionally win titles over the course of a couple seasons.

is an undergrad senior project that tested 6 models (logistic regression, random forest, k-neighbors, support vector, gaussian naïve bayes, and XGBoost), and arrived at gaussian naïve bayes as the best performing one at \(65.1\%\) accuracy.

ranked teams in various stats and used the differentials to infer which stats are more predictive of wins: offensive rating (estimated number of points scored per 100 possessions), defensive rating (estimated number of points conceded per 100 possessions), rebounds, 3pt percentage, field goal percentage, assist/turnover ratio, 3pt attempts, field goal attempts, and finally pace of play.

’s logistic regression model claims \(70.37\%\) accuracy. It uses z-score or standard score (the number of standard deviations by which a data point is above or below the mean) .

Initially, used Elo ratings that depend on the final score of the game and home-court advantage, and carry over between games, giving a measure of “form” . However, Elo ratings are slow to pick up roster changes (e.g., injuries and trades), and so augmented the prediction pipeline with talent ratings for each player weighted by the projected playing time.

In NBA 2K simulations, highly-rated players turn out on top, e.g., Jordan eventually dominates the league. However, analyzing player stats over time has a lot of manual data entry work which isn’t that fun. 2K provides a box score that has several stats: PTS, FGM/FGA, 3PTM/3PTA, FTM/FTA, FAST_BREAK_PTS, PAINT_PTS, SECOND_CHANCE_PTS, BENCH_PTS, AST, OREB, DREB, STL, BLK, TO, BIGGEST_LEAD, and POSSESSION. Can these stats approximate the underlying player-dominated simulation to help win games more often than not?

What stats should I use? It seems that it should mostly be differentials:

  • PTS differential is the attribute that I’m trying to predict.
  • How do I treat FGM and FGA? considers FGM/FGA vs. FGA. A FGA differential being significant would tell me if my team needs to shoot more shots, as FG% is more or less the same between teams. A significant FGM differential tells me that I should focus on inside shots for my team. A significant FG% would tell me that I need more quality shots, and not necessarily volume. Will have all 3 differentials in the dataset. Same reasoning applies for differentials in 3pt shots and free-throws.
  • Differentials for FAST_BREAK_PTS, PAINT_PTS, SECOND_CHANCE_PTS, BENCH_PTS, OREB, DREB, STL, and BLK seem straightforward to include in the dataset.
  • AST:TO is frequently used in place of just AST or TO. There is some criticism that AST:TO is flawed because not all TO occur when trying to get an assist. Will use all 3 differentials to see if any is more predictive than the others.
  • While BIGGEST_LEAD might turn out predictive, it’s not actionable for me as a team GM.
  • Maybe POSSESSION can be used to compute proxies for for OFF_RATING and DEF_RATING, which found predictive?
  • FATIGUE can be approximated by counting the days since the previous game. I don’t think 2K takes geographical distance into account for fatigue; I’ve had CLE and PHX games back-to-back, which would be brutal in the real world.

Using scikit.linear_model’s BayesianRidge regression model to identify coefficients for the various stats, which should help me focus my team’s focus while on a budget.

The Road So Far

Went 6-5 in the 1986-87 season.

Coefficients for the 1986-1987 season
FeatureCoefficient
1PAINT_PTS1.8149
23PTA-1.7272
3OFFENSIVE_RATING1.5864
4FGM_PER_FGA1.4986
5DEFENSIVE_RATING-1.4942
6FGM1.4364
7DEF_REB1.3849
8FAST_BREAK_PTS1.3170
9SECOND_CHANCE_PTS1.2708
10BLK1.2390
11BIGGEST_LEAD1.2381
12TEAM_FOULS-1.1239
13OFF_REB-1.1225
14OPP_BIGGEST_LEAD-1.1004
15ASSISTS0.8605
16TO-0.8133
17IS_HOME0.7866
183PTM_PER_3PTA0.6460
19FTM0.5923
203PTM-0.5755
21ASSISTS_PER_TO0.4268
22FTM_PER_FTA0.4128
23FTA0.3483
24DAYS_SINCE_LAST_GAME-0.3399
25FGA-0.0543
26BENCH_PTS-0.0492
27STL0.0214

PAINT_PTS is my strongest predictor, probably because CLE CUT 2 LOOP SWING is my money play: Jack Sikma (C) sets good screens, and either Tom Chambers (PF) or Xavier McDaniel (SF) come flying in for the alley-oop. 3PTA being the next predictor for losses is a symptom of me trying to shoot my way out of an impending loss, and evidently, it seldom works. OFFENSIVE_RATING and DEFENSIVE_RATING being 3rd and 5th support ’s findings but not sure how to make them actionable. FGM_PER_FGA being 4th while FGM being 6th implies that accuracy matters more than volume; or maybe that teams have similar number of attempts and thus my pace is fine but the shot selection needs to be smarter.

Tips and Tricks

Trade Finder is great for shedding long-term bad contracts and getting 1st round picks in exchange for role players. Trade Finder honors cap rules, no trade clauses, untouchables. For stars, you’re better off proposing a trade yourself.

Draft classes are not 100% accurate. Other than some top players that 2K has rights to, the rest of the class is auto-generated. Community-generated draft classes bridge that gap.

There was once a bug that at the end of the regular season, all 1st round picks were of equal value. Trading picks with the bottom few teams would be disproportionately rewarding. No longer possible because the trade deadline is in Jan, 4 months before the end of the season.

My Legends Over the Years

Who are the players that I’ve been using over my tenure of the Sonics?

Point Guards

Gus “The Wizard” Williams was famous for acrobatic layups, short snappy jumpers and behind-the-back passes. His #1 jersey was retired. He was my starting PG for a with All-Star appearances in ‘85, ‘86, and ‘87. In 1989, he’s an 85 overall with the Heat. I forgot who I traded him for, but I needed more outside shooting from my PG.

Jon “Sunny” Sundvold was drafted #16 by the Sonics in ‘83. He peaked on the Spurs in 1986-87. He participated in the 3pt contest in ‘89 and ‘90. Unfortunately, he had a career-ending injury in ‘92. He was my starting PG after trading Gus Williams away.

Kevin ‘Franchise Junior’ Johnson was drafted #7 by the Cavs in ‘87, but didn’t lodge Mark Price from the starting PG spot. Mid-season, he was traded to the Suns, where he performed much better with more minutes, earning the 1988-89 Most Improved Player award. He was instrumental in reversing the Suns’ misfortunes, making the playoffs every year. Injuries hampered his effectiveness with Charles Barkley. His No. 7 was retired by the Suns. He served as the mayor of Sacramento from 2008 to 2016 with initiatives like volunteerism, K-8 arts programs, permanent housing, education reform, etc. He’s had allegations of sexual assault, harassment, misuse of grants, real estate property code violations. Compared to Sundvold, he has a stronger inside game including a driving dunk and more athleticism.

Never meet your starting point guard?

Shooting Guards

Fred “Downtown Freddie Brown” Brown was a 3pt menace and a Sonics lifer; his No. 32 was retired. He was the captain of the 1978-79 championship team. If only I’d have him retire with my Sonics as well.

David “Skywalker” Thompson was the #1 pick in 1975 and an All-Star in 1983. His career was interrupted by injuries and substance abuse, with a career-ending knee injury in ‘84. I didn’t know how to use him in the rotation, and I forgot who I traded him for. In 1989, he’s an 84 overall with the Pacers.

Gerald Wilkins was drafted #47 by the Knicks in ‘85, being the second-leading scorer after Patrick Ewing. Like his brother Dominique Wilkins, he participated in the ‘86 and ‘87 dunk contest. Played with Xavier McDaniel in ‘92 season. In Cleveland, he teamed up with Mark Price, Larry Nance, and Brad Daugherty, but the Cavaliers were swept by Jordan and the Bulls in ‘93. He was my #12 pick in ‘85 and he’s developed to an 86 overall in ‘89. He’s my most versatile offensive player.

Small Forwards

Xavier “X-Man” McDaniel was picked #4 in 1985 by the Sonics, finishing 2nd in Rookie of the Year balloting to Patrick Ewing. He, Dale Ellis, and Tom Chambers formed a trio of 20 PPG scorers. He was a physical player, even shaving his head and eyebrows to look more intimidating. His tenure at the Sonics ended in 1990-91 with a trade after a fist-fight with Dale Ellis. He was my #7 pick in ‘85 and he’s developed to a 91 overall in ‘89. He excels at everything except 3pt and FT shots. His driving dunk and posterizer badge makes him exciting.

Power Forwards

Tom Chambers played alongside Jack Sikma and Gus Williams, averaging 18.1 PPG and playing all 82 games. He was the MVP of the 1987 All-Star Game in Seattle. He accepted a pricey offer to the Suns, which Seattle declined to match. On the Suns, he teamed up with Kevin Johnson, and later Xavier McDaniel. With Charles Barkley joining the Suns in 1992-93, 33-year-old Chambers became a sixth man. He is one of two players (alongside Antawn Jamison) eligible for the HoF who have scored +20K points without being inducted. I find his playing style similar to Xavier McDaniel’s, albeit with the 97 layup replaced with the 95 standing dunk.

Centers

Jack Sikma was pioneer as one of the sharp-shooting big men, with a trademark reverse pivot and step back behind-the-head jumper, coined as the “Sikma move”. Once considered untouchable, he requested a trade from the Sonics in 1986 after missing the playoffs for two years. He’s in the HoF. He’s still on my team in ‘89 and the best player that I have. Need more plays to tap into his shooting.

No wonder the 2K commentators kept mentioning Sikma’s non-conventional shot! Do commentators also offer real-life commentary on players included in community-created draft classes?

1988-89 Sonics

Jack Sikma (91), Xavier McDaniel (91), Tom Chambers (88), Gerald Wilkins (86), Kevin Johnson (86), Jon Sundvold (85). McDaniel and Wilkins are both coming off their rookie contracts, and I might not be able to afford both of them in 1989-90. This team needs a championship before it’s financially infeasible. Got eliminated in the 1st round by the Kings led by Charles Barkley (18 PTS, 20 REB, 4 STL, 2 BLK) and Reggie Miller; MJ ended up leading the Clippers to a chip.

Maintained the team through the 1989-90 season, and won a chip with them. Should I make some trades in 1990-91? The team’s salary is $13.6M, which is $1.72M above the salary cap. All 6 stars have 3+ bird years, so I can resign them above the salary cap, with luxury tax kicking in at $14.43M. Sundvold and Johnson both play the PG, and if it comes down to it, I can trade Sundvold because Johnson has a higher ceiling. Paying the luxury tax will be hard because the last 7 of 8 seasons have ended with a net financial loss.

Major sources of revenue are advertising, media, gate, and playoffs. Playing fewer games (less than 10 in-season games and best-of-1 playoffs), while paying players the same amount of money is not a winning combination. The Sonics Governor is mostly interested in winning, so not much risk of getting fired for running losses.

Target draft picks:

  • ‘90: Gary Payton
  • ‘91: Dikembe Mutombo
  • ‘92: Shaquille O’Neal; Alonzo Mourning
  • ‘93: Chris Webber; Penny Hardaway; Bruce Bowen (undrafted)
  • ‘94: Glenn Robinson (SF); Jason Kidd (PG); Grant Hill (SF)
  • ‘95: Kevin Garnett (PF); Jerry Stackhouse (SF); Rasheed Wallace (PF)
  • ‘96: Kobe Bryant (SG); Allen Iverson (PG); Steve Nash (PG); Ray Allen (SG); Stephon Marbury (G); Peja Stojakovic (F); Jermaine O’Neal (F); Ben Wallace (C, undrafted)
  • ‘97: Tim Duncan (PF); Tracy McGrady (SG); Chauncey Billups (PG)
  • ‘98: Vince Carter (SF); Dirk Nowitzki (PF); Paul Pierce (SF)
  • ‘99: Baron Davis (PG)
  • ‘00: Jamal Crawford (SG)
  • ‘01: Pau Gasol (PF); Tyson Chandler (C); Joe Johnson (SG); Tony Parker (PG); Zach Randolph (PF); Gilbert Arenas (PG)
  • ‘02: Yao Ming (C); Amar’e Stoudemire (PF)
  • ‘03: LeBron James (SF); Carmelo Anthony (SF); Dwyane Wade (SG); Chris Bosh (PF)

References

  1. Predicting the Outcome of NBA. Mathew Houde. digitalcommons.bryant.edu . Accessed Sep 7, 2024.
  2. Which NBA Statistics Actually Translate to Wins? Chinmay Vaidya. www.watchstadium.com . Accessed Sep 7, 2024.
  3. JakeKandell/NBA-Predict: Predicts Daily NBA Games Using a Logistic Regression Model. Jake Kandell; Patrick McDonagh. github.com . Accessed Sep 7, 2024.
  4. Standard score - Wikipedia. en.wikipedia.org . Accessed Sep 7, 2024.
  5. How Our NBA Predictions Work | FiveThirtyEight. fivethirtyeight.com . Apr 12, 2023. Accessed Sep 7, 2024.
  6. How We Calculate NBA Elo Ratings | FiveThirtyEight. fivethirtyeight.com . Accessed Sep 7, 2024.
  7. Why don’t 90+ overall players appear in the trade finder in MyLeague? : NBA2k. www.reddit.com . Accessed Sep 2, 2024.
  8. InterestingAd5732 comments on How do i acquire the 1st overall pick in nba 2k23 mynba easily? www.reddit.com . Accessed Sep 2, 2024.
  9. 2K's Poor Draft Classes are game-breaking for MyNBA Eras. : NBA2k. www.reddit.com . Accessed Sep 2, 2024.
  10. Fred Brown. en.wikipedia.org . Accessed Nov 10, 2024.
  11. David 'Skywalker' Thompson. en.wikipedia.org . Accessed Nov 10, 2024.
  12. Gus Williams. en.wikipedia.org . web.archive.org . Accessed Nov 10, 2024.
  13. Jack Sikma. en.wikipedia.org . Accessed Nov 10, 2024.
  14. Xavier 'X-Man' McDaniel. en.wikipedia.org . Accessed Nov 10, 2024.
  15. Tom Chambers. en.wikipedia.org . Accessed Nov 10, 2024.
  16. Gerald Wilkins. en.wikipedia.org . Accessed Nov 10, 2024.
  17. Kevin Johnson. en.wikipedia.org . Accessed Nov 10, 2024.
  18. Jon Sundvold. en.wikipedia.org . Accessed Nov 10, 2024.