How to simulate FPTP elections [Tutorial]
By Unibot
Introduction
Since May of last year I have been promising to release a 'calculator' that would demonstrate how to simulate the results of First-Past-The-Post (FPTP) elections. Regrettably, real life and work commitments delayed this release. I - AM - SO - SORRY.
Simulating FPTP results can be a useful exercise for roleplayers in generating new, creative storylines that are consistent with an established political geography in cases where your nation elects legislators by single-member plurality.
The Simulator
What I have designed is not a ready-made model, but a proof of concept that users can download here and adapt to your own ends. Any simulator that you plan to use for your nation-state will need to be heavily customized (e.g., # of districts, district names, parties).
Guests should be able to copy / download the sheet, but let me know if there are issues with the sharing privileges.
The example model encompasses only eleven districts, but you could adapt the same spreadsheet to accommodate hundreds of districts. My own simulator for Unibot calculates results for more than three hundred districts, for instance.
The spreadsheet breaks the simulation step-by-step in each tab and provides examples of how popular vote shares can be randomized and translated over a set of electoral districts.
Introducing ... a Proportional Swing Model
The process that I use for simulating FPTP results will be familiar to any poll aggregator as it is a basic proportional swing model used every day to predict seat counts based on national polls except in this case the electoral districts, the popular vote, and the regional variation are all fictitious.
In general, to simulate a result you must:
- 1. Create a randomized set of national popular vote shares for each party.
2. Modify these vote shares for each electoral district based on a fixed modifier. A negative modifier signifies that a party underperforms in a given district and a high modifier signifies that a party overperforms in a given district.
3. Ensure the vote shares after modification equal no more than one by redistributing the surplus proportionally.
You can also further simulate the result by considering turnout and the number of electors.
The Ghost in the Machine: Modifiers
I wanted to take a moment to discuss world-building for first-past-the-post, because in my mind, the local dynamics are what provide character to these results. When designing a set of political parties, you should consider (1) what political cleavages exist within the nation, and (2) how geography influences these political cleavages.
A country may be divided by the competing interests of different industries or rural/urban economies, ethnic or religious groups, education levels, or age. Urban electoral districts may demarcate multiple districts within one urban centre, whereas rural electoral districts may encompass many communities. Communities may be purposefully located by rivers, railways, or other geographical features.
For instance, when I designed Unibot's political parties, which exist within a corporatocracy, I regarded the country's major fault-lines as a voter's relation to industry and its association/identification with rival families that played a founding role within the corporation.
The financial district backed the Conservative Party of Unibot (CPU) which was tied closely to surrogates of vengeful former presidents, Ulas Dorenbos and John Wolverton Sr. . Those involved in research and technology, including testing and exports, were inclined to support a centrist party, Unibot Advance (UA) which was led by the Freeman-Wager family and cynically latched itself on to the legacy of the company's late founder, Eduard Heir. The Labour Party of Unibot (LPU) competed with the National Party of Unibot (NPU) for blue-collar votes in the factory towns dotting the shoreline. Nationalists from the Stash Kroh diaspora backed the Krohian Independence Party (KIP).
Once you have a strong sense of the reception that each party would receive in each electoral district, you're ready to build a simulator. This "reception" constitutes a modifier for the purposes of the simulator, and it is its core element.
For example, in the example model, the Blue Party and the Yellow Party overperform in the first electoral district, Western Shore—Skytown.
Perhaps that is because Western Shore—Skytown is relatively wealthy and the Blue and Yellow parties are advocating for lower income and sales taxes that don't appeal the Red/Purple base who would favor more investment in social security and healthcare? Whatever the case, it's this kind of logic, based within your own world-building, that should help to inform the modifiers that your simulator uses.
Wow! What else can I do to simulate elections?
You could take this concept and go further to create tracking polling data to base newspaper stories on, perhaps? Or maybe you would like to incorporate a set of socioeconomic variables, like unemployment, that could influence the national popular vote, so that your roleplaying influences the actual results?
I've also built simulators for ranked ballot leadership races (messy) and leadership referendums (easy). The sky is the limit in terms of what you can do. I'm personally excited about leveraging AI art to mass produce headshots for bit characters, like backbench politicians or athletes in NS Sports, to help bring some personality to the name and description.
Currently, I'm working on using QGIS to create a map of Unibot with electoral districts, so I can easily map election or statistical survey results. But alas, I lack the time & motivation these days to finish the job, but it's a relatively easy task once you learn the basics of mapping in QGIS.
Leave your questions and feedback below - happy to discuss anything, even if its just to geek out about swing models or maps or something.