The seat estimate is calculated by taking the increase/decrease in vote share for each party and applying it to all constituencies in Great Britain (excluding Northern Ireland, which is contested by a different set of political parties).
I have only ever made two adjustments to this method, which are explained below.
Adjustment 1: The Brexit Party (April-December 2019)
From April 2019 until December 2019, I made a slight alteration to my projection model. The 2017 UKIP vote in each seat was used as a “baseline” for the Brexit Party’s support, and I added the Brexit Party’s gain (e.g. +19pts) to that baseline and subtracted the UKIP loss (e.g. -2pts).
Following the 2019 general election, I stopped using this method as it was no longer necessary and returned to a simple universal swing method.
Adjustment 2: The Speaker (September-December 2019)
Until September 2019, John Bercow’s seat of Buckingham was counted as the Speaker’s seat. When he announced in September 2019 that he would not stand for re-election, I stopped counting the Speaker seperately in seat totals and considered Buckingham to be a Conservative seat. When Labour MP Lindsay Hoyle was elected as Speaker in November 2019, I began counting his Chorley seat as the Speaker’s seat.
The seat estimates for September and October 2019 thus do not include the Speaker at all, resulting in 1 more Conservative MP than a simple universal swing method.
The estimates for November and December 2019, meanwhile, show 1 more Conservative MP and 1 fewer Labour MP than a simple universal swing method would show.