I've been reading material on rangevoting.org for a couple years now, and recently was discussing voting strategy with a friend. He has always voted independently, finding some extremely obscure candidate for US senate and presidential elections that he actually liked and agreed with. I have always preferred choosing between front-runners instead. So I think my friend is an honest voter, and I'm strategic. We argue on occasion but...

Simulation results from IEVS show that when the electorate is predominantly honest, the best results are achieved. This appears to hold true for each election method reported on.

This did not make sense to me intuitively. So I tried running my own simulations. My results strongly prefer strategic voters under the plurality method. One set of results that's not atypical is:

`Pl regret : avg 0.349 36.550% non-zero 0.956 mean-non-zero`

SPl regret : avg 0.157 24.600% non-zero 0.640 mean-non-zero

R10 regret : avg 0.059 15.600% non-zero 0.375 mean-non-zero

SR10 regret : avg 0.096 20.500% non-zero 0.470 mean-non-zero

App regret : avg 0.096 22.350% non-zero 0.429 mean-non-zero

SApp regret : avg 0.085 19.350% non-zero 0.441 mean-non-zero

IRV regret : avg 0.129 22.400% non-zero 0.576 mean-non-zero

Pl is plurality, R10 is range with 10 steps, App is approval voting, and IRV is ... well just that. I have not yet implemented a Condorcet or Borda algorithm. You can see that I'm getting much more optimistic results from strategic voters. I have no strategy for IRV voting coded up. One in mind but it should not affect results much.

My results should be treated with great suspicion. I'm taking the opportunity to learn Rust at the same time, which I'm still getting used to. My code is on github. I should really re-write this in a more accessible language like Python.

My version of "strategic voter" is, currently, to use the two top candidates in the honest election of the same type. For Plurality, vote for the best of those two. For Range, score the favorite of those as a "10" and the other as a "1". Other candidates get scored with the same scaling -- mostly 10s and 1s but with the possibility of scores in between.

I'm still trying to figure out the various ways IEVS.c and my simulation differ. My focus is on how we come to opposite conclusions regarding strategic voting.

I'm not sure yet how candidates are drawn in position-space, how voters are, etc. Ultimately it's just a question of how random utilities are assigned. It looks like there are five utility generators, but I don't completely understand them yet. Still, I cannot find a way with my simulation to make strategic plurality voters do "worse" than honest ones.

Lines 4083 - 4131 appear to define a strategic voter, but I haven't spent enough time yet to really figure this out either. It wasn't obvious to me after a quick perusal, but maybe with some careful study it will become clear. Many sections of this code are carefully documented and clearly written, but this part is not.

My first interesting idea relating to this is to try to separate out the variations in utility matrix generation. At some point, whatever method you use, you have a table of utilities. Imagine that candidates are the rows, and voters the columns. You can, perhaps, characterize all this in two ways. First, of course, add up the utilities for each candidate and derive their Bayesian regrets. Another characterization is to compute a covariance matrix for the candidates. The diagonal elements (variances) represent the amount of disagreement (sided-ness) of a candidate, and the off-diagonal elements (covariances) represent the amount of overlap of the supporters of the given two candidates. Could it be that these characterizations will help identify conditions where various voting methods and strategies become problematic? If so, it allows some independence from utility generation.

I'll add some links to plots later. So far I'm seeing that (honest) plurality elections are at their worst, as you would expect, where a runner-up candidate is close in average utility to the best candidate, and where unpopular candidates are closer politically to the best (positive covariances) and distanced from the second-best (negative covariance). This is probably a demonstration of the third-party spoiler effect.