I just uploaded the version 2.0 of the 2021 simulator. The big change is the addition of demographic variables. I have also made some modifications for situations such as Sloan running as an independent or JWR not running again. But those are details really.

Why adding demographic variables?

Some of you might actually be surprised that the previous model wasn't using any demographic variables. That's understandable. But you need to realize that adding such variables isn't trivial. Yes it makes sense on paper to want to be able to calibrate the model based on the gender gap or the evolution of the voting intentions of the 18-34 years old, but it's quite a lot more complicated in practice. And most models out there don't use any (308/CBC) or don't disclose much of what they do (338/Lean Tossup).

The main challenge is that we don't have results by demographics, only by ridings. We don't actually know how women voted in 2019, or how the 18-34 voted. Yes we have polls but polls are not perfectly accurate. Also, most polls only include gender and age and nothing else. Very few pollsters include information about education or income. Literally none will include breakdown by home ownership even though it is an important predictor of the vote.

Given that my model (like every single one out there I believe) used the past election results as the base and apply the swing observed in the polls since then, we really need to find a way to get the results broken down by demographics. Thankfully, the Canadian Election study (CES) can help us there. This massive survey actually has a post-election component when they ask people how they voted. It's still not perfect as people can still lie or misremember, but it's an improvement. More importantly, I can get the results by income, education or any other variable I want. I ultimately limited myself to age, gender, education and income as we get this info in some polls. It's useless for me to add variables that are never included in any polls, it won't be useful for projections.

Because even such a survey isn't 100% accurate, I decided to set up my demographic adjustments as differentials. I'm not using the actual levels for (say) the Liberals among (say) men and women, I'm using the differential. For 2019, Canada-wide, the Liberals got 34% of the vote but were at 35% among women and 33% among men, so differentials of +1 and -1. Doing so allows me to use polls and the CES even though they aren't 100% accurate (in the post-election CES, the Liberals were overestimated). Surprisingly, I discovered that polls were pretty good at estimating such differentials. I guess that while polls can make mistakes (over or underestimating a party, probably due to turnout), they are better at estimating the relative levels. That is a very important piece of good news as it means polls can be reliable to use such variables for predictions.

I also use the data from the census where we get detailed breakdowns for each demographics (for instance what percentage of voters in Rosemont are aged 18-34). Notice, however, that the census doesn't give us joint distributions, only marginals ones. It's a potentially serious limitation but there isn't much that I can do about it.

How is it done?

A very quick summary would be:

1) The province-wide percentages that you enter will determine how many votes a party will get

If you believe the Liberals are up in one province by (say) 4 points, then input them at 46% in Ontario.

2) The demographic adjustments will influence who and where those voters are.

If you believe this swing is mostly concentrated among women and educated voters, then increase their differentials.

I decided to take a two-steps approach. The first step is the same as it has always been: we use polls (or we guess) the province-wide percentages for each party. Let's say, for instance, that the Liberals are up 5 points in Ontario since 2019. Once we input this, it has to be that the average swing adds up to 5 points. It doesn't matter if the swing is coming from the Liberals doing better among women or among older people, it has to be 5 points. That's what we told the model to do!

The demographic variables are only used to allocate those 5 points across ridings. If you believe the Liberals are up by 5 mostly thanks to an increase among women voters, then the model will need to increase the Liberals more in ridings with more women. That makes sense right?

The model first applies the province-wide swings (currently uniformly but regional adjustments could come later). It then apply the demographic adjustments, one by one (since I don't have the joint distribution). If the adjustments don't sum to zero, the model takes the necessary steps to insure the final, net average swing is consistent with the provincial one. See the following example to understand the last part.

Let's imagine that you believe that the Liberals are up 4 points among women. That's the only change. In every other demographics, they are stable compared to 2019. If you only enter '+4' in the simulator for LPC-women, the model will increase the Liberals by "share of voters that are women * 4 points" in every riding. In average this is obviously 2 points (ridings don't vary that much in term of the men to women ratio and the average share is obviously almost 50%; Let's assume it's 50% for the sake of illustration). But, and this is important, if you didn't increase the Liberals by 2 points province wide (i.e: overall, they are still at 42%), then the model will apply a uniform swing of minus 2 everywhere. That is logical. The model ahs to do this to keep the province-wide swing consistent with the province-wide numbers you entered. So, overall the Liberals remain at 42% but their vote is now skewing towards women, meaning the riding numbers have changed (some have increased, some have decreased).

What you need to do if you really believe the one change is Liberals +4 among women and everything else is the same is to enter Liberals at +2 province-wide (so Liberals at 44% in Ontario) and +4 among women. This will work and achieve your objectives. [Note: before some smartass on Reddit notices the error and declares me as illiterate with numbers, yes the true correct way would be the following: increase the Liberals by 2 points in the province, then put LPC-women at +2 and LPC-Men at -2. This is consistent with the Liberals being at 42% among men, 46% among women, thus 44 overall. But it's getting complicated and, for all intents and purposes, simply putting women at +4 will do the exact same job.]

The most important numbers remain the province-wide percentages, not the demographic ones. I spent a lot of time thinking about it and it is the best solution in my opinion. Why? Well because the key numbers you need to get right in order to be accurate with your seat projections are the province-wide percentages. In 2019, if you knew that the Liberals would be at 42% in Ontario and the NDP only at 17% (so a much bigger gap than what the polls showed), I can guarantee you that any model would have given you mostly the right results. You wouldn't have needed to look at whether the Liberals were doing better or worse among the 18-34 or if they increased their lead among the university educated. No, get the province-wide percentages right and you are 95% there. This is just a fact. You can spin your model as being super sophisticated and what not but the sad truth is: whoever guesses the province-wide percentages best will have the best seat projections. Yes your model would have been even more accurate if you took into account that the Liberals were gaining more among the 55+ and the university educated, but the improvements are very marginal compared to having the correct province-wide percentages. Not even close.

Keeping that in mind, I wanted to keep having my model mostly be dependent on those province-wide percentages. The demographic variables provide adjustments but nothing else. When you are using the simulator, I'd suggest that you first enter the percentages by provinces (based on polls or what you believe will happen). Then you scroll down and you make adjustments based on demographics (i.e: you think one party is doing better or worse among some demo). Or just play with the demographic adjustments and see if you can make a party's vote more or less efficient (if you are a Conservative looking to make gains in the GTA, I suspect that improving your score with university educated might help).

What if I don't do the math right?

What happens if you enter the Liberals at 38% (drop of 4 points province-wide) but your only change in the demographic adjustments is LPC-women at +4? Well, this is clearly inconsistent but I also don't expect you to do a ton of math before using the simulator. That kind of defeats the purpose. If the LPC is up by 4 among women, this party should be up by 2 province-wide, not down by 4. That's an inconsistency gap of 6 points (+2 vs -4).

The model will first apply -4 in every riding. Then it'll apply +4 * share of women in every riding, resulting in a net average adjustment of +2. The model will thus apply another uniform swing of -2 everywhere. At the end, the objective is 1) to have the Liberals down by 4 overall and 2) to have the LPC electorate now skewing more towards women. As long as both objectives are reached, I'm happy. All of this done in a simulator that can be used without a ph.d in stats.

What does it mean? It means you don't have to do math before using the simulator. The model allows you to be inconsistent and will take care of it. Just remember that the actual, final provincial swing (and therefore average net swing) is given by the province-wide numbers you enter. As it should be.

At the end of the day, enter the province-wide numbers and then play with the demographic adjustments to see if gaining among the 18-34 would (for instance) make the NDP vote more or less efficient. And don't worry if your demographic adjustments don't sum to zero or don't average out to the provincial swing, it's all fine. If you enter numbers based on a polling average, those inconsistency should not be present anyway (in theory). Either way, the model will take care of this.

What if I leave all the adjustments at zero?

In this case, the model is assuming the composition of the electorate for each party won't have changed since 2019. The CPC, for instance, was at 33% in Ontario but at 37% among men and 29% among women (so +4 and -4 differentials). If you enter the CPC at 35% province-wide and don't change anything else, then the CPC is still at +4 among men, so 39%. The demographic adjustments are really just that, adjustments. And they are relative. In this case, the model increases the CPC by 4 points everywhere with no special adjustment for ridings with more women for instance. remember, first step decides how many votes a party receives, the demographic adjustments will change who those voters are. And everything is done with 2019 as the base. So if you leave the adjustments at zero, you are assuming the CPC voters will continue to skew older, more male with fewer university degree (but higher income!) while the NDP vote will keep skewing young and female. Leaving the numbers at zero doesn't mean you believe there is no gender (or education, etc) gap, just that the gap for this party is the same as it was in 2019.

What else?

The model currently uses a simple uniform swing model. I'll likely add regional effects soon but I was more focused on the demographic variables. Adding regional coefficients doesn't make a big difference anyway.

I'll also refine the demographic estimates from 2019 over the next few weeks. I'd like, in particular, to have different ones for Quebec and the ROC. But polls rarely provide such breakdowns.

The 2019 federal election wasn't particularly exciting with very little vision offered. That was particularly the case with the main two parties that had quite boring platforms. As a result, the campaign was mostly marked by scandals and tangentially related topics such as SNC-Lavalin or Doug Ford.

Polls don't usually allow us to measure the impact of one variable or event on the voting intentions. They can show us that, for instance, people didn't like Doug Ford, but they almost never provide any measure of how much it impacted the voting intentions.

Using the CES (Canadian Election Study) of 2019, I decided to try to answer some of those questions. This is the first post in a series. Today's topic: did Doug Ford cost Andrew Scheer the job of PM? And did SNC-Lavalin cost Trudeau his majority? I use the online sample that contained all the information I needed. I estimated the regressions below . My two variables of interest were, naturally, "premiergood" which is equal to 1 if the respondent expressed satisfaction with their provincial government (either "very satisfied" or "satisfied) and "sncgood" which measured the handling of the SNC-Lavalin story (again, either "Very well" or "well").

I naturally needed to control for many other variables susceptible to influence voting intentions. I included the usual (age, gender, having children, education, income), the satisfaction with the federal government as well as the ratings given to the LPC, CPC, NDP and Green and their respective leaders. There is also one variable measuring the left-right orientation of the respondent (self identified). I believe this is, overall, a pretty standard and robust specification. Would it pass peer-review for publications? Likely not. But as a simple test for a blog post? Sure, that'll do.

I estimated the regression for Ontario only, here is the table in Stata.

As you can see, for the Liberals, a few variables mattered. Income and university education are both significantly correlated with voting Liberals. Being satisfied with the federal government is by far the strongest impact (a whopping 18.5 percentage points!; Yes I'm aware I should be using a Logit or Probit here given my dependent variable, but I want to be able to have easily interpretable coefficients), so was giving a high rating to the Liberal party.

Being satisfied with the government of Doug Ford is associated with a 6 points drop in voting intentions for the Liberals. On the other hand, people who thought Trudeau handled the SNC-Lavalin story well were voting for him 6 points more.

Estimating the same regression for the Conservatives gave the following results:

Being satisfied with the Ford government increased voting intentions for the CPC by 12 points! the SNC-Lavalin affair had the same impact as for the Liberals (just in the opposite direction obviously).

The variable cps19_lr_scale_bef measures the left-right orientation. So right-wing people were more likely to vote CPC. Interestingly, this is not a significant variable for the Liberals or NDP (note: I tweeted yesterday that it was significant for the NDP and not the other two. That was indeed the case with a different regression specification, a simpler one)

Finally, here is for the NDP:

Interesting to see the negative and significant impact of being university educated. You'd think the NDP would do better among this demographic but it really seems that Trudeau is too strong among this group. As for being satisfied with the Ford government, the effect was -6 points and -5 points for SNC (the impact of this variable is very consistent across parties).

So, both stories mattered. What would have happened if the Ford government wasn't that unpopular? Looking across the provinces, the percentage of people satisfied was only 27%! Compared to an average of 54% in the other provinces. Had the Ford government been as popular as the other provincial governments, the coefficients above indicate that the results in Ontario could have been (actual results in bracket):

LPC: 40% (41.3)

CPC: 36.5% (33.1)

NDP: 15.2%

Essentially, the Conservatives would have been 3.4 pts higher, taken from the Liberals and NDP. What impact in terms of seats? Hard to say but a quick look with my model would indicate that it could have cost the Liberals between 5 and 10 seats. Not enough to win the GTA or for Scheer to become Premier, but not insignificant either. The impact could be higher if the people not satisfied with Ford were concentrated in the GTA. The CES dataset doesn't allow me to look into that. But it does partially explain why the Tories increased everywhere in Canada except in Quebec (unique situation) and Ontario where they literally did worse, in percentages, than in 2015.

On the other hand, only 15% thought that Trudeau handled SNC-Lavalin well. That likely cost him as much as 5 points! It is quite massive and likely cost him a majority.

Both those estimates are very, very rough and should be taken with a large grain of salt. But I believe they showed that both had a significant impact on the vote in Ontario. Does it mean that Trudeau can now get a majority if people have forgotten SNC-Lavalin? Or that O'Toole can expect gains in Ontario now that Ford is, surprisingly, popular? I wouldn't say so, this is one causal link too far for such a basic analysis.

The BC elections was technically on Saturday October 24th. But with over half a millions of mail-in ballots (representing almost a third of the total votes) not counted for at least another week (don't ask why, BC law is weird), I thought I could try to update the 'projections'.

The final projections did very well. Let's face it, it wasn't a hard election to predict. The biggest surprise was the Green winning a third seat in West Vancouver. Otherwise everything was pretty much as expected with maybe the exception that the BC NDP won the popular vote by 'only' 10 points. This is significantly below the projected 49% in my final numbers. It's possible the polls were overestimating the NDP (and underestimating the Green) but I believe this is mostly due to the mail-in ballots not being counted. I actually believe that once they are, the polls will prove to have been accurate for the NDP but to have overestimated the BC Liberals (most likely due to many Liberal voters staying home).

Update: Election BC has released the number of mail-in ballots per riding and it seems there were, in total, over 644k ballots! Way more than we thought. Looking at my estimates below, you can likely add 1-3 ridings flipping NDP. Langara is now flipping based on my method 3. Fraser-Nicola and Kamloops-North Thomson are very close, so is Surrey South. So best case scenario is now 62 for the NDP but average scenario is still 'only' 59.

Here a quick summary:

- All evidence point to mail-in ballots being very favourable to the NDP.

- The exact magnitude of the impact depends on many assumptions, but it's safe to bet the NDP will ultimately flip a few more seats and finish with more than 55 seats.

- The best estimate is for the NDP to finish with 59 seats, the Liberals with only 25 and the Green to keep the 3 from election night.

- Abbotsford-Mission, Surrey-White Rock and Vernon-Monashee are likely to flip while Vancouver Langara, Fraser-Nicola and Kamloops-North Thomson are more uncertain (the last two mostly because of the relatively low number of mail-in ballots).

1. Estimating the mail-in ballots

We know that Elections BC has received 525,000 mail-in ballots (out of 724,000 requested). Given that 546.877 voted on election day and 670,324 voted in advance (plus 85,000 absentee ballots), the mail-in ballots represent almost 30% of the total. This is a significant number and more than enough to change the popular vote province-wide as well as flipping some seats.

You probably heard that those ballots will help the BC NDP. How do we know that? Mostly because some polls gave us this indication. Specifically, Ipsos and Insights West both had numbers broken for mail-in, advance and election day. Mainstreet and Angus-Reid only had the early (mail-in + advance) vs same day but it's still providing us with some info.

First, let's compare the early votes to the election day one. Early being the mail-in and advance votes.

As you can see, they mostly all agree (well Ipsos a little bit less). The early vote is likely more favourable to the NDP than the votes on e-day. The issue for us is naturally that the advance votes were counted but not the mail-in, so 'early' isn't super useful to us.

Let's look at the mail-in ballots:

So the NDP is projected between 54 and 59% in those mail-in ballots, an almost 30-points lead over the Liberals!

Maybe a better approach is to compare the ratio of (the voting intentions of) mail-in to election day (advance + same day). Doing a ratio can potentially eliminate the error of some pollsters (a poll might have been over or underestimating one party but as long as the bias is the same, doing a ratio will work).

Using a few assumptions, I also estimated this ratio for Mainstreet and Angus-Reid. What is remarkable is how similar those ratios are across firms. So, all in all, I am quite confident ins saying that the NDP will increase its share of votes once we count the mail-in ballots. By how much? My best estimates is that the NDP will finish around 48%, the Liberals around 32-33% and the Green at 15-16%.

2. How many seats will flip?

Method 1: use the newly estimated shares of votes, plug them in the model and see what happens. This is the least sophisticated method but let's start here.

Doing so gives us the following:

BC NDP: 61 seats

BC Liberals: 24

BC Green: 2

Let's improve those with some of the results we already have. For instance the model was clearly underestimating the Green in West Vancouver. The model was also overestimating the NDP in Cariboo-North (or the Interior in general). Skeena also went better for the Liberals than expected. So if we fix those errors (as well as Columbia River-Rivelstoke), a better projection would be:

BC NDP: 59

BC Liberals: 25

BC Green: 3

Compared to the current results, Vancouver Langara is now NDP (well it was already NDP in my original projections), so is Fraser Nicola. Vernon also flipped so did Kamloops-North Thompson. Abbotsford-Mission didn't flip, neither did Surrey-White Rock.

Method 2: apply the province-wide swing to each riding

The swing caused by mail-in ballots is about +3% for the NDP, -2-3% for the Liberals. If we do this in every riding (using the current results as base), we get 6 ridings to flip Liberals to NDP (Vancouver Langara, Kamloops-North Thompson, Fraser-Nicola, Abbotsford Mission, Surrey-White Rock and Vernon), so:

NDP: 61

Liberals: 23

Green: 3

Similar results as the first method. The caveat is that the swing caused by mail-in ballots won't be uniform, especially since some ridings have a much higher share of mail-in ballots.

Method 3: Use the estimated ratio and apply it to every riding, taking into account how many mail-in ballots there are.

From the ratios above, we know the mail-in ballots should be, in average, more favourable to the NDP. Specifically, if the NDP was at 10%, it should be at 10%*1.24=12.4% in the mail in ballots. Assuming the percentage of returned mail-in ballots is the same in every riding as it is at the provincial level (so 525k/724k=72%), we can thus estimate the swing in every riding.

Let's use Abbotsford Mission as our example. The current results are 38.3% for the NDP and 39.3% for the Liberals. That's out of 17,983 votes in total. We also know there were 8,119 mail-in ballot requests in this riding. If 72% returned their ballots, it means an extra 5,846 votes to count.

Since the NDP was at 38.3% with the advance+same day results, this party should be at 38.3%*1.24=47.5% in the mail-in ballots. Given there are 5,846 of them, that's an extra 2,776 votes for the NDP. Doing similar calculations for the Liberals, we get an extra 1,677votes. Given that the Liberal candidate had a lead of 188 votes, the mail-in ballots easily allow the NDP candidates to win with an overall score of 40.6% of the vote compared to 36.7%. So we have NDP climbing by 2 points and the Liberals dropping by 3 for a total swing of 5, very similar to the other method (it was expected).

Using this method, we get the following seats to flip: Abbotsford Mission, Vernon-Monashee, Surrey-White Rock and Vancouver Langara.

Fraser-Nicola is not flipping and the Liberals kept the seat with 40.6% versus 40.1%! Mostly due to a low number of mail-in ballots. Kamloops-North Thomson would also remain Liberals by the smallest margin (less than 1%). We get a few 'odd' results with this method as we would expect Fraser-Nicola, where the BC Lib have a lead of 3%, to flip before Vancouver Langara (lead of 5%). But the mail-in ballots represent 38% in Langara but only 14% in Fraser-Nicola. So the seat doesn't flip.

Edit: Surrey South might also flip given the really high number of mail-in ballots. Unlikely but not impossible.

Overall, the results would be:

NDP: 59 seats

Liberals: 25

Green: 3

I believe this is the most realistic results. While the NDP might flip 1 or 2 more, we also need to remember that I have so far only looked at ridings that could flip from Liberals to NDP. The polls really don't seem to indicate this as a possibility but we can't ignore a few odd ridings out there. While it's reasonable to assume the overall mail-in ballots will help the NDP, we can't exclude that some ridings will see mail-in ballots more favourable to the Liberals. Richmond-South Centre for instance could well flip NDP to Liberals. Similarly, Michael Lee in Vancouver Langara has so far done better than projected. So it's not unreasonable to expect him to also do better among the mail-in ballots and ultimately saving his seats. So we could have Langara remaining red but Fraser-Nicola flipping, thus cancelling each other out. That's why 59-25-3 is the most likely scenario.


It's almost guaranteed that the mail-in ballots will advantage the NDP over the Liberals. We can expect this party to increase its popular votes by anywhere from 1 to 4% while the Liberals will likely end up below 33%. The Green should move much.

Regarding seats, there are really 6 ridings to watch: Vancouver Langara, Surrey-White Rock, Abbotsford Mission, Fraser-Nicola, Vernon-Monashee and Kamloops-North Thomson. The NDP should be able to flip anywhere from 3 to 6 of those.

Unless we observe one of the worst polling failures in Canadian history, John Horgan will have won his gamble of triggering a snap election in the middle of a pandemic in the hope of getting a majority. After 3 years of governing thanks to the Green, he'll now have full control for the next 4 years.

Yes I'm that confident. Some people will remind us of BC 2013 when polls were wrong but there are many reasons not to expect a repeat (more on that below). The real uncertainty is whether the NDP will get a majority or a very large majority. There are naturally a few close races here and there but the overall situation is very clear.

For the busy readers, here are the projections.

Adjusted polling average; Seat projections with 95% confidence intervals; Chances of winning the most seats.

The riding by riding projections are here:

BC Final Projections 2020 by bryanbreguet

Just a reminder that I do NOT simply aggregate the polls. In particular, I allocate undecided differently. Instead of allocating them proportionally (which is, in my opinion, a bad assumption since it comes down to either saying all undecided voters will vote like decided ones or, alternatively, that none of them will vote), I allocated 50% to each of the NDP (incumbent) and Liberals (other big party). None for the Green and Conservatives. This method has worked very well, in particular to correct the typical overestimation of smaller parties by the polls. I have also adjusted the Conservatives down due to only running 19 candidates out of 87 ridings. Their vote is redistributed mostly to the Liberals but also to the other parties.

Chances of winning come from simulations where I randomize voting intentions (to account for the uncertainty of the polls) as well as at the riding level (to account for the distribution of the votes). Such simulations have proven to be very accurate and the model is calibrated.

Reminder that you can make your own projections by using my model here. It asks you to enter province-wide numbers but is using regional adjustments based on the polls.

1. The polls and the campaign

It hasn't been a particularly exciting campaign. Polls, as shown below, have been very stable. It makes sense, if people don't care much and are happy with the government, they won't really look for an alternative. I think it would always have been difficult for the BC Liberals to make a convincing case to change government. The fact that Andrew Wilkinson was absolutely terrible during the campaign (multiple scandals he couldn't deal with promptly, lack of charisma, etc; Even the Liberals supporters don't seem to like him with only 32% of them declaring that Wilkinson has ran the best campaign according to the latest poll from Leger.) obviously didn't make things better.

If people were expecting a tightening towards the end, they must be very disappointed. Most polls published today (Research Co, Mainstreet, Ipsos) had the NDP above 50%! The exceptions being Leger where the NDP was at 'only' 47% and a weird, last minute poll from Forum where the NDP was at only 44% and the Green at 18% (as well as projected to win 4 seats)! With possibly more than half the votes already cast, one might wonder if the projections should be based on a weighted average across the campaign. Thankfully the polls have been stable enough that it doesn't matter much. I do believe the overall accuracy of the polls will depend on the turnout tomorrow, Saturday 24th.

I think the best indication of the low interest is Google Trends. Usually, we'd see a trend for all parties and leaders as we get closer to election day. There is one but it's weak, with the only real spike being around the leaders debate. On top of that, many people chose to vote by mail (over 700k ballots requested), so they likely voted early and tuned out.

It was even more flat if we use the leaders. We saw a somewhat similar situation during the NB election. I really believe people aren't in the mood for an election and, as long as the government is okay, they'll just reelect it. It'd be interesting to see a federal election soon as Trudeau, while ahead, is nowhere as popular as Horgan was. So that might generate a more interesting campaign. Maybe.

To the Liberals credit, they did have a platform that 'made sense'. They tried to focus on jobs and the economy and had interesting proposals (PST, ICBC, childcare). But this wasn't going to be an issues-focused campaign. It was more of a referendum on Horgan and his government and people have been happy with it for a while. A much better leader for the Liberals would have limited the NDP to a smaller majority though. The PST promise was also maybe just 'too much'. I understand the Liberals tried to hit big and they succeeded for one day, but it was so costly that the opposition was just able to accuse them of giving tax cuts to rich people. Weirdly enough, it might have been more effective had they promised to only cut it in half. But that's just my intuition. Polls have shown people more responsive to the promise of opening ICBC to competition. Also, in Surrey specifically, it is possible that the promise to allow a referendum on getting rid of the RCMP might move some votes. This is super local and hard to measure though.

As for the Green, losing Andrew Weaver was always going to be a big loss. The fact he literally supported Horgan during this election didn't help. I know many people got a positive image of Sonia Furstenau but as a leader of a party, she spent way too much complaining about the fact we shouldn't have an election. The Green platform is also weirdly light on specifics. But the main issue is really that a pandemic election isn't good for third parties. People don't want instability and uncertainty. If they can get their centrist, competent government with Horgan, no reason to go with the Green. The Green just really need to keep at least one seat, going back to zero would be devastating. And they'd be become the first Green MP or MLA in Canada not to be reelected. Last minute trend was better and mail-in ballots (as well as advance polls) looked good for the Green, so they might actually keep their two seats. I'm curious how Forum arrived at 4 seats projected though.

2. Mail-in ballots and uncertainty

This election will have one particularity: a good share of the votes won't be counted until at least two weeks after the election. By law, Elections BC can't start counting the mail-in ballots for 14 days. In normal times this isn't an issue as those ballots only represent a small fraction (and even there, we had to wait for them in 2017 in a few close ridings). But with over 700k requested (and 66% have been returned already), the situation is obviously very different this year. Given that there were 1.9m votes three years ago and that we expect a lower turnout in general, those mail-in ballots could represent as much as 40% of the total.

A quick look at the number of requests for such ballots, along with the info from some polls, show that mail-in ballots were especially popular in urban environments. We also see a strong correlation (even after controlling for other factors) with the share of Green votes in 2017. Here below you have a simple regression (using riding level data from Elections BC and the census) of the determinants of mail-in ballots requests.

Bottom line: urban environments where there are more renters and high income requested more mail-in ballots. Green ridings and, finally, older voters too (this last one is likely just a general turnout effect, although we might expect older voters to particularly want to avoid crowded places). Outside of the age factor, most variables are correlated with higher NDP and Green votes instead of Liberal ones. Polls have also shown that NDP and Green voters were more likely to have chosen to vote by mail. What this means is that the results tomorrow night (where they'll count the advance votes as well as the votes cast on Saturday) might be generally more favourable to the BC Liberals. This is especially true at the aggregate level as the Interior of BC is likely to represent a bigger share than it should. It might not cause too much of a bias at the riding level, although I'd personally think that any seat with the Liberals narrowly ahead tomorrow night will likely flip to the NDP 2 weeks later.

Notice the lack of correlation with the advance turnout. So mail-in ballots didn't displace advance votes as I'd have thought. Also, while those variables here can explain 86% of the variation in mail-in ballots requests, it failed spectacularly at explaining the variations in advance turnout. Not sure what to do of this info but I thought I'd share it. Speaking of which, a record 681k people voted in advance, representing about 20% of registered voters. All in all, I suspect that over 50% of the votes were cast in advance (in-person or by mail).

Every single poll that has measured the voting intentions among those who had already voted have shown the same thing: the BC NDP is well ahead in this group. The Mainstreet poll was particularly bad for the Liberals. We are talking of a 50-30 lead, if not more. The Liberals really need to get their vote out tomorrow if they want to avoid a collapse similar to the Quebec Liberals in 2018.

In terms of uncertainty, this is one of the most certain and confident forecast I wrote. The BC NDP came within distance of winning the election in 2017. All they need is a few wins here and there and they get a majority. Given that the popular vote swing is showing a NDP at +10 overall, I think it's an absolute no-brainer that the NDP will win a majority. Any other results would require a massive polling failure.

Speaking of which, BC 2013 remains the second worst polling failure in Canada (behind Alberta 2012). The BC NDP had been ahead in the polls consistently and everybody thought they were cruising towards a majority. And yet the Liberals won. So why am I discarding such a possibility? I'm not, my simulations absolutely allow for such polling mistake (and even worse). But the situation is very different. First of all, the Liberals had the trend going for them during the 2013 election while it hasn't been the case this year. By the end of the campaign, the NDP's lead was about 6-7 points and that's without adjusting the BC Conservatives down for not running a full slate of candidates. Therefore, the NDP lead this year is bigger and more consistent. If anything, the last minute trend was very favourable to the NDP with some polls putting this party above 50%. Maybe more importantly, we don't see age as an important factor for voting intentions. BC voters skew very old (50% of the voters were over 55 in 2017 and over 58% in 2018 for the referendum on electoral reform). In 2013 and 2018, polls showed the 55+ being much different from the other age groups (supporting the Liberals in 2013 and against PR in 2018). While the Liberals still perform better with older voters today, the gap is far less pronounced. Using the 2017 age-turnout and reweighting the polls, the 13 points lead of the NDP over the Liberals shrink to 12. Using the 2018 turnout shrinks it even more to 11.4. Therefore, even if the age turnout is as skewed as in 2018 (when polls were dead wrong), we still get a NDP majority, just a smaller one. So while there is uncertainty with turnout and mail-in ballots, I don't believe there is enough uncertainty to think Wilkinson can pull a win.

3. Seats to watch

I have 21ridings where one candidate is projected with 100% chances of winning and my model has never ever made a mistake in those situations. All of those are for the NDP. Then let's add the 8 ridings where the chances are not 0.0% but like 0.1%. So the NDP pretty much starts at 29 ridings. The BC Liberals have 2 guaranteed seats (the two Peace River) and another one almost guaranteed.

If we add the ridings where the NDP has at least 98% chances of winning (9), we have 38 ridings. Therefore the NDP only needs to win 6 'competitive' ridings to win a majority.

I have 14 ridings where the outcome is decided by less than 5%.

As for the Green, province-wide (or even regional) polls show a sharp drop from the Andrew Weaver-led party of 2017, although the last minute trend was better. Polls show that 30-40% of 2017 Green voters have now moved to the NDP. Hopefully for the Green, the bleeding out is less pronounced in the few ridings they hold. It's really hard to make projections when local factors are in play (we'd need riding polls but somehow Mainstreet didn't publish a single one). Other metrics (fundraising, early voting) point to the Green doing okay and saving what they have but we can't ignore the clear trend. On the Island, the Green are down by 5 points and the NDP is up 9 points. Unless the Green can concentrate their support in their 2 ridings, they'll be wiped out. As for the 3rd seat, Oak Bay - Gordon Head, I believe the Green have no chance after losing their star candidate and not replacing him with another big name. But hey, we'll see, the mail-in turnout was really high at 37%, something that looks good for the Green. I think the drop among older voters might really hurt them, in particular since the ridings they compete in have some of the oldest median voters in the province.

A quick word about the BC Conservatives who are running 19 candidates. Keep an eye on some of those ridings as they could split the vote in a few (like Langley East) to allow the NDP to win. The party's leader, Trevor Bolin, is running the BC's most right wing riding in Peace River North. Compared to 2017 where they only ran 7 candidates, this party seems more organized and should get 1-3% of the vote overall, more in the Interior.

In Langley, my model is flipping what I feel will happen. I wouldn't be surprised to have Langley East going NDP (the Lib MLA was in trouble for voting against a rainbow crosswalk and the Conservatives are running a good campaign there) while Langley might just remain Liberals. The fact John Horgan went there on October 21st (while Wilkinson hasn't gone at all!) probably shows the NDP knows they can flip at least one riding there.

Can we expect any Liberals gain? I doubt it but I'd look at Surrey for such surprise. Local issues (RCMP) plus a softer NDP vote (2017 saw a big surge that might not repeat) could generate a surprise gain.

Ultimately, the seats to watch aren't there to decide whether the NDP will win a majority but on whether their majority will be huge, including massive gains in the interior. Personally, if the turnout tomorrow is low (for Saturday votes only), I'll start looking at seats like Abbotsford-Mission where we could see surprises.

Thanks for reading and see you at the next election (my guess is in the spring for the federal one). I'll write here and there in-between obviously.

Angus Reid just published a second poll in only a few days and, maybe for the first time since this campaign started, the numbers are slightly better for the Liberals. Don't get me wrong, they are still pointing towards a NDP majority but it's relatively better for a few reasons.

The BC Liberals are 'only' trailing by 10 points (45% to 35%) among decided voters (including many who have already voted in advance or by mail). Moreover, some of the crosstabs are more favourable for the Liberals. For instance we see this party well ahead in the Interior and higher among the 55+. This is more typical of BC politics but quite a contrast to what polls were showing previously (with Horgan making significant gains in the Interior and among older voters).

The one really good news for the NDP in this poll is the other confirmation that, among people who have already voted, this party is largely ahead (51% to 33%). We had seen this in other polls previously. Whether the NDP gets a small or super majority might well depend on how many people actually go out and vote on Saturday, as the in-person voters are likely to favour the Liberals.

We have seen such trends in previous polls as you can see in the next few graphs.

The good trend on the Island for the Green might be misleading as it is mostly due to the last few pollsters (Angus-Reid, Insights West) having this party higher than Leger or Mainstreet, a difference observed throughout the campaign.

We are still far from the BC Liberals being actually competitive but if such trends should materialize on Saturday, Wilkinson could at least save the furniture and not fall below 30 seats.

Here are the projections after adding this poll to the adjusted average. Notice that the BC Liberals no longer have an official candidate in Chilliwack Kent and the incumbent MLA is listed as independent after he was forced to resign. He'll still appear on the ballot under the Liberal name. Projecting such a situation is difficult but I looked at the few past precedents and concluded that Laurie Throness will likely perform at 50-60% of what he'd have otherwise. Most likely not enough to win but enough to be a strong second.

The BC election is officially on Saturday October 24th. However, many people have already voted by mail. Elections BC has statistics about the number of mail-in ballots requests, how many got returned already and the advanced polls turnout. They obviously won't tell us who those votes were for but I believe we are seeing some strong trends that will help us make sense of the results on Saturday.

First, let's look at who requested a mail-in ballot. I plotted the percentage of registered voters by riding against the projected voting intentions (based on my projections; I could have used the 2017 results for almost identical correlations). See the results:

In average, about 19% of RV have asked to vote by mail. Whether they'll all receive their ballots on time and will be able to return them by mail is a different question (note: if you have your mail-in ballot but haven't sent it back already, it's likely too late and you should drop your ballot yourself to one of the authorized locations by Elections BC). As we can see, ridings where the Liberals are projected to be high have had a much lower rate of requests for such mail-in ballots.

Elections BC said that while over 700,000 mail-in ballots have been requested, only 177,000 have been returned so far. Given that the 2017 election had just shy of 2 mio voters and I think it's reasonable to expect a lower turnout this time around, I think it's safe to assume that about half of the votes will be cast by mail. Which means we'll only have the results of half the votes on Saturday since Elections BC cannot start counting the mail-in ballots until 2 weeks after the election (that's the law). This is a very important element that people will need to keep in mind on Saturday when we start getting results.

We can also see the pattern of mail-in ballot requests by region where Vancouver Island is high (27%) compared to Metro Vancouver (21%) and the Interior (13%). We obviously always run the risk of ecological fallacy when using aggregate data to infer individual behaviors. We actually saw that during the referendum in 2018 where ridings with more young voters were also the ones who were voting more, yet the final results showed younger votes actually voted less. So I'll have to look into it more.

Does it match with the polls? Insights West was showing that Liberals voters were more likely to declare their intentions to vote in-person than NDP and Green voters. It also showed that older voters seemed more likely to vote in-person. Research Co. was showing that while half the voters planned to do so by mail, it was actually the 55+ who were declaring their intentions to do so. So we have contradicting evidence here. However, both polls were showing that among the people who had already voted, the NDP was ahead.

What about advanced in-person voting? According to Elections BC, 305,789 votes have been cast during the first 3 days (and it climbs to 380,000 if we include the fourth day but Elections BC hasn't updated their pdf yet). Over 600k voters had chosen this option in 2017. I don't believe we'll beat this number since many preferred the mail-in ballots route this year.

Do we see a trend in advance voting? Yes and this time, it's more positive for the Liberals. See below:

So it seems that this is consistent with Liberal voters preferring to vote in person while NDP voters would rather do it by mail. The BC Green party should be happy with both measures and they might be getting out their vote more than what the polls have indicated.

By the way, the correlation between mail-in turnout (measured by requests) and advance turnout is -0.04, so there isn't much of a correlation there. It's really when we look at each party that we see the negative correlation. I was expecting to see  a negative correlation as people choosing to vote by mail might have been the ones who would have voted in advance otherwise. That might not be true then or other things are happening at the same time.

What does all of this mean? On Saturday, the votes of the day (and advance polls) will likely favour the BC Liberals (depending on the ratio of mail-in ballots received and advance turnout) and we'll need to keep that in mind. On the other hand, if the Liberals are in trouble based on Saturday results only, then we could just go ahead and call the election for the NDP.

Just a final word: I expect Saturday's results to be, overall, more favourable to the BC Liberals than the full results. So if we look at the province-wide percentages, the Liberals will be higher than expected. However, at the riding level, the bias might not be that clear cut. Indeed, if we do a regression where we control for both the projected voting intentions and the regions, the voting intentions aren't significant anymore (although it's not far to be for the Green). What it means is that the distinction between mail-in and in-person might have more to do with the region than the parties. So, on Saturday, we'll get more votes from the Interior than the Island but within a region, if we look at an individual riding, we might get approximatively accurate results. With the caveat that the Green might likely get a lower same-day votes than mail-in and advance ones (which is also consistent with the idea that small parties simply get less votes from the undecided and late switchers).

Tuesday was the leaders debate of this 2020 BC election. a debate that was actually quite good (in my opinion) and saw all three leaders perform relatively well. It appears, however, that Green leader Sonia Furstenau likely performed a little bit better, especially if we measure as we should:  adjusted for voting intentions.

The new poll from Insights West tells us that John Horgan got the most 'likes'. We need to remember, however, that people tend to be biased when answering such questions and are more likely to find the leader of the party they support to have won.

If we control for the fact that the NDP is currently polling around 50% while the Green are barely at 12%, it puts Furstenau as the true winner. See it another way: while 81% of NDP voters found Horgan to be good or very good, 54% said the same for Furstenau. On the other hand, only 38% of Liberals voters and 30% of Green voters thought Horgan did good or very good. Sonia Furstenau therefore received some high praise from the voters of other parties.

I have done such analysis for years now, what I usually call the leader index. This has worked well in every single election to determine what post-debate trajectory we should expect in the polls. In the present case, it'd be logical to expect the Green party to increase. Of course, that is assuming enough people watched the debate and nothing else happens.

I had done my own Twitter polls on Tuesday and had found qualitatively similar results. It's weird how Twitter polls, as biased as they are, can actually work relatively well for such leader index. I guess the bias cancels out once we take the ratio.

As a reminder, Andrew Weaver had won the 2017 debate. It didn't really translate into an increase in the polls but maybe his win prevented a drop towards the end? The 2017 campaign was a lot closer and everybody was worried about vote splitting. So the Green party managing to actually get 16-17% and 3 seats was very impressive.

Will this debate help the Green this year? Hard to say. One caveat for Furstenau is the fact so many have already voted (by mail) even before the debate. Also, her best moments (including the answer on white privileges) came relatively late during the debate. Ultimately, I doubt it'll create much movement in the polls overall but it might be enough for her to win her seat. Google Trends shows the peak for Furstenau right after her answer. Unfortunately for her, and despite the best efforts of CBC, she didn't seem to generate much interest post debate.

Speaking of which, my model was, until now, giving her a 5% boost as new leader. Those things are always hard to measure and are mostly subjective. After the debate, and looking a little bit more into it (like previous Green leaders), I changed the bonus to 10%. It is enough to flip the seat back from the NDP in my projections but my confidence is low. Fortunately, it seems Mainstreet might do a few riding polls and I really, really hope Cowichan Valley is one of them.

If we go back to the Insights West poll, done entirely post-debate, the Green are actually down! From 16% to 14% (and from 26% to 24% on Vancouver Island) if we compare the two polls from this firm. There are other things that should worry this party. First of all, the Green are clearly doing better with the 18-34 group than the 55+. It was already the case in 2017 but not to the same extent. Given how voters in BC tend to skew older (50% above 55 in 2017 and 58% in 2018 during the referendum!), this could mean the Green will underperform their polling numbers (note: I already don't allocate undecided to them as they are a small party, exactly in order to correct the typical overestimation of small parties in the polls). Moreover, polls have consistently shown that Green voters are less certain to vote and are less certain of their choice. Finally, the Green voters are more likely to declare their intention to vote by mail. This is good but how many have actually requested their ballots and will return it on time? How many will just forget?

Anyway, I updated the projections. Not much change really except the Greens eat (but this is due to the change in the leader bonus, not the polling average). Also, no, I haven't incorporated yet the situation in Chilliwack-Kent, not sure how I'll as this is very tricky.

Adjusted polling averages; Seat projections with 95% confidence intervals; Chances of winning the most seats