Contents

The Icelandic voting system

It’s election season here in Iceland! The election is on Saturday, 30th of November, so next Saturday from when this is written.

Every time elections are upcoming, somebody inevitably asks me how the voting system here works, probably expecting a simple answer. So, here’s a stab at it.

Iceland uses a biproportional apportionment system, as do Norway, some cantons of Switzerland, some German regions, and a few other places. Such systems have a few general features:

  • There is some number of constituencies, each of which has:
    • Some number of constituency seats (CS)
    • Some number of adjustment seats (AS)

Technically, you could have 0 constituency seats, but most places have some. In Iceland every constituency must have either 1 or 2 adjustment seats. So like, we have Southwest with 14 seats total, of which 2 are AS, while Northwest has 7 total, 6 CS and 1 AS. These are decided after each election (for the next election) by the national electoral commission, and take into account population in each constituency, so as to try to minimize the disparity of voting power.

Divisor rules

For this kind of system, you have a divisor rule, such as d’Hondt or Sainte-Lague. We use d’Hondt in Iceland. Scandinavia uses a modified Sainte-Lague. The rule is basically a quotient between votes and seats. d’Hondt is

$q = V/(s+1)$

Where q is the quotient, V the number of votes a party gets, and s the number of seats they’ve already been allocated.

By comparison, the Sainte-Lague method is:

$q = V / (2s+1)$

Norway and Sweden use a modified Sainte-Lague, which starts at 1.5 instead of 1, so you get a sequence of 1.5, 3, 5, …. There are a number of other divisor rules, each optimized for a slightly different use case.

The key difference here is that by scaling up the divisor, you’re valuing each seat much higher, resulting in it becoming proportionally easier to get the first seat, etc.

It should be said that in some ways d’Hondt is the least fair of them, clearly favoring big parties, but it’s also the only such rule that actually adds up in such a way that there’s no strategic benefit to breaking a large party up into many smaller parties. You win some, you lose some.

Allocating the constituency seats

Now that we have our divisor rule, we should start allocating, by calculating each constituency’s seats.

For each constituency, each party running in that constituency starts with 0 seats, so every party’s divisor is 1 (in d’Hondt). You then look at which party has the highest quotient ($q$), and you give them a seat.

Now recalculate the quotients (really only the one you just allocated to, the others remain unchanged). Oh, look, now the party that got a seat has a lower $q$, because their divisor is bigger. So somebody else (probably) has the highest $q$. Give them a seat. Continue until all constituency seats are allocated.

Allocating the adjustment seats

This is where the fun begins – the real biproportional part. Once all the constituency seats have been allocated, the next step is to calculate for the entire country. So we add up each party’s votes over the entire country and each party’s seats over the entire country.

If there’s a cutoff (such as the 5% rule we have in Iceland), you eliminate any parties that fall under the 5% threshold from the following process (but they keep any CS they’ve already been allocated).

Now, we’ve got some total number of AS, which are to be allocated, but we are not just allocating them to the parties, we’re allocating them to parties in constituencies. So the task is to figure out which party deserves the next seat and where it is most logical for them to get a seat, given the votes they got in each constituency.

What this effectively comes down to is, once all the CS have been allocated, you figure out which parties are most deserving of seats nationally, and give them extras, ideally in the constituencies where they got the most votes. But the devil is in the details here.

It has been proven that there is one and only one mathematically sound way to calculate the results, as shown in this paper by Balinski & DeMange, which describes a bilinear optimization exercise aiming at minimizing entropy. Weirdly, as far as I know, only the canton of Geneva uses this correct method.

By “correct” here, we mean that the result is Exact, Relevant, Uniform, Monotonic and Homogenous, as per these axioms:

/img/axioms.png

Each of these comes with a lengthy description – I’ll just refer to the paper, but basically, you don’t really want to fail any of these tests.

So it’s a bit weird that everywhere other than Geneva that uses this kind of method, including Iceland, uses an approximation method that is provably incorrect, but in different ways. I wrote some code for the Icelandic law method, but more about that below.

Specifically, the Icelandic system fails the monotonicity criteria, frequently resulting in one party losing a seat because it got more votes.

In 2013, Framsóknarflokkurinn got one extra seat that should have gone to Vinstri-Græn; in 2016 the Sjálfstæðisflokkur got an extra seat that should have gone to Vinstri-Græn; in 2017 Framsóknarflokkurinn got one that should have gone to Samfylkingin, and in 2021 Framsóknarflokkurinn got one that should have gone to Sjálfstæðisflokkurinn.

(The fact that Framsóknarflokkurinn benefits from this error more often than other parties is kind of random, or it’s a quirk of where their votes come from, but either way it’s a fun irony that the decision to use this approximation method was decided on around the kitchen table of the chairman of Framsóknarflokkurinn back in the day, during a meeting of the then coalition leaders.)

The main reason it’s being calculated incorrectly in Iceland is that lawyers and politicians don’t generally understand (bi)linear optimization. So rather than explain a fairly simple math operation in law, they explain this really convoluted drawn out, inaccurate method instead, because it’s less mathy. Oh well.

Some thoughts

There are a lot of ways to skin a cat. This is not really a bad system; one might even argue that it’s quite good. The biggest drawback is that it might seem unfair to require the average voter to understand entropy minimization in order to have a clear sense of how elections work. It’s really not super complex math, but it does take a moment to wrap one’s head around it, and the tradition of rather terse notation doesn’t help at all.

Within this system, the biggest improvement I could suggest is increasing the number of AS quite significantly in the Icelandic system. Making it be something closer to 50% of the total seats would go a long way towards reducing vote inequality (votes in NW are worth almost 2x what they’re worth in SW) and reducing “provincialism” in politics. I would say move it to 100% AS, which has almost the same effect as just having one constituency (except you’re still having party lists in each constituency, which causes some geographic distribution to exist), but there is value in some provincialism and recognition of different needs and issues in different geographies. It’s just a bit too much at the moment.

If one were to change the system, I might suggest that the same Michel Balinski wrote a fantastic book along with Rida Laraki some years ago, Majority Judgement, which outlines and proves a set of methods that are simultaneously really easy to understand, very easy to implement, and most notably they avoid the classic Arrow Impossibility Theorem by virtue of not being prioritization systems, but rather scoring systems – where each voter essentially gives each party a grade, or “judgement” in the parlance of the book.

Some code

Many years ago, Þorkell Helgason contacted me about helping him build a simulator for this category of voting systems, in order to better be able to compare different systems and see how they behave under combinations of settings and weird vote outcomes. After a few remote sessions, Þorkell came and visited me in Sarajevo, where I lived at the time, and over the course of a weekend we banged out the first version, supporting the Icelandic system and the optimal entropy method described in the Balinski paper.

Since then we and various others have added a whole host of features and methods to the software. I haven’t much touched it myself for quite a while, but it’s interesting to take a fresh look in light of the upcoming elections.

Github link to the voting simulator.