They play football in Texas too

Let’s test the portability of the “virtual conference” API. I added a canned dictionary of Texas teams to the python executable.

Inside the API code I also added the final tiebreaker, total margin. As identified last week this was technically in the rules but never came up in the California runs so far. This code is starting to get a little stretched out. We could probably refactor the margin check for a given team into a common function that could be used by “common opponent margin” tiebreaker “total margin” tiebreaker.

So how does the code perform and are the results interesting? First let’s cherry-pick the verbose run from 1996 where we can see a test of that final tiebreaker:

North Texas 0 at Texas A&M 55 on Sep 20, 1996
Baylor 24 at Texas Tech 45 on Oct 04, 1996
UTEP 0 at TCU 18 on Oct 11, 1996
SMU 17 at Rice 35 on Oct 18, 1996
Texas Tech 13 at Texas A&M 10 on Oct 25, 1996
Rice 48 at UTEP 21 on Oct 25, 1996
Baylor 23 at Texas 28 on Nov 01, 1996
Texas 38 at Texas Tech 32 on Nov 08, 1996
SMU 30 at UTEP 0 on Nov 08, 1996
Texas A&M 24 at Baylor 7 on Nov 08, 1996
Rice 30 at TCU 17 on Nov 15, 1996
TCU 24 at SMU 27 on Nov 20, 1996
Texas A&M 15 at Texas 51 on Nov 28, 1996

looks like a tie for the cup
head to head didn't resolve anything
oppo check for Rice and Texas
common opponent margin didn't resolve anything
1996 final standings

Rice                    3-0
Texas                   3-0
Texas Tech              2-1
SMU                     2-1
Texas A&M               2-2
TCU                     1-2
North Texas             0-1
UTEP                    0-3
Baylor                  0-3

1996, 13, Rice, 3-0

Rice was good? Rice beat TCU? This was actually the start of a three-game win streak Rice put together against TCU in the 90s. This season exemplifies a problem in the Texas dataset in that the lower tier teams don’t cross-schedule the top teams as much as in California. Rice and Texas both managed to go 3-0 with no common opponents. Rice’s total margin was 58 and Texas managed 47, so the win goes to Rice. 1996 Texas was a good team that ended up ranked 23 and upset Nebraska in the Big 12 Championship, but for a Texas-only cup I don’t see this result as too terrible.

Here’s a run from 1970 on with just results:

1970, 21, Texas, 6-0
1971, 22, Texas, 6-0
1972, 22, Texas, 6-0
1973, 22, Texas, 6-0
1974, 23, Baylor, 5-1
1975, 24, Texas A&M, 6-0
1976, 30, Houston, 7-0
1977, 30, Texas, 7-0
1978, 30, Houston, 6-1
1979, 30, Texas, 6-1
1980, 32, Baylor, 7-0
1981, 30, Texas, 7-0
1982, 31, SMU, 9-0
1983, 29, Texas, 7-0
1984, 29, Houston, 6-1
1985, 29, Baylor, 6-1
1986, 28, Texas A&M, 7-0
1987, 21, Texas A&M, 5-1
1988, 21, Texas A&M, 6-0
1989, 28, Texas A&M, 6-1
1990, 28, Texas, 7-0
1991, 29, Texas A&M, 7-0
1992, 28, Texas A&M, 7-0
1993, 28, Texas A&M, 7-0
1994, 28, Texas A&M, 6-0
1995, 28, Texas, 7-0
1996, 13, Rice, 3-0
1997, 15, Texas Tech, 3-1
1998, 14, Texas Tech, 4-1
1999, 17, Texas, 3-1
2000, 18, Texas, 4-0
2001, 15, Texas, 4-0
2002, 16, Texas Tech, 4-0
2003, 16, Texas, 4-0
2004, 17, Texas, 5-0
2005, 16, Texas, 4-0
2006, 19, Houston, 3-0
2007, 21, Houston, 3-0
2008, 17, Texas Tech, 4-0
2009, 16, Texas, 4-0
2010, 19, Texas A&M, 3-0
2011, 18, Houston, 4-0
2012, 20, Rice, 3-1
2013, 21, Texas A&M, 3-0
2014, 21, Baylor, 4-0
2015, 20, TCU, 4-0
2016, 20, TCU, 3-1
2017, 19, TCU, 4-0
2018, 19, North Texas, 4-0
2019, 23, Baylor, 5-0
2020, 14, UT San Antonio, 3-0

Pretty nice. Lots of diversity, UT glory years are represented as expected, Rice actually gets another title in 2012. More A&M than I would have thought. Before going further take a look at the jaw-dropping 9-0 SMU put up in 1982. Here’s the verbose run:

North Texas 17 at Baylor 21 on Sep 03, 1982
SMU 31 at UTEP 10 on Sep 17, 1982
Baylor 24 at Texas Tech 23 on Sep 24, 1982
TCU 13 at SMU 16 on Sep 24, 1982
Texas Tech 24 at Texas A&M 15 on Oct 01, 1982
Baylor 21 at Houston 21 on Oct 01, 1982
North Texas 10 at SMU 38 on Oct 01, 1982
Texas 34 at Rice 7 on Oct 01, 1982
Rice 16 at TCU 24 on Oct 08, 1982
SMU 22 at Baylor 19 on Oct 08, 1982
Texas A&M 20 at Houston 24 on Oct 08, 1982
Baylor 23 at Texas A&M 28 on Oct 15, 1982
Houston 14 at SMU 20 on Oct 15, 1982
Texas Tech 23 at Rice 21 on Oct 15, 1982
Baylor 14 at TCU 38 on Oct 22, 1982
SMU 30 at Texas 17 on Oct 22, 1982
Rice 7 at Texas A&M 49 on Oct 22, 1982
Texas 27 at Texas Tech 0 on Oct 29, 1982
TCU 27 at Houston 31 on Oct 29, 1982
Texas A&M 9 at SMU 47 on Oct 29, 1982
Texas Tech 16 at TCU 14 on Nov 05, 1982
Houston 0 at Texas 50 on Nov 05, 1982
SMU 41 at Rice 14 on Nov 05, 1982
Texas 38 at TCU 21 on Nov 12, 1982
SMU 34 at Texas Tech 27 on Nov 12, 1982
Baylor 35 at Rice 13 on Nov 12, 1982
TCU 14 at Texas A&M 34 on Nov 19, 1982
Houston 24 at Texas Tech 7 on Nov 19, 1982
Texas 31 at Baylor 23 on Nov 19, 1982
Texas A&M 16 at Texas 53 on Nov 24, 1982
Rice 21 at Houston 28 on Nov 26, 1982

1982 final standings

SMU                     9-0
Texas                   6-1
Houston                 4-2-1
Texas Tech              3-4
Texas A&M               3-4
Baylor                  3-4-1
TCU                     2-5
UTEP                    0-1
North Texas             0-2
Rice                    0-7

1982, 31, SMU, 9-0

31 total games. SMU’s schedule is quite a document. Of their 11 regular season games 9 were against Texas teams. The other two were against neighboring state schools Tulane and Arkansas. They actually played those two teams at home, so every single one of their regular season games was in the state of Texas. And as the SWC champ they ended their season in the Cotton Bowl, seven miles from their campus. They finished ranked number two, so the all-Texas strategy worked. It used to be a more regional game. (It also helps that the old SWC was basically a Texas conference.) There are some incredible intra-California 80s schedules that we will get to later but I doubt anything like SMU’s 82 season has been equalled before or since. (Something to put on the board that we can answer with code later on.)

(Update: I should have bit my tongue and looked around the early 80s SWC a little more because there are at least three more never-left-Texas teams: 1980 and 1982 Texas as well as 1983 A&M! Although those teams did find opponents from farther away than just over the state line.)

Now the problems. The tiebreak messages still print to stderr so we can identify when the funky parts of the code are getting hit. Here’s the verbose run for 2013:

Texas Tech 41 at SMU 23 on Aug 30, 2013
Rice 31 at Texas A&M 52 on Aug 31, 2013
TCU 10 at Texas Tech 20 on Sep 12, 2013
Houston 31 at Rice 26 on Sep 21, 2013
SMU 13 at Texas A&M 42 on Sep 21, 2013
Texas State 7 at Texas Tech 33 on Sep 21, 2013
UT San Antonio 32 at UTEP 13 on Sep 21, 2013
SMU 17 at TCU 48 on Sep 28, 2013
Houston 59 at UT San Antonio 28 on Sep 28, 2013
Rice 27 at UT San Antonio 21 on Oct 12, 2013
UTEP 7 at Rice 45 on Oct 26, 2013
Texas 30 at TCU 7 on Oct 26, 2013
Rice 16 at North Texas 28 on Oct 31, 2013
UTEP 7 at Texas A&M 57 on Nov 02, 2013
UTEP 7 at North Texas 41 on Nov 09, 2013
Texas Tech 34 at Baylor 63 on Nov 16, 2013
UT San Antonio 21 at North Texas 13 on Nov 23, 2013
Texas Tech 16 at Texas 41 on Nov 28, 2013
SMU 0 at Houston 34 on Nov 29, 2013
Baylor 41 at TCU 38 on Nov 30, 2013
Texas 10 at Baylor 30 on Dec 07, 2013

looks like a tie for the cup
head to head didn't resolve anything
oppo check for Baylor and Texas A&M
common opponent margin didn't resolve anything
2013 final standings

Texas A&M               3-0
Baylor                  3-0
Houston                 3-0
North Texas             2-1
Texas                   2-1
Texas Tech              3-2
UT San Antonio          2-2
Rice                    2-3
TCU                     1-3
Texas State             0-1
UTEP                    0-4
SMU                     0-4

2013, 21, Texas A&M, 3-0

We get into total margin tiebreak for A&M and Baylor but the problem is that Houston also went 3-0. The tiebreaker system only really works pitting one team against another. More specifically, there’s a weakness in the code in that tiebreakers only check the first two entrants in the raw ordered standings and then run through tiebreakers against them. There’s also a general weakness in the virtual conference concept in that if you collect teams that are uncorrelated eventually you can have multiple teams at the top with identical records that didn’t play in each other’s universe.

The most pragmatic solution is probably to make the code recursively check if there are more than two teams with identical standings scores at the top and then apply the tiebreakers to each dyad and attempt to arbitrate that way. There is a deeper solution, though, which is to score the resultset as being sufficiently “entangled” enough to produce a meaningful virtual conference. Imagine a torture test where you just glued together the sets of two conferences that didn’t play each other at all. There would still be virtual results from all the intra-conference play of the two conferences, but it would be isolated in two pools and no doubt identical records would often float to the top.

Our platonic ideal code would have some threshold for sanity where it could declare no winner in cases where multiple winners are not sufficiently connected enough to tiebreak between them. (But then again if gross margin is good enough to tiebreak between two teams, why not between three? Earlier I was happy enough when gross margin broke the 1996 two-way tie.)

For now, “handle more than two teams in tiebreaker” is our bug. We’ll start with the gory coding details of fully enumerating and arbitrating top-n dyads and we’ll punt the full solution down the road after the mist clears on that implementation issue.