Election 2021 -Distribution of mandates without voting risk

Author: Nikola Tulechki  


Simulation of the final distribution of mandates after elimination of sections with presumed risky votes.


What would the National Assembly look like if there was no bought and controlled vote in the elections on April 4, 2021?

We tried to answer this question using the following data and tools:

  • The study of the Anti-Corruption Fund (ACF) on the size and impact of the controlled and bought vote in the elections on 04.04.2021. (Available here).
  • CEC’s open data, which we maintain as a Knowledge Network (Described here)
  • BIRD’s mandate calculator, which applies the CEC methodology to user-supplied data. (Available here)


To make this analysis possible, we have made several assumptions whose correctness cannot be guaranteed: In the first place, “risky sections” are those sections that are captured by the ACF statistical model with a low threshold, i.e. the most pessimistic scenario that is guaranteed by definition to overgenerate results.
Secondly, the simulation assumes that in the so called risk polling stations nobody votes. In other words, they are completely removed from the system. We are aware that the actual electoral behaviour is more complex, and most likely there would still be a vote in these polling stations. These assumptions make the analysis illustrative only for a situation where the assumptions are true, and the reality could be substantially different.

Generation of input data

Using this SPARQL Query, we generate input data directly in the structure expected by the mandate calculator, excluding sections where the ACF methodology detects anomalies raising suspicions of vote manipulation.

BASE <https://elections.ontotext.com/resource/>
PREFIX my: <https://elections.ontotext.com/resource/entity/>
PREFIX myd: <https://elections.ontotext.com/resource/prop/direct/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX myp: <https://elections.ontotext.com/resource/prop/indirect/>
PREFIX myps: <https://elections.ontotext.com/resource/prop/statement/>
PREFIX mypq: <https://elections.ontotext.com/resource/prop/qualifier/>
PREFIX election: <https://elections.ontotext.com/resource/election/>
select ?mir ?partyName (sum(?valid_votes) as ?sum_valid_votes) 
where {
    bind(election:pi2021 as ?election) 
    ?party a my:ElectionParty ;
           rdfs:label ?partyName .
    ?voting myp:vote ?vote  ;
            myd:main_election ?election ;
            myd:election/myd:jurisdiction/myd:number ?mir ;
            myd:section ?sec ;
    ?vote myps:vote/myd:party ?party;
                   mypq:valid_votes_recieved ?valid_votes ;
    filter not exists {
        ?sec myd:meta_section ?ms .
        ?ms myd:isVeryRisky2021 [] .
} group by ?mir ?partyName order by ?mir ?partyName

Request execution

We use csvformat to reformat the table with the correct separators:

csvformat -D=";" -K 1  pi2021_no_risky.csv  > pi2017_no_risky.ok.csv

Results and analysis

Excluding the risky polling stations, we use the BIRD calculator to simulate the electoral process with nearly 310,000 less “risky” voters. This corresponds to the most pessimistic hypothesis in the ACF study.

Due to the specifics of the methodology of the distribution of mandates, which is a zero-sum game, the only loser turns out to be the MRF party, which in a more honest vote loses seven seats. These seven mandates are redistributed among four other parties as follows:

PartyDifferenceReal MandatesMandates without risky poll sections

BSP - Bulgarian Socialist Party GERB - DB - Democratic Bulgaria MRF - Movement for Rights and Freedoms SUBWC - Stand Up.BG! We are coming! TSP - There Is Such A People