Range Voting's paradoxes — when the mean overrules the majority (§A8 worked)¶
New to Range Voting? Start with the method itself → Range / Score Voting. That page shows the ballot (with pictures of how voters mark it), the one-line count, the pros and cons, and where Range sits in the scored family Approval → Range → STAR. This page assumes all that and goes straight to where the mean misbehaves.
The Range Voting (RV) procedure: voters grade every candidate on a cardinal scale (Felsenthal uses 1–10); the highest mean grade wins. Felsenthal lists RV as vulnerable to the Condorcet Winner, Condorcet Loser, Absolute Winner, Absolute Loser, and Truncation paradoxes — and notes the striking fact that, unlike every other procedure except Majority Judgment, most of RV's paradoxes need only two candidates. (More of the repo's Range material: the concept folder, its glossary, and the Range tabulation engine.)
Both examples are runnable case files, counted by grade_methods_report.py and cross-checked against pref_voting on every run:
uv run STARVote_LH_tabulation_engine/tools_adam/pref_voting_tabulation_engine/grade_methods_report.py method_comparisons/felsenthal_paradoxes/cases/range_ex23_mean_overrules_majority.yaml
They keep Felsenthal's 1–10 grades rather than being rescaled, so they are grade-ballot files, not LH election files — the engine's YAML path validates scores against STAR's 0–5 and BetterVoting's ballot is 0–5 too, and rescaling would change his numbers. That is why these carry a grades: block instead of ballots:, and why they have no _tabulated mirror: the count lives here and in the tool.
Source: Dan S. Felsenthal, "Review of Paradoxes Afflicting Various Voting Procedures Where One Out of m Candidates (m ≥ 2) Must Be Elected", University of Haifa / LSE, revised 26 May 2010; Appendix §A8.
Example 23 — four paradoxes with two candidates¶
| Grades (1–10) | V1 | V2 | V3 | V4 | V5 | Mean |
|---|---|---|---|---|---|---|
| x | 2 | 2 | 2 | 3 | 10 | 3.8 |
| y | 1 | 1 | 1 | 10 | 7 | 4.0 |
RV elects y (mean 4.0 > 3.8). But an absolute majority — V1, V2, V3, V5 — graded x above y, and an absolute majority (V1–V3) gave y the lowest possible grade: x is the Condorcet and absolute winner, y the Condorcet and absolute loser. One enthusiastic 10 from V4 outvotes three quiet majorities: the mean lets intensity overrule count.
The STAR observation. With two candidates, STAR's automatic runoff is the head-to-head: on these ballots the scoring round would rank y first (means), and the runoff would elect x 4–1. The runoff stage exists precisely to give the majority the last word after the scores speak — this example is the clearest possible illustration of why STAR is Score Then Automatic Runoff and not Score alone.
Case: range_ex23_mean_overrules_majority.yaml. The report finds all four paradoxes from the grades alone — it computes the head-to-head (x above y on 4 of 5 ballots), names x the Condorcet winner and y the Condorcet loser, flags that Range elects the Condorcet loser, and detects y as the absolute loser on 3 of 5 bottom grades. Worth noting what it also shows: on this profile Majority Judgment elects x, the majority's choice. The median gets Example 23 right and fails on its own examples instead — see Ex.25.
Example 24 — the Truncation paradox under RV¶
| Grades (1–10) | V1 | V2 | V3 | V4 | V5 | V6 | V7 | Mean |
|---|---|---|---|---|---|---|---|---|
| x | 1 | 1 | 1 | 10 | 5 | 4 | 7 | 4.143 |
| y | 2 | 2 | 2 | 3 | 8 | 5 | 8 | 4.286 |
RV elects y. V4 (who graded x 10, y 3) can do better by not grading y at all: under the procedure's convention an ungraded candidate takes the lowest grade (1) on that ballot, dropping y's mean to 4.0 — x wins. Saying less about y served V4 better than honest grading: the Truncation paradox, RV flavor. The mechanism is the same as Borda's (BV2160): wherever an unmarked candidate scores bottom, silence is a weapon.
Case: range_ex24_truncation.yaml. Strike the one cell and watch it flip — the flag names a cell, candidate/voter, not a whole ballot, because V4 keeps grading x:
uv run STARVote_LH_tabulation_engine/tools_adam/pref_voting_tabulation_engine/grade_methods_report.py --ungrade y/V4 method_comparisons/felsenthal_paradoxes/cases/range_ex24_truncation.yaml
What this folder takes from §A8¶
Two lessons travel. First, mean-based counting concentrates power in extreme grades — a single 10 can outweigh three majorities — which is why STAR keeps the runoff. Second, RV's truncation exposure comes from the ungraded-equals-lowest convention, not from cardinal ballots as such: STAR (0 is simply the scale's floor, and blanks mean 0 openly) and Approval don't reward hiding a grade the same way. Where STAR's own vulnerabilities lie, this folder shows them live instead: BV2156 (Condorcet miss) and BV2166 (participation).