Shall we examine the by-elections in the past 2 years in detail?
Old Bexley and Sidcup - Con hold. by-election occurred after the death of a popular constituency MP, other parties respectfully did not compete hard.
North Shropshire - Lib Dem gained a seat that has always had a Tory MP in its nearly 200 years.
Southend West - Con hold - following the murder of the previous MP.
Birmingahm Erdington- Lab hold.
Wakefield - Labour gain
Tiverton and Honiton - Lib Dem gain
Chester, Stretford and Urmeston + West Lancarshire - lab hold
Uxbridge and South Ruislip - Con hold - note the swing to Lab was sufficient that if it were the same nationally Con would be in opposition.
Selby and Aintsy - lab gain
Somerton and Frome Lib dem gain
Rutherglen and Hamilton West - Lab gain (from SNP)
Mid Bedfordshire - Lab gain- biggest ever swing?
Tamworth Lab gain.
What we have is Labour gaining seats from the Conservatives in the red wall and the shires. Lib dems gaining seats from the Conservatives in the SW.
The pattern is pretty clear.
The local elections this year had the same pattern.
The polls have had the same pattern for months.
An ostrich keeps its head in the sand.