Simulating truncation strategies
by Kevin Venzke [Home]

What if voters only use truncation strategies? Perhaps they don't want to compromise or try a burial strategy, but still don't want to rank all the candidates, due perhaps to limited interest, or perhaps to some strategic intuition. In particular, one might not want to rank the worse of two perceived frontrunners in the race, or anyone worse than that. The result then will be a loss of some preference information. But what does that look like, and what are the implications?
Features: Over 50 methods, custom method support, numerous settings, spatial or non-spatial preferences, ability to save/load scenarios, conversion to ballots, stats on sincere Condorcet efficiency and method similarity.

Bugfixes and changes: Any changes affecting outcomes will be reported here with dates.
Cautions: There are three buttons at the top for running trials, and they have hotkeys listed under them. Please note ⚠️ that if you hold down these keys to generate a lot of trials, your browser tab may be unresponsive while the results complete.
Notes on premises: One might immediately counter that voters will certainly not use only truncation strategy, that if a method calls for it then voters will at least also use compromise strategy, as observed in the real world. This is surely true, but note that (rational) use of compromise strategy improves a method's result to the extent that the strategy is required. By assuming that voters refuse to compromise, we at least avoid giving methods "credit" for what happens when voters are driven to use this type of insincerity.
If, contrary to the premise of the simulation, you want to assume that voters do not use any truncation, then you can just pick "Voters rank top X preferences" and max it out. Naturally this will be less plausible for methods that use an approval concept.
Basic options: The number of candidates and voters should be pretty clear. In a spatial plot, candidates are also voters, so the candidate count must be no higher than the voter count. In non-spatial plots this is not required. Most of the "distribution" options signify a spatial plot, and every voter plotted represents slightly more than 1.0 voter (this is to try to avoid ties). With the "non-spatial" setting, voters have completely random distances from each candidate. The "blocs" setting is the same as the non-spatial setting, except that one "voter" represents not one, but between 1 and 10 voters. The thought is that one might then reduce the voter count setting, but I leave that decision to the user.
"Charisma dimension" repurposes the vertical axis as an indicator of candidate charisma. Voters always prefer candidates to be near the bottom of the plot. Voters who are candidates always like themselves best, but feel as other voters when it comes to other candidates.
Truncation options, without frontrunners: Voters can rank all the candidates (except their very last choice) or some specific number of them, truncating the rest. Each voter can also pick randomly on their own: This is based on picking a random distance between the nearest and most distant candidate to the voter. Each voter can also rank every candidate who is above average (i.e. closer than the mean) or better than the midrange between their favorite and least favorite.
Truncation options, with frontrunners: When frontrunners are used, they are uniform for all voters. So choosing frontrunners "Randomly" means two candidates are chosen arbitrarily and all voters believe these two are the frontrunners. The other options mostly involve picking the top two (or bottom two) by some metric. The two approval options mean that a poll is conducted using one of the cutoffs described above (better than average, or midrange) and the top two on this poll become the frontrunners. "Condorcet winner vs. best opposition" means we take the Copeland winner (or one of them) as one frontrunner, and the other will be whichever candidate has the greatest number of votes if they were to run head-to-head against them.
Other options with frontrunners: "Threshold generosity" deals with the ambiguity involved in drawing a cutoff between two frontrunners. "Generosity" of 0% means no one worse than the better frontrunner will be ranked, while a value of 100% means every candidate better than the worse frontrunner will be ranked. "Random threshold for each voter" means that each voter sets their ranking threshold to a random value between their favorite and least favorite candidates.
An above-zero "Bullet vote chance" has some voters ignoring the frontrunner information and simply placing a single vote for their favorite candidate. This allows you to try to thwart methods that perform particularly well as long as we can assume every voter will support one of the frontrunners. This setting doesn't work if you aren't using frontrunners, and it is also not compatible with the "blocs" distribution option.
The percentage of "poll round participation" adds uncertainty to the correctness of the determination of the frontrunners by potentially not consulting all of the voters. A die is rolled for each voter, or in the case of "blocs" distribution, for each voter represented by the bloc.
Displays of results: For spatial scenarios there are usually three plots. The first just shows where the voters and candidates are. The second replaces the voter dots with gray circles where the darker the dot is, the more preferences that voter ranked on their ballot. The third replaces voter dots with colored dots corresponding to which candidates were ranked by that voter. In a non-spatial or "blocs" scenario, there will just be a text display of the sincere preference orders and where the ballots were truncated. Below these preference displays, you will usually see the identity of the frontrunners and some information about sincere vs. voted Condorcet winners. Then there is a table showing the candidates ranked in five ways. Following this is a table showing the winners according to a variety of methods. Skipping down to the bottom of the page there is also a section showing the cast ballots, and a section showing either the "Coordinates" or the "Preferences" of the scenario. These can be used to validate method results, help report bugs, or share scenarios.
Another thing you can do with the "Ballots" data is to try pasting it into the page "Who is the median voter?" and see if it can recreate the issue space or make a reasonable guess as to where the median is. (Note ⚠️ that it may take a couple of minutes to process if you have dozens of rows, with the web browser appearing to hang.)
Results across multiple scenario generations: Below the individual method results, there are several rankings of the methods based on all the trials done so far with a given set of settings. If you change the settings or use the "Use this scenario" feature, the settings will reset. These settings, as well as information on method similarity, are shown in text boxes at the bottom of the page, and the first lines there will have a label suggesting what settings were used, and the number of generated scenarios included in those statistics.
Loading scenarios: Unlike /stvplot, this page doesn't have dynamic adjustment controls. However, you can achieve a similar effect by changing the parameters and then pressing "u" (or clicking the "Use this scenario" button) which will load back the last plot written there.
You can also, of course, load back a previously generated scenario or one that you obtain via some other means. This works for both spatial and non-spatial scenarios. The page decides what type of scenario was submitted based on whether colons are in your data, as non-spatial scenarios require this. The header row at the top is not required.

Method list

Below, the term "approval" always refers to "implicit" approval, meaning a voter ranked some candidate above bottom, above some other candidate.
Methods named with a double asterisk (**) are two-round methods, which in the second round go back to the sincere preferences and assume all voters participate in the second round and vote sincerely. For top-two runoffs this is probably fair, but otherwise it is probably cheating, since strategies are possible but not explored. Interpret with caution.
For performance reasons, a tied outcome in a method is resolved arbitrarily.
In the three-candidate case, some methods are omitted because they become identical to others. Two methods are included only with three candidates: SV and IFPP.

** - indicates a two-round method; see note at top.

Use your own method(s)
See here for examples of what to enter below. Note ⚠️ you could hang or crash your browser here!

    Number of candidates (3-10): 
    Number of voters: 
    Plot height: 



    Distribution options:     even    normal    pull half    push half    triangle    non-spatial    blocs
   charisma dimension
Truncation logic
       Voters rank top X preferences: 
       Random threshold for each voter
  Voters rank above-mean candidates
  Voters rank above midpoint between best and worst
Truncation between two frontrunners: How they are chosen
 Randomly    First preferences    IRV final two    Utility (distance)  
 Copeland    Copeland worst two    Above-mean Approval    Above-midrange Approval  
 Copeland 2nd & 3rd place  Condorcet winner vs. best opposition
 % Threshold generosity between the frontrunners  Random generosity per voter
 % Bullet vote chance per voter despite frontrunners
 % Poll round participation chance per voter

Flag Counter