Category Archives: Research

Why the House won’t Decide 2024

Recently, I’ve encountered a new source of election anxiety from several distinct quarters. The fear is that one or more third party or independent candidates will “spoil” the 2024 Presidential election, but not in the usual way. Concern about spoilers ordinarily centers around their potential to draw votes from viable candidates and tip the balance in favor of one or the other major party. This fear is especially pronounced in Democratic circles, where Ralph Nader’s disastrous 2008 run remains a painful memory. Apprehension over such a scenario grows with every hint dropped by various independents and party apostates as they conspicuously toy with possible candidacies. However, we’re still almost a year from the 2024 presidential election. It is impossible to foresee which pretenders will actually declare their candidacies and which party (if either) could benefit from these, mitigating such concerns at this early stage.

Fortunately, there’s a new flavor of neurosis to take up the slack. It stems from an altogether different concern, one unique to Democrats this time. The fear is that the House of Representatives will end up deciding the outcome of the 2024 election.

To understand how this can happen, we must distinguish between a “plurality” and a “majority” of votes. A majority means that a candidate has received over half of the total votes, while a plurality means they simply received more votes than any other individual candidate. Put another way, a majority requires more votes than all other candidates combined and a plurality requires only the most votes of any single candidate. Obviously, a majority implies a plurality.

Consider an example in which 100 people vote for three candidates: A, B, and C. If the breakdown of votes is 20-39-41, then candidate C has a plurality but not a majority. On the other hand if the breakdown is 20-60-20, then candidate B has a majority (and a plurality).

Now, let us return to the 2024 presidential election. I must beg your indulgence here. I’ll be intentionally vague for the moment, because this vagueness pertains to the source of confusion. If you spot the flaw, please be patient. If not, don’t worry — I will explain it shortly.

The U.S. constitution requires a majority — not a plurality — for a candidate to win. What if no candidate receives a majority of votes? The 12th amendment (ratified in 1804) specifically addresses this eventuality. It instructs that the House of Representatives must then decide the winner from among (at most) the top three candidates. Unlike an ordinary vote of the House, each state (rather than each representative) gets a single vote.

Aside: Nowhere does the constitution (including the 12th amendment) address the question of how each state’s representatives collectively determine its single vote. Most likely, the authors of the amendment assumed this would be done via a vote of the relevant representatives (though it is easy to see that a tie could arise, and the same question of plurality vs majority would apply in this microcosm as well) or via some prescription in each state’s constitution. The exact mechanism is irrelevant to our argument, though (in principle) it could make a difference if such a vote actually took place.

In the event of such a House vote, the math is unnerving for Democrats. The House currently consists of 222 Republicans and 213 Democrats, but this is not what matters. A quick glance at its current makeup (https://www.house.gov/representatives) shows that there are 26 states with a majority of Republican representatives, 22 states with a majority of Democratic representatives, and 2 states that are evenly split. There also are 6 non-state regions which have representatives in Congress. Presumably these would not participate in the special House vote, but if they did it would not matter since each side boasts 3. Here is the exact breakdown:

  • (Republican states): Alabama, Arizona, Arkansas, Florida, Georgia, Idaho, Indiana, Iowa, Kansas, Kentucky, Louisiana, Mississippi, Missouri, Montana, Nebraska, North Dakota, Ohio, Oklahoma, South Carolina, South Dakota, Tennessee, Texas, Utah, West Virginia, Wisconsin, and Wyoming.
  • (Republican non-states): American Samoa, Guam, and Puerto Rico.
  • (Democratic states): Alaska, California, Colorado, Connecticut, Delaware, Hawaii, Illinois, Maine, Maryland, Massachusetts, Michigan, Nevada, New Hampshire, New Jersey, New Mexico, New York, Oregon, Pennsylvania, Rhode Island, Vermont, Virginia, and Washington.
  • (Democratic non-states): District of Columbia, Northern Mariana Islands, and Virgin Islands.
  • (Evenly-split states): Minnesota and North Carolina.

Supposing that states with Republican or Democratic majorities in the House would vote along party lines, the Republicans would win the vote (even if the the split-states voted for the Democrats). I’ve heard numerous laments about the unfairness of this recently — almost as if it is a foregone conclusion — which leads me to suspect it is a talking point on some popular news outlets or websites. Be that as it may, there is a key flaw in this argument.

The fallacy is hinted at in my vagueness — intentionally mirroring the confusion in those who promulgate this complaint. I used the terms “majority” and “plurality” without specifying of what votes. We do not live in a direct democracy. We have an electoral college. The House decides the election only if no candidate obtains a majority of electoral votes, not a majority of popular votes. Consider the electoral gap between the winning and losing parties (i.e. the electoral votes of the winning party minus those of the losing party). Since 1900, in only 7 elections has this gap been less than 100 electoral votes — even when the popular vote was quite close. In only 2 was it under 50 electoral votes, and only one of those was in the last 100 years (this was the highly-controversial election of 2008, featuring G.W. Bush vs Gore). Even in the hotly-contested 2016 and 2020 elections, the gap was over 70. We therefore see that — even in cases where the popular vote is quite close — the electoral gap tends to be much larger. There are two reasons for this: (1) most states employ a winner-takes-all approach to electoral allocation and (2) the block of electoral votes varies in size per state. The number of electoral votes for a state is the number of senators (i.e. two) plus the number of representatives for that state. We’ll refer to these as “senatorial” and “house” electoral votes, though they are cast by the state’s designated electors rather than its senators and representatives.

Let’s assume that electors always vote for the candidate (or party) who picks them. There are some subtleties involving the ability of electors to exercise their own discretion, but de facto we have an established two-party system in which electors do not exhibit autonomy. Many states codify this explicitly.

Only two states (Nebraska and Maine) currently allocate electors proportionately to the votes received by various candidates. Technically, they allocate the two “senatorial” electoral votes to the winner of a plurality and the remaining “house” electoral votes proportionately. Nebraska currently has 3 such “house” votes and Maine has 2. All others states use a winner-takes-all system. If a candidate wins a plurality, it receives all the electoral votes for such a state. For example, suppose a state is allocated 12 electors (2 “senatorial” votes and 10 “house” votes) and that the candidates (A, B, and C) receive 20-20-60 percent of the popular vote in that state. In a proportional voting state, candidates A and B would receive 2 electoral votes each and candidate C would receive 8 (6 plus the 2 senatorial ones), while in a winner-takes-all state, A and B would receive no electoral votes and C would get all 12.

In winner-takes-all states, presumably the winner is determined by plurality (as we assumed in our discussion above), but this is determined by the state constitutions. I’ll confess that I have not examined all 48 relevant (i.e. non-proportional) state constitutions and have no intention to do so. If a state requires a majority, then presumably that state’s constitution also dictates the relevant procedure for allocating electoral votes in the event of a failure to achieve one. It is hard to imagine that a winner-takes-all state would suddenly switch to proportional voting in such a situation. There may be a run-off between the top two candidates or (most likely) a winner-takes-all allocation based on plurality rather than majority. In such cases, the spoiler candidate would be at a disadvantage. For example, suppose our candidates (A, B, and C) receive 39-20-41 percent of the vote in such a state. It is possible that the state would allocate all its electoral votes to C or hold a run-off between A and C. In neither case, would B receive any electoral votes. Only if B won a plurality outright would it have a shot at the electoral votes — and in a run-off it still could lose.

We now can see why it is highly unlikely that the House will determine the outcome of the 2024 presidential election. Consider three candidates (A, B, and C) again, and suppose the national popular vote is 40-20-40 — a historically unparalleled performance by spoiler candidate B. This breakdown can arise in many different ways. For example, B could receive all of the vote in some states and none in others. In this case, they could indeed hand the election to the House. However, this would be an astonishing situation. In principle, it could arise if a highly-popular candidate B would have won a plurality in most states but could only get on the ballot in a few. However, that is an extremely unlikely scenario.

Suppose instead that we go to the other extreme, and the breakdown in every state is 39-20-41 or 41-20-39. In this case, candidate B may receive one electoral vote from Nebraska (though probably not) and no electoral votes from any other state. Unless, by chance, the unspoiled electoral gap between the two major parties would have been extremely small, one or the other still would obtain a majority of electoral votes.

Similar considerations apply to the vast majority of scenarios that fall between these two extremes, especially those which have any real likelihood of arising. In almost any situation in which the spoiler is indeed a spoiler (i.e. not the majority winner in their own right), the probability that they would win enough electoral votes to prevent either major party from achieving a majority is tiny. Assuming a third-party (or independent) candidate can overcome the myriad administrative and financial obstacles to appearing on the ballot everywhere, they still would have to win a plurality in either several small states or at least one big state to have any chance of “spoiling” the election in the manner described.

There is one farfetched, but mildly plausible, scenario in which a House vote may arise: if the “spoiler” candidate wins a plurality of electoral votes but not a majority. That could only happen if they are extraordinarily popular in quite a few states. In this case, the House would decide the election and would possibly (even probably) pick the Republican candidate. However, this is not written in stone. The representatives from the many states in which the spoiler candidate won would have to think long and hard about it. The House as a whole would be thwarting the will of the people, and those representatives in particular would be thwarting the will of the people who elected them back home. It would come down to some thorny election district calculations (unless higher principles prevailed, which seems unlikely given the type of people we have in Congress). In any event, the victim of the House vote wouldn’t be the Democrats, but rather the spoiler — or, more precisely, the plurality of Americans who voted for that candidate.

In summary, there is a reason that since 1824 (when we didn’t even have a two-party system) the House never has decided an election. The winner-take-all system most states employ and the varying block allocations of electoral votes to those states make it exceedingly unlikely that outside candidates (3rd party or independent) could prevent either the Democrats or the Republicans from obtaining a majority of electoral votes.

The House will not decide the 2024 presidential election. That fear simply is unfounded.

I Finally Got My Patent

Official Patent

My database patent finally has been granted after a long and expensive ordeal. While this is better than not having it granted after a long and expensive ordeal, it still was a truly pathetic reflection on the state of the American patent system. My perception (and, from what I can gather, that of most sensible individuals) is that the American intellectual property system as a whole is broken beyond repair and is one of the primary impediments to real innovation in this country. The system only serves large corporations with deep pockets and large teams of lawyers — and they mostly use it to troll smaller companies or build defensive portfolios to deter competitor lawsuits.

But enough about the sewage dump known as the US Patent system; my thoughts on it are unambiguously expressed here. Instead, this is a happy post about happy things. And what makes people happier than a stream database?

My patent is for a type of stream database that can be used to efficiently manage and scan messages, business transactions, stock data, news, or myriad other types of events. It is the database I wish I had when I was doing high-frequency statistical arbitrage on Wall Street, and which I subsequently developed and refined.

I’ll post a more detailed discussion of it shortly, but here is the basic gist. The idea is based on a sort of indexed multiply-linked-list structure. Ok, maybe that’s too basic a gist, so I’ll elaborate a little.

To use a common example from stock trading, we may wish to query something like the last quote before a trade in a stock. As an individual query, this is easy enough to accomplish in any type of database. However, doing it efficiently and in high volume becomes more challenging. Standard relational and object databases quickly prove unsuitable. Even stream databases prove inadequate. They either require scanning lots of irrelevant events to arrive at the desired one or waste lots of space through sparse storage and/or are constrained to data at fixed intervals. But real data doesn’t work that way. Some stocks have lots of trades and few quotes, others have few quotes and lots of trades. Events happen sporadically and often in clusters.

My approach is to employ a type of multiply-linked list. Each entry has a time stamp, a set of linkages, and a payload. In the stock example, an event would link to the previous and next events overall, the previous and next events in the same stock, and the previous and next events of the same type and stock (ex. quote in IBM or trade in Microsoft). To speed the initial query, an index points to events at periodic intervals in each stock.

For example, to find the last quote before the first trade in IBM after 3:15:08 PM on a given day, we would use the index hash to locate (in logarithmic time) the latest trade prior to 3:15PM in IBM. Then we would scan trades-in-IBM forward (linkage 3) until 3:15:08 to pick the latest. Then we would scan IBM backward (linkage 2) from that latest trade until we encounter a quote.

We also could simulate a trading strategy by playing back historical data in IBM (linkage 2) or all stock data (linkage 1) over some period. This could be done across stocks, for individual stocks, or based on other specific criteria. If there are types of events (example limitbooks) which we do not need for a specific application, they cost us no time since we simply scan the types we care about instead.

This description is vastly oversimplified, and there are other components to the patent as well (such as a flow manager). But more on these another time.

If you’re curious, the patent is US 11593357 B2, titled “Databases And Methods Of Storing, Retrieving, And Processing Data” (originally submitted in 2014). Since the new US Patent Search site is completely unuseable (and they don’t provide permalinks), I’ve attached the relevant document here.

Official Patent

The Most Important Problem in the World — Solved!

Toilet Seat Problem

Should the toilet seat be left up or down after use?   I decided to undertake a rigorous investigation of this critical issue.   Every woman I asked knew the answer: leave it down.  Every married man also knew the answer:  do what she says.   The truly domesticated men did one better:  leave the cover down too.  I stood in awe of their sheer servility.

Sadly, nobody seemed to feel any need to investigate further.   But, like Galileo, Einstein, Anthony Bourdain, and Stalin I was not  deterred by the disapproval of my peers.   In fact, it invigorated me.   Anything worth doing is worth doing wrong, I say.

Given a man and woman living together, the goal was simple:  introduce an unwanted technical innovation that was sure to drive the marriage apart.   Specifically, I sought a strategy which minimizes the average number of toilet seat flips per use of the bathroom, subject to the constraint that everyone sees the same average.

As with any straightforward problem I choose to examine, the universe immediately rewired its laws to require a lot of math.   Hence this important paper.  Too important for Nature, Science, or The Journal of Advanced Computational Potty Talk.   The only venue worthy of its publication is this very blog which, entirely by coincidence, I own.

Surprisingly, the result turns out to be neither trivial nor obvious.   It seems  the universe actually has something interesting to say about toilet seats and fairness, even if I do not.

Click on the link above or below to view the PDF paper.

Toilet Seat Problem

My Moral Metrics Paper Has Been Published!

The paper develops a geometry of moral systems with applications in social choice theory.

I submitted it last October, and it recently was accepted by AJEB (the Asian Journal of Economics and Banking) for publication in a forthcoming special issue on Social Choice.

As far as I’m aware, the print version will be issued in November. However, the paper is available online now. AJEB is an Open Access journal, so there is no paywall. It can be accessed here:

PDF Version

HTML Version

The paper offers a more concise introduction to the subject than my monograph, and also introduces a lot of new material relating to applications in social choice theory.

Citation info isn’t available yet (other than the ISSN and journal), since it revolves around the print edition. I’ll post that when it becomes available.

One word to those familiar with my writing, my style, and my love of the Oxford comma. You may be surprised by some of the punctuation. Apparently, my own practices in this regard differ from those of the journal. Quite understandably, the editor favored the journal’s conventions. Except for a few instances which affected clarity, I saw no reason to quibble over what essentially is an aesthetic choice.

My thanks to Don Bamber for suggesting both social choice as an application and that I submit to AJEB!

CCSearch State Space Algo

While toying with automated Fantasy Sports trading systems, I ended up designing a rapid state search algorithm that was suitable for a variety of constrained knapsack-like problems.

A reference implementation can be found on github: https://github.com/kensmosis/ccsearch.

Below is a discussion of the algorithm itself. For more details, see the source code in the github repo. Also, please let me know if you come across any bugs! This is a quick and dirty implementation.

Here is a description of the algorithm:

— Constrained Collection Search Algorithm —

Here, we discuss a very efficient state-space search algorithm which originated with a Fantasy Sports project but is applicable to a broad range of applications. We dub it the Constrained Collection Search Algorithm for want of a better term. A C++ implementation, along with Python front-end is included as well.

In the Fantasy Sports context, our code solves the following problem: We’re given a tournament with a certain set of rules and requirements, a roster of players for that tournament (along with positions, salaries and other info supplied by the tournament’s host), and a user-provided performance measure for each player. We then search for those teams which satisfy all the constraints while maximizing team performance (based on the player performances provided). We allow a great deal of user customization and flexibility, and currently can accommodate (to our knowledge) all major tournaments on Draftkings and FanDuel. Through aggressive pruning, execution time is minimized.

As an example, on data gleaned from some past Fantasy Baseball tournaments, our relatively simple implementation managed to search a state space of size approximately {10^{21}} unconstrained fantasy teams, ultimately evaluating under {2} million plausible teams and executing in under {4} seconds on a relatively modest desktop computer.

Although originating in a Fantasy Sport context, the CCSearch algorithm and code is quite general.

— Motivating Example —

We’ll begin with the motivating example, and then consider the more abstract case. We’ll also discuss some benchmarks and address certain performance considerations.

In Fantasy Baseball, we are asked to construct a fantasy “team” from real players. While the details vary by platform and tournament, such games share certain common elements:

  • A “roster”. This is a set of distinct players for the tournament.
  • A means of scoring performance of a fantasy team in the tournament. This is based on actual performance by real players in the corresponding games. Typically, each player is scored based on certain actions (perhaps specific to their position), and these player scores then are added to get the team score.
  • For each player in the roster, the following information (all provided by the tournament host except for the predicted fantasy-points, which generally is based on the user’s own model of player performance):
  • A “salary”, representing the cost of inclusion in our team.
  • A “position” representing their role in the game.
  • One or more categories they belong to (ex. pitcher vs non-pitcher, real team they play on).
  • A prediction of the fantasy-points the player is likely to score.
  • A number {N} of players which constitute a fantasy team. A fantasy team must have precisely this number of players.
  • A salary cap. This is the maximum sum of player salaries we may “spend” in forming a fantasy team. Most, but not all, tournaments have one.
  • A set of positions, and the number of players in each. The players on our team must adhere to these. For example, we may have {3} players from one position and {2} from another and {1} each from {4} other positions. Sometimes there are “flex” positions, and we’ll discuss how to accommodate those as well. The total players in all the positions must sum to {N}.
  • Various other constraints on team formation. These come in many forms and we’ll discuss them shortly. They keep us from having too many players from the same real-life team, etc.

    To give a clearer flavor, let’s consider a simple example: Draftkings Fantasy Baseball. There are at least 7 Tournament types listed (the number and types change with time, so this list may be out of date). Here are some current game types. For each, there are rules for scoring the performance of players (depending on whether hitter or pitcher, and sometimes whether relief or starting pitcher — all of which info the tournament host provides):

    • Classic: {N=10} players on a team, with specified positions P,P,C,1B,2B,3B,SS,OF,OF,OF. Salary cap is $50K. Constraints: (1) {\le 5} hitters (non-P players) from a given real team, and (2) players from {\ge 2} different real games must be present.
    • Tiers: {N} may vary. A set of performance “tiers” is provided by the host, and we pick one player from each tier. There is no salary cap, and the constraint is that players from {\ge 2} different real games must be present.
    • Showdown: {N=6} players, with no position requirements. Salary cap is $50K. Constraints: (1) players from {\ge 2} different real teams, and (2) {\le 4} hitters from any one team.
    • Arcade: {N=6} players, with 1 pitcher, 5 hitters. Salary cap is $50K. Constraints are: (1) {\le 3} hitters (non-P players) from a given real team, and (2) players from {\ge 2} different real games must be present.
    • Playoff Arcade: {N=7} players, with 2 pitchers and 5 hitters. Salary cap is $50K. Constraints are: (1) {\le 3} hitters (non-P players) from a given real team, and (2) players from {\ge 2} different real games must be present.
    • Final Series (involves 2 games): {N=8} players, with 2 pitchers and 6 hitters. $50K salary cap. Constraints are: (1) {1} pitcher from each of the two games, (2) {3} hitters from each of the the {2} games, (3) can’t have the same player twice (even if they appear in both games), and (4) Must have hitters from both teams in each game.

    • Lowball: Same as Tiers, but the lowest score wins.

    Although the constraints above may seem quite varied, we will see they fall into two easily-codified classes.

    In the Classic tournament, we are handed a table prior to the competition. This contains a roster of available players. In theory there would be 270 (9 for each of the 30 teams), but not every team plays every day and there may be injuries so it can be fewer in practice. For each player we are given a field position (P,C,1B,2B,3B,SS,or OF), a Fantasy Salary, their real team, and which games they will play in that day. For our purposes, we’ll assume they play in a single game on a given day, though it’s easy to accommodate more than one.

    Let us suppose that we have a model for predicting player performance, and are thus also provided with a mean and standard deviation performance. This performance is in terms of “points”, which is Draftkings’ scoring mechanism for the player. I.e., we have a prediction for the score which Draftkings will assign the player using their (publicly available) formula for that tournament and position. We won’t discuss this aspect of the process, and simply take the predictive model as given.

    Our goal is to locate the fantasy teams which provide the highest combined predicted player scores while satisfying all the requirements (position, salary, constraints) for the tournament. We may wish to locate the top {L} such teams (for some {L}) or all those teams within some performance distance of the best.

    Note that we are not simply seeking a single, best solution. We may wish to bet on a set of 20 teams which diversify our risk as much as possible. Or we may wish to avoid certain teams in post-processing, for reasons unrelated to the constraints.

    It is easy to see that in many cases the state space is enormous. We could attempt to treat this as a knapsack problem, but the desire for multiple solutions and the variety of constraints make it difficult to do so. As we will see, an aggressively pruned direct search can be quite efficient.

    — The General Framework —

    There are several good reasons to abstract this problem. First, it is the sensible mathematical thing to do. It also offers a convenient separation from a coding standpoint. Languages such as Python are very good at munging data when efficiency isn’t a constraint. However, for a massive state space search they are the wrong choice. By providing a general wrapper, we can isolate the state-space search component, code it in C++, and call out to execute this as needed. That is precisely what we do.

    From the Fantasy Baseball example discussed (as well as the variety of alternate tournaments), we see that the following are the salient components of the problem:

    • A cost constraint (salary sum)
    • The number of players we must pick for each position
    • The selection of collections (teams) which maximize the sum of player performances
    • The adherence to certain constraints involving player features (hitter/pitcher, team, game)

    Our generalized tournament has the following components:

    • A number of items {N} we must choose. We will term a given choice of {N} items a “collection.”
    • A total cost cap for the {N} items.
    • A set of items, along with the following for each:
      • A cost
      • A mean value
      • Optionally, a standard deviation value
    • A set of features. Each feature has a set of values it may take, called “groups” here. For each feature, a table (or function) tells us which group(s), if any, each item is a member of. If every item is a member of one and only one group, then that feature is termed a “partition” for obvious reasons.
    • A choice of “primary” feature, whose role will be discussed shortly. The primary feature need not be a partition. Associated with the primary feature is a count for each group. This represents the number of items which must be selected for that group. The sum of these counts must be {N}. An item may be chosen for any primary group in which it is a member, but may not be chosen twice for a given collection.
    • A set of constraint functions. Each takes a collection and, based on the information above, accepts or rejects it. We will refer to these as “ancillary constraints”, as opposed to the overall cost constraint, the primary feature group allocation constraints, and the number of items per collection constraint. When we speak of “constraints” we almost always mean ancillary constraints.

    To clarify the connection to our example, the fantasy team is a collection, the players are items, the cost is the salary, the value is the performance prediction, the primary feature is “position” (and its groups are the various player positions), other features are “team” (whose groups are the 30 real teams), “game” (whose groups are the real games being played that day), and possibly one or two more which we’ll discuss below.

    Note that each item may appear only once in a given collection even if they theoretically appear can fill multiple positions (ex. they play in two games of a double-header or they are allowed for a “flex” position as well as their actual one in tournaments which have such things).

    Our goal at this point will be to produce the top {L} admissible collections by value (or a good approximation thereof). Bear in mind that an admissible collection is a set of items which satisfy all the criteria: cost cap, primary feature group counts, and constraint functions. The basic idea is that we will perform a tree search, iterating over groups in the primary feature. This is why that group plays a special role. However, its choice generally is a structural one dictated by the problem itself (as in Fantasy Baseball) rather than a control lever. We’ll aggressively prune where we can based on value and cost as we do so. We then use the other features to filter the unpruned teams via the constraint functions.

    It is important to note that features need not be partitions. This is true even of the primary feature. In some tournaments, for example, there are “utility” or “flex” positions. Players from any other position (or some subset of positions) are allowed for these. A given player thus could be a member of one or more position groups. Similarly, doubleheaders may be allowed, in which case a player may appear in either of 2 games. This can be accommodated via a redefinition of the features.

    In most cases, we’ll want the non-primary features to be partitions if possible. We may need some creativity in defining them, however. For example, consider the two constraints in the Classic tournament described above. Hitter vs pitcher isn’t a natural feature. Moreover, the constraint seems to rely on two distinct features. There is no rule against this, of course. But we can make it a more efficient single-feature constraint by defining a new feature with 31 groups: one containing all the pitchers from all teams, and the other 30 containing hitters from each of the 30 real teams. We then simply require that there be no more than 5 items in any group of this new feature. Because only 2 pitchers are picked anyway, the 31st group never would be affected.

    Our reference implementation allows for general user-defined constraints via a functionoid, but we also provide two concrete constraint classes. With a little cleverness, these two cover all the cases which arise in Fantasy Sports. Both concern themselves with a single feature, which must be a partition:

    • Require items from at least {n} groups. It is easy to see that the {\ge 2} games and {\ge 2} teams constraints fit this mold.
    • Allow at most {n} items from a given group. The {\le 3,4,5} hitter per team constraints fit this mold.

    When designing custom constraints, it is important to seek an efficient implementation. Every collection which passes the primary pruning will be tested against every constraint. Pre-computing a specialized feature is a good way to accomplish this.

    — Sample Setup for DraftKings Classic Fantasy Baseball Tournament —

    How would we configure our system for a real application? Consider the Classic Fantasy Baseball Tournament described above.

    The player information may be provided in many forms, but for purposes of exposition we will assume we are handed vectors, each of the correct length and with no null or bad values. We are given the following:

    • A roster of players available in the given tournament. This would include players from all teams playing that day. Each team would include hitters from the starting lineup, as well as the starting pitcher and one or more relief pitchers. We’ll say there are {M} players, listed in some fixed order for our purposes. {R_i} denotes player {i} in our listing.
    • A set {G} of games represented in the given tournament. This would be all the games played on a given day. Almost every team plays each day of the season, so this is around 15 games. We’ll ignore the 2nd game of doubleheaders for our purposes (so a given team and player plays at most once on a given day).
    • A set {T} of teams represented in the given tournament. This would be all 30 teams.
    • A vector {p} of length {M}, identifying the allowed positions of each player. These are P (pitcher), C (catcher), 1B (1st base), 2B (2nd base), 3B (3rd base), SS (shortstop), OF (outfield).
    • A vector {t} of length {M}, identifying the team of each player. This takes values in {T}.
    • A vector {g} of length {M}, identifying the game each player participates in that day. This takes value in {G}.
    • A vector {s} of length {M}, providing the fantasy salary assigned by DraftKings to each player (always positive).
    • A vector {v} of length {M}, providing our model’s predictions of player performance. Each such value is the mean predicted fantasy score for the player under DraftKing’s scoring system for that tournament and player position. As an aside, DK never scores pitchers as hitters even if they bat.

    Note that DraftKings provides all this info (though they may have to be munged into some useable form), except the model prediction.

    We now define a new vector {h} of length {M} as follows: {h_i=t_i} if player {i} is a hitter (i.e. not a pitcher), and {h_i=P} if a pitcher, where {P} designates some new value not in {T}.

    Next, we map the values of {G}, {T}, and the positions into nonnegative consecutive integers (i.e. we number them). So the games run from {1\dots |G|}, the teams from {1\dots |T|}, and the positions from {1\dots 7}. We’ll assign {0} to the pitcher category in the {h} vector. The players already run from {1\dots M}. The vectors {t}, {g}, {s}, and {h} now take nonnegative integer values, while {s} and {v} take real ones (actually {s} is an integer too, but we don’t care here).

    From this, we pass the following to our algorithm:

    • Number of items: {M}
    • Size of a collection: {10}
    • Feature 1: {7} groups (the positions), and marked as a partition.
    • Feature 2: {|T|} groups (the teams), and marked as a partition.
    • Feature 3: {|G|} groups (the games), and marked as a partition.
    • Feature 4: {|T|+1} groups (the teams for hitters plus a single group of all pitchers), and marked as a partition.
    • Primary Feature: Feature 1
    • Primary Feature Group Counts: {(2,1,1,1,1,1,3)} (i.e. P,P,C,1B,2B,3B,SS,OF,OF,OF)
    • Item costs: {s}
    • Item values: {v}
    • Item Feature 1 Map: {f(i,j)= \delta_{p_i,j}} (i.e. {1} if player {i} is in position {j})
    • Item Feature 2 Map: {f(i,j)= \delta_{t_i,j}} (i.e. {1} if player {i} is on team {j})
    • Item Feature 3 Map: {f(i,j)= \delta_{g_i,j}} (i.e. {1} if player {i} is in game {j})
    • Item Feature 4 Map: {f(i,j)= \delta_{h_i,j}} (i.e. {1} if player {i} is a hitter on team {j} or a pitcher and {j=0})
    • Cost Cap: {50,000}
    • Constraint 1: No more than {5} items in any one group of Feature 4. (i.e. {\le 5} hitters from a given team)
    • Constraint 2: Items from at least {2} groups of Feature 3. (i.e. items from {\ge 2} games)

    Strictly speaking, we could have dispensed with Feature 2 in this case (we really only need the team through Feature 4), but we left it in for clarity.

    Note that we also would pass certain tolerance parameters to the algorithm. These tune its aggressiveness as well as the number of teams potentially returned.

    — Algorithm —

    — Culling of Individual Items —

    First, we consider each group of the primary feature and eliminate strictly inferior items. These are items we never would consider picking because there always are better choices. For this purpose we use a tolerance parameter, {epsilon}. For a given group, we do this as follows. Assume that we are required to select {n} items from this group:

    • Restrict ourselves only to items which are unique to that group. I.e., if an item appears in multiple groups it won’t be culled.
    • Scan the remaining items in descending order of value. For item {i} with cost {c} and value {v},
      • Scan over all items {j} with {v_j>v_i(1+\epsilon)}
      • If there are {n} such items that have {c_j\le c_i} then we cull item {i}.

    So basically, it’s simple comparison shopping. We check if there are enough better items at the same or lower cost. If so, we never would want to select the item. We usually don’t consider “strictly” better, but allow a buffer. The other items must be sufficiently better. There is a rationale behind this which will be explained shortly. It has to do with the fact that the cull stage has no foreknowledge of the delicate balance between ancillary constraints and player choice. It is a coarse dismissal of certain players from consideration, and the tolerance allows us to be more or less conservative in this as circumstance dictates.

    If a large number of items appear in multiple groups, we also can perform a merged pass — in which those groups are combined and we perform a constrained cull. Because we generally only have to do this with pairs of groups (ex. a “flex” group and each regular one), the combinatorial complexity remains low. Our reference implementation doesn’t include an option for this.

    To see the importance of the initial cull, consider our baseball example but with an extra 2 players per team assigned to a “flex” position (which can take any player from any position). We have {8} groups with ({60},{30},{30},{30},{30},{30},{90},{270}) allowed items. We need to select {(2,1,1,1,1,1,3,2)} items from amongst these. In reality, fantasy baseball tournaments with flex groups have fewer other groups — so the size isn’t quite this big. But for other Fantasy Sports it can be.

    The size of the overall state space is around {5x10^{21}}. Suppose we can prune just 1/3 of the players (evenly, so 30 becomes 20, 60 becomes 40, and 90 becomes 60). This reduces the state space by 130x to around {4x10^19}. If we can prune 1/2 the players, we reduce it by {4096x} to around {10^18}. And if we can prune it by 2/3 (which actually is not as uncommon as one would imagine, especially if many items have {0} or very low values), we reduce it by {531441x} to a somewhat less unmanageable starting point of {O(10^{16})}.

    Thus we see the importance of this initial cull. Even if we have to perform a pairwise analysis for a flex group — and each paired cull costs {n^2m^2} operations (it doesn’t), where {m} is the non-flex group size and {n} is the flex-group size, we’d at worst get {(\sum_i m_i)^2\sum_i m_i^2} which is {O(10^9)} operations. In reality it would be far lower. So a careful cull is well worth it!

    One important word about this cull, however. It is performed at the level of individual primary-feature groups. While it accommodates the overall cost cap and the primary feature group allocations, it has no knowledge of the ancillary constraints. It is perfectly possible that we cull an item which could be used to form the highest value admissible collection once the ancillary constraints are taken into account. This is part of why we use the tolerance {\epsilon}. If it is set too high, we will cull too few items and waste time down the road. If it is too low, we may run into problems meeting the ancillary constraints.

    We note that in fantasy sports, the ancillary constraints are weak in the sense that they affect a small set of collections and these collections are randomly distributed. I.e, we would have to conspire for them to have a meaningful statistical effect. We also note that there tend to be many collections within the same tiny range of overall value. Since the item value model itself inherently is statistical, the net effect is small. We may miss a few collections but they won’t matter. We’ll have plenty of others which are just as good and are as statistically diverse as if we included the omitted ones.

    In general use, we may need to be more careful. If the ancillary constraints are strong or statistically impactful, the initial cull may need to be conducted with care. Its affect must be measured and, in the worst case, it may need to be restricted or omitted altogether. In most cases, a well-chosen {\epsilon} will achieve the right compromise.

    In practice, {\epsilon} serves two purposes: (1) it allows us to tune our culling so that the danger of an impactful ommission due to the effect of ancillary, yet we still gain some benefit from this step, and (2) it allows us to accommodate “flex” groups or other non-partition primary features without a more complicated pairwise cull. This is not perfect, but often can achieve the desired effect with far less effort.

    Another approach to accommodating flex groups or avoiding suboptimal results due to the constraints is to require more than the selection count when culling in a given group. Suppose we need to select {2} items from a given group. Ordinarily, we would require that there be at least {2} items with value {(1+\epsilon)v} and cost {\le c} in order to cull an item with value {v} and cost {c}. We could buffer this by requiring {3} or even {4} such better items. This would reduce the probability of discarding useful items, but at the cost of culling far fewer. In our code, we use a parameter {ntol} to reflect this. If {n_i} is the number of selected items for group {i} (and the number we ordinarily would require to be strictly better in order to cull others), we now require {n_i+ntol} strictly better items. Note that {ntol} solely is used for the individual cull stage.

    One final note. If a purely lossless search is required then the individual cull must be omitted altogether. In the code this is accomplished by either choosing {ntol} very high or {\epsilon} very high. If we truly require the top collection (as opposed to collections within a thick band near the top), we have the standard knapsack problem and there are far better algorithm than CCSearch.

    — Prepare for Search —

    We can think of our collection as a selection of {n_i} items from each primary-feature group {i} (we’ll just refer to it as “group” for short). Let’s say that {m_i} is the total number of items in the {i^{th}} group. Some of the same items may be available to multiple groups, but our collection must consist of distinct items. So there are {K} bins, the number of primary feature groups. For the {i^{th}} such group, we select {n_i} items from amongst the available {m_i} post-cull items.

    For the search itself we iterate by group, then within each group. Conceptually, this could be thought of as a bunch of nested loops from left group to right group. In practice, it is best implemented recursively.

    We can precompute certain important information:

    • Each group has {C_i= {m_i\choose n_i}} possible selections. We can precompute this easily enough.
    • We also can compute {RC_i= \Pi_{j\ge i} C_i}. I.e. the product of the total combinations of this group and those that come after.
    • {BV_i} is the sum of the top {n_i} values in the group. This is the best we can do for that group, if cost is no concern.
    • {RBV_i} is {\sum_{j>i} BV_i}. I.e., the best total value we can get from all subsequent groups.
    • {LC_i} is the sum of the bottom {n_i} costs in the group. This is the cheapest we can do for that group, if value is no concern.
    • {RLC_i} is {\sum_{j>i} LC_i}. I.e., the cheapest we can do for all subsequent groups, if value is no concern.
    • Sorted lists of the items by value and by cost.
    • Sorted lists of {n_i}-tuples of distinct items by overall value and by overall cost. I.e., for each group, sorted lists of all combos of {n_i} choices. These generally are few enough to keep in memory.

    The search itself depends on two key iteration decisions. We discuss their effects on efficiency below.

    • Overall, do we scan the groups from fewest to most combinations (low to high {C_i}) or from most to fewest (high to low {C_i})?
    • Within each group, do we scan the items from lowest to highest cost or from highest to lowest value. Note that of the four possible combinations, the other two choices make no sense. It must be one of these.

    Based on our choice, we sort our groups, initialize our counters, and begin.

    — Search —

    We’ll describe the search recursively.

    Suppose we find ourselves in group {i}, and are given the cost {c} and value {v} so far (from the selections for groups {1\dots i-1}). We also are given {vmin}, the lowest collection value we will consider. We’ll discuss how this is obtained shortly.

    We need to cycle over all {C_i} choices for group {i}. We use the pre-sorted list of {n_i-tuples} sorted by value or by cost depending on our 2nd choice above. I.e., we are iterating over the possible selections of {n_i} items in decreasing order of overall value or increasing order of overall cost.

    We now discuss the individual iteration. For each step we compute the following:

    • {mc} is the minimum cost of all remaining groups ({i+1} onward). This is the lowest cost we possibly could achieve for subsequent groups. It is the pre-computed {RLC_i} from above.
    • {mv} is the maximum value of all remaining groups ({i+1} onward). This is the highest value we possibly could achieve for subsequent groups. It is the pre-computed {RBV_i} from above.
    • {c_i} is the cost of our current selection for group {i}
    • {v_i} is the value of our current selection for group {i}

    Next we prune if necessary. There are 2 prunings, the details of which depend on the type of iteration.

    If we’re looping in increasing order of cost:

    • If {c+c_i+mc>S} then there is no way to select from the remaining groups and meet the cost cap. Worse, all remaining iterations within group {i} will be of equal or higher cost and face the same issue. So we prune both the current selection and all remaining ones. Practically, this means we terminate the iteration over combinations in group {i} (for this combo of prior groups).
    • If {v+v_i+mv<vmin} then there is no way to select a high enough value collection from the remaining groups. However, it is possible that other iterations may do so (since we’re iterating by cost, not value). We prune just the current selection, and move on to the next combo in group {i} by cost.

    If on the other hand we’re looping in decreasing order of value, we do the opposite:

    • If {v+v_i+mv<vmin} then there is no way to select a high enough value collection from the remaining groups. Worse, all remaining iterations within group {i} will be of equal or lower value and face the same issue. So we prune both the current selection and all remaining ones. Practically, this means we terminate the iteration over combinations in group {i} (for this combo of prior groups).
    • If {c+c_i+mc>S} then there is no way to select from the remaining groups and meet the cost cap. However, it is possible that other iterations may do so (since we’re iterating by value, not cost). We prune just the current selection, and move on to the next combo in group {i} by value.

    If we get past this, our combo has survived pruning. If {i} isn’t the last group, we recursively call ourselves, but now with cost {c+c_i} and value {v+v_i} and group {i+1}.

    If on the other hand, we are the last group, then we have a completed collection. Now we must test it.

    If we haven’t put any protections against the same item appearing in different slots (if it is in multiple groups), we must test for this and discard the collection if it is. Finally, we must test it against our ancillary constraints. If it violates any, it must be discarded. What do we do with collections that pass muster? Well, that depends. Generally, we want to limit the number of collections returned to some number {NC}. We need to maintain a value-sorted list of our top collections in a queue-like structure.

    If our new collection exceeds all others in value, we update {vmax}, the best value realized, This also resets {vmin= vmax (1-\delta)} for some user-defined tolerance {\delta}. We then must drop any already-accumulated collections which fall below the new {vmin}.

    I.e., we keep at most {NC} collections, and each must have value within a fraction {\delta} of the best.

    And that’s it.

    — Tuning —

    Let’s list all the user-defined tunable parameters and choices in our algorithm:

    • What is the individual cull tolerance {\epsilon\in [0,\infty]}?
    • What is {ntol}, the number of extra strictly-better items we require in a group during the individual cull?
    • Do we scan the groups from fewest to most combinations or the other way?
    • Within each group, do we scan the items from lowest to highest cost or from highest to lowest value?
    • What is the maximum number of collections {NC>0} we report back (or do we keep them all)?
    • What is the collection value tolerance {\delta\in [0,1]}?

    Clearly, {NC} and {\delta} guide how many results are kept and returned. High {NC} and high {\delta} are burdensome in terms of storage. If we want just the best result, either {NC=1} or {\delta=1} will do. As mentioned, {\epsilon} and {ntol} have specific uses related to the behavior of the individual cull. What about the sort orders?

    The details of post-cull search performance will depend heavily on the primary partition structure and cost distribution, as well as our 2 search order choices. The following is a simple test comparison benchmark (using the same data and the {10}-player collection Classic Fantasy Baseball tournament structure mentioned above).

    GroupOrder CombosOrder Time Analyzed
    Value high-to-low high-to-low 12.1s 7.9MM
    Value high-to-low low-to-high 3.4s 1.5MM
    Cost low-to-high high-to-low 69.7s 47.5MM
    Cost low-to-high low-to-high 45.7s 18.5MM

    Here, “Analyzed” refers to the number of collections which survived pruning and were tested against the ancillary constraints. The total number of combinations pruned was far greater.

    Of course, these numbers mean nothing in an absolute sense. They were run with particular test data on a particular computer. But the relative values are telling. For these particular conditions, the difference between the best and worst choice of search directions was over {20x}. There is good reason to believe that, for any common tournament structure, the results would be consistent once established. It also is likely they will reflect these. Why? The fastest option allows the most aggressive pruning early in the process. That’s why so few collections needed to be analyzed.

  • 180 Women and Sun Tzu

    It is related that Sun Tzu (the elder) of Ch’i was granted an audience with Ho Lu, the King Of Wu, after writing for him a modest monograph which later came to be known as The Art of War. A mere scholar until then (or as much of a theorist as one could be in those volatile times), Sun Tzu clearly aspired to military command.

    During the interview, Ho Lu asked whether he could put into practice the military principles he expounded — but using women. Sun Tzu agreed to the test, and 180 palace ladies were summoned. These were divided by him into two companies, with one of the King’s favorite concubines given the command of each.

    Sun Tzu ordered his new army to perform a right turn in unison, but was met with a chorus of giggles. He then explained that, “If words of command are not clear and distinct, if orders are not thoroughly understood, then the general is to blame.” He repeated the order, now with a left turn, and the result was the same. He now announced that, “If words of command are not clear and distinct, if orders are not thoroughly understood, then the general is to blame. But if his orders are clear, and the soldiers nevertheless disobey, then it is the fault of their officers,” and promptly ordered the two concubines beheaded.

    At this point, Ho Lu intervened and sent down an order to spare the concubines for he would be bereft by their deaths. Sun Tzu replied that, “Having once received His Majesty’s commission to be the general of his forces, there are certain commands of His Majesty which, acting in that capacity, I am unable to accept.” He went ahead and beheaded the two women, promoting others to fill their commands. Subsequent orders were obeyed instantly and silently by the army of women.

    Ho Lu was despondent and showed no further interest in the proceedings, for which Sun Tzu rebuked him as a man of words and not deeds. Later he was commissioned a real general by Ho Lu, proceeded to embark on a brilliant campaign of conquest, and is described as eventually “sharing in the might of the king.”

    This is a particularly bewildering if unpleasant episode. Putting aside any impression the story may make on modern sensibilities, there are some glaring incongruities. What makes it more indecipherable still is that this is the only reputable tale of Sun Tzu the elder. Apart from this and the words in his book, we know nothing of the man, and therefore cannot place the event in any meaningful context. Let us suppose the specifics of the story are true, and leave speculation on that account to historians. The episode itself raises some very interesting questions about both Sun Tzu and Ho Lu.

    It is clear that Sun Tzu knew he would have to execute the King’s two favorite concubines. The only question is whether he knew this before he set out for the interview or only when he acceded to the King’s request. Though according to the tale it was Ho Lu who proposed a drill with the palace women, Sun Tzu must have understood he would have to kill not just two women but these specific women.

    Let’s address the broader case first. It was not only natural but inevitable that court ladies would respond to such a summons in precisely the manner they did. Even if we ignore the security they certainly felt in their rank and the affections of the King, the culture demanded it. Earnest participation in such a drill would be deemed unladylike. It would be unfair to think the court ladies silly or foolish. It is reasonable to assume that in their own domain of activity they exhibited the same range of competence and expertise as men did in martial affairs. But their lives were governed by ceremony, and many behaviours were proscribed. There could be no doubt they would view the proceedings as a game and nothing more. Even if they wished to, they could not engage in a serious military drill and behave like men without inviting quiet censure. The penetrating Sun Tzu could not have been unaware of this.

    Thus he knew that the commanders would be executed. He may not have entered the King’s presence expecting to kill innocent women, but he clearly was prepared to do so once Ho Lu made his proposal. In fact, Sun Tzu had little choice at that point. Even if the King’s proposal was intended in jest, he still would be judged by the result. Any appearance of frivolity belied the critical proof demanded of him. Sun Tzu’s own fate was in the balance. He would not have been killed, but he likely would have been dismissed, disgraced, and his ambitions irredeemably undermined.

    Though the story makes the proposal sound like the whimsical fancy of a King, it very well could have been a considered attempt to dismiss a noisome applicant. Simply refusing an audience could have been impolitic. The man’s connections or family rank may have demanded suitable consideration, or perhaps the king wished to maintain the appearance of munificence. Either way, it is plausible that he deliberately set Sun Tzu an impossible task to be rid of him without the drawbacks of a refusal. The King may not have known what manner of man he dealt with, simply assuming he would be deterred once he encountered the palace ladies.

    Or he may have intended it as a true test. One of the central themes of Chinese literature is that the monarch’s will is inviolable. Injustice or folly arises not from a failing in the King but from venal advisers who hide the truth and misguide him. A dutiful subject seeks not to censure or overthrow, but rather remove the putrescence which clouds the King’s judgment with falsehood, and install wise and virtuous advisers. Put simply, the nature of royalty is virtuous but it is bound by the veil of mortality, and thus can be deceived. One consequence of this is that disobedience is a sin, even in service of justice. Any command must be obeyed, however impossible. This is no different from Greek mythology and its treatment of the gods. There, the impossible tasks often only could be accomplished with magical assistance. In Sun Tzu’s case, no magic was needed. Only the will to murder two great ladies.

    As for the choice of women to execute, it does not matter whether the King or Sun Tzu chose the disposition of troops and commands. The moment Sun Tzu agreed to the proposal, he knew not only that he would have to execute women but which ones. Since he chose, this decision was made directly. But even if it had been left to the king, there could be no question who would be placed in command and thus executed.

    The palace hierarchy was very strict. While the ladies probably weren’t the violent rivals oft depicted in fiction, proximity to the King — or, more precisely, place in his affections, particularly as secured by production of a potential heir — lent rank. No doubt there also was a system of seniority based on age and family, among the women, many of whom probably were neither concubines nor courtesans, but noble-women whose husbands served the King. It was common for ladies to advance their husbands’ (and their own) fortunes through friendship with the King’s concubines. Whatever the precise composition of the group, a strict pecking order existed. At the top of this order were the King’s favorites. There could be no other choice consistent with domestic accord and the rules of precedence. Those two favorite concubines were the only possible commanders of the companies.

    To make matters worse, those concubines may already have produced heirs. Possibly they were with child at that very moment. This too must have been clear to Sun Tzu. Thus he knew that he must kill the two most beloved of the King’s concubines, among the most respected and noblest ladies in the land, and possibly the mothers of his children. Sun Tzu even knew he may be aborting potential heirs to the throne. All this is clear as day, and it is impossible to imagine that the man who wrote the Art of War would not immediately discern it.

    But there is something even more perplexing in the story. The King did not stop the executions. Though the entire affair took place in his own palace, he did not order his men to intervene, or even belay Sun Tzu’s order. He did not have Sun Tzu arrested, expelled, or executed. Nor did he after the fact. Ho Lu simply lamented his loss, and later hired the man who had effected it.

    There are several explanations that come to mind. The simplest is that he indeed was a man of words and not deeds, cowed by the sheer impetuosity of the man before him. However, subsequent events do not support this. Such a man would not engage in aggressive wars of conquest against his neighbors, nor hire the very general who had humiliated and aggrieved him so. Perhaps he feared that Sun Tzu would serve another, turning that prodigious talent against Wu. It would be an understandable concern for a weak ruler who dreaded meeting such a man on the battlefield. But it also was a concern which easily could have been addressed by executing him on the spot. The temperamental Kings of fable certainly would have. Nor did Ho Lu appear to merely dissemble, only to visit some terrible vengeance on the man at a later date. Sun Tzu eventually became his most trusted adviser, described as nearly coequal in power.

    It is possible that Ho Lu lacked the power oft conflated with regality, and less commonly attendant upon it. The title of King at the time meant something very different from modern popular imaginings. The event in question took place around 500 BC, well before Qin Shi Huang unified China — briefly — with his final conquest of Qi in 221 BC. In Ho Lu’s time, kingdoms were akin to city-states, and the Kings little more than feudal barons. As in most historical treatises, troop numbers were vastly exaggerated, and 100,000 troops probably translated to a real army of mere thousands.

    This said, it seems exceedingly improbable that Ho Lu lacked even the semblance of authority in his own palace. Surely he could execute or countermand Sun Tzu. Nor would there be loss of face in doing so, as the entire exercise could be cast as farcical. Who would object to a King stopping a madman who wanted to murder palace concubines? If Sun Tzu was from a prominent family or widely regarded in his own right (which there is no evidence for), harming him would not have been without consequence. But there is a large difference between executing the man and allowing him to have his way in such a matter. Ho Lu certainly could have dismissed Sun Tzu or proposed a more suitable test using peasants or real soldiers. To imagine that a king would allow his favorite concubines to be executed, contenting himself with a feeble protest, is ludicrous. Nor was Sun Tzu at that point a formidable military figure. A renowned strategist would not have troubled to write an entire treatise just to impress a single potential patron. That is not the action of a man who holds the balance of power.

    The conclusion we must draw is that the “favorite concubines” were quite dispensible, and the King’s protest simply the form demanded by propriety. He hardly could not protest the murder of two palace ladies. Most likely, he used Sun Tzu to rid himself of two problems. At the very least, he showed a marked lack of concern for the well-being of his concubines. We can safely assume that his meat and drink did not lose their savour, as he envisioned in his tepid missive before watching Sun Tzu behead the women.

    While it is quite possible that he believed Sun Tzu was just making a point and would stop short of the actual execution, this too seems unlikely. The man had just refused a direct order from the King, and unless the entire matter was a tremendous miscommunication there could be little doubt he would not be restrained.

    Ho Lu may genuinely have been curious to see the outcome. Even he probably could not command obedience from the palace ladies, and he may have wished to see what Sun Tzu could accomplish. But more than this, the King probably felt Sun Tzu was a valuable potential asset. The matter then takes on a very different aspect.

    From this viewpoint, Ho Lu was not the fool he seemed. The test was proposed not in jest, but in deadly earnest, and things went exactly as he had hoped but not expected. He may have had to play the indolent monarch, taking nothing seriously and bereaved by a horrid jest gone awry. It is likely he was engaging in precisely the sort of deception Sun Tzu advocated in his treatise. He appeared weak and foolish, but knew exactly what he wanted and how to obtain it.

    This probably was not lost on Sun Tzu, either. Despite his parting admonition, he did later agree to serve Ho Lu. It is quite possible that the king understood precisely the position he was placing Sun Tzu in, and anticipated the possible executions. Even so, he may have been uncertain of the man’s practical talent and the extent of his will. There is a great divide between those who write words and those who heed them. Some may bridge it, most do not. Only in the event did Sun Tzu prove himself.

    For this reason, Ho Lu could not be certain of the fate of the women. Nonetheless he placed them in peril. They were disposable, if not to be disposed of. It seems plausible that an apparently frivolous court game actually was a determined contest between two indomitable wills. The only ones who did not grasp this, who could not even recognize the battlefield on which they stepped solely to shed blood, were the concubines.

    By this hypothesis, they were regarded as little more than favorite dogs or horses, or perhaps ones which had grown old and tiresome. A King asks an archer to prove his skill by hitting a “best” hound, then sets the dog after a hare, as he has countless times before. The dog quickens to the chase, eagerly performing as always, confident that its master’s love is timeless and true. Of all present, only the dog does not know it is to be sacrificed, to take an arrow to prove something which may or may not be of use one day to its master. If the arrow falls short, it return to its master’s side none the wiser and not one jot less sure of its place in the world or secure in the love of its master, until another day and another archer. This analogy may seem degrading and insulting to the memory of the two ladies, but that does not mean it is inaccurate. It would be foolhardy not to attribute such views to an ancient King and general simply because we do not share them or are horrified by them or wish they weren’t so. In that time and place, the concubines’ lives were nothing more than parchment. The means by which Ho Lu and Sun Tzu communicated, deadly but pure.

    The view that Ho Lu was neither a fool nor a bon vivant is lent credence by the manner of his rise to power. He usurped the throne from his uncle, employing an assassin to accomplish the task. This and his subsequent campaign of conquest are not the actions of a dissipated monarch. Nor was he absent from the action, wallowing in luxury back home. In fact, Ho Lu died from a battle wound during his attempted conquest of Yue.

    It is of course possible that the true person behind all these moves was Wu Zixu, the King’s main advisor. But by that token, it also is quite possible that the entire exercise was engineered by Wu Zixu — with precisely intended consequences, perhaps ridding himself of two noisome rivals with influence over the King. In that case, the affair would be nothing more than a routine palace assassination.

    Whatever the explanation, we should not regard the deaths of the two concubines as a pointless tragedy. The discipline instilled by two deaths could spare an entire army from annihilation on the field. Sun Tzu posited that discipline was one of the key determinants of victory, and in this he was not mistaken. That is no excuse, but history needs none. It simply is.

    This said, it certainly is tempting to regard the fate of these ladies as an unadorned loss. Who can read this story and feel anything but sadness for the victims? Who can think Sun Tzu anything but a callous murderer, Ho Lu anything but foolish or complicit? It is easy to imagine the two court concubines looking forward to an evening meal, to poetry with their friends, to time with their beloved husband. They had plans and thoughts, certainly dreams, and perhaps children they left behind. One moment they were invited to play an amusing game, the next a sharp metal blade cut away all they were, while the man they imagined loved them sat idly by though it lay well within his power to save them. Who would not feel commingled sorrow and anger at such a thing? But that is not all that happened.

    A great General was discovered that day, one who would take many lives and save many lives. Whether this was for good or ill is pointless to ask and impossible to know. All we can say is that greatness was achieved. 2500 years later and in a distant land we read both his tale and his treatise.

    Perhaps those two died not in service to the ambition of one small general in one small kingdom. Perhaps they died so centuries later Cao Cao would, using the principles in Sun Tzu’s book, create a foundation for the eventual unification of China. Or so that many more centuries later a man named Mao would claim spiritual kinship and murder a hundred million to effect a misguided economic policy. Would fewer or more have died if these two women had lived? Would one have given birth to a world-conquering general, or written a romance for the ages?

    None of these things. They died like everyone else — because they were born. The axe that felled them was wielded by one man, ordered by another, and sanctioned by a third. Another made it, and yet another dug the ore. Are they all to blame? The affair was one random happening in an infinitude of them, neither better nor worse. A rock rolls one way, but we do not condemn. It rolls another, but we do not praise.

    But we do like stories, and this makes a good one.

    [Source: The account itself is taken from The Art of War with Commentary, Canterbury Classics edition, which recounted it from a translation of the original in the Records of the Grand Historian. Any wild speculation, ridiculous hypotheses, or rampant mischaracterizations are my own.]

    How 22% of the Population can Rewrite the Constitution

    This is a scary piece in which I analyze precisely how many voters would be required to trigger a Constitutional Convention and ratify any amendments it proposes. Because the 2/3 and 3/4 requirements in the Constitution refer to the number of States involved, the smaller States have a disproportionate effect. In Congress, the House counterbalances this – but for a Constitutional Convention, there is no such check.

    Read the Paper (PDF)

    A Travel-Time Metric

    Especially in urban areas, two locations may be quite close geographically but difficult to travel between. I wondered whether one could create a map where, instead of physical distances, points are arranged according to some sort of travel-time between them. This would be useful for many purposes.

    Unfortunately, such a mapping is mathematically impossible in general (for topological reasons). But so is a true map of the Earth, hence the need for Mercator or other projections. The first step in constructing a useful visualization is to define an appropriate Travel-Time metric function. Navigation systems frequently compute point-to-point values, but they are not bound by the need to maintain a consistent set of Travel Times between all points. That is our challenge – to construct a Travel-Time metric.

    Read the Paper (PDF)

    Inflation, Up Close and Personal

    It often seems like the inflation figures touted by officials and economists have little connection with the real world. There are a number of reasons for this, some technical and some political. But there is a deeper problem than the means and motives for calculating any specific index. The issue is that any aggregate number is likely to deviate significantly from one’s personal experience. Each of us saves for different reasons and spends in different ways. Without taking these specific choices into account, we cannot accurately represent or protect against the inflation that we individually encounter. This paper elaborates on this idea and explains how each of us can identify the relevant components of inflation, and best hedge our savings.

    Read the Paper (PDF)

    A Proposal for Tax Transparency

    Taxes necessarily are unpopular. They represent an economic burden and do not yield obvious benefits. Though some make a show of embracing their civic duty, few voluntarily would undertake to do so if given a choice. The criminal penalties attached to evasion and the substantial efforts at enforcement are evidence of this. Nonetheless, there is a tie between one’s sense of social responsibility and the palatability of taxes. A perception that our sacrifice benefits ourselves, our loved ones, and society as a whole can mitigate the pain it causes. Conversely, if our hard earned money vanishes into an opaque hole of possible waste and corruption, resentment is engendered.

    The taxes paid by an individual represent a substantial sum to him, but a mere pittance to the government. If there is no accounting for this money, then it appears to have been squandered. This assumption is natural, as the government is known to be a notorious spendthrift. Nor does the publication of a voluminous, incomprehensible, and largely euphemistic budget lend transparency. Even if it were perfectly accurate, and every taxpayer troubled to read it, the human mind isn’t wired to accurately grasp the relationships between large numbers. Thirty thousand dollars in taxes is minuscule compared to a billion or ten billion or a hundred billion, and it makes little difference which of those quantities is involved. Therefore an effort to elicit confidence through a full disclosure of expenditures would be ill fated even if well intentioned. However it would serve to enforce accountability, and should be required in addition to any other measures employed. If nothing else, this would allow watchdog organizations to analyze government behavior and identify waste.

    So how could we restore individual faith in the system of government expenditure? There is in fact a way to do so and encourage fiscal responsibility at the same time. Individuals like to know where their money went. A successful tactic of certain charities is to attach each donation to a specific child or benefit. A person feels more involved, is more likely to contribute, and is better satisfied with their contribution if it makes a tangible difference. We need to know that we aren’t wasting our money.

    The pain of an involuntary contribution may be assuaged through a similar approach. It may even transform into pride. There will be individuals who remain resentful, just as there are those who do not donate to charity. And some people simply don’t like being forced to do anything. However the majority of taxpayers likely will feel better if they know precisely where their money went.

    We propose that an exact disposition of each individual’s taxes be reported to him. At first glance, this may seem infeasible. Funds are drawn from pooled resources rather than attached to such specific revenue streams. However, what we suggest can be accomplished without any change in the way the government does business, and our reporting requirement would not prove onerous. The federal, state, and most local governments already meticulously account for expenses – even if they do not exhibit particular restraint in incurring them. They must do so for a variety of legal and regulatory reasons, and records generally exist even if not publicly available.

    Individual tax contributions need only be linked to expenditures at the time of reporting, but this must be done consistently. To that end, expenses could be randomly matched with the taxes that paid for them. This could be done each February or March for the prior year. We simply require that each dollar of taxes collected be assigned to one and only one dollar spent and vice versa. If there is a surplus, then some taxpayers would receive an assignment of “surplus” and if there is a deficit then certain expenses will be assigned a non-tax source – such as borrowed money or a prior year’s surplus. If a taxpayer’s contribution has been marked as surplus, then his true assignment is deferred until such time as the surplus is spent (again using a lottery system for matching). If it covers a prior year’s deficit then it is matched against that year’s excess expenses. The point is that every dollar of taxpayer money eventually is matched against a real expense.

    For example, one taxpayer’s report could read “10K toward the construction of 121 example plaza, New York,” or better still “3K used for the purchase of air conditioning units, 5K for ductwork, and 2K for electrical routing for work done at XXX and billed to YYY contracting on ZZZ date. Work completed on AAA date.” An individual receiving such a report would feel a sense of participation, accountability, and meaningful sacrifice.

    It may seem that few people would feel pride in defraying the cost of mundane items, but such an objection is misguided. These are real expenses and represent a more comprehensible and personal form of involvement than does a tiny fraction of an abstract budget. If an expense would appear wasteful, pointless, or excessive, then it is appropriate to question it.

    What of the pacifist whose money goes toward weapons or the religious individual whose taxes pay for programs that contravene his beliefs? It may seem unfair to potentially violate a taxpayer’s conscience by assigning him an unpalatable expense. But no exceptions should be made. Their money is being spent in the manner described. Whether their contribution is diluted or dedicated, they live in a society that violates their ideals and they should vote accordingly.

    It is our belief that a feeling of involvement in the operation of government, along with the requisite increase in transparency, would alleviate much of the general perception of irresponsibility, excess, and unaccountability. An individual may object to his relative contribution, but the means of its use would no longer be inscrutable. This could go a long way toward restoring faith in our government.

    Probabilistic Sentencing

    In most real situations, we must make decisions based on partial information. We should neither allow this uncertainty to prevent action or pretend to perfect certainty in taking action. Yet in one area with a great impact on an individual’s freedom and well-being we do just that. Judges and juries are required to return an all-or-nothing verdict of guilt. They may not use their experience, intelligence, and judgment to render a level of confidence rather than a mere binary choice.

    I propose adopting a sentencing mechanism based on a probabilistic assessment of guilt or innocence. This allows jurists to better express their certainty or lack thereof than does our traditional all-or-nothing verdict. The natural place to reflect such an imputed degree of guilt is in the sentencing phase. I discuss the implications of such a system as well as certain issues with implementation.

    Read the Paper (PDF)

    The Requirements of Effective Democracy

    The current popular notion of democracy is something to the effect of “the will of the people is effected through voting.’’ Though this is a far cry from the original meaning of the word or its various incarnations through history, let’s take it as our working definition. It certainly reflects the basic approach taken in the United States. Though often confounded by the public mind with a vague cultural notion of freedom, it only conforms to this when taken together with certain other principles – such as explicit protections of individual liberties.

    This aside, let us consider the components necessary for democracy. To do so, we must make some supposition regarding the ability of an individual voter to render a decision. We assume that every voting individual, regardless of aptitude, is capable of determining their purpose in voting. We say “purpose” rather than “criterion” because we refer to a moral choice, what they hope to achieve by voting. This is far more basic and reliable than any specific set of issues or criteria. A person knows their value system, even if they can not or do not have the means of accurately expressing it. The desires to improve the country, foster religious tenets, create a certain type of society, support the weak, advance one’s own interest, protect a specific right, or promote cultural development cannot easily be manipulated or instilled. While it is possible to create a sense of urgency or attach specific issues or criteria to these values, one’s purpose itself is a reflection of that individual’s view of society and their relationship with it. To meaningfully participate in the democratic process, an individual must translate this purpose into particular votes in particular elections. Note that a purpose may embody a plurality of ideals rather than any specific one (such as in the examples above).

    It is the function of democracy to proportionately reflect in our governance and society the individual purposes of the citizenry. A number of components are involved, any of whose absence undermines its ability to do so. While the consequent process may retain all the trappings of a democracy, it would not truly function as one. Though it could be argued that such imperfection is natural and speaks to the shortcomings of the participants rather than a failing of the institution itself, such a claim is misguided. Regardless of cause, if the people’s will is not accurately reflected then the society does not conform to our popular notion of a democracy. Whether another system would perform better is beyond our present consideration. We simply list certain key requirements for a democracy to function as we believe it should, and allow the reader to decide the extent to which our present society satisfies them.

    Note that a particular government need not directly represents the interest of every citizen, but its formation and maintenance must meaningfully do so. In some loose sense this means that (1) the effect of a citizen is independent of who that citizen is, and (2) the opinion of a majority of citizens is reflected in the actions of the government. These are neither precise requirements nor ones satisfied in practice, particularly in representative democracies. However they reflect our vague cultural concept of democracy.

    The following are the major components necessary for a democracy to function as we believe it should.

    Choice

    Once a voter has decided upon a set of positions that reflect their purpose, they must have a means of voting accordingly. There must be sufficient choice to allow an individual to embody those positions in their vote. Furthermore, the choice must be real. Marginal candidates with no chance of winning may be useful for registering an opinion, but they do not offer true participation in the election. If there are only two major candidates then the voter’s entire purpose must be reduced to a binary decision. Only if it happens to be reflected in one of the choices at hand would their view be expressible.

    If there are two major candidates and they differ only on a few issues that are of no consequence to a particular individual, then that person cannot express his purpose by voting. For example if a voter feels very strongly about issue X, and both major candidates have the same opposing position on that issue, then he cannot make his will known in that election. It may be argued that the presence of small candidates serves exactly this purpose and that if sentiment is strong enough one could prevail. This is not born out by history. In a two party system, a voter is reduced to a binary choice between two bundled sets of positions. As a more extreme example, suppose there are several major issues and the candidates agree on one of them. Even if every single person in the country holds the opposite position on that issue, their will still cannot be effected through that election. If there were no other important issues, then one or the other candidate surely would take the popular position – or a third party candidate would do so and prevail. However in the presence of other issues, this need not be the case.

    Finally, there must be some reason to believe that the actions of a candidate once elected will reflect their proclaimed positions. Otherwise, it will be years before the voter can penalize them. Without such an assurance – and history certainly does not offer it – a nominal choice may not be a real one. The people then acts the part of a general who cannot move his troops, however much he may threaten or cajole them.

    Information

    A well-intentioned individual must have a way of locating and obtaining information whose accuracy is not in question or, if uncertain in nature, is suitably qualified. Voters must have access to accurate and sufficient information. In order to translate their purpose into a vote, an individual must be able to determine the choices available and what they actually entail. Moreover, he must be able to determine the relative importance of different issues in effecting his purpose. Fear mongering, inaccurate statistics, and general misinformation could lead him to believe that a particular issue ‘X’ is of greater import than it truly is. Instead of focusing on other issues ‘Y’ and ‘Z’ which are more germaine to his purpose, he may believe that dealing with issue ‘X’ is the most important step toward it. Similarly, if the views of candidates are obfuscated or misrepresented or the significance of events is disproportionately represented, an accurate translation of his purpose into a vote may be denied a person. Even a perfectly rational and capable voter cannot make a suitable decision in the absence of information or in the presence of inaccurate information. This said, not every vehicle should be expected to provide such information. If a person prefers to listen to a news station that reports with a particular bias, that is not the fault of the information provider – unless it does so subtly and pretends otherwise.

    Aptitude

    A voter must have the intelligence, critical reasoning, motivation, and general wherewithal to seek out accurate information, detect propaganda or advertising, and make an informed decision. Their perceived interest must coincide with their true interest, and their purpose be accurately represented in the choice they make. It may seem that we are advocating the disenfrachisement of a segment of the population, individuals who – while failing to meet some high standard – have valid purposes of their own which they too have the right to express. This is not the case, nor is our standard artificial. We are merely identifying a necessary ingredient, not endorsing a particular path of action. Moreover, the argument that they would be deprived of a right is a specious one. Such individuals are disenfranchised, whether or not they physically vote. They lack the ability to accurately express their purpose, and easily are misled, confused, or manipulated. At best they introduce noise, at worst their votes may systematically be exploited. A blind person may have a valid destination, but they cannot drive there.

    Access

    Voters must be willing and able to participate. They cannot be blocked by bureaucratic, economic, legal, or practical obstacles – especially in a way that introduces a selection bias. Their votes must be accurately tallied and their decision implemented.

    Structure

    Not only must the structure of the democratic process treat all voters equally, their de facto influence must be equal. Depending on the nature of the voting system, certain participants may have no real influence even if the system as a whole treats them symmetrically. A simple example would be a nation consisting of four states with blocks of 3, 3, 2, and 1 votes, where each block must vote as a unit. Regardless of the pattern of voting, citizens in the state with a single vote can never affect the outcome. If that vote is flipped, the majority always remains unchanged. This particular topic is addressed in another paper.

    There certainly are many other technical and procedural requirements. However those listed above are critical components that directly determine a voter’s ability to express their will through the democratic process. In their absence, voters could be thwarted, manipulated, misled, or confused. The purpose of democracy isn’t to tally votes, but to register the will of the people. Without the choice and tools to express this will, the people can have nothing meaningful to register.

    A System for Fairness in Sentencing

    We often hear of cases that offend our sense of fairness – excessive sentences, minor crimes that are punished more severely than serious crimes, or two equivalent crimes that are punished very differently. Rather than attempt to solve a politically and legally intractable problem, we ask a more theoretical question: whether an individual can assign sentences in a way that seems reasonable and consistent to him.  Our system is a means of doing so.  We offer a simple algorithmic method that could be used by an individual or review board to ensure that sentences meet a common-sense standard of consistency and proportionality.

    We intend to offer a less mathematical and more legally-oriented version of this article in the near future.

    Read the Paper (PDF)

    Why Voting Twice is a Good Thing

    We should require that every bill be ratified by a second vote, one year after its original passage. It goes into effect as normal, but automatically expires if not ratified at the appropriate time.

    Sometimes foolish legislation is passed in the heat of the moment or due to short term pressures. Perhaps there is an approaching election, or the media has flamed popular hysteria over some issue, or there is a demand for immediate action with no time for proper deliberation, or an important bill is held hostage to factional concerns, or legislators are falling all over one another to respond with a knee jerk reaction to some event. There are many reasons why thoughtful consideration may succumb to the influences of the moment. The consequences of such legislation can be real and long lasting. Law enforcement resources may be diverted or rights suppressed or onerous demands made on businesses. It is true that legislation may be repealed, but this requires an active effort. The same forces that induced the original legislation, though weakened by time, may threaten to damage anyone who takes the initiative to rectify it.

    Here is a simple proposal that could address this problem: Every piece of legislation should be voted on a second time, one year after its original passage. This vote would serve to ratify it. By making this mandatory, the burden of attempted repeal is not placed on any individual. Rather, legislators need simply change their vote. This is less likely to create a fresh political tempest, the issue’s emotional fury long spent. When an act is passed, it goes into effect as normal. However one year from that date, it must be ratified or it will expire. Obviously this should only apply to bills for which such ratification is meaningful; there would be no point in revoting on the prior year’s budget after the money has been spent. By requiring a ratification vote, legislators are given time to breath, sit back, and consider the ramifications of a particular piece of legislation. The intervening year also may provide some flavor of its real effect. A similar approach could be used at all levels of government.

    Influence in Voting

    Have you ever wondered what really is meant by a “deciding vote” on the Supreme Court or a “swing State” in a presidential election? These terms are bandied about by the media, but their meaning isn’t obvious. After all, every vote is equal, isn’t it? I decided to explore this question back in 2004 during the election year media bombardment. What started as a simple inquiry quickly grew into a substantial project. The result was an article on the subject, which I feel codifies the desired understanding. The paper contains a rigorous mathematical framework for block voting systems (such as the electoral college), a definition of “influence”, and a statistical analysis of the majority of elections through 2004. The work is original, but not necessarily novel. Most if not all has probably been accomplished in the existing literature on voting theory. This said, it may be of interest to a technical individual interested in the subject. It is self-contained, complete, and written from the standpoint of a non-expert in the field. For those who wish to go further, my definition of “influence” is related to the concept of “voting power” in the literature (though I am unaware of any analogue to my statistical definition).

    Ye Olde Physics Papers

    Once upon a time there was a physicist. He was productive and happy and dwelt in a land filled with improbably proportioned and overly cheerful forest creatures. Then a great famine of funding occurred and the dark forces of string theory took power and he was cast forth into the wild as a heretic. There he fought megalomaniacs and bureaucracies and had many grand adventures that appear strangely inconsistent on close inspection. The hero that emerged has the substance of legend.

    But back to me. I experienced a similar situation as a young physicist, but in modern English and without the hero bit.   However, once upon a time I DID write physics papers. This is their story…

    My research was in an area called Renormalization Group theory (for those familiar with the subject, that’s the “momentum-space” RG of Quantum Field Theory, rather than the position-space version commonly employed in Statistical Mechanics – although the two are closely related).

    In simple terms, one could describe the state of modern physics (then and now) as centering around two major theories: the Standard Model of particle physics, which describes the microscopic behavior of the electromagnetic, weak, and strong forces, and General Relativity, which describes the large scale behavior of gravity. These theories explain all applicable evidence to date, and no prediction they make has been excluded by observation (though almost all our effort has focused on a particular class of experiment, so this may not be as impressive as it seems). In this sense, they are complete and correct. However, they are unsatisfactory.  

    Their shortcomings are embodied in two of the major problems of modern physics (then and now): the origin of the Standard Model and a unification of Quantum Field Theory with General Relativity (Quantum Field Theory itself is the unification of Quantum Mechanics with Special Relativity). My focus was on the former problem.  

    The Standard Model is not philosophically satisfying. Besides the Higgs particle, which is a critical component but has yet to be discovered, there is a deeper issue. The Standard Model involves a large number of empirical inputs (about 21, depending on how you count them), such as the masses of leptons and quarks, various coupling constants, and so on. It also involves a specific non-trivial set of gauge groups, and doesn’t really unify the strong force and electro-weak force (which is a proper unification of the electromagnetic and weak forces). Instead, they’re just kind of slapped together. In this sense, it’s too arbitrary. We’d like to derive the entire thing from simple assumptions about the universe and maybe one energy scale.

    There have been various attempts at this. Our approach was to look for a “fixed point”. By studying which theories are consistent as we include higher and higher energies, we hoped to narrow the field from really really big to less really really big – where “less really really big” is 1. My thesis and papers were a first shot at this, using a simple version of Quantum Field Theory called scalar field theory (which coincidentally is useful in it’s own right, as the Higgs particle is a scalar particle). We came up with some interesting results before the aforementioned cataclysms led to my exile into finance.

    Unfortunately, because of the vagaries of copyright law I’m not allowed to include my actual papers. But I can include links. The papers were published in Physical Review D and Physical Review Letters. When you choose to build upon this Earth Shattering work, be sure to cite those. They also appeared on the LANL preprint server, which provides free access to their contents. Finally, my thesis itself is available. Anyone can view it, but only MIT community members can download or print it. Naturally, signed editions are worth well into 12 figures. So print and sign one right away.

    First Paper on LANL (free content)
    Second Paper on LANL (free content)
    Third Paper on LANL (free content)
    First Paper on Spires
    Second Paper on Spires
    Third Paper on Spires
    Link to my Thesis at MIT