Anti-Harassment Tools/SecurePoll Improvements/Understanding the STV result

SecurePoll now supports the Single Transferable Vote method. Single Transferable Vote or STV is a ranked voting method that allows voters to specify candidates they want to see elected in order of preference. For SecurePoll, we selected the Meek's implementation with Droop Quota. Meek's implementation is the most popular for STV elections and is used by several organizations and governments for their elections. The below example uses a more simplified STV implementation (Scottish STV) in order to explain the general concept. A more accurate description of the exact method followed in the implementation can be found here.

Example election

 * Candidates: Alice, Bob, Charlie, Dave
 * Seats: 2
 * Voters: 7

Droop quota = floor(total valid votes/(seats+1)) + 1 = floor(7/(2+1)) + 1 = 3

Round 1

 * Alice: 4 votes - Elected
 * Bob: 1 vote
 * Charlie: 0 vote
 * Dave: 2 votes

For Round 1, we consider every voter's 1st preference votes. Alice has achieved the Droop quota and is hence declared elected.

Round 2

 * Alice: Elected
 * Bob: 1 + 0.5 = 1.5 votes
 * Charlie: 0 + 0.25 = 0.25 votes - Eliminated
 * Dave: 2 + 0.25 = 2.25 votes

Alice has 1 surplus vote which will be redistributed according to the voter's second preferences. Looking at all of Alice's votes - 2 voters picked Bob second, 1 voter picked Charlie second and 1 voter picked Dave second. Alice's surplus vote is split proportionately. Bob gets 0.5, Charlie gets 0.25 and Dave also gets 0.25 additional vote.

Since no candidate achieves the Droop quota, the candidate with the lowest votes (Charlie) will be eliminated and their votes will be transferred proportionately.

Round 3

 * Alice: Elected
 * Bob: 1 + 0.5 + 0 = 1.5 votes = Eliminated
 * Charlie: Eliminated
 * Dave: 2 + 0.25 + 0.25 = 2.5 votes

Charlie got the lowest votes and was thus eliminated. Since Voter 7 has Dave as their 3rd choice after Alice (already elected) and Charlie (already eliminated), all of Charlie's vote transfers to Dave.

Nobody reaches the Droop quota so once again the candidate with the lowest votes will be eliminated. Hence, Bob is eliminated.

Round 4

 * Alice: Elected
 * Bob: Eliminated
 * Charlie: Eliminated
 * Dave: 2 + 0.25 + 0.25 + 1.5 = 3.75 votes - Elected

Bob received the lowest votes and was thus eliminated. Since voters 4 and 5 have Dave after Bob in their vote profile, a fraction of their votes get transferred to Dave, but since Voter 6 has not specified any candidates other than Alice and Bob (already elected or eliminated), a quarter of their vote gets exhausted.

Dave reaches 3.75 votes which is above the threshold, thus declared elected.

Result

 * Elected candidates: Alice and Dave
 * Eliminated: Bob and Charlie

Things to note

 * If no candidate achieves the Droop quota in a round, the candidate with the lowest votes is eliminated and their votes are re-distributed among remaining candidates in accordance with the voter's ranked preferences.
 * If two or more candidates tie for elimination in the final round with one seat remaining, the software allows the election admins or election committee to make a judgement call on how to break the tie.
 * Note that the above is a simplified example. In an actual calculation, the Droop quota is recalculated at each round in accordance with the rule stated here.
 * If two or more candidates tie for elimination in one of the intermediate rounds, we follow the "Short-cut exclusion rule" as outlined in this paper. This rule allows us to eliminate candidates when it is mathematically guaranteed that they can never win. This will happen when the candidate's votes don't exceed the votes by the next-best candidate even when they are assigned all the outstanding surplus votes. This seems a fairer method to decide eliminations as compared to randomly eliminating a candidate in the event of a tie. An example with a bigger election. Note that OpaVote/OpenSTV uses pseudo-random eliminations when it comes to ties. Hence their results may differ from ours in the event of a tie.
 * Note: During the tally process numbers with high precision may not be accurately presented on the tally page. We are using PHP in the backend which supports extremely high precision. This is not easy to represent in the interface. However this may impact eliminations/elections without the process being obvious to the end user. For example, if Candidate A has 86.00000000003 votes in a round and Candidate B has 86.0000000004 in a round, they both may be presented as having "86" votes but Candidate A will be eliminated as they have lesser votes than candidate B when the complete number is compared.