Simulating 2023

Avant-garde illustration in data science trade magazine entitled “Simulating the 2023 College Football Season” (MidJourney v5)

The schedules are up in College Football Data so let’s run it:

$ python3 ./  -v
San José State at USC on Aug 25, 2023
UCLA at San Diego State on Sep 08, 2023
Stanford at USC on Sep 08, 2023
UCLA at Stanford on Oct 20, 2023
USC at California on Oct 27, 2023
Fresno State at San José State on Nov 10, 2023
San Diego State at San José State on Nov 17, 2023
California at Stanford on Nov 17, 2023
UCLA at USC on Nov 17, 2023
Fresno State at San Diego State on Nov 24, 2023
California at UCLA on Nov 24, 2023

Full Enumeration Simulation:
USC 332 [16%]
UCLA 332 [16%]
Fresno State 320 [15%]
California 216 [10%]
Stanford 216 [10%]
San Diego State 204 [9%]
San José State 204 [9%]
No Winner 224 [10%]

Monte Carlo [Sampled Home Margin Predictor] Simulation:
USC 1843 [18%]
UCLA 1482 [14%]
Stanford 1369 [13%]
San José State 1363 [13%]
Fresno State 1351 [13%]
San Diego State 1246 [12%]
California 1182 [11%]
No Winner 164 [1%]

Monte Carlo [Elo Predictor] Simulation:
USC 5077 [50%]
UCLA 2374 [23%]
Fresno State 2129 [21%]
San Diego State 180 [1%]
California 153 [1%]
San José State 75 [0%]
Stanford 12 [0%]

There are no standings, possibly because no games were completed.
2023, 11, ,

One note is that the Elo database doesn’t populate until there are games, so I’m using last year’s Elo values with this hack:

$ git diff
diff --git a/vconf/ b/vconf/
index 5c34e2d..8e56c26 100644
--- a/vconf/
+++ b/vconf/
@@ -7,7 +7,7 @@ import cfbd
 def get_cfbd_elo_dict(configuration):
     api_instance = cfbd.RatingsApi(cfbd.ApiClient(configuration))
     this_year =
-    api_response = api_instance.get_elo_ratings(year = this_year)
+    api_response = api_instance.get_elo_ratings(year = this_year - 1)
     retval = { }
     for entry in api_response:
         retval[] = entry

That looks about right. Just to review: “Full Enumeration” walks the entire possibility tree. It’s mostly useful to show who’s mathematically eliminated. Since no games have been played every win/lose outcome is theoretically possible. It’s not very helpful at this stage other than as a sanity check. “Monte Carlo [Sampled Home Margin Predictor]” plays out the season 10,000 times but simulates every game using sampled past real scores that are agnostic of team strength. It only reflects home field advantage real life. This can be helpful to get a sense of who’s home slate is particularly strong and provide a grain of salt against over-confident Elos. The fact that USC looks good in this is a bad sign for the rest of the teams since USC is probably still a very strong team. “Monte Carlo [Elo Predictor]” goes all the way by playing the season 10,000 times and predicting each game with the Elo formula but also adding our observed bifurcated home field advantage: higher HFA for non-conference games. (See exhaustive discussion here.) Since USC ended their year on a nice run to a top-10 ranking their Elo is quite strong but there’s no real reason to believe it will have fallen drastically. All three Bay Area teams combined have a 2.4% chance of winning. And that seems optimistic. Ouch.

(I just noticed a dumb bug: the scoreboard printer is using integer division for the percent win calculations. It should be rounding. Fixed with this diff. USC 51% now.)

This might be the last year for a while we get all four Pac-12 teams playing each other. It would be nice if UCLA could get it together for their last hurrah. As far as I can tell there are no conference schedules for 2024 released yet. Since the two LA schools will join the Big Ten, the worst case scenario is no intra-California games beyond a schedule Fresno State – UCLA, Stanford-Cal, and whatever the Mountain West does. Will the Mythical California Cup have to fade away for lack of games? Sad but I guess the deathwatch is on.

For what’s on the board this fall, San Jose State has the chance to be spoiler with games against both USC and Fresno State. If they can pull off the massive upset early that will unhinge things nicely.

The above illustration is from the newly released MidJourney v5. When I first subscribed to MJ in August I posted with some illustration attempts at Fresno State’s 2021 title. Just for reference here’s the best N. C. Wyeth bulldog painting from then:

“bulldogs guarding a cup by N.C. Wyeth” by MidJourney v3, August 2022.

Here’s what came out yesterday in v5, albeit with a little more wordy prompt:

Two bulldogs are guarding a golden cup in a scene with legendary echoes. Painting by N. C. Wyeth from a children’s chapter book of the 1910s. (MidJourney v5, March 2023.)

Looks like AI has solved the bulldog problem.