Interpreting graphical auction results¶
This section describes the graphs produced by the software, using
either the --graphics-file
option of the command-line
interface, or automatically using the web app.
When graphs are generated using the command-line interface, they are all output as a single web page (HTML file). You can open this page in a web browser to view the graphs. If they appear too wide or too narrow, resize the width of your web browser window and refresh the page. When hovering over a graph, a control bar will appear in the top right corner, with buttons to save the displayed plot as a PNG image, edit it using an online service, or adjust the view.
When graphs are generated in the web interface, they appear in the
“Auction output” column under the price and allocation tables. Each
graph has a collapse/expand button to make it possible to focus on the
items of interest. Again, the width of the graphs will be fixed
automatically based on the width of the web browser window. The
control bar to edit graphs is not displayed in the web app, but the
command-line version of the graphs can be accessed by downloading the
auction results as a ZIP file and opening the included
graphs.html
file.
For most graphs, you can click and drag to zoom in, and double-click to zoom out again. Clicking on the legend will toggle the display of individual traces, or double-clicking will display a single trace.
Note that in some cases the order and colour of bids may be different between the web app and CLI. This arises because the web app always labels bids with integers (in the usual order), but the CLI permits the CSV file to have arbitrary textual labels (in alphabetical order). For example, in graphs generated by the CLI, a bid labelled “10” appears between “1” and “2”.
Bids bubble chart (2D)¶
This graph is generated only when there are exactly 2 goods. The bids
are shown as bubbles in price space (with the price of one good on
each axis). Filled circles represent bids that are fully allocated
(i.e. receive the entirety of their requested quantity); partially
filled circles represent bids that receive some but not all of their
requested quantity; open circles represent bids that receive nothing.
The size of the bubbles is constant (but can be adjusted using the
--dotsize
option). Text labels next to the bubbles display
the quantity allocated to the bid, unless the
--graph-hide-bid-quantity
flag is passed. Unsuccessful bids
are not labelled.
A generalised bid is considered “fully allocated” if the overall bid quantity constraint is binding or if at least one individual good’s maximum constraint is binding, taking account of the trade-off for asymmetric bids if appropriate. Additional constraints are not taken into account. This is tested after rounding, so in some circumstances we may show a bid as fully allocated that actually receives less than its demand in an exact analytic solution.
The prices resulting from the auction are plotted as horizontal and vertical black line segments. The rectangular region bounded by these line segments and the axes contains bids that are rejected. Originating from the intersection of the line segments, a diagonal line separates the regions of bids that receive each good.
Bids bubble chart (3D)¶
This graph is generated only when there are exactly 3 goods. It is a three-dimensional version of the bubble chart described above, where bids are represented as bubbles in price space. Again, the coordinates reflect the bid price on each good, and the bubbles are filled and labelled based on the allocated quantity.
The black lines showing the auction prices remain, and in addition the plane segments separating unique demand regions are plotted in semi-transparent colours.
When viewing the graph in a web browser, the view can be manipulated using the mouse. Left-click and drag to rotate, right-click and drag to translate and middle-click and drag to zoom.
Allocation of bids to goods¶
This graph is generated for all auctions. Each column represents a good, with the y-axis showing prices. Black horizontal lines represent the auction prices. Each bid is plotted in the columns for goods it receives (or in one of the columns for a good it would receive if the prices were lower). The vertical position corresponds to the bid price. The area of the bubbles is constant, and horizontal position within the column is not significant (other than to visually separate bids at the same price). Bubbles are labelled with the quantity of the good actually allocated to each bid, or the quantity requested for unsuccessful bids. Where bids are partially allocated, the quantity allocated is shown as a fraction of the quantity requested for the particular good (taking account of asymmetric and generalised bids).
Non-paired bids are plotted in the column for the good on which they bid. Paired bids are plotted in the column for the good they won or were closest to winning (resolving ties arbitrarily in the latter case). If a paired bid is rationed (i.e. wins multiple goods), it is plotted in every column corresponding to a good it receives.
If a bid receives its entire requested allocation of the relevant good, it is plotted as a filled circle. If it receives part of its requested allocation, but not the full amount, it is plotted as a partially filled circle (an inner filled circle and an outer unfilled circle). If it receives nothing, it is plotted as an unfilled circle.
As with the bubble chart, the --dotsize
and
--graph-hide-bid-quantity
options can be used to adjust the
display. In addition, the --graph-bid-simple-colors
option
can be used to colour the bids depending on whether or not they are
accepted, rather than by bidder.
Supply and demand for each good¶
Supply and demand curves can be generated for each good individually, depending on the configuration. The x-axis shows good prices (expressed relative to the price of the previous good, for vertical auctions, or absolute prices for horizontal auctions). The y-axis shows the total quantity allocated to the good and (for vertical auctions) any successive goods. The supply curve is plotted as a continuous line, and a vertical dashed line shows the quantity allocated by the auction, with a marker at the auction price.
Various different types of supply and demand curve graphs are supported, depending on the auction configuration (in particular, whether it uses a horizontal or vertical supply ordering, and whether a TQSS is in use). These are described in the following subsections.
The web application will always generate the default supply and demand
curves. In the command-line interface, the default behaviour may be
overridden and demand curve types to generate may be specified using
the --demand-curve
option, including a number of points if
appropriate. This option may be repeated multiple times, to generate
multiple different supply and demand curve graphs.
The subsections below discuss the different demand curve types available. The
supply curve will be the same in each case, except that in the
UnadjustedDemandWithTQSS
case (see Supply and demand for horizontal auctions with TQSS) it will
be increased by the value of the TQSS.
When an absolute TQSS that scales the supply is in use, the supply curves are drawn at the equilibrium value, i.e. they vary according to the TQSS (see TQSS with absolute prices).
Supply curve only¶
This consists of a supply curve only, with no demand curve. This is
the default graph for auctions that are neither simply horizontal or
vertical (e.g. a tabular supply). It can be requested in the
command-line interface using --demand-curve NoDemand
.
Supply and demand for horizontal auctions¶
This computes the aggregate demand of all the bids on a good, ignoring bidding on other goods (so paired bids are counted for multiple goods). It does not require a number of points to be specified, or result in additional runs of the LP. Since the demand curve is in principle correct for all quantities, it is plotted as a continuous line. The width of the graph will be the width of the supply curve.
This is the default graph for horizontal auctions. It can be
requested in the command-line interface using --demand-curve
UnadjustedDemand
.
Supply and demand for horizontal auctions with TQSS¶
This is similar to Supply and demand for horizontal auctions, wherein the demand curve aggregates all bids on a good, but with the supply curve increased vertically by adding the TQSS. The width of the graph will be limited to the width of the TQSS, which may be less than the width of the supply curve.
By default, this is generated in addition to the previous graph for
horizontal auctions with a constraint-style TQSS (except that in the
web app, it is generated in “Full-featured” mode but not “Basic”
mode). It can be requested in the command-line interface using
--demand-curve UnadjustedDemandWithTQSS
.
Supply and demand for vertical auctions¶
This runs the LP multiple times for different total quantities, fixing the supply curve for the current good such that the desired quantity will be supplied (using a large negative price). Since the demand is known only at quantity points for which an LP run is performed, the curve is plotted as a discontinuous series of points.
In the graph for good j and higher, each of these points signifies the “demand” price spread that the auction would set if it were required to allocate the quantity shown on the horizontal axis to the set of goods j,…,n. Note that a price set by the auction may not correspond to actual (inverse) demand, if the actual bidding would yield no sale on that good.
This is the default graph for vertical auctions. It can be requested in the
command-line interface using --demand-curve "AdjustedDemand <n>"
where
<n>
is a positive integer number of LP runs. This will yield a demand curve
consisting of n evenly-spaced points.
Fixed total allocation¶
This is similar to Supply and demand for vertical auctions, but the supply curve for every good is fixed, and a price of zero is used for the height of the supply curve steps, rather than a large negative price. That is, to calculate a demand point, an LP run is performed with the current good having a supply quantity specified on the y-axis, and other goods having the supply quantities calculated in the original run of the auction.
This is a non-standard (experimental) graph that will not be displayed unless
explicitly requested on the command-line with --demand-curve
"FixedTotalAllocation <n>"
where <n>
is a positive integer number of LP
runs.