Technical documentation

How the model works

Britain 2036 is a rule-based causal graph simulator. It does not use machine learning, regression models, or black-box forecasting. Every output traces back through a defined chain of edges with explicit magnitudes, direction signs, and lag parameters. This page documents the complete model architecture so you can evaluate — and challenge — every assumption it makes.

1. What this model is — and what it isn't

Britain 2036 is a structural scenario tool, not a forecasting engine. It models how policy changes propagate through interconnected systems — healthcare, housing, labour markets, fiscal balance, demographics — using a directed acyclic graph (with limited feedback loops) of causal relationships.

The output is not a prediction of what will happen. It is a projection of what the model's causal structure implies would happen if its assumptions hold. Those assumptions are documented in full below.

The model does

  • Trace directional effects through causal chains
  • Apply time-lag attenuation (training nurses takes years)
  • Distinguish stock effects (cumulative) from rate effects (immediate)
  • Model fiscal feedback (deficit → spending pressure → service quality)
  • Expose every parameter for inspection

The model does not

  • Produce point-accurate forecasts
  • Claim empirically calibrated elasticities
  • Model regional variation or distributional effects
  • Account for political negotiation, public behaviour change, or exogenous shocks
  • Use machine learning or opaque statistical methods

2. Four-layer architecture

The simulator operates through four distinct layers. Each layer serves a different epistemological function — separating what we know, what we model, what we're uncertain about, and what we assume.

LAYER 1Baseline DataReal UK snapshot — ONS, OBR, NHS England, Home OfficeLAYER 2Causal Relationship Graph71 directed edges with magnitude, direction, lagLAYER 3Uncertainty EnvelopeStock vs rate classification · lag ranges · magnitude sensitivityLAYER 4Scenario / Ideology PresetsBundled assumptions — Restrictionist, Managed, Build & Grow…

Layer 1 is observable fact — published data from official UK sources. The baseline values for all 29 policy levers and 17 output metrics are drawn from these sources, cited in the baseline view.

Layer 2 is where modelling judgment enters. Each of the 71 edges in the causal graph represents a claim: “if X changes, Y changes in this direction, at this magnitude, with this delay.” These are informed by published research and policy analysis, but the specific magnitudes are author-assigned heuristics — not regression coefficients from a fitted model. This is by design: we trade econometric precision for inspectability and contestability.

Layer 3 handles the fact that some effects accumulate over time (a “stock” — e.g., trained nurses entering the workforce) while others operate at a rate (e.g., higher pay reducing vacancy rates immediately). It also encodes lag parameters — the delay between a policy change and its observable effect.

Layer 4 bundles lever configurations into named ideological starting points. These are not endorsements — they represent recognisable policy positions so users can explore trade-offs from a familiar starting point before adjusting individual levers.

3. The causal graph

The simulation engine is a weighted directed graph. Nodes are either policy levers (inputs the user controls) or output metrics (system states the model computes). Some nodes are both — they receive effects from upstream and propagate effects downstream. For example, nhs_staffing_pressure is influenced by spending and immigration policy, and in turn drives hospital waiting times and political risk.

Each edge carries four properties:

PropertyTypeMeaning
directionpositive | negative | near_neutral | complexSign of the effect. Positive = source increase raises target.
magnitude0.0 – 1.0Strength of the coupling. Author-assigned, not empirically fitted. Represents a judgment about relative importance, not a calibrated elasticity.
lag_years0 – 5Time delay before the effect materialises. Training nurses: 5yr. Pay rise effect: 0.5yr. Zero = immediate.
stockbooleanWhether the effect accumulates over time (true) or operates as a rate (false). Population growth is stock; pay effects on retention are rate.

Simplified causal flow — major pathways only

Net MigrationNHS SpendingHealth & Care VisasHousebuilding TargetTax BurdenIntegration FundingNHS Staffing PressureHousing Supply GapWorking-Age Pop.Fiscal PressureVacancy Fill RateHospital WaitingRent PressureGDP IndexPublic SatisfactionPolitical RiskSocial CohesionPolicy lever (input)Intermediate nodeOutput metricBeneficial effectPressure / demand effectFeedback loop

This diagram shows a simplified subset of the 71 edges in the model. The full edge catalogue is in section 9 below.

Critically, several nodes form feedback loops. Fiscal pressure constrains NHS and social care budgets, which worsens staffing, which increases hospital waiting times, which erodes public satisfaction, which increases political risk. The model propagates through these loops iteratively (3 passes with damping) to reach approximate equilibrium — not a mathematically proven fixed point, but a stabilised estimate.

4. Mathematical mechanics

The simulation proceeds in three steps: lever deviation, graph propagation, and score conversion.

Step 1: Lever deviation

Each lever's user-set value is converted to a fractional deviation from its baseline:

deviation = (userValue − baseline) / baseline

For levers with a zero baseline (e.g., income tax change), the formula is value / 100 to avoid division by zero. A deviation of 0.0 means “no change from status quo.”

Step 2: Graph propagation

For each edge, the effect on the target node is:

effect = sourceDeviation × magnitude × directionSign × horizonScale × stockScale

Where:

directionSign = +1 (positive), −1 (negative), +0.2 (near_neutral), +0.1 (complex)

horizonScale — see §6 below. Attenuates effects whose lag exceeds the simulation horizon.

stockScale = √(horizonYears / 5) for cumulative effects; 1.0 for rate effects.

This propagation runs 3 iterations. The first pass applies effects at full strength. Iterations 2 and 3 apply a 0.4× damping factor to stabilise feedback loops. This is a heuristic — it prevents runaway positive feedback but does not guarantee convergence to a true equilibrium.

Step 3: Score conversion

Node deviations are converted to 0–100 pressure scores:

outputScore = clamp(0, 100, baselineScore + deviation × 30)

The ×30 multiplier is the model's global sensitivity dial. It controls how strongly policy changes move the pressure gauges. This value was tuned so that a plausible range of lever adjustments produces visually meaningful score changes (roughly ±10–30 points from baseline for moderate policy shifts). It is not derived from any empirical calibration. If you believe the model is over- or under-reactive, this is the parameter to challenge.

5. Fiscal model

The budget model runs alongside — but partially independent of — the causal graph. It computes revenue, spending, and deficit from lever positions, then feeds the deficit back into the graph as fiscal pressure.

Revenue

HMRC revenue is computed per tax head, each scaled by the overall tax burden multiplier:

Income tax = (£301bn + change_pp × £10bn) × taxBurdenMult

NICs = (£172.5bn + change_pp × £14bn) × taxBurdenMult

VAT = (£171bn + change_pp × £8bn) × taxBurdenMult

Corp tax = (£91.2bn + change_pp × £3bn) × taxBurdenMult

Other HMRC = £123.2bn × taxBurdenMult

Non-HMRC = £200bn (fixed — council tax, business rates, etc.)

Per-percentage-point multipliers are sourced from OBR Economic and Fiscal Outlook costing tables and HMRC ready reckoners. They are necessarily approximate — real-world revenue responses depend on behavioural effects the model does not simulate.

Spending

Spending sums user-controlled budgets (NHS, social care, housing, etc.) plus a fixed block of £909bn representing all non-adjustable public spending (education, defence, debt interest, pensions, welfare). The fixed block is calibrated so the baseline produces a deficit of approximately £137bn — matching OBR borrowing forecasts for 2025–26.

GDP–revenue feedback

After the causal graph runs, the GDP deviation node adjusts total revenue:

revenueBoost = totalRevenue × gdpDeviation × 0.15

This models the OBR's tax-to-GDP elasticity (approximately 1.0): if the economy grows, tax receipts grow roughly in proportion. The 0.15 scalar converts the graph's GDP deviation units to a realistic revenue percentage — at a GDP deviation of 0.6 (a strong growth scenario), this yields roughly a 9% revenue uplift (~£95bn). The adjusted deficit then feeds back into fiscal pressure for the final output.

Population estimate

Population is modelled as a simple linear function of net migration: 69.3M + (migration_delta_k × horizonYears) / 1000. This ignores births, deaths, and emigration dynamics. It exists primarily to enable per-capita budget comparisons, not as a demographic projection.

6. Time horizon and lag attenuation

Not all policies deliver results on the same timescale. Increasing social care worker pay might reduce vacancy rates within a year. Training new doctors takes five. The model handles this through two mechanisms:

Lag attenuation

When the simulation horizon is shorter than an edge's lag, the effect is attenuated:

if horizon ≥ lag: horizonScale = 1.0

if horizon < lag: horizonScale = (horizon / lag)²

The quadratic attenuation means a 1-year horizon captures almost none of a 5-year-lag effect (scale = 0.04), while a 3-year horizon captures a meaningful fraction (scale = 0.36). This is steeper than linear attenuation, reflecting the reality that most lagged effects don't ramp linearly — there's typically a ramp-up period before results materialise.

Stock accumulation

Edges marked stock: true represent effects that accumulate — more migrants entering the workforce each year, more homes added to the housing stock, more nurses completing training. The accumulation follows:

stockScale = √(horizonYears / 5)

Normalised so that the default 5-year horizon = 1.0×. A 10-year horizon = 1.41× (diminishing returns — you don't get twice the benefit in twice the time). A 1-year horizon = 0.45×. The square root models the empirical observation that cumulative policy effects exhibit diminishing marginal returns as systems absorb capacity.

Example: NHS training places (lag = 5yr, stock = true)

1yr
horizon
Lag: 0.04
Stock: 0.45
Combined: 0.02
3yr
horizon
Lag: 0.36
Stock: 0.77
Combined: 0.28
5yr
horizon
Lag: 1.00
Stock: 1.00
Combined: 1.00
7yr
horizon
Lag: 1.00
Stock: 1.18
Combined: 1.18
10yr
horizon
Lag: 1.00
Stock: 1.41
Combined: 1.41

At 1yr the combined effect is near-zero (0.02×). By 5yr it reaches full strength (1.0×). At 10yr, accumulation pushes it to 1.41× — the investment compounds but with diminishing returns.

7. Baseline data and sources

Every lever baseline and output starting value represents real UK data from 2024–2026. Sources include ONS, OBR, NHS England, DHSC, Home Office, Bank of England, IFS, Migration Observatory (Oxford), Resolution Foundation, House of Commons Library, and UK Parliament research briefings. Specific citations are displayed in the baseline view alongside each metric.

Output metric baselines (0–100 pressure scale)

Gdp Index
45/100
Tax Receipts Index
50/100
Fiscal Pressure
60/100
Budget Deficit
50/100
Vacancy Fill Rate
55/100
Nhs Staffing Pressure
73/100
Social Care Staffing Pressure
70/100
Gp Waiting Pressure
55/100
Hospital Waiting Pressure
68/100
Rent Pressure Index
72/100
House Price Pressure
65/100
Housing Supply Gap
75/100
Working Age Population Trend
50/100
Dependency Ratio
55/100
Public Satisfaction
38/100
Political Risk
60/100
Social Cohesion
48/100

Baseline pressure scores are calibrated judgments. A score of 73 for NHS staffing pressure, for instance, reflects 100,165 vacancies, widespread delayed transfers of care, and a workforce plan that acknowledges a structural shortfall. These are not statistical derivations — they are informed starting points that anchor the relative movement when policies change.

8. Domain composite scoring

The report view aggregates individual metrics into five domain scores. Each domain is the unweighted arithmetic mean of its component metrics, with an inversion applied to metrics where higher values are beneficial (GDP, satisfaction) rather than harmful (pressure metrics):

domainScore = mean( invertIfNeeded(metric) for each metric in domain )

Where invertIfNeeded(m) returns the raw value for beneficial metrics (higher = better) and 100 − value for pressure metrics (lower = better). This puts all domains on a consistent 0–100 scale where higher = better.

DomainComponent metricsInverted (higher = better)
Health Systemnhs_staffing_pressure, social_care_staffing_pressure, gp_waiting_pressure, hospital_waiting_pressureNone — all are pressure metrics
Housinghousing_supply_gap, rent_pressure_index, house_price_pressureNone — all are pressure metrics
Economygdp_index, tax_receipts_index, fiscal_pressuregdp_index, tax_receipts_index
Labour & Demographicsvacancy_fill_rate, working_age_population_trend, dependency_ratiovacancy_fill_rate, working_age_population_trend
Politicalpublic_satisfaction, political_risk, social_cohesionpublic_satisfaction, social_cohesion

9. Full edge catalogue

Every causal relationship in the model is listed below, grouped by source domain. This is the complete specification — there are no hidden edges. If a relationship isn't listed here, the model doesn't simulate it.

Immigration20 edges

SourceDirTargetMagLagStock
Net Migration Target+Working Age Population Trend0.850yr
Net Migration TargetDependency Ratio0.40yr
Net Migration TargetFiscal Pressure0.151yr
Health Care Visa WeightingNhs Staffing Pressure0.70.5yr
Health Care Visa WeightingSocial Care Staffing Pressure0.80.5yr
Net Migration Target+Gp Waiting Pressure0.350.5yr
Net Migration Target+Hospital Waiting Pressure0.30.5yr
Net Migration Target+Rent Pressure Index0.50.5yr
Net Migration Target+House Price Pressure0.31yr
Net Migration Target+Housing Supply Gap0.40yr
Construction Visa WeightingHousing Supply Gap0.31yr
Asylum Processing SpeedFiscal Pressure0.60.5yr
Asylum Processing Speed+Public Satisfaction0.31yr
Asylum Acceptance Rate+Social Cohesion0.22yr
Work Visas+Vacancy Fill Rate0.50.5yr
Student Visas+Gdp Index0.250yr
Student Visas+Working Age Population Trend0.20yr
Student Visas+Rent Pressure Index0.250yr
Family Visas+Social Cohesion0.252yr
Family Visas+Fiscal Pressure0.151yr

Cross-Domain Cascades20 edges

SourceDirTargetMagLagStock
Working Age Population Trend+Tax Receipts Index0.70.5yr
Working Age Population Trend+Gdp Index0.60.5yr
Nhs Staffing Pressure+Hospital Waiting Pressure0.70.5yr
Social Care Staffing Pressure+Hospital Waiting Pressure0.40yr
Gp Waiting Pressure+Hospital Waiting Pressure0.30yr
Housing Supply Gap+Rent Pressure Index0.70yr
Housing Supply Gap+House Price Pressure0.70yr
Vacancy Fill Rate+Gdp Index0.30.5yr
Rent Pressure IndexPublic Satisfaction0.50yr
Hospital Waiting PressurePublic Satisfaction0.50yr
Fiscal PressureNhs Spending0.41yr
Fiscal PressureSocial Care Funding0.41yr
Nhs Staffing PressureWorking Age Population Trend0.152yr
Social CohesionPolitical Risk0.50yr
Public SatisfactionPolitical Risk0.70yr
Dependency Ratio+Fiscal Pressure0.50yr
Rent Pressure IndexSocial Cohesion0.30yr
Vacancy Fill RateNhs Staffing Pressure0.30yr
House Price Pressure+Nhs Staffing Pressure0.20yr
Budget Deficit+Fiscal Pressure0.80yr

Public Services8 edges

SourceDirTargetMagLagStock
Nhs SpendingNhs Staffing Pressure0.51yr
Nhs Training PlacesNhs Staffing Pressure0.65yr
Social Care FundingSocial Care Staffing Pressure0.50.5yr
Social Care Worker PaySocial Care Staffing Pressure0.61yr
Gp InvestmentGp Waiting Pressure0.51yr
Integration Esol Funding+Social Cohesion0.41yr
Integration Esol Funding+Tax Receipts Index0.152yr
Local Authority Support+Social Cohesion0.31yr

Housing & Planning6 edges

SourceDirTargetMagLagStock
Housebuilding TargetHousing Supply Gap0.63yr
Planning Reform IntensityHousing Supply Gap0.42yr
Social Housing InvestmentRent Pressure Index0.33yr
Construction Skills InvestmentHousing Supply Gap0.352yr
Infrastructure InvestmentHousing Supply Gap0.33yr
Infrastructure Investment+Gdp Index0.23yr

Border & Enforcement4 edges

SourceDirTargetMagLagStock
Border Enforcement Budget+Social Cohesion0.20yr
Removal Enforcement Intensity+Fiscal Pressure0.150yr
Illegal Labour Enforcement+Social Cohesion0.20.5yr
Illegal Labour EnforcementVacancy Fill Rate0.10.5yr

Labour & Skills1 edges

SourceDirTargetMagLagStock
Apprenticeship Skills Investment+Vacancy Fill Rate0.42yr

Taxation12 edges

SourceDirTargetMagLagStock
Tax Burden+Tax Receipts Index0.70.5yr
Tax BurdenGdp Index0.41yr
Tax BurdenPublic Satisfaction0.50yr
Tax BurdenVacancy Fill Rate0.250.5yr
Income Tax ChangeGdp Index0.31yr
Income Tax ChangePublic Satisfaction0.40yr
Nics ChangeVacancy Fill Rate0.20.5yr
Nics ChangeGdp Index0.20.5yr
Vat ChangeGdp Index0.150yr
Vat ChangePublic Satisfaction0.30yr
Corporation Tax ChangeGdp Index0.251yr
Corporation Tax ChangeVacancy Fill Rate0.151yr

10. Known limitations and simplifications

No model this compact can represent the UK economy with precision. The following are deliberate simplifications we want you to know about — not bugs we hope you won't notice.

Magnitudes are heuristic, not calibrated

Edge magnitudes (0.1–0.85) represent informed judgments about relative coupling strength. They are not regression coefficients fitted to historical data. Two researchers given the same evidence would likely assign different values. This is the single largest source of uncertainty in the model.

The ×30 sensitivity multiplier is arbitrary

Converting node deviations to pressure scores uses a fixed ×30 multiplier, tuned so that plausible policy changes produce visually meaningful score movements. A different multiplier would make the model appear more or less reactive to the same inputs without changing any causal relationship.

Feedback loops are damped, not solved

The 3-iteration propagation with 0.4× damping on passes 2–3 is a stabilisation heuristic. It prevents runaway feedback but does not guarantee convergence to a mathematically defined equilibrium. In practice, node values stabilise within 3 iterations for the current graph structure, but adding more feedback edges could change this.

Population model is linear

Population = 69.3M + (net migration delta × years) / 1000. This ignores births, deaths, age-specific emigration, and the demographic composition of migrants. It exists for per-capita budget comparisons, not as a population projection.

No confidence bands

Despite the design specification calling for uncertainty ranges, the current model produces point estimates only. Every output is a single number, not a distribution. This is a known gap we intend to address.

No regional variation

The model operates at a national level. It cannot capture the reality that 10 local authorities host 22% of asylum seekers, or that housing pressure varies enormously between London and the North East. This flattens important distributional dynamics.

Contested causal claims

Some edges encode relationships that are empirically supported but politically contested. For example, asylum acceptance rate → social cohesion (positive, magnitude 0.2, lag 2yr) reflects research on integration outcomes for settled refugees, but others might argue the relationship is more complex or even reversed in some contexts. The edge catalogue above lets you identify and dispute any specific claim.

No behavioural feedback

The model doesn't simulate how people, firms, or institutions change behaviour in response to policy. A corporation tax rise doesn't trigger capital flight in the model — it applies a fixed GDP drag. Real-world behavioural responses would make many effects larger or smaller than modelled.

No exogenous shocks

Pandemics, financial crises, geopolitical events, technological disruptions — none of these are modelled. The simulation assumes a stable external environment, which is historically unrealistic over 10-year horizons.

11. Challenge the model

If you believe a causal relationship is wrong, a magnitude is miscalibrated, a lag is unrealistic, or a significant pathway is missing entirely — we want to hear it. This model improves through challenge, not despite it.

Submit a challenge

Use the form below to flag a specific issue with the model. The more specific you are, the more useful your challenge will be. Reference edge names from the catalogue above where possible.

0 characters · minimum 10

Submitted challenges will be reviewed against the existing evidence base. Where a challenge leads to a model update, it will be documented in a public changelog with attribution. The goal is a model that gets less wrong over time, not one that claims to be right now.