About Poliwave

Poliwave is an independently developed electoral projection website focusing on Canadian politics. Founded by Raymond Liu, Poliwave provides accurate and transparent electoral insights.

Poliwave's Methodology

P=(R(PcBcS1+(PcBc)S2))+(D+T)

Poliwave employs a multi-faceted approach to electoral projections, integrating proportional swing models, demographic adjustments, and vote transfer dynamics. Below is the core projection formula: The values are adjusted to ensure consistency with the overall polling data and normalized to a total of 100%.

Where:

  • P : Projected vote share for a party in a riding.
  • R : Historical riding results for the party.
  • Pc : Current polling percentage for the party in the province.
  • Bc : Baseline general election result for the party.
  • S1,S2 : Scaling factors for proportional and uniform swings.
  • D : Demographic adjustment factor, reflecting local socioeconomic data.
  • T : Transfer matrix capturing inter-party vote flows.

What Data Does Poliwave Use?

  • Polling averages
  • Historical election results
  • Demographics: Income, age, ethnicity, education level, and more

Past Accuracy (most recent on top)

ElectionsAccuracyProjected SeatsResultsLink
2025 Ontario85%
PC: 87
LIB: 19
NDP: 15
GRN: 2
OTH: 1
PC: 80
NDP: 27
LIB: 14
GRN: 2
OTH: 1
-
2024 Nova Scotia98%
PC: 44
NDP: 8
LIB: 2
OTH: 1
PC: 43
NDP: 9
LIB: 2
OTH: 1
-
2024 Saskatchewan92%
NDP: 32
SKP: 29
SKP: 34
NDP: 27
-
2024 New Brunswick90%
LIB: 26
PC: 21
GRN: 2
LIB: 31
PC: 21
GRN: 2
-
2024 British Columbia86%
CON: 46
NDP: 45
GRN: 2
NDP: 47
CON: 44
GRN: 2
-

Tech Stack Used by Poliwave

Poliwave uses modern technologies for performance, security, and accessibility.

Svelte and SvelteKit

Svelte is a modern JavaScript framework that compiles components into highly optimized Javascript files. Unlike Vue or React, Svelte does not use a virtual DOM, which allows for faster rendering and smaller bundle sizes. This gives on opportunity to build highly interactive applications with less overhead, especially on mobile devices.

SvelteKit is a framework for building Svelte applications, providing features like routing, server-side rendering, and static site generation. It simplifies the development process and enhances performance by optimizing the application for different environments. Poliwave uses SvelteKit to build a fast and responsive web application that can handle complex data visualizations and user interactions. Furthermore, SvelteKit's built-in support for TypeScript allows for better type safety and code maintainability. SvelteKit receives top-tier support from Vercel, which provides a seamless deployment experience and optimizes the application for performance.

Tailwind CSS and daisyUI

Tailwind CSS is a utility-first CSS framework that allows for rapid UI development. With daisyUI, a component library built on top of Tailwind CSS, Poliwave can create beautiful and responsive designs without writing custom CSS. This approach promotes consistency and maintainability across the application, as well as boosting development speed.

Chart.js, D3.js, and Leaflet

Chart.js and D3.js are powerful libraries for data visualization, enabling Poliwave to create interactive and informative charts. Leaflet is a mapping library that allows for the integration of geographical data into the application, used for interactive maps.

Vercel

Vercel is a cloud platform for static sites and serverless functions, providing a seamless deployment experience. Vercel provides Fluid Compute that allows for dynamic scaling of serverless functions, ensuring that Poliwave can handle varying levels of traffic without performance degradation. Compared to Edge Functions, Fluid Compute offers a more flexible and cost-effective solution for serverless computing, as well as providing full Node.js support. Vercel provides web analytics and monitoring tools that help Poliwave track performance and user engagement.

Neon & Drizzle

Neon is a serverless Postgres database that provides a fast and scalable solution for data storage. Postgres allows for complex queries and data manipulation, making it ideal for Poliwave's data needs. Drizzle is an ORM (Object-Relational Mapping) library that simplifies database interactions, allowing for easy data retrieval and manipulation. With Neon and Drizzle, Poliwave can efficiently manage its data and ensure that the application runs smoothly.

Typescript

As Javascript lacks type safety, Poliwave uses Typescript to ensure that the code is robust and maintainable. Typescript provides static type checking, which helps catch errors during development and improves code quality. This is especially important for a complex application like Poliwave, where data accuracy and reliability are crucial. By using Typescript, Poliwave can ensure that the code is less prone to bugs and easier to understand. This leads to a better developer experience and a more reliable application overall.

Powered By

Vercel Vercel Vercel Vercel
Vercel Vercel
Vercel Vercel
Vercel Vercel Vercel