RH
Ross Hyman
Mon, May 18, 2026 4:50 PM
The Guardian's 100 Best Novels
https://www.theguardian.com/books/ng-interactive/2026/may/12/the-100-best-novels-of-all-time
inlcudes 172 ballots ranking voters' 10 favorite novels. I think it
would be interesting to use different voting methods on this ballot
set..
The method the Guardian used to determine their l00 novel list from
the ballots is very mysterious to me.
They state "We scored the titles according to how often they were
voted for, and then added a weighting based on individual rankings to
produce the overall list of 100 greatest books."
I played around and could not find anything that fit this vague
description and would produce the presented list.
For example, My Antonia in 100th place is ranked on 4 ballots while
99, The Go-Between is ranked on 3. So rankings are not just being used
to break approval ties.
Then look at 89 The Left Hand of Darkness, also ranked on 4 ballots.
But Antonia at 100 is higher ranked on its four ballots than Darkness
is on its four.
What is their formula?
Best,
Ross
The Guardian's 100 Best Novels
https://www.theguardian.com/books/ng-interactive/2026/may/12/the-100-best-novels-of-all-time
inlcudes 172 ballots ranking voters' 10 favorite novels. I think it
would be interesting to use different voting methods on this ballot
set..
The method the Guardian used to determine their l00 novel list from
the ballots is very mysterious to me.
They state "We scored the titles according to how often they were
voted for, and then added a weighting based on individual rankings to
produce the overall list of 100 greatest books."
I played around and could not find anything that fit this vague
description and would produce the presented list.
For example, My Antonia in 100th place is ranked on 4 ballots while
99, The Go-Between is ranked on 3. So rankings are not just being used
to break approval ties.
Then look at 89 The Left Hand of Darkness, also ranked on 4 ballots.
But Antonia at 100 is higher ranked on its four ballots than Darkness
is on its four.
What is their formula?
Best,
Ross
TP
Toby Pereira
Tue, May 19, 2026 12:22 PM
I'm not sure I'd be willing to devote several hours to try and reverse engineer their process and then almost certainly end up failing! But maybe I'll have a look at some point.
On a tangent to this, I sometimes think that these lists would benefit from an alternative version using proportional representation. So not the 100 top novels when considered individually, but the top 100 novels considered as a group of 100 taking into account the range of views. Not instead of, but as well as. I've often thought that the IMDB top 250 or BoardGameGeek top games list would benefit from this. I think it would be very interesting to see how the lists would differ - more polarising options would likely feature.
Back on the top novels, I remember when the BBC did their "Big Read" thing and came up with a top 200. It was voted for by viewers rather than "experts" but the list is very different.
https://www.bbc.co.uk/arts/bigread/top100.shtmlhttps://www.bbc.co.uk/arts/bigread/top200.shtml
Toby
On Monday, 18 May 2026 at 17:51:32 BST, Ross Hyman via Election-Methods <election-methods@lists.electorama.com> wrote:
The Guardian's 100 Best Novels
https://www.theguardian.com/books/ng-interactive/2026/may/12/the-100-best-novels-of-all-time
inlcudes 172 ballots ranking voters' 10 favorite novels. I think it
would be interesting to use different voting methods on this ballot
set..
The method the Guardian used to determine their l00 novel list from
the ballots is very mysterious to me.
They state "We scored the titles according to how often they were
voted for, and then added a weighting based on individual rankings to
produce the overall list of 100 greatest books."
I played around and could not find anything that fit this vague
description and would produce the presented list.
For example, My Antonia in 100th place is ranked on 4 ballots while
99, The Go-Between is ranked on 3. So rankings are not just being used
to break approval ties.
Then look at 89 The Left Hand of Darkness, also ranked on 4 ballots.
But Antonia at 100 is higher ranked on its four ballots than Darkness
is on its four.
What is their formula?
Best,
Ross
Election-Methods mailing list - see https://electorama.com/em for list info
I'm not sure I'd be willing to devote several hours to try and reverse engineer their process and then almost certainly end up failing! But maybe I'll have a look at some point.
On a tangent to this, I sometimes think that these lists would benefit from an alternative version using proportional representation. So not the 100 top novels when considered individually, but the top 100 novels considered as a group of 100 taking into account the range of views. Not instead of, but as well as. I've often thought that the IMDB top 250 or BoardGameGeek top games list would benefit from this. I think it would be very interesting to see how the lists would differ - more polarising options would likely feature.
Back on the top novels, I remember when the BBC did their "Big Read" thing and came up with a top 200. It was voted for by viewers rather than "experts" but the list is very different.
https://www.bbc.co.uk/arts/bigread/top100.shtmlhttps://www.bbc.co.uk/arts/bigread/top200.shtml
Toby
On Monday, 18 May 2026 at 17:51:32 BST, Ross Hyman via Election-Methods <election-methods@lists.electorama.com> wrote:
The Guardian's 100 Best Novels
https://www.theguardian.com/books/ng-interactive/2026/may/12/the-100-best-novels-of-all-time
inlcudes 172 ballots ranking voters' 10 favorite novels. I think it
would be interesting to use different voting methods on this ballot
set..
The method the Guardian used to determine their l00 novel list from
the ballots is very mysterious to me.
They state "We scored the titles according to how often they were
voted for, and then added a weighting based on individual rankings to
produce the overall list of 100 greatest books."
I played around and could not find anything that fit this vague
description and would produce the presented list.
For example, My Antonia in 100th place is ranked on 4 ballots while
99, The Go-Between is ranked on 3. So rankings are not just being used
to break approval ties.
Then look at 89 The Left Hand of Darkness, also ranked on 4 ballots.
But Antonia at 100 is higher ranked on its four ballots than Darkness
is on its four.
What is their formula?
Best,
Ross
----
Election-Methods mailing list - see https://electorama.com/em for list info
KM
Kristofer Munsterhjelm
Tue, May 19, 2026 5:48 PM
On 2026-05-18 18:50, Ross Hyman via Election-Methods wrote:
The Guardian's 100 Best Novels
https://www.theguardian.com/books/ng-interactive/2026/may/12/the-100-best-novels-of-all-time
inlcudes 172 ballots ranking voters' 10 favorite novels. I think it
would be interesting to use different voting methods on this ballot
set..
The method the Guardian used to determine their l00 novel list from
the ballots is very mysterious to me.
They state "We scored the titles according to how often they were
voted for, and then added a weighting based on individual rankings to
produce the overall list of 100 greatest books."
I played around and could not find anything that fit this vague
description and would produce the presented list.
For example, My Antonia in 100th place is ranked on 4 ballots while
99, The Go-Between is ranked on 3. So rankings are not just being used
to break approval ties.
Then look at 89 The Left Hand of Darkness, also ranked on 4 ballots.
But Antonia at 100 is higher ranked on its four ballots than Darkness
is on its four.
What is their formula?
Interesting. The raw data is defined in this large minified JS script:
https://interactive.guim.co.uk/atoms/2026/03/2026-best-100-books-testing/best-100-books/v/1778864974/app.js
I've pulled the data into JSON files[1][2], which can be parsed with a
simple Python script[3]. After cleaning up the names, Quadelect gives
the following top 20 with Schulze:
- Middlemarch
- Beloved
- Ulyssses
- To the Lighthouse
- Anna Karenina
- In Search of Lost Time
- War and Peace
- Jane Eyre
- Bleak House
- Pride and Prejudice
Madame Bovary
- The Great Gatsby
- Nineteen Eighty-Four
Moby Dick
Emma
- One Hundred Years of Solitude
- Mrs Dalloway
- Persuasion
- The Portrait of a Lady
- Wuthering Heights
and with Smith,Ext-Minmax (which is quite decisive, but not clone
independent or ISDA):
- Middlemarch
- Beloved
- Ulysses
- To the Lighthouse
- Anna Karenina
- In Search of Lost Time
- War and Peace
- Madame Bovary
- Emma
- Pride and Prejudice
- Mrs Dalloway
- One Hundred Years of Solitude
- Moby Dick
- Bleak House
- The Great Gatsby
- Wuthering Heights
- Nineteen Eighty-Four
- Persuasion
- The Portrait of a Lady
- Jane Eyre
The description does make it sound like they're using Approval and
Borda, so I took a guess that their Borda doesn't eliminate the
non-contenders first, hence that a candidate's Borda penalty (negative
score) is just the sum of the ranks they're listed in.
By linear programming, I found the following weighting that almost works:
score = 30 * approvals - borda penalty
where the approvals and borda penalties are calculated like this:
from collections import defaultdict
approvals = defaultdict(int)
borda_penalties = defaultdict(int)
for voter in voting_info:
for vote in voter["topTen"]:
approvals[vote["name"]] += 1
borda_penalties[vote["name"]] += vote["position"]
scores = []
best_fit_scores = []
for candidate in approvals.keys():
scores.append((approvals[candidate], -borda_penalties[candidate],
candidate))
best_fit_scores.append((30 * approvals[candidate] -
borda_penalties[candidate], candidate))
with a tweak taking into account that "The Life and Opinions of Tristram
Shandy" has two different names in the input data.
This is accurate up to position 53. The first mismatch is "Orlando" and
"The Transit of Venus". Exact ties (both Borda and Approval scores
identical) seem to be broken in ascending alphabetical order.
(It should be possible to determine the weights more accurately, but I
couldn't be bothered to manually input 100 Approval/Borda score pairs
into my solver.)
So if I were forced to guess at the method, I would say it's a weighted
Approval/Borda score. It is a very good fit, at least.
I suppose that's a reasonable method in this case, since presumably the
voters were honest men (to echo Borda) and there's little reason to
suspect strategic nomination either.
-km
[1] https://munsterhjelm.no/km/elections/guardian_best_100_2026/pb.json
[2] https://munsterhjelm.no/km/elections/guardian_best_100_2026/gb.json
[3]
https://munsterhjelm.no/km/elections/guardian_best_100_2026/investigate_votes.py
On 2026-05-18 18:50, Ross Hyman via Election-Methods wrote:
> The Guardian's 100 Best Novels
> https://www.theguardian.com/books/ng-interactive/2026/may/12/the-100-best-novels-of-all-time
> inlcudes 172 ballots ranking voters' 10 favorite novels. I think it
> would be interesting to use different voting methods on this ballot
> set..
>
> The method the Guardian used to determine their l00 novel list from
> the ballots is very mysterious to me.
>
> They state "We scored the titles according to how often they were
> voted for, and then added a weighting based on individual rankings to
> produce the overall list of 100 greatest books."
>
> I played around and could not find anything that fit this vague
> description and would produce the presented list.
>
> For example, My Antonia in 100th place is ranked on 4 ballots while
> 99, The Go-Between is ranked on 3. So rankings are not just being used
> to break approval ties.
>
> Then look at 89 The Left Hand of Darkness, also ranked on 4 ballots.
> But Antonia at 100 is higher ranked on its four ballots than Darkness
> is on its four.
>
> What is their formula?
Interesting. The raw data is defined in this large minified JS script:
https://interactive.guim.co.uk/atoms/2026/03/2026-best-100-books-testing/best-100-books/v/1778864974/app.js
I've pulled the data into JSON files[1][2], which can be parsed with a
simple Python script[3]. After cleaning up the names, Quadelect gives
the following top 20 with Schulze:
1. Middlemarch
2. Beloved
3. Ulyssses
4. To the Lighthouse
5. Anna Karenina
6. In Search of Lost Time
7. War and Peace
8. Jane Eyre
9. Bleak House
10. Pride and Prejudice
Madame Bovary
12. The Great Gatsby
13. Nineteen Eighty-Four
Moby Dick
Emma
16. One Hundred Years of Solitude
17. Mrs Dalloway
18. Persuasion
19. The Portrait of a Lady
20. Wuthering Heights
and with Smith,Ext-Minmax (which is quite decisive, but not clone
independent or ISDA):
1. Middlemarch
2. Beloved
3. Ulysses
4. To the Lighthouse
5. Anna Karenina
6. In Search of Lost Time
7. War and Peace
8. Madame Bovary
9. Emma
10. Pride and Prejudice
11. Mrs Dalloway
12. One Hundred Years of Solitude
13. Moby Dick
14. Bleak House
15. The Great Gatsby
16. Wuthering Heights
17. Nineteen Eighty-Four
18. Persuasion
19. The Portrait of a Lady
20. Jane Eyre
The description does make it sound like they're using Approval and
Borda, so I took a guess that their Borda doesn't eliminate the
non-contenders first, hence that a candidate's Borda penalty (negative
score) is just the sum of the ranks they're listed in.
By linear programming, I found the following weighting that *almost* works:
score = 30 * approvals - borda penalty
where the approvals and borda penalties are calculated like this:
from collections import defaultdict
approvals = defaultdict(int)
borda_penalties = defaultdict(int)
for voter in voting_info:
for vote in voter["topTen"]:
approvals[vote["name"]] += 1
borda_penalties[vote["name"]] += vote["position"]
scores = []
best_fit_scores = []
for candidate in approvals.keys():
scores.append((approvals[candidate], -borda_penalties[candidate],
candidate))
best_fit_scores.append((30 * approvals[candidate] -
borda_penalties[candidate], candidate))
with a tweak taking into account that "The Life and Opinions of Tristram
Shandy" has two different names in the input data.
This is accurate up to position 53. The first mismatch is "Orlando" and
"The Transit of Venus". Exact ties (both Borda and Approval scores
identical) seem to be broken in ascending alphabetical order.
(It should be possible to determine the weights more accurately, but I
couldn't be bothered to manually input 100 Approval/Borda score pairs
into my solver.)
So if I were forced to guess at the method, I would say it's a weighted
Approval/Borda score. It is a very good fit, at least.
I suppose that's a reasonable method in this case, since presumably the
voters were honest men (to echo Borda) and there's little reason to
suspect strategic nomination either.
-km
[1] https://munsterhjelm.no/km/elections/guardian_best_100_2026/pb.json
[2] https://munsterhjelm.no/km/elections/guardian_best_100_2026/gb.json
[3]
https://munsterhjelm.no/km/elections/guardian_best_100_2026/investigate_votes.py
RH
Ross Hyman
Tue, May 19, 2026 8:03 PM
I thought the score would be of the form approval - weight*(rank sum)
as well but this is incompatible with My Antonia (approvals=4, total
rank = 4+5+10+5=24) at #100 and Left Hand of Darkness (approvals=4,
total rank = 8+7+10+9 = 34) at #84.
Even rank dependent weights can't help because each individual rank on
Darkness is lower or equal to a corresponding rank of Antonia.
If one removes books not in the top 100, the total rank for Antonia is
2+4+9+5 = 20, and for Darkness it is 7+5+5+7= 24. Darkness is still
lower ranked. But now there is the possibility that they choose
weights on the individual ranks in such a way as to make Antonia
lower, such as making the score for 9 count as 14. But that would be
weird.
On Tue, May 19, 2026 at 12:48 PM Kristofer Munsterhjelm
km-elmet@munsterhjelm.no wrote:
On 2026-05-18 18:50, Ross Hyman via Election-Methods wrote:
The Guardian's 100 Best Novels
https://www.theguardian.com/books/ng-interactive/2026/may/12/the-100-best-novels-of-all-time
inlcudes 172 ballots ranking voters' 10 favorite novels. I think it
would be interesting to use different voting methods on this ballot
set..
The method the Guardian used to determine their l00 novel list from
the ballots is very mysterious to me.
They state "We scored the titles according to how often they were
voted for, and then added a weighting based on individual rankings to
produce the overall list of 100 greatest books."
I played around and could not find anything that fit this vague
description and would produce the presented list.
For example, My Antonia in 100th place is ranked on 4 ballots while
99, The Go-Between is ranked on 3. So rankings are not just being used
to break approval ties.
Then look at 89 The Left Hand of Darkness, also ranked on 4 ballots.
But Antonia at 100 is higher ranked on its four ballots than Darkness
is on its four.
What is their formula?
Interesting. The raw data is defined in this large minified JS script:
https://interactive.guim.co.uk/atoms/2026/03/2026-best-100-books-testing/best-100-books/v/1778864974/app.js
I've pulled the data into JSON files[1][2], which can be parsed with a
simple Python script[3]. After cleaning up the names, Quadelect gives
the following top 20 with Schulze:
- Middlemarch
- Beloved
- Ulyssses
- To the Lighthouse
- Anna Karenina
- In Search of Lost Time
- War and Peace
- Jane Eyre
- Bleak House
- Pride and Prejudice
Madame Bovary
- The Great Gatsby
- Nineteen Eighty-Four
Moby Dick
Emma
- One Hundred Years of Solitude
- Mrs Dalloway
- Persuasion
- The Portrait of a Lady
- Wuthering Heights
and with Smith,Ext-Minmax (which is quite decisive, but not clone
independent or ISDA):
- Middlemarch
- Beloved
- Ulysses
- To the Lighthouse
- Anna Karenina
- In Search of Lost Time
- War and Peace
- Madame Bovary
- Emma
- Pride and Prejudice
- Mrs Dalloway
- One Hundred Years of Solitude
- Moby Dick
- Bleak House
- The Great Gatsby
- Wuthering Heights
- Nineteen Eighty-Four
- Persuasion
- The Portrait of a Lady
- Jane Eyre
The description does make it sound like they're using Approval and
Borda, so I took a guess that their Borda doesn't eliminate the
non-contenders first, hence that a candidate's Borda penalty (negative
score) is just the sum of the ranks they're listed in.
By linear programming, I found the following weighting that almost works:
score = 30 * approvals - borda penalty
where the approvals and borda penalties are calculated like this:
from collections import defaultdict
approvals = defaultdict(int)
borda_penalties = defaultdict(int)
for voter in voting_info:
for vote in voter["topTen"]:
approvals[vote["name"]] += 1
borda_penalties[vote["name"]] += vote["position"]
scores = []
best_fit_scores = []
for candidate in approvals.keys():
scores.append((approvals[candidate], -borda_penalties[candidate],
candidate))
best_fit_scores.append((30 * approvals[candidate] -
borda_penalties[candidate], candidate))
with a tweak taking into account that "The Life and Opinions of Tristram
Shandy" has two different names in the input data.
This is accurate up to position 53. The first mismatch is "Orlando" and
"The Transit of Venus". Exact ties (both Borda and Approval scores
identical) seem to be broken in ascending alphabetical order.
(It should be possible to determine the weights more accurately, but I
couldn't be bothered to manually input 100 Approval/Borda score pairs
into my solver.)
So if I were forced to guess at the method, I would say it's a weighted
Approval/Borda score. It is a very good fit, at least.
I suppose that's a reasonable method in this case, since presumably the
voters were honest men (to echo Borda) and there's little reason to
suspect strategic nomination either.
-km
[1] https://munsterhjelm.no/km/elections/guardian_best_100_2026/pb.json
[2] https://munsterhjelm.no/km/elections/guardian_best_100_2026/gb.json
[3]
https://munsterhjelm.no/km/elections/guardian_best_100_2026/investigate_votes.py
I thought the score would be of the form approval - weight*(rank sum)
as well but this is incompatible with My Antonia (approvals=4, total
rank = 4+5+10+5=24) at #100 and Left Hand of Darkness (approvals=4,
total rank = 8+7+10+9 = 34) at #84.
Even rank dependent weights can't help because each individual rank on
Darkness is lower or equal to a corresponding rank of Antonia.
If one removes books not in the top 100, the total rank for Antonia is
2+4+9+5 = 20, and for Darkness it is 7+5+5+7= 24. Darkness is still
lower ranked. But now there is the possibility that they choose
weights on the individual ranks in such a way as to make Antonia
lower, such as making the score for 9 count as 14. But that would be
weird.
On Tue, May 19, 2026 at 12:48 PM Kristofer Munsterhjelm
<km-elmet@munsterhjelm.no> wrote:
>
> On 2026-05-18 18:50, Ross Hyman via Election-Methods wrote:
> > The Guardian's 100 Best Novels
> > https://www.theguardian.com/books/ng-interactive/2026/may/12/the-100-best-novels-of-all-time
> > inlcudes 172 ballots ranking voters' 10 favorite novels. I think it
> > would be interesting to use different voting methods on this ballot
> > set..
> >
> > The method the Guardian used to determine their l00 novel list from
> > the ballots is very mysterious to me.
> >
> > They state "We scored the titles according to how often they were
> > voted for, and then added a weighting based on individual rankings to
> > produce the overall list of 100 greatest books."
> >
> > I played around and could not find anything that fit this vague
> > description and would produce the presented list.
> >
> > For example, My Antonia in 100th place is ranked on 4 ballots while
> > 99, The Go-Between is ranked on 3. So rankings are not just being used
> > to break approval ties.
> >
> > Then look at 89 The Left Hand of Darkness, also ranked on 4 ballots.
> > But Antonia at 100 is higher ranked on its four ballots than Darkness
> > is on its four.
> >
> > What is their formula?
>
> Interesting. The raw data is defined in this large minified JS script:
>
> https://interactive.guim.co.uk/atoms/2026/03/2026-best-100-books-testing/best-100-books/v/1778864974/app.js
>
> I've pulled the data into JSON files[1][2], which can be parsed with a
> simple Python script[3]. After cleaning up the names, Quadelect gives
> the following top 20 with Schulze:
>
> 1. Middlemarch
> 2. Beloved
> 3. Ulyssses
> 4. To the Lighthouse
> 5. Anna Karenina
> 6. In Search of Lost Time
> 7. War and Peace
> 8. Jane Eyre
> 9. Bleak House
> 10. Pride and Prejudice
> Madame Bovary
> 12. The Great Gatsby
> 13. Nineteen Eighty-Four
> Moby Dick
> Emma
> 16. One Hundred Years of Solitude
> 17. Mrs Dalloway
> 18. Persuasion
> 19. The Portrait of a Lady
> 20. Wuthering Heights
>
> and with Smith,Ext-Minmax (which is quite decisive, but not clone
> independent or ISDA):
>
> 1. Middlemarch
> 2. Beloved
> 3. Ulysses
> 4. To the Lighthouse
> 5. Anna Karenina
> 6. In Search of Lost Time
> 7. War and Peace
> 8. Madame Bovary
> 9. Emma
> 10. Pride and Prejudice
> 11. Mrs Dalloway
> 12. One Hundred Years of Solitude
> 13. Moby Dick
> 14. Bleak House
> 15. The Great Gatsby
> 16. Wuthering Heights
> 17. Nineteen Eighty-Four
> 18. Persuasion
> 19. The Portrait of a Lady
> 20. Jane Eyre
>
> The description does make it sound like they're using Approval and
> Borda, so I took a guess that their Borda doesn't eliminate the
> non-contenders first, hence that a candidate's Borda penalty (negative
> score) is just the sum of the ranks they're listed in.
>
> By linear programming, I found the following weighting that *almost* works:
> score = 30 * approvals - borda penalty
>
> where the approvals and borda penalties are calculated like this:
>
> from collections import defaultdict
>
> approvals = defaultdict(int)
> borda_penalties = defaultdict(int)
>
> for voter in voting_info:
> for vote in voter["topTen"]:
> approvals[vote["name"]] += 1
> borda_penalties[vote["name"]] += vote["position"]
>
> scores = []
> best_fit_scores = []
>
> for candidate in approvals.keys():
> scores.append((approvals[candidate], -borda_penalties[candidate],
> candidate))
> best_fit_scores.append((30 * approvals[candidate] -
> borda_penalties[candidate], candidate))
>
> with a tweak taking into account that "The Life and Opinions of Tristram
> Shandy" has two different names in the input data.
>
> This is accurate up to position 53. The first mismatch is "Orlando" and
> "The Transit of Venus". Exact ties (both Borda and Approval scores
> identical) seem to be broken in ascending alphabetical order.
>
> (It should be possible to determine the weights more accurately, but I
> couldn't be bothered to manually input 100 Approval/Borda score pairs
> into my solver.)
>
> So if I were forced to guess at the method, I would say it's a weighted
> Approval/Borda score. It is a very good fit, at least.
>
> I suppose that's a reasonable method in this case, since presumably the
> voters were honest men (to echo Borda) and there's little reason to
> suspect strategic nomination either.
>
> -km
>
> [1] https://munsterhjelm.no/km/elections/guardian_best_100_2026/pb.json
> [2] https://munsterhjelm.no/km/elections/guardian_best_100_2026/gb.json
> [3]
> https://munsterhjelm.no/km/elections/guardian_best_100_2026/investigate_votes.py
KM
Kristofer Munsterhjelm
Wed, May 20, 2026 7:23 PM
On 2026-05-19 22:03, Ross Hyman wrote:
I thought the score would be of the form approval - weight*(rank sum)
as well but this is incompatible with My Antonia (approvals=4, total
rank = 4+5+10+5=24) at #100 and Left Hand of Darkness (approvals=4,
total rank = 8+7+10+9 = 34) at #84.
Even rank dependent weights can't help because each individual rank on
Darkness is lower or equal to a corresponding rank of Antonia.
If one removes books not in the top 100, the total rank for Antonia is
2+4+9+5 = 20, and for Darkness it is 7+5+5+7= 24. Darkness is still
lower ranked. But now there is the possibility that they choose
weights on the individual ranks in such a way as to make Antonia
lower, such as making the score for 9 count as 14. But that would be
weird.
The really weird part is that the results are so close. If you create a
custom method (e.g. a Nanson hybrid or something with non-Borda
positional weights), you'd expect it to disagree more than once, but...
I ran the full data set through the solver and it found that
31 * approvals - rank sum
(unless there's a bug) matches the order for every book except for My
Antonia up to tie-breaking. However, if My Antonia's Approval count is
lowered to three, then it, too, matches.
More specifically, near the end, after excluding ties, we have
Vote count Rank sum Desired rank
4 34 89 // The Left Hand of Darkness
3 7 90 // Jacob's Room
3 10 91 // Life and Fate
3 11 92 // Sentimental Education
3 12 95 // The Return of the Native
3 13 96 // Pedro Páramo
3 14 99 // The Go-Between
4 24 100 // My Ántonia
These appear to have decreasing vote counts and increasing rank sums
within the same vote count bracket, except for My Antonia at the very
end. But 24 > 14, so if it were counted as 3 instead, we would get the
proper order.
This is quite odd. Maybe there's a bug in their software? It's hard to
imagine a method that's not weighted Approval,Borda but is that close.
About the only thing I can think of is if their tie-breaker is defined
as some ranking of every candidate submitted, that they add some
multiple of the tie-breaker rank to the score. Then My Antonia could be
at the very end, so that its rank sum pushes it down; but this feels
kind of arbitrary -- why would it affect just My Antonia and not
overturn any of the other non-tied results?
The tie-breaker doesn't seem to be strictly alphabetical either.
Catch-22, The Road, and The Go-Between all have the same Approval and
vote counts (namely (3, 14)), but they're listed in that order, whereas
a tie-breaker would put The Go-Between second and The Road third of the
three.
-km
On 2026-05-19 22:03, Ross Hyman wrote:
> I thought the score would be of the form approval - weight*(rank sum)
> as well but this is incompatible with My Antonia (approvals=4, total
> rank = 4+5+10+5=24) at #100 and Left Hand of Darkness (approvals=4,
> total rank = 8+7+10+9 = 34) at #84.
> Even rank dependent weights can't help because each individual rank on
> Darkness is lower or equal to a corresponding rank of Antonia.
> If one removes books not in the top 100, the total rank for Antonia is
> 2+4+9+5 = 20, and for Darkness it is 7+5+5+7= 24. Darkness is still
> lower ranked. But now there is the possibility that they choose
> weights on the individual ranks in such a way as to make Antonia
> lower, such as making the score for 9 count as 14. But that would be
> weird.
The really weird part is that the results are so close. If you create a
custom method (e.g. a Nanson hybrid or something with non-Borda
positional weights), you'd expect it to disagree more than once, but...
I ran the full data set through the solver and it found that
31 * approvals - rank sum
(unless there's a bug) matches the order for every book except for My
Antonia up to tie-breaking. However, if My Antonia's Approval count is
lowered to three, then it, too, matches.
More specifically, near the end, after excluding ties, we have
Vote count Rank sum Desired rank
4 34 89 // The Left Hand of Darkness
3 7 90 // Jacob's Room
3 10 91 // Life and Fate
3 11 92 // Sentimental Education
3 12 95 // The Return of the Native
3 13 96 // Pedro Páramo
3 14 99 // The Go-Between
4 24 100 // My Ántonia
These appear to have decreasing vote counts and increasing rank sums
within the same vote count bracket, except for My Antonia at the very
end. But 24 > 14, so if it were counted as 3 instead, we would get the
proper order.
This is quite odd. Maybe there's a bug in their software? It's hard to
imagine a method that's not weighted Approval,Borda but is *that* close.
About the only thing I can think of is if their tie-breaker is defined
as some ranking of every candidate submitted, that they add some
multiple of the tie-breaker rank to the score. Then My Antonia could be
at the very end, so that its rank sum pushes it down; but this feels
kind of arbitrary -- why would it affect *just* My Antonia and not
overturn any of the other non-tied results?
The tie-breaker doesn't seem to be strictly alphabetical either.
Catch-22, The Road, and The Go-Between all have the same Approval and
vote counts (namely (3, 14)), but they're listed in that order, whereas
a tie-breaker would put The Go-Between second and The Road third of the
three.
-km
RH
Ross Hyman
Thu, May 21, 2026 7:45 PM
On 2026-05-19 22:03, Ross Hyman wrote:
I thought the score would be of the form approval - weight*(rank sum)
as well but this is incompatible with My Antonia (approvals=4, total
rank = 4+5+10+5=24) at #100 and Left Hand of Darkness (approvals=4,
total rank = 8+7+10+9 = 34) at #84.
Even rank dependent weights can't help because each individual rank on
Darkness is lower or equal to a corresponding rank of Antonia.
If one removes books not in the top 100, the total rank for Antonia is
2+4+9+5 = 20, and for Darkness it is 7+5+5+7= 24. Darkness is still
lower ranked. But now there is the possibility that they choose
weights on the individual ranks in such a way as to make Antonia
lower, such as making the score for 9 count as 14. But that would be
weird.
The really weird part is that the results are so close. If you create a
custom method (e.g. a Nanson hybrid or something with non-Borda
positional weights), you'd expect it to disagree more than once, but...
I ran the full data set through the solver and it found that
31 * approvals - rank sum
(unless there's a bug) matches the order for every book except for My
Antonia up to tie-breaking. However, if My Antonia's Approval count is
lowered to three, then it, too, matches.
More specifically, near the end, after excluding ties, we have
Vote count Rank sum Desired rank
4 34 89 // The Left Hand of Darkness
3 7 90 // Jacob's Room
3 10 91 // Life and Fate
3 11 92 // Sentimental Education
3 12 95 // The Return of the Native
3 13 96 // Pedro Páramo
3 14 99 // The Go-Between
4 24 100 // My Ántonia
These appear to have decreasing vote counts and increasing rank sums
within the same vote count bracket, except for My Antonia at the very
end. But 24 > 14, so if it were counted as 3 instead, we would get the
proper order.
This is quite odd. Maybe there's a bug in their software? It's hard to
imagine a method that's not weighted Approval,Borda but is that close.
About the only thing I can think of is if their tie-breaker is defined
as some ranking of every candidate submitted, that they add some
multiple of the tie-breaker rank to the score. Then My Antonia could be
at the very end, so that its rank sum pushes it down; but this feels
kind of arbitrary -- why would it affect just My Antonia and not
overturn any of the other non-tied results?
The tie-breaker doesn't seem to be strictly alphabetical either.
Catch-22, The Road, and The Go-Between all have the same Approval and
vote counts (namely (3, 14)), but they're listed in that order, whereas
a tie-breaker would put The Go-Between second and The Road third of the
three.
-km
Matthew Aldridge comes to the same conclusion for the voting method
and that My Antonia is an error:
https://mpaldridge.github.io/blog/guardian-novels.html He also found
some books with variant titles that were not properly counted.
On Wed, May 20, 2026 at 2:23 PM Kristofer Munsterhjelm
<km-elmet@munsterhjelm.no> wrote:
>
> On 2026-05-19 22:03, Ross Hyman wrote:
> > I thought the score would be of the form approval - weight*(rank sum)
> > as well but this is incompatible with My Antonia (approvals=4, total
> > rank = 4+5+10+5=24) at #100 and Left Hand of Darkness (approvals=4,
> > total rank = 8+7+10+9 = 34) at #84.
> > Even rank dependent weights can't help because each individual rank on
> > Darkness is lower or equal to a corresponding rank of Antonia.
> > If one removes books not in the top 100, the total rank for Antonia is
> > 2+4+9+5 = 20, and for Darkness it is 7+5+5+7= 24. Darkness is still
> > lower ranked. But now there is the possibility that they choose
> > weights on the individual ranks in such a way as to make Antonia
> > lower, such as making the score for 9 count as 14. But that would be
> > weird.
>
> The really weird part is that the results are so close. If you create a
> custom method (e.g. a Nanson hybrid or something with non-Borda
> positional weights), you'd expect it to disagree more than once, but...
>
> I ran the full data set through the solver and it found that
> 31 * approvals - rank sum
> (unless there's a bug) matches the order for every book except for My
> Antonia up to tie-breaking. However, if My Antonia's Approval count is
> lowered to three, then it, too, matches.
>
> More specifically, near the end, after excluding ties, we have
>
> Vote count Rank sum Desired rank
> 4 34 89 // The Left Hand of Darkness
> 3 7 90 // Jacob's Room
> 3 10 91 // Life and Fate
> 3 11 92 // Sentimental Education
> 3 12 95 // The Return of the Native
> 3 13 96 // Pedro Páramo
> 3 14 99 // The Go-Between
> 4 24 100 // My Ántonia
>
> These appear to have decreasing vote counts and increasing rank sums
> within the same vote count bracket, except for My Antonia at the very
> end. But 24 > 14, so if it were counted as 3 instead, we would get the
> proper order.
>
> This is quite odd. Maybe there's a bug in their software? It's hard to
> imagine a method that's not weighted Approval,Borda but is *that* close.
>
> About the only thing I can think of is if their tie-breaker is defined
> as some ranking of every candidate submitted, that they add some
> multiple of the tie-breaker rank to the score. Then My Antonia could be
> at the very end, so that its rank sum pushes it down; but this feels
> kind of arbitrary -- why would it affect *just* My Antonia and not
> overturn any of the other non-tied results?
>
> The tie-breaker doesn't seem to be strictly alphabetical either.
> Catch-22, The Road, and The Go-Between all have the same Approval and
> vote counts (namely (3, 14)), but they're listed in that order, whereas
> a tie-breaker would put The Go-Between second and The Road third of the
> three.
>
> -km
KM
Kristofer Munsterhjelm
Fri, May 22, 2026 6:36 PM
On 2026-05-21 21:45, Ross Hyman wrote:
That's a good catch! I had found one that Matthew doesn't mention: "The
Life and Opinions of Tristram Shandy, Gentleman" had a variant name
(omitting ", Gentleman").
I implemented his suggested name deduplication and got the following
results for top 20:
With Schulze:
- Middlemarch
- Beloved
- Ulysses
- To the Lighthouse
- Anna Karenina
- In Search of Lost Time
- War and Peace
- Jane Eyre
- Bleak House
- Pride and Prejudice
Madame Bovary
- The Great Gatsby
- Nineteen Eighty-Four
Moby-Dick
Emma
- One Hundred Years of Solitude
- The Life and Opinions of Tristram Shandy, Gentleman
Mrs Dalloway
- Persuasion
- The Portrait of a Lady
- Wuthering Heights
(This is the same as my first Schulze results, except that Mrs Dalloway
now shares the #17 spot with Tristram Shandy.)
Smith,Ext-Minmax:
- Middlemarch
- Beloved
- Ulysses
- To the Lighthouse
- Anna Karenina
- In Search of Lost Time
- War and Peace
- Madame Bovary
- Emma
- Pride and Prejudice
- Mrs Dalloway
- One Hundred Years of Solitude
- Moby-Dick
- The Life and Opinions of Tristram Shandy, Gentleman
- Bleak House
- The Great Gatsby
- Wuthering Heights
- Nineteen Eighty-Four
- Persuasion
- The Portrait of a Lady
which is also the same as my first Smith,Ext-Minmax results, except that
Tristram Shandy gets 14th place and displaces everybody below by one.
I also calculated top 10 by voter type. I'll use Smith,Ext-Minmax since
Schulze produces a lot of ties - but if you want to use another method,
I've updated my Python script to write ballots per voter type as well.
Academics (7 votes):
- Middlemarch
- Anna Karenina
- Emma
- Great Expectations
- Madame Bovary
- Bleak House
- The Trial
In Search of Lost Time
- The Life and Opinions of Tristram Shandy, Gentleman
- Pride and Prejudice
Jane Eyre
Authors (115 votes):
- Middlemarch
- Ulysses
Beloved
- In Search of Lost Time
- To the Lighthouse
- War and Peace
- Anna Karenina
- Pride and Prejudice
- Madame Bovary
- Mrs Dalloway
- Moby-Dick
Journalists (36 votes):
- Middlemarch
- Beloved
- The Great Gatsby
Anna Karenina
- War and Peace
- Ulysses
- Pale Fire
- Vanity Fair
- Lolita
- Pride and Prejudice
Others (14 votes):
- Middlemarch
- Ulysses
- One Hundred Years of Solitude
- Emma
- War and Peace
- Madame Bovary
- Anna Karenina
- The Golden Gate
- The Color Purple
- Things Fall Apart
-km
On 2026-05-21 21:45, Ross Hyman wrote:
> Matthew Aldridge comes to the same conclusion for the voting method
> and that My Antonia is an error:
> https://mpaldridge.github.io/blog/guardian-novels.html He also found
> some books with variant titles that were not properly counted.
That's a good catch! I had found one that Matthew doesn't mention: "The
Life and Opinions of Tristram Shandy, Gentleman" had a variant name
(omitting ", Gentleman").
I implemented his suggested name deduplication and got the following
results for top 20:
With Schulze:
1. Middlemarch
2. Beloved
3. Ulysses
4. To the Lighthouse
5. Anna Karenina
6. In Search of Lost Time
7. War and Peace
8. Jane Eyre
9. Bleak House
10. Pride and Prejudice
Madame Bovary
12. The Great Gatsby
13. Nineteen Eighty-Four
Moby-Dick
Emma
16. One Hundred Years of Solitude
17. The Life and Opinions of Tristram Shandy, Gentleman
Mrs Dalloway
18. Persuasion
19. The Portrait of a Lady
20. Wuthering Heights
(This is the same as my first Schulze results, except that Mrs Dalloway
now shares the #17 spot with Tristram Shandy.)
Smith,Ext-Minmax:
1. Middlemarch
2. Beloved
3. Ulysses
4. To the Lighthouse
5. Anna Karenina
6. In Search of Lost Time
7. War and Peace
8. Madame Bovary
9. Emma
10. Pride and Prejudice
11. Mrs Dalloway
12. One Hundred Years of Solitude
13. Moby-Dick
14. The Life and Opinions of Tristram Shandy, Gentleman
15. Bleak House
16. The Great Gatsby
17. Wuthering Heights
18. Nineteen Eighty-Four
19. Persuasion
20. The Portrait of a Lady
which is also the same as my first Smith,Ext-Minmax results, except that
Tristram Shandy gets 14th place and displaces everybody below by one.
I also calculated top 10 by voter type. I'll use Smith,Ext-Minmax since
Schulze produces a lot of ties - but if you want to use another method,
I've updated my Python script to write ballots per voter type as well.
Academics (7 votes):
1. Middlemarch
2. Anna Karenina
3. Emma
4. Great Expectations
5. Madame Bovary
6. Bleak House
7. The Trial
In Search of Lost Time
8. The Life and Opinions of Tristram Shandy, Gentleman
9. Pride and Prejudice
Jane Eyre
Authors (115 votes):
1. Middlemarch
2. Ulysses
Beloved
3. In Search of Lost Time
4. To the Lighthouse
5. War and Peace
6. Anna Karenina
7. Pride and Prejudice
8. Madame Bovary
9. Mrs Dalloway
10. Moby-Dick
Journalists (36 votes):
1. Middlemarch
2. Beloved
3. The Great Gatsby
Anna Karenina
5. War and Peace
6. Ulysses
7. Pale Fire
8. Vanity Fair
9. Lolita
10. Pride and Prejudice
Others (14 votes):
1. Middlemarch
2. Ulysses
3. One Hundred Years of Solitude
4. Emma
5. War and Peace
6. Madame Bovary
7. Anna Karenina
8. The Golden Gate
9. The Color Purple
10. Things Fall Apart
-km
RH
Ross Hyman
Sun, May 24, 2026 4:14 AM
On 2026-05-21 21:45, Ross Hyman wrote:
That's a good catch! I had found one that Matthew doesn't mention: "The
Life and Opinions of Tristram Shandy, Gentleman" had a variant name
(omitting ", Gentleman").
I implemented his suggested name deduplication and got the following
results for top 20:
With Schulze:
- Middlemarch
- Beloved
- Ulysses
- To the Lighthouse
- Anna Karenina
- In Search of Lost Time
- War and Peace
- Jane Eyre
- Bleak House
- Pride and Prejudice
Madame Bovary
- The Great Gatsby
- Nineteen Eighty-Four
Moby-Dick
Emma
- One Hundred Years of Solitude
- The Life and Opinions of Tristram Shandy, Gentleman
Mrs Dalloway
- Persuasion
- The Portrait of a Lady
- Wuthering Heights
(This is the same as my first Schulze results, except that Mrs Dalloway
now shares the #17 spot with Tristram Shandy.)
Smith,Ext-Minmax:
- Middlemarch
- Beloved
- Ulysses
- To the Lighthouse
- Anna Karenina
- In Search of Lost Time
- War and Peace
- Madame Bovary
- Emma
- Pride and Prejudice
- Mrs Dalloway
- One Hundred Years of Solitude
- Moby-Dick
- The Life and Opinions of Tristram Shandy, Gentleman
- Bleak House
- The Great Gatsby
- Wuthering Heights
- Nineteen Eighty-Four
- Persuasion
- The Portrait of a Lady
which is also the same as my first Smith,Ext-Minmax results, except that
Tristram Shandy gets 14th place and displaces everybody below by one.
I also calculated top 10 by voter type. I'll use Smith,Ext-Minmax since
Schulze produces a lot of ties - but if you want to use another method,
I've updated my Python script to write ballots per voter type as well.
Academics (7 votes):
- Middlemarch
- Anna Karenina
- Emma
- Great Expectations
- Madame Bovary
- Bleak House
- The Trial
In Search of Lost Time
- The Life and Opinions of Tristram Shandy, Gentleman
- Pride and Prejudice
Jane Eyre
Authors (115 votes):
- Middlemarch
- Ulysses
Beloved
- In Search of Lost Time
- To the Lighthouse
- War and Peace
- Anna Karenina
- Pride and Prejudice
- Madame Bovary
- Mrs Dalloway
- Moby-Dick
Journalists (36 votes):
- Middlemarch
- Beloved
- The Great Gatsby
Anna Karenina
- War and Peace
- Ulysses
- Pale Fire
- Vanity Fair
- Lolita
- Pride and Prejudice
Others (14 votes):
- Middlemarch
- Ulysses
- One Hundred Years of Solitude
- Emma
- War and Peace
- Madame Bovary
- Anna Karenina
- The Golden Gate
- The Color Purple
- Things Fall Apart
-km
The Guardian has acknowledged errors in its 100 best novels list.
https://www.theguardian.com/news/2026/may/23/corrections-and-clarifications
On Fri, May 22, 2026 at 1:36 PM Kristofer Munsterhjelm
<km-elmet@munsterhjelm.no> wrote:
>
> On 2026-05-21 21:45, Ross Hyman wrote:
> > Matthew Aldridge comes to the same conclusion for the voting method
> > and that My Antonia is an error:
> > https://mpaldridge.github.io/blog/guardian-novels.html He also found
> > some books with variant titles that were not properly counted.
>
> That's a good catch! I had found one that Matthew doesn't mention: "The
> Life and Opinions of Tristram Shandy, Gentleman" had a variant name
> (omitting ", Gentleman").
>
> I implemented his suggested name deduplication and got the following
> results for top 20:
>
> With Schulze:
> 1. Middlemarch
> 2. Beloved
> 3. Ulysses
> 4. To the Lighthouse
> 5. Anna Karenina
> 6. In Search of Lost Time
> 7. War and Peace
> 8. Jane Eyre
> 9. Bleak House
> 10. Pride and Prejudice
> Madame Bovary
> 12. The Great Gatsby
> 13. Nineteen Eighty-Four
> Moby-Dick
> Emma
> 16. One Hundred Years of Solitude
> 17. The Life and Opinions of Tristram Shandy, Gentleman
> Mrs Dalloway
> 18. Persuasion
> 19. The Portrait of a Lady
> 20. Wuthering Heights
>
> (This is the same as my first Schulze results, except that Mrs Dalloway
> now shares the #17 spot with Tristram Shandy.)
>
> Smith,Ext-Minmax:
>
> 1. Middlemarch
> 2. Beloved
> 3. Ulysses
> 4. To the Lighthouse
> 5. Anna Karenina
> 6. In Search of Lost Time
> 7. War and Peace
> 8. Madame Bovary
> 9. Emma
> 10. Pride and Prejudice
> 11. Mrs Dalloway
> 12. One Hundred Years of Solitude
> 13. Moby-Dick
> 14. The Life and Opinions of Tristram Shandy, Gentleman
> 15. Bleak House
> 16. The Great Gatsby
> 17. Wuthering Heights
> 18. Nineteen Eighty-Four
> 19. Persuasion
> 20. The Portrait of a Lady
>
> which is also the same as my first Smith,Ext-Minmax results, except that
> Tristram Shandy gets 14th place and displaces everybody below by one.
>
> I also calculated top 10 by voter type. I'll use Smith,Ext-Minmax since
> Schulze produces a lot of ties - but if you want to use another method,
> I've updated my Python script to write ballots per voter type as well.
>
> Academics (7 votes):
>
> 1. Middlemarch
> 2. Anna Karenina
> 3. Emma
> 4. Great Expectations
> 5. Madame Bovary
> 6. Bleak House
> 7. The Trial
> In Search of Lost Time
> 8. The Life and Opinions of Tristram Shandy, Gentleman
> 9. Pride and Prejudice
> Jane Eyre
>
> Authors (115 votes):
>
> 1. Middlemarch
> 2. Ulysses
> Beloved
> 3. In Search of Lost Time
> 4. To the Lighthouse
> 5. War and Peace
> 6. Anna Karenina
> 7. Pride and Prejudice
> 8. Madame Bovary
> 9. Mrs Dalloway
> 10. Moby-Dick
>
> Journalists (36 votes):
>
> 1. Middlemarch
> 2. Beloved
> 3. The Great Gatsby
> Anna Karenina
> 5. War and Peace
> 6. Ulysses
> 7. Pale Fire
> 8. Vanity Fair
> 9. Lolita
> 10. Pride and Prejudice
>
> Others (14 votes):
>
> 1. Middlemarch
> 2. Ulysses
> 3. One Hundred Years of Solitude
> 4. Emma
> 5. War and Peace
> 6. Madame Bovary
> 7. Anna Karenina
> 8. The Golden Gate
> 9. The Color Purple
> 10. Things Fall Apart
>
> -km