SagarmathaIQ

Peak Election Intelligence

How We Build Election Forecasts

This page documents the modeling framework behind SagarmathaIQ's election forecasts. It was first applied to Nepal's 2082 parliamentary election and is designed to carry forward into future cycles with updated baselines and structural improvements.

1. Framework overview

Nepal uses a mixed-member proportional (MMP) system: 165 seats decided by first-past-the-post (FPTP) voting in single-member constituencies, and 110 seats allocated by party-list proportional representation (PR) from national vote share. We model these independently and combine them for total seat projections.

FPTP component

Constituency-level probabilistic model. Outputs a win-probability distribution over all registered parties per seat.

PR component

National vote-share projection with Monte Carlo draws. Seats allocated via the largest remainder method with a 3% threshold.

Both models share a common party taxonomy and are calibrated to the same historical baseline (2079 election results). Outputs are published as probability distributions, not point estimates, to reflect genuine uncertainty.

2. Data sources and baselines

Primary baseline

The 2079 general election results serve as the prior for both models. At constituency level we use 2079 FPTP vote counts per candidate per party. At national level we use 2079 PR vote totals to anchor party share priors.

Supplementary inputs

Input Role
Candidate registration data Determines which parties contest each constituency. A party absent from a seat gets zero probability mass.
Party-level swing signals National-level adjustments fed into constituency z-score factors (see ยง3).
Known candidate strength Encodes prior knowledge for high-profile incumbents or notable challengers via the z1 parameter.
District-level demographic splits Used selectively for constituencies where ethnolinguistic composition strongly predicts party loyalty (Madhesh, Terai).
Note for 2087 The 2082 FPTP results replace 2079 as the primary baseline. RSP won 125 FPTP seats and ~48% of the PR vote; these figures replace the 2079 PR share allocations as the dominant-party prior.

3. FPTP constituency model

The core of the FPTP model is a zero-sum Dirichlet distribution over candidate vote shares within each constituency. This naturally enforces that all shares sum to one and produces a full probability distribution rather than a single predicted outcome.

Vote share prior construction

Each party's prior concentration parameter is derived from its 2079 performance in the same constituency (or the district average when local data is unavailable), adjusted by two calibration factors:

ฮฑ_party = baseline_share ร— exp(z0 + z1) baseline_share = party's historical vote share in this constituency z0 = national swing factor (shared across a province) z1 = candidate-specific strength adjustment (default 0.0)

The z0 parameter encodes province-level or national swings from polling or qualitative intelligence. The z1 parameter is reserved for constituency-specific overrides: popular incumbents, floor-crossing candidates, or known strongholds.

Sampling procedure

  1. Construct the Dirichlet concentration vector ฮฑ for all contesting candidates in the seat.
  2. Draw 10,000 samples from Dir(ฮฑ). Each draw is a complete vote-share vector summing to 1.
  3. For each draw, identify the plurality winner. This gives a win-probability estimate for every candidate.
  4. Aggregate win probabilities across all seats to generate province- and national-level seat projections.

Confidence reporting

Published forecasts report the win probability of the leading candidate and credible intervals from simulation draws. Labels: "safe" above 85%, "likely" at 65โ€“85%, "competitive" below 65%.

Known issue โ€” 2082 Several constituencies were assigned 100% win probability, which is epistemically wrong regardless of apparent dominance. The 2087 model caps all constituency probabilities at 97%.

4. PR seat allocator

Nepal's 110 PR seats are allocated using the Hare quota / largest remainder method, consistent with the Election Commission's official procedure.

Threshold and eligibility

Parties must clear 3% of the national PR vote to be eligible for any PR seats. Parties below this threshold are excluded before allocation begins; their vote shares are not redistributed.

Allocation steps

quota = total_valid_votes / 110 automatic = floor(party_votes / quota) # for each eligible party remainder = party_votes - (automatic ร— quota) remainder_seats โ†’ allocated in descending order of remainder

PR vote share projection

PR vote share is modeled separately from FPTP vote share. The baseline is each party's 2079 PR vote fraction. National swing factors derived from FPTP simulation outputs apply as a soft update. The result is a distribution over national PR vote shares; we draw samples, run allocation per draw, and report the resulting PR seat distribution.

Why FPTP and PR shares differ Voters frequently split their ballot in Nepal's MMP system. A party can win few FPTP seats but retain strong PR support, or vice versa. We do not assume the two are equal.

5. Simulation and uncertainty

Both models use Monte Carlo simulation to propagate uncertainty from constituency level through to national seat totals.

FPTP simulation

10,000 draws are taken independently per constituency. Seat counts are summed across constituencies to produce a distribution over total FPTP seats per party. Reported intervals are the 2.5th and 97.5th percentiles.

PR simulation

PR vote shares are drawn using a Dirichlet process at the national level. For each of 10,000 drawn national vote-share vectors the allocator runs and outputs a seat count, giving a full marginal distribution per party.

Combined totals

FPTP and PR draws are paired by index and summed. Reported as: median total seats [p2.5 โ€“ p97.5].

2082 calibration failure RSP's actual PR share (47.9%) exceeded our p97.5 ceiling (44.9%). FPTP simulations similarly underestimated RSP's scale. The z0 loading was set too conservatively. The 2087 model anchors the RSP prior directly to 2082 FPTP results.

6. Validation approach

Pre-election calibration

Before each forecast cycle, parameters are tested against the most recent prior election as a pseudo out-of-sample check. Z-factors are adjusted until the model reconstructs historical results within acceptable error bounds. This does not guarantee forward accuracy but catches obvious mis-specification.

Post-election audit

After each election we publish a structured post-mortem comparing published forecast probabilities against official results. Metrics tracked: overall hit rate, per-province accuracy, hit rate by confidence tier (safe / likely / competitive), and PR vote share error vs. the credible interval.

2082 post-mortem Overall FPTP accuracy: 82/165 (49.7%). KTM Valley: 14/15 (93%). Madhesh: 7/32 (22%). Full analysis: post-mortem writeup.

7. Known limitations

No polling data

Nepal lacks a consistent publicly available polling infrastructure. All priors come from historical results and qualitative inputs. There is no mechanism to incorporate survey-based vote intention.

Structural breaks in new constituencies

Boundary changes between cycles leave some constituencies without a clean historical analogue. For these seats we fall back to district-level averages, which are a weaker prior.

Madhesh and ethnic-vote dynamics Critical

The current model treats Madhesh constituencies with the same Dirichlet framework as the rest of the country. In 2082 this badly underestimated RSP's regional sweep (31 of 32 seats). Madhesh operates on qualitatively different dynamics โ€” ethnolinguistic identity, cross-provincial migration, bloc voting โ€” not captured by a generic vote-share prior.

Unmodeled parties Critical

In 2082, Shram Sanskriti won 3 FPTP and 4 PR seats but was not modeled as a distinct party. Its vote share was absorbed into "other," leading to systematic overestimates for NC and NCP in the seats it contested.

Party collapse scenarios

The model has no explicit mechanism for party collapse or vote-transfer cascades. JSP's near-elimination (1.6% PR share vs. 6.9% forecast) was not flagged as a plausible tail scenario. Parties with declining trajectory need explicit collapse branches.

8. Planned improvements (2087)

Change Priority Status
Madhesh structural model โ€” separate swing term with ethnolinguistic covariates Critical Planned
Probability cap at 97% per constituency โ€” no 100% certainty calls Critical Planned
Shram Sanskriti added as a modeled party with 2082 results as baseline Critical Planned
RSP prior re-anchored to 2082 FPTP results (125 seats, ~48% PR) High Planned
JSP and Janajati party collapse scenarios โ€” explicit low-support branches High Planned
NCP stronghold anchoring โ€” prior constrained to confirmed NCP districts Medium Planned
Calibration report published alongside forecasts for full transparency Medium Planned