The program implements an algorithm developed in Rasooly (2021). While the details can be found in the paper, the basic idea is easy to describe. The algorithm begins by finding the minimum point at which the bidding can ‘jump’ from 0 to 1. Mathematically, this involves solving a minimisation problem subject to a discontinuous constraint; and the solution to this problem is termed the ‘first jump’. Using the first jump, the program then finds the minimum point at which the bidding can jump from 1 to 2 (i.e., the ‘second jump’). Continuing in this fashion, the algorithm computes the full vector of jumps. This vector is then converted back into a behavioural strategy using a procedure outlined in Rasooly (2021).

As shown in the paper, the algorithm constructs the (provably unique) symmetric equilibrium in the case of the all-pay auction with independent, private values. In the case of the first price auction, it outputs the unique symmetric equilibrium in undominated strategies in which players with value of 1 bid always bid 0. (If you download the code, you can also use the algorithm to find other symmetric equilibria for the first-price auction.)
While the algorithm may be of interest to economic theorists, its main intended audience is experimenters wishing to test the predictions of equilibrium auction models. As discussed in Rasooly and Gavidia-Calderon (2021), prior experimental work on auctions has operated under the (often implicit) assumption that the equilibria of continuous auction theory are close to the equilibria of the inevitably discrete auction games constructed in the laboratory. It is only under this assumption that one can claim to have tested the predictions of equilibrium using a discrete experiment. Using this algorithm, experimenters are now able to compute the exact equilibrium for their particular set-up, thereby obviating the need to rely on (potentially inaccurate) continuous approximations.
It depends! In some cases (e.g., the all-pay auction with 10 bidders, uniform values and maximum possible value of 50), discrete equilibria differ markedly from the predictions of an ‘analogous’ continuous model in which values are uniform on the interval [0, 50]. The reason is that the discrete model (unlike the continuous one!) involves randomisation over a very large range of different bids. In other cases, however, the discrete equilibria are almost identical to their continuous analogues. For instance, a discrete equilibrium of the first-price auction with two bidders and uniform values can be obtained by taking the continuous equilibrium bids and rounding them down.
The table should be quite self-explanatory:
• The first column of the sheet specifies the possible values that each player can have (these are a list of consecutive integers starting at 0).
• The second column specifies the bids that are submitted with positive probability in equilibrium at a particular value. For example, an entry of [0, 1, 2, 3] means that the relevant value randomises between bidding 0, 1, 2 and 3.
• The third column specifies the probability with which each of these bids is submitted.
• Finally, the fourth column outlines the predictions of an analogous continuous model in which bids can be any real number and values are smoothly distributed on the [0, x] interval (where x is the maximum value as specified by the user).
This may be because you are trying to calculate the equilibria of a “large” discrete auction (e.g. with several hundred bidders and possible valuations). In such cases, you are probably better off downloading the code and running it on your machine.
It does! If you download the code, you can modify it to handle alternate auction rules by re-defining the payoff functions. The algorithm can also be modified to allow for risk aversion, non-integer bid spaces, and much more else... The reason for this is that the arguments underpinning the algorithm are very general (see Rasooly 2021 for the details).