Check-IRV: a vastly improved version of IRV


I know this isn’t really the place for an IRV discussion, but I had an idea which we might be able to pitch to FairVote:

We do IRV all the way until the step where it picks a winner, but then the system does a check; of all the eliminated candidates, if you brought them in one at a time, can any of them get more votes than the current winner (based on redistributing votes, so if I rank an eliminated candidate 2nd and the majority winner 3rd, the check would give my vote back to the eliminated candidate.) If there are multiple eliminated candidates who beat the current winner, who by the most? I think it’s essentially like a Condorcet, pairwise method, but it’s done as a modification to IRV, so it should work well for FairVote’s purposes.

An example: 100 voters, 3 candidates - a Liberal, Moderate, and Conservative. Assume people vote honestly, for all candidates, and their preferences are “rational.”

  • 40 people rank Liberal 1st
  • 19 Moderate
  • 41 Conservative

Let’s say 10 moderates prefer Conservative, 9 prefer Liberal.

Proceeding by IRV rules, Moderate is eliminated first, and now it’s Liberal 49, Conservative 51. Conservative wins.

But with this modification, the check would bring Moderate back. Moderate is preferred by 59 people over Conservative’s 41, and wins instead.

As far as I can tell, this is less vulnerable to strategy due to the elimination and checks, but idk.

^(a tangentially related modification: let 1st preference candidates specify the order of the remaining candidates, so that bullet voters still count)

^(the thinking behind this system is similar to Asset: find a way to get a more “solid” majority every time someone’s about to win)

taken from:


The reason this should be far more pitchable to FairVote is because it’s a) an addition to IRV and b) there’s nothing (so far as I see) that can possibly make this worse than IRV, other than the added complexity.

If they refuse this system, then they’re truly unwilling to better themselves.


This method is not Condorcet. For example:
7 B>A>C>D
7 B>C>A>D
8 B>C>D>A
20 C>D>B>A
24 D>C>B>A
B is the CW, D is the IRV winner, and C has the best pairwise result vs D.


Doesn’t C beat B? C has 44 votes to B’s 22. So B can’t be a CW. In fact, it looks like C is the CW here:

  • C 59 A 7, C 44 B 22, C 42 D 24

I’m not claiming Check-IRV is Condorcet either, so take your time :slight_smile: I do think it’s incredibly close either way, though.


Ah, I forgot a line. It should be
34 A>B>C>D
7 B>A>C>D
7 B>C>A>D
8 B>C>D>A
20 C>D>B>A
24 D>C>B>A
Later I might see what kind of Yee Diagram it yields and post the result.


Good example; C’s pairwise performance is:

  • C 59 A 41, C 44 B 56, C 76 D 24

What I wonder is whether Check-IRV can only pick candidates if they’re up to 1 head-to-head victory away from being a CW (essentially, they beat everyone except the real CW.)

When you do the diagram, is there a way to see strategic performance too? Thanks for the help.

(Aaaand I’m seeing incentive for strategy already: the 22 B voters who put C over D helped cost their own candidate the victory. Against D,

  • B 56 D 44, C 76 D 24

But had the B voters buried C, it would’ve been C 54 D 46. That sucks… There’s a way to incorporate a checking step after IRV, but this isn’t the optimal one it seems.

Might still be good enough for FairVote, though :slight_smile: )


The only way I see to mitigate the issue of strategy is to perhaps run a second IRV calculation among the eliminated candidates, and see if the strongest of them beats the IRV winner head-to-head. But that’s a little too complicated, and it just has most of the flaws of IRV again; probably fails if there are clones as well.


OK, here is a Yee diagram with 5 randomly generated points. The left is IRV, the center is Check-IRV, and the right is the Voronoi diagram.
The points were (88,86), (16,141), (116,100), (128,93), and (86, 48). The standard deviation was 100, and the simulation was run with 2000 voters.

It seems to mitigate some of the problems with IRV. But there is an issue with cloning that can render it functionally identical to IRV (at least in the 2D geometric scenarios.)


This looks so much better than IRV, thanks for making this!!

How can I make Yee diagrams? I’m not much of a programmer, though I can try some.

Cloning probably can’t be solved without changing some of the steps; maybe support for each eliminated candidate can be made exclusive to beat cloning somehow. Great stuff!


The cloning issue is that in the geometric scenarios, the position where a candidate could obtain the best pairwise margin versus some other candidate (call them A) is as close to A as possible while still being closer to the center than A. Since IRV is cloneproof but extremist biased, the slightly more centrist clones will never win the IRV election, but they also won’t spoil it for their partner, so the IRV winner will be the same as if the clones never existed. Then the IRV winner’s slightly centrist clone will have the best pairwise margin against the winner, so the clone will win, resulting in effectively the same outcome as IRV. Here are some Yee diagrams showing this.
IRV, Check-IRV, and Voronoi, square scenario without clones

IRV, Check-IRV, and Voronoi, square scenario with clones


This is all high-level quality work. Thanks for your explanations and all!

Do you have ideas on what could help more centrist clones out in the checking step? I can only see other systems or some kind of really complicated calculation being used to determine a better winner.

Oh, and I ought to ask why there is that gray diamond in the bottom right two images but not in the IRV one. Does that mean Check-IRV is doing better in those regions?


The reason for the gray diamond is that I gave the slightly centrist clones a similar but tinted version of their partner’s color. IRV never elects the centrist clones in this scenario, so the tinted colors never appear in the Yee Diagram. However, the ‘slightly centrist clones’ are only truly closer to the center of the electorate when the center of the electorate is inside the diamond, so they only win the Check-IRV election in those cases. (Outside the diamond, the opposite effect happens: they lose to their partner by a wide margin.) The Voronoi diagram simply indicates which candidate is closest to the center of the electorate, i.e. who ‘should’ win.


Thanks. I’ll see about making those clones more and more centrist (if I can think of a good alternative step.)


The issue is less about differentiating between clones, it’s more making sure that running clones cannot help a party win.


The only reason IRV is cloneproof is because it eliminates them… Perhaps elimination of the candidates who beat the IRV winner is in order somehow.


Are you generating these diagrams? I am a data scientist and would love the code base to work with.


I am using my own code to generate the diagrams, although I am currently in the process of reorganizing some things in it. When that is finished, I could probably get it to you. Though the IEVS program on the site also generates this type of diagram and can do some other things (although some of the code is outdated.)


Please make it available via some open source community (eg Git). If it is in a language other than Java I will likely contribute.


Do you think having Check-IRV elect the candidate who beats the IRV winner with the smallest majority would fix the cloning issue? Seems counterintuitive, but I think you’d have to differentiate yourself a fair bit from the IRV winner to win with a lesser majority, which may or may not end up electing centrists. I’ll think of other ideas too.

Edit: Also, does it make a difference if all candidates are compared to the current IRV winner, as opposed to only the eliminated ones?


On a different note, there is also BTR-IRV, where you find the two candidates with the smallest score, and the head-to-head loser among those two is knocked out. This might be useful because it encourages giving a full ranking (so that you have a say in every elimination round!) but also always elects the Condorcet winner. I think has a page about it.

BTR-IRV may technically fail later-no-harm (not sure about this) but it feels like it encourages ranking all candidates. In the example below, if the top 110 voters truncated their ballots at A>B or B>A, then the lesser evil C would not beat D in BTR-IRV (or Check-IRV, for that matter).

For example:
40 A>B>C>D>E
70 B>A>C>D>E
100 C>D>B>E>A
71 D>E>C>B>A
41 E>D>C>B>A

IRV: A drops, then E. Totals are 110, 100, and 112. Then C drops and D wins.
BTR-IRV: First (A,E) are compared and A drops. Then (B,E) are compared and E drops. Then (B,C) are compared, but even though C has fewer first place votes, more people prefer C over B so C stays and B drops. Finally, C wins over D.
Check-IRV in the original post: D is the IRV winner. But C is preferred over D 210 to 112, so C wins.