Technical Report: Board of Directors Ranked Choice Voting Breakdown

Counting a Ranked Choice election is easy to explain to a layperson, but can get mathematically pretty complicated. For the former, check out:

For those who want to get deeper in the math, you’re in the right place. A few caveats:

Important Caveats

  • Ranked Choice Voting involves many steps, including iterative re-calculations of vote hold and transfer factors and the target vote count to win. I will not list every single step.
  • Ranked Choice Voting involves many steps, and as a human, I may have made a copy-paste error while building this information. If there is any discrepancy, the information on ElectionBuddy is correct.
  • Some steps are presented here in a slightly different order than what happened in reality. This is to help clarify the story of what votes are moving where – minor steps may be out of order, and if done in the right order, the numbers may be slightly different. ElectionBuddy is correct, this is just an illustration.
  • There is some complicated discussion about fixed point vs floating point math that I won’t get into. Rest assured that Election Nerds care a lot about it, and ElectionBuddy did it right. I just used a Google Sheet.

Detailed Vote Counting Explanation

To get deeper in the math, here are the round 1 vote totals for each candidate:

CandidateHold CoefficientVotes
Kyle Ryc118
Rob McKenzie145
Brook Gardner-Durbin135
Tobias Vyseri120
Joe Klopchic126
Steet13
Steven Krysiak124
John Brian McCarthy131
Round 1 Vote Totals

Hold coefficients show the percentage of a vote that is kept by that candidate. The rest of the vote gets passed down to each voter’s next preference. They always start at 1. They go to 0 if a candidate cannot be elected (to transfer all their votes to their voters’ next preference), or they get decreased proportionally to how far past the bar a candidate is, if they get elected.

The Quota for this round is 33.67. Rob and Brook both met that quota, so they are marked as elected, and we calculate new hold coefficients for them.

Brook only had a few extra votes. His new coefficient is 0.96, reducing his total by 1.33. All of the other candidates pick up a few fractions from his voters. Rob had more extra votes, so he has more to transfer. His coefficient is 0.75. In reality, these get applied simultaneously – but here’s the effect of applying each one:

CandidateVote Change – Brook’s QuotaVote Change – Rob’s Quota
Kyle Ryc0.230.25
Rob McKenzie0.30-11.33
Brook Gardner-Durbin-1.332.52
Tobias Vyseri0.230.76
Joe Klopchic0.232.27
Steet0.110.50
Steven Krysiak0.041.76
John Brian McCarthy0.153.27
Vote Transfers after Round 1

This shows that Rob’s voters generally preferred John Brian, Joe, or Brook as a second place, and Brook’s voters were spread out more.

I got these Round 2 vote totals. Remember that these may not be exactly correct due to rounding – ElectionBuddy is authoritative here.

CandidateHold CoefficientVotes
Kyle Ryc118.50
Rob McKenzie0.74833.89
Brook Gardner-Durbin0.96236.09
Tobias Vyseri121.00
Joe Klopchic128.54
Steet13.62
Steven Krysiak125.84
John Brian McCarthy134.47
Round 2 Vote Totals

The Quota is now 33.66. It decreased slightly either because someone’s ballot was exhausted – they only voted for Rob or Brook – or because of weird rounding peculiarities. The votes John Brian received are enough to push him over the quota. I’ll apply the new quotas, and show you the change in votes due to each one.

CandidateVote Change – Rob’s Quota (0.748 -> 0.743)Vote Change – Brook’s Quota (0.962 -> 0.897)Vote Change – John Brian’s Quota (1.000 -> 0.976)
Kyle Ryc0.010.420.08
Rob McKenzie-0.230.390.12
Brook Gardner-Durbin0.05-2.430.13
Tobias Vyseri0.020.420.06
Joe Klopchic0.050.470.33
Steet0.010.190.01
Steven Krysiak0.040.130.05
John Brian McCarthy0.070.34-0.81
Vote Transfers after Round 2

These are relatively small changes, because the candidates weren’t too far above the quota. ElectionBuddy also re-calculated the hold coefficients a few times – because of transfers to candidates who already won, or exhausted ballots, it takes a few iterations for this to stabilize. ElectionBuddy wants to try its best to see if anyone new will be elected, because it starts eliminating candidates. However, these were small changes, and while everyone gets a bit closer, no one new can meet the quota.

This means that a candidate must be eliminated instead – Steet in Round 3, and because that didn’t push anyone over the quota, Kyle in Round 4. Here are the results of that. Again, this is approximate. There’s a re-calculation of coefficients here that I’m skipping over for the sake of illustrating the major changes in votes.

CandidateVote Change – Eliminate SteetVote Change – Eliminate Kyle
Kyle Ryc0.06-19.23
Rob McKenzie0.811.75
Brook Gardner-Durbin1.131.81
Tobias Vyseri0.456.69
Joe Klopchic0.133.46
Steet-3.910.00
Steven Krysiak0.132.27
John Brian McCarthy1.222.87
Vote transfers when candidates were eliminated from contention in Rounds 3 and 4

That brings us to Round 5, and a race between Joe, Tobias, and Steven for the last two seats. Joe meets the new quota of 33.55:

CandidateHold CoefficientVotes
Kyle Ryc00.00
Rob McKenzie0.699649179135.50
Brook Gardner-Durbin0.843356496335.41
Tobias Vyseri129.59
Joe Klopchic135.20
Steet00.00
Steven Krysiak129.24
John Brian McCarthy0.90715029736.35
Round 5 Vote Totals

Rob, Brook, Joe, and John Brian now have to transfer some votes. This is an iterative process, and several re-calculations of hold coefficients are needed before this elects a fifth candidate. This table shows the total changes.

CandidateVote Change – Transfers from Rob (0.700 -> 0.595)Vote Change – Transfers from Brook (0.843 -> 0.702)Vote Change – Transfers from Joe (1.000 -> 0.813)Vote Change – Transfers from John Brian (0.907 -> 0.746)
Kyle Ryc0.000.000.000.00
Rob McKenzie-5.331.091.281.24
Brook Gardner-Durbin1.06-5.932.350.99
Tobias Vyseri0.731.420.450.52
Joe Klopchic1.181.62-6.583.04
Steet0.000.000.000.00
Steven Krysiak0.840.810.400.48
John Brian McCarthy1.410.702.04-6.44
Vote transfers after Round 5

This transferred enough votes to Tobias that she was able to reach the quota, and Steven was not, giving the Round 6 results:

CandidateHold CoefficientVotes
Kyle Ryc00.00
Rob McKenzie0.594647831633.63
Brook Gardner-Durbin0.702120408533.67
Tobias Vyseri133.60
Joe Klopchic0.813111558733.70
Steet00.00
Steven Krysiak132.23
John Brian McCarthy0.746439591333.65
Round 6 Votes

For this reason, Rob, Brook, Tobias, Joe, and John Brian were deemed elected.

Data Sources

If you want to run this analysis yourself, you can grab the ballots from this CSV file. They are anonymous, of course – no one can tell how any specific person voted. If you do use these, note the following:

NOTE: This file does NOT follow the same numbering convention as the ballot. On the ballot, you ranked your most preferred candidate as a 1, for first place. In this file, that is reversed. We apologize for any confusion; this is the format used by our election provider.