Reform UK's tax-benefit reform proposals

By Nikhil Woodruff · 2025-05-27 19:00:00
Tags: uk, policy, featured

Nigel Farage has confirmed that Reform UK's manifesto will include four tax-benefit reforms that PolicyEngine estimates would cost £75 billion in 2025-26.

View the interactive version on PolicyEngine

!uv pip show policyengine-uk
2mUsing Python 3.11.11 environment at: /Users/nikhilwoodruff/policyengine/policyengine-app/.venv
Name: policyengine-uk
Version: 2.28.1
Location: /Users/nikhilwoodruff/policyengine/policyengine-app/.venv/lib/python3.11/site-packages
Requires: microdf-python, policyengine-core
Required-by: policyengine

Reform UK leader Nigel Farage today confirmed four tax-benefit policy reforms would be included in the party's manifesto for the next general election in a [speech in central London. The party had previously included three of these reforms in its 2024 general election manifesto, committing to:

Today Farage confirmed that the party would include these reforms in the next general election manifesto, alongside a fourth commitment to repeal the two-child benefit cap on Universal Credit and Child Tax Credit payments. In the following sections, we summarise how these policies work today and quantify their impact using PolicyEngine's tax-benefit microsimulation model.

_See how these reforms would affect your household here._

Current policy

Personal Allowance

The government exempts the first £12,570 of an individual's income from income tax, known as the Personal Allowance. The personal allowance is gradually reduced for individuals earning over £100,000, with a complete withdrawal at £125,140. The government has frozen this threshold since 2021, and is scheduled to remain at this level until 2028.

Higher rate threshold

The higher rate threshold is the income level at which individuals start paying the higher rate of income tax (40%). Currently, this threshold is set at £37,000 (it is added to the Personal Allowance, so the effective threshold is £50,270). The government has frozen this threshold since 2021, and is scheduled to remain at this level until 2028.

Marriage Allowance

The Marriage Allowance permits couples to transfer 10% of any unused personal allowance between spouses when one earns below the Personal Allowance threshold and the other pays the basic rate.

Two-child limit

The two-child limit removes the entitlement of children born after April 2017 to Universal Credit and Child Tax Credit child element payments, if they are the third or subsequent child in a family, unless exceptions apply.

Economic impacts

PolicyEngine's model estimates that these reforms would cost £75 billion in 2025-26, rising to £78 billion in 2029-30. Over the five-year window from 2025-26 to 2029-30, the total cost of these reforms would be £391 billion. Table 1 below shows the estimated costs of each reform.

Table 1: Estimated revenue impacts of Reform UK's tax-benefit proposals (£ billion)
| Policy | 2025-26 | 2026-27 | 2027-28 | 2028-29 | 2029-30 | 2025-30 |
|:-----------------------------------------|-------:|-------:|-------:|-------:|-------:|----------:|
| Repeal the two-child limit | -1.7 | -1.8 | -1.9 | -2.2 | -2.3 | -9.9 |
| Raise the Personal Allowance to £20,000 | -50.7 | -51.5 | -52.4 | -49.1 | -45.5 | -249.3 |
| Set the higher rate threshold to £70,000 | -22.2 | -23.8 | -25.5 | -27.2 | -29.3 | -128 |
| Raise the Marriage Allowance rate to 25% | -0.7 | -0.7 | -0.8 | -0.8 | -0.9 | -3.9 |
| Total | -75.3 | -77.9 | -80.5 | -79.3 | -78.1 | -391.1 |

We also estimate that these reforms would benefit 82% of people in 2025, increase the Gini coefficient of income inequality by less than 0.1%, and reduce poverty (absolute before housing costs) by 8.6%. The reforms would raise the net incomes of households in the bottom decile by 1.3% and the top decile by 4.2%.

[Chart: x-axis: Income decile, y-axis: Relative net income change, type: bar]

To view more results, visit the PolicyEngine UK microsimulation model and our household calculator for this suite of reforms.

from policyengine import Simulation

sim = Simulation(
country="uk",
scope="macro",
reform={
"gov.hmrc.income_tax.allowances.personal_allowance.amount": 20_000,
"gov.hmrc.income_tax.rates.uk[1].threshold": 50_000,
"gov.hmrc.income_tax.allowances.marriage_allowance.max": 0.25,
"gov.dwp.universal_credit.elements.child.limit.child_count": 90,
},
)

INFO:root:Using Google Cloud Storage for download.
WARNING:root:No version specified for policyengine-uk-data-private, enhanced_frs_2022_23.h5. Using latest version: 1.11.6
INFO:policyengine.utils.data.caching_google_storage_client:Syncing policyengine-uk-data-private, enhanced_frs_2022_23.h5, 1.11.6 to cache
INFO:policyengine.utils.data.caching_google_storage_client:Cache exists and crc is unchanged for policyengine-uk-data-private, enhanced_frs_2022_23.h5.
INFO:policyengine.utils.data.caching_google_storage_client:Copying downloaded data for policyengine-uk-data-private, enhanced_frs_2022_23.h5 to enhanced_frs_2022_23.h5
result = sim.calculate_economy_comparison()
INFO:root:Using Google Cloud Storage for download.
WARNING:root:No version specified for policyengine-uk-data-private, parliamentary_constituency_weights.h5. Using latest version: 1.11.6
INFO:policyengine.utils.data.caching_google_storage_client:Syncing policyengine-uk-data-private, parliamentary_constituency_weights.h5, 1.11.6 to cache
INFO:policyengine.utils.data.caching_google_storage_client:Cache exists and crc is unchanged for policyengine-uk-data-private, parliamentary_constituency_weights.h5.
INFO:policyengine.utils.data.caching_google_storage_client:Copying downloaded data for policyengine-uk-data-private, parliamentary_constituency_weights.h5 to parliamentary_constituency_weights.h5
INFO:root:Using Google Cloud Storage for download.
WARNING:root:No metadata found for blob, so it has no version attached.
WARNING:root:No version specified for policyengine-uk-data-private, constituencies_2024.csv. Using latest version: None
INFO:policyengine.utils.data.caching_google_storage_client:Syncing policyengine-uk-data-private, constituencies_2024.csv, None to cache
INFO:policyengine.utils.data.caching_google_storage_client:Cache exists and crc is unchanged for policyengine-uk-data-private, constituencies_2024.csv.
INFO:policyengine.utils.data.caching_google_storage_client:Copying downloaded data for policyengine-uk-data-private, constituencies_2024.csv to constituencies_2024.csv
from policyengine.utils.charts import *
import plotly.express as px
import pandas as pd

fig = px.bar(
y=result.decile.relative,
text=[f"{x:.1%}" for x in result.decile.relative.values()],
color_discrete_sequence=[BLUE],
).update_layout(
title="Impact of Reform UK tax-benefit policies by income decile",
xaxis_title="Income decile",
xaxis_tickvals=list(range(1, 11)),
yaxis_title="Relative net income change",
yaxis_tickformat=".0%",
)

print(format_fig(fig).update_layout().to_json())

{"data":[{"alignmentgroup":"True","hovertemplate":"x=%{x}\u003cbr\u003ey=%{y}\u003cbr\u003etext=%{text}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"","marker":{"color":"#2C6496","pattern":{"shape":""}},"name":"","offsetgroup":"","orientation":"v","showlegend":false,"text":["1.3%","3.1%","4.8%","4.2%","4.3%","5.1%","5.4%","5.3%","6.0%","4.2%"],"textposition":"auto","x":[0,1,2,3,4,5,6,7,8,9],"xaxis":"x","y":[0.012648342807095678,0.03132008664442573,0.04759230794458184,0.04246238057867267,0.04266858638634309,0.05059255780943398,0.05389949484255953,0.053063795971100475,0.06013410923690721,0.04171578019282118],"yaxis":"y","type":"bar"}],"layout":{"template":{"data":{"barpolar":[{"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"contour"}],"heatmapgl":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmapgl"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"white","showlakes":true,"showland":true,"subunitcolor":"#C8D4E3"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"white","polar":{"angularaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""},"bgcolor":"white","radialaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"yaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"zaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"baxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"bgcolor":"white","caxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0.0,1.0],"title":{"text":"Income decile"},"tickvals":[1,2,3,4,5,6,7,8,9,10],"gridcolor":"#F4F4F4","zerolinecolor":"#F4F4F4","ticksuffix":""},"yaxis":{"anchor":"x","domain":[0.0,1.0],"title":{"text":"Relative net income change"},"tickformat":".0%","gridcolor":"#F4F4F4","zerolinecolor":"#F4F4F4","ticksuffix":""},"legend":{"tracegroupgap":0},"margin":{"t":120,"b":120,"l":120,"r":120},"barmode":"relative","title":{"text":"Impact of Reform UK tax-benefit policies by income decile"},"font":{"family":"Roboto Serif","color":"black"},"height":600,"width":800,"plot_bgcolor":"#F4F4F4","paper_bgcolor":"#F4F4F4","images":[{"sizex":0.15,"sizey":0.15,"source":"https:\u002f\u002fraw.githubusercontent.com\u002fPolicyEngine\u002fpolicyengine-app\u002fmaster\u002fsrc\u002fimages\u002flogos\u002fpolicyengine\u002fteal.png","x":1.1,"xanchor":"right","xref":"paper","y":-0.2,"yanchor":"bottom","yref":"paper"}],"annotations":[{"showarrow":false,"text":"Source: PolicyEngine UK tax-benefit microsimulation model (version 2.28.1)","x":0,"xanchor":"left","xref":"paper","y":-0.2,"yanchor":"bottom","yref":"paper"}],"modebar":{"bgcolor":"#F4F4F4","color":"#F4F4F4","activecolor":"#F4F4F4"},"uniformtext":{"mode":"hide","minsize":12}}}
from policyengine import Simulation

raise_pa = {
"gov.hmrc.income_tax.allowances.personal_allowance.amount": 20_000,
"gov.hmrc.income_tax.rates.uk[1].threshold": 37_700 - (20_000 - 12_570),
}
higher_rate_threshold = {
"gov.hmrc.income_tax.rates.uk[1].threshold": 50_000,
}
raise_ma_rate = {
"gov.hmrc.income_tax.allowances.marriage_allowance.max": 0.25,
}
repeal_two_child_limit = {
"gov.dwp.universal_credit.elements.child.limit.child_count": 90,
}

policy_reforms = [
repeal_two_child_limit,
raise_pa,
higher_rate_threshold,
raise_ma_rate,
]
policy_reform_names = [
"Repeal the two-child limit",
"Raise the Personal Allowance to £20,000",
"Set the higher rate threshold to £70,000",
"Raise the Marriage Allowance rate to 25%",
]

years = []
debt_impacts = []
policies = []

from tqdm import tqdm

for i in tqdm(range(len(policy_reforms))):
reform = {}
for j in range(i + 1):
reform.update(policy_reforms[j])

sim = Simulation(
country="uk",
scope="macro",
reform=reform,
)
print(reform, policy_reform_names[i])

for year in tqdm(range(2025, 2030)):
debt_impact = (
sim.reform_simulation.calculate("gov_balance", year).sum() / 1e9
- sim.baseline_simulation.calculate("gov_balance", year).sum()
/ 1e9
)
years.append(year)
debt_impacts.append(debt_impact)
policies.append(policy_reform_names[i])

  0%|          | 0/4 [00:00<?, ?it/s]INFO:root:Using Google Cloud Storage for download.
WARNING:root:No version specified for policyengine-uk-data-private, enhanced_frs_2022_23.h5. Using latest version: 1.11.6
INFO:policyengine.utils.data.caching_google_storage_client:Syncing policyengine-uk-data-private, enhanced_frs_2022_23.h5, 1.11.6 to cache
INFO:policyengine.utils.data.caching_google_storage_client:Cache exists and crc is unchanged for policyengine-uk-data-private, enhanced_frs_2022_23.h5.
INFO:policyengine.utils.data.caching_google_storage_client:Copying downloaded data for policyengine-uk-data-private, enhanced_frs_2022_23.h5 to enhanced_frs_2022_23.h5
{'gov.dwp.universal_credit.elements.child.limit.child_count': 90} Repeal the two-child limit
100%|██████████| 5/5 [00:52<00:00, 10.54s/it]
 25%|██▌       | 1/4 [00:54<02:42, 54.10s/it]INFO:root:Using Google Cloud Storage for download.
WARNING:root:No version specified for policyengine-uk-data-private, enhanced_frs_2022_23.h5. Using latest version: 1.11.6
INFO:policyengine.utils.data.caching_google_storage_client:Syncing policyengine-uk-data-private, enhanced_frs_2022_23.h5, 1.11.6 to cache
INFO:policyengine.utils.data.caching_google_storage_client:Cache exists and crc is unchanged for policyengine-uk-data-private, enhanced_frs_2022_23.h5.
INFO:policyengine.utils.data.caching_google_storage_client:Copying downloaded data for policyengine-uk-data-private, enhanced_frs_2022_23.h5 to enhanced_frs_2022_23.h5
{'gov.dwp.universal_credit.elements.child.limit.child_count': 90, 'gov.hmrc.income_tax.allowances.personal_allowance.amount': 20000, 'gov.hmrc.income_tax.rates.uk[1].threshold': 30270} Raise the Personal Allowance to £20,000
100%|██████████| 5/5 [00:49<00:00,  9.97s/it]
 50%|█████     | 2/4 [01:45<01:44, 52.39s/it]INFO:root:Using Google Cloud Storage for download.
WARNING:root:No version specified for policyengine-uk-data-private, enhanced_frs_2022_23.h5. Using latest version: 1.11.6
INFO:policyengine.utils.data.caching_google_storage_client:Syncing policyengine-uk-data-private, enhanced_frs_2022_23.h5, 1.11.6 to cache
INFO:policyengine.utils.data.caching_google_storage_client:Cache exists and crc is unchanged for policyengine-uk-data-private, enhanced_frs_2022_23.h5.
INFO:policyengine.utils.data.caching_google_storage_client:Copying downloaded data for policyengine-uk-data-private, enhanced_frs_2022_23.h5 to enhanced_frs_2022_23.h5
{'gov.dwp.universal_credit.elements.child.limit.child_count': 90, 'gov.hmrc.income_tax.allowances.personal_allowance.amount': 20000, 'gov.hmrc.income_tax.rates.uk[1].threshold': 50000} Set the higher rate threshold to £70,000
100%|██████████| 5/5 [00:49<00:00,  9.98s/it]
 75%|███████▌  | 3/4 [02:36<00:51, 51.83s/it]INFO:root:Using Google Cloud Storage for download.
WARNING:root:No version specified for policyengine-uk-data-private, enhanced_frs_2022_23.h5. Using latest version: 1.11.6
INFO:policyengine.utils.data.caching_google_storage_client:Syncing policyengine-uk-data-private, enhanced_frs_2022_23.h5, 1.11.6 to cache
INFO:policyengine.utils.data.caching_google_storage_client:Cache exists and crc is unchanged for policyengine-uk-data-private, enhanced_frs_2022_23.h5.
INFO:policyengine.utils.data.caching_google_storage_client:Copying downloaded data for policyengine-uk-data-private, enhanced_frs_2022_23.h5 to enhanced_frs_2022_23.h5
{'gov.dwp.universal_credit.elements.child.limit.child_count': 90, 'gov.hmrc.income_tax.allowances.personal_allowance.amount': 20000, 'gov.hmrc.income_tax.rates.uk[1].threshold': 50000, 'gov.hmrc.income_tax.allowances.marriage_allowance.max': 0.25} Raise the Marriage Allowance rate to 25%
100%|██████████| 5/5 [00:49<00:00,  9.86s/it]
100%|██████████| 4/4 [03:26<00:00, 51.74s/it]
import pandas as pd

df = pd.DataFrame(
{
"Year": years,
"Debt impact (£ billions)": debt_impacts,
"Policy": policies,
}
)

df = df.pivot(
columns="Year", index="Policy", values="Debt impact (£ billions)"
)
df = df.iloc[[2, 1, 3, 0]]

df.values[1:] = df.values[1:] - df.values[:-1]
df["2025-29"] = df.sum(axis=1)
# Add 'total' row
df.loc["Total"] = df.sum(numeric_only=True)
print(df.round(1).to_markdown(index=True))
| Policy                                   |   2025 |   2026 |   2027 |   2028 |   2029 |   2025-29 |
|:-----------------------------------------|-------:|-------:|-------:|-------:|-------:|----------:|
| Repeal the two-child limit               |   -1.7 |   -1.8 |   -1.9 |   -2.2 |   -2.3 |      -9.9 |
| Raise the Personal Allowance to £20,000  |  -50.7 |  -51.5 |  -52.4 |  -49.1 |  -45.5 |    -249.3 |
| Set the higher rate threshold to £70,000 |  -22.2 |  -23.8 |  -25.5 |  -27.2 |  -29.3 |    -128   |
| Raise the Marriage Allowance rate to 25% |   -0.7 |   -0.7 |   -0.8 |   -0.8 |   -0.9 |      -3.9 |
| Total                                    |  -75.3 |  -77.9 |  -80.5 |  -79.3 |  -78.1 |    -391.1 |

Raw markdown source
```python !uv pip show policyengine-uk ``` ``` Using Python 3.11.11 environment at: /Users/nikhilwoodruff/policyengine/policyengine-app/.venv Name: policyengine-uk Version: 2.28.1 Location: /Users/nikhilwoodruff/policyengine/policyengine-app/.venv/lib/python3.11/site-packages Requires: microdf-python, policyengine-core Required-by: policyengine ``` Reform UK leader Nigel Farage today confirmed four tax-benefit policy reforms would be included in the party's manifesto for the next general election in a [speech](https://www.bbc.co.uk/news/articles/c5yx062pvlvo) in central London. The party had previously included three of these reforms in its 2024 general election manifesto, committing to: * Increase the Personal Allowance from £12,570 to £20,000 * Increase the higher rate threshold from £50,270 to £70,000 * Raise the Marriage Allowance maximum rate from 10% to 25% Today Farage confirmed that the party would include these reforms in the next general election manifesto, alongside a fourth commitment to repeal the two-child benefit cap on Universal Credit and Child Tax Credit payments. In the following sections, we summarise how these policies work today and quantify their impact using PolicyEngine's tax-benefit microsimulation model. _[See how these reforms would affect your household here.](https://legacy.policyengine.org/uk/household?reform=85289&focus=intro&region=uk&timePeriod=2025&baseline=1&uk_local_areas_beta=false)_ ## Current policy ### Personal Allowance The government exempts the first £12,570 of an individual's income from income tax, known as the [**Personal Allowance**](https://www.gov.uk/income-tax-rates). The personal allowance is gradually reduced for individuals earning over £100,000, with a complete withdrawal at £125,140. The government has frozen this threshold since 2021, and is scheduled to remain at this level until 2028. ### Higher rate threshold The **higher rate threshold** is the income level at which individuals start paying the higher rate of income tax (40%). Currently, this threshold is set at £37,000 (it is added to the Personal Allowance, so the effective threshold is £50,270). The government has frozen this threshold since 2021, and is scheduled to remain at this level until 2028. ### Marriage Allowance The [**Marriage Allowance**](https://www.gov.uk/marriage-allowance) permits couples to transfer 10% of any unused personal allowance between spouses when one earns below the Personal Allowance threshold and the other pays the basic rate. ### Two-child limit The two-child limit removes the entitlement of children born after April 2017 to Universal Credit and Child Tax Credit child element payments, if they are the third or subsequent child in a family, unless [exceptions](https://www.gov.uk/guidance/child-tax-credit-exceptions-to-the-2-child-limit#overview) apply. ## Economic impacts PolicyEngine's model [estimates](https://legacy.policyengine.org/uk/policy?reform=85289&focus=policyOutput.budgetaryImpact&region=uk&timePeriod=2025&baseline=1&uk_local_areas_beta=false&simYears=5) that these reforms would cost £75 billion in 2025-26, rising to £78 billion in 2029-30. Over the five-year window from 2025-26 to 2029-30, the total cost of these reforms would be £391 billion. Table 1 below shows the estimated costs of each reform. *Table 1: Estimated revenue impacts of Reform UK's tax-benefit proposals (£ billion)* | Policy | 2025-26 | 2026-27 | 2027-28 | 2028-29 | 2029-30 | 2025-30 | |:-----------------------------------------|-------:|-------:|-------:|-------:|-------:|----------:| | Repeal the two-child limit | -1.7 | -1.8 | -1.9 | -2.2 | -2.3 | -9.9 | | Raise the Personal Allowance to £20,000 | -50.7 | -51.5 | -52.4 | -49.1 | -45.5 | -249.3 | | Set the higher rate threshold to £70,000 | -22.2 | -23.8 | -25.5 | -27.2 | -29.3 | -128 | | Raise the Marriage Allowance rate to 25% | -0.7 | -0.7 | -0.8 | -0.8 | -0.9 | -3.9 | | Total | -75.3 | -77.9 | -80.5 | -79.3 | -78.1 | -391.1 | We also estimate that these reforms would benefit 82% of people in 2025, increase the Gini coefficient of income inequality by less than 0.1%, and reduce poverty (absolute before housing costs) by 8.6%. The reforms would raise the net incomes of households in the bottom decile by 1.3% and the top decile by 4.2%. [Chart: x-axis: Income decile, y-axis: Relative net income change, type: bar] To view more results, visit the [PolicyEngine UK microsimulation model](https://legacy.policyengine.org/uk/policy?reform=85289&focus=policyOutput.budgetaryImpact&region=uk&timePeriod=2025&baseline=1&uk_local_areas_beta=false&simYears=5) and our [household calculator](https://legacy.policyengine.org/uk/household?reform=85289&focus=intro&region=uk&timePeriod=2025&baseline=1&uk_local_areas_beta=false) for this suite of reforms. ```python from policyengine import Simulation sim = Simulation( country="uk", scope="macro", reform={ "gov.hmrc.income_tax.allowances.personal_allowance.amount": 20_000, "gov.hmrc.income_tax.rates.uk[1].threshold": 50_000, "gov.hmrc.income_tax.allowances.marriage_allowance.max": 0.25, "gov.dwp.universal_credit.elements.child.limit.child_count": 90, }, ) ``` ``` INFO:root:Using Google Cloud Storage for download. WARNING:root:No version specified for policyengine-uk-data-private, enhanced_frs_2022_23.h5. Using latest version: 1.11.6 INFO:policyengine.utils.data.caching_google_storage_client:Syncing policyengine-uk-data-private, enhanced_frs_2022_23.h5, 1.11.6 to cache INFO:policyengine.utils.data.caching_google_storage_client:Cache exists and crc is unchanged for policyengine-uk-data-private, enhanced_frs_2022_23.h5. INFO:policyengine.utils.data.caching_google_storage_client:Copying downloaded data for policyengine-uk-data-private, enhanced_frs_2022_23.h5 to enhanced_frs_2022_23.h5 ``` ```python result = sim.calculate_economy_comparison() ``` ``` INFO:root:Using Google Cloud Storage for download. WARNING:root:No version specified for policyengine-uk-data-private, parliamentary_constituency_weights.h5. Using latest version: 1.11.6 INFO:policyengine.utils.data.caching_google_storage_client:Syncing policyengine-uk-data-private, parliamentary_constituency_weights.h5, 1.11.6 to cache INFO:policyengine.utils.data.caching_google_storage_client:Cache exists and crc is unchanged for policyengine-uk-data-private, parliamentary_constituency_weights.h5. INFO:policyengine.utils.data.caching_google_storage_client:Copying downloaded data for policyengine-uk-data-private, parliamentary_constituency_weights.h5 to parliamentary_constituency_weights.h5 INFO:root:Using Google Cloud Storage for download. WARNING:root:No metadata found for blob, so it has no version attached. WARNING:root:No version specified for policyengine-uk-data-private, constituencies_2024.csv. Using latest version: None INFO:policyengine.utils.data.caching_google_storage_client:Syncing policyengine-uk-data-private, constituencies_2024.csv, None to cache INFO:policyengine.utils.data.caching_google_storage_client:Cache exists and crc is unchanged for policyengine-uk-data-private, constituencies_2024.csv. INFO:policyengine.utils.data.caching_google_storage_client:Copying downloaded data for policyengine-uk-data-private, constituencies_2024.csv to constituencies_2024.csv ``` ```python from policyengine.utils.charts import * import plotly.express as px import pandas as pd fig = px.bar( y=result.decile.relative, text=[f"{x:.1%}" for x in result.decile.relative.values()], color_discrete_sequence=[BLUE], ).update_layout( title="Impact of Reform UK tax-benefit policies by income decile", xaxis_title="Income decile", xaxis_tickvals=list(range(1, 11)), yaxis_title="Relative net income change", yaxis_tickformat=".0%", ) print(format_fig(fig).update_layout().to_json()) ``` ``` {"data":[{"alignmentgroup":"True","hovertemplate":"x=%{x}\u003cbr\u003ey=%{y}\u003cbr\u003etext=%{text}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"","marker":{"color":"#2C6496","pattern":{"shape":""}},"name":"","offsetgroup":"","orientation":"v","showlegend":false,"text":["1.3%","3.1%","4.8%","4.2%","4.3%","5.1%","5.4%","5.3%","6.0%","4.2%"],"textposition":"auto","x":[0,1,2,3,4,5,6,7,8,9],"xaxis":"x","y":[0.012648342807095678,0.03132008664442573,0.04759230794458184,0.04246238057867267,0.04266858638634309,0.05059255780943398,0.05389949484255953,0.053063795971100475,0.06013410923690721,0.04171578019282118],"yaxis":"y","type":"bar"}],"layout":{"template":{"data":{"barpolar":[{"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"white","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"#C8D4E3","linecolor":"#C8D4E3","minorgridcolor":"#C8D4E3","startlinecolor":"#2a3f5f"},"type":"carpet"}],"choropleth":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"choropleth"}],"contourcarpet":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"contourcarpet"}],"contour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"contour"}],"heatmapgl":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmapgl"}],"heatmap":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"heatmap"}],"histogram2dcontour":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2dcontour"}],"histogram2d":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"histogram2d"}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"mesh3d":[{"colorbar":{"outlinewidth":0,"ticks":""},"type":"mesh3d"}],"parcoords":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"parcoords"}],"pie":[{"automargin":true,"type":"pie"}],"scatter3d":[{"line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatter3d"}],"scattercarpet":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattercarpet"}],"scattergeo":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergeo"}],"scattergl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattergl"}],"scattermapbox":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scattermapbox"}],"scatterpolargl":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolargl"}],"scatterpolar":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterpolar"}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"scatterternary":[{"marker":{"colorbar":{"outlinewidth":0,"ticks":""}},"type":"scatterternary"}],"surface":[{"colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"type":"surface"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}]},"layout":{"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"autotypenumbers":"strict","coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]],"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]},"colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"geo":{"bgcolor":"white","lakecolor":"white","landcolor":"white","showlakes":true,"showland":true,"subunitcolor":"#C8D4E3"},"hoverlabel":{"align":"left"},"hovermode":"closest","mapbox":{"style":"light"},"paper_bgcolor":"white","plot_bgcolor":"white","polar":{"angularaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""},"bgcolor":"white","radialaxis":{"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":""}},"scene":{"xaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"yaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"},"zaxis":{"backgroundcolor":"white","gridcolor":"#DFE8F3","gridwidth":2,"linecolor":"#EBF0F8","showbackground":true,"ticks":"","zerolinecolor":"#EBF0F8"}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"ternary":{"aaxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"baxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""},"bgcolor":"white","caxis":{"gridcolor":"#DFE8F3","linecolor":"#A2B1C6","ticks":""}},"title":{"x":0.05},"xaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2},"yaxis":{"automargin":true,"gridcolor":"#EBF0F8","linecolor":"#EBF0F8","ticks":"","title":{"standoff":15},"zerolinecolor":"#EBF0F8","zerolinewidth":2}}},"xaxis":{"anchor":"y","domain":[0.0,1.0],"title":{"text":"Income decile"},"tickvals":[1,2,3,4,5,6,7,8,9,10],"gridcolor":"#F4F4F4","zerolinecolor":"#F4F4F4","ticksuffix":""},"yaxis":{"anchor":"x","domain":[0.0,1.0],"title":{"text":"Relative net income change"},"tickformat":".0%","gridcolor":"#F4F4F4","zerolinecolor":"#F4F4F4","ticksuffix":""},"legend":{"tracegroupgap":0},"margin":{"t":120,"b":120,"l":120,"r":120},"barmode":"relative","title":{"text":"Impact of Reform UK tax-benefit policies by income decile"},"font":{"family":"Roboto Serif","color":"black"},"height":600,"width":800,"plot_bgcolor":"#F4F4F4","paper_bgcolor":"#F4F4F4","images":[{"sizex":0.15,"sizey":0.15,"source":"https:\u002f\u002fraw.githubusercontent.com\u002fPolicyEngine\u002fpolicyengine-app\u002fmaster\u002fsrc\u002fimages\u002flogos\u002fpolicyengine\u002fteal.png","x":1.1,"xanchor":"right","xref":"paper","y":-0.2,"yanchor":"bottom","yref":"paper"}],"annotations":[{"showarrow":false,"text":"Source: PolicyEngine UK tax-benefit microsimulation model (version 2.28.1)","x":0,"xanchor":"left","xref":"paper","y":-0.2,"yanchor":"bottom","yref":"paper"}],"modebar":{"bgcolor":"#F4F4F4","color":"#F4F4F4","activecolor":"#F4F4F4"},"uniformtext":{"mode":"hide","minsize":12}}} ``` ```python ``` ```python from policyengine import Simulation raise_pa = { "gov.hmrc.income_tax.allowances.personal_allowance.amount": 20_000, "gov.hmrc.income_tax.rates.uk[1].threshold": 37_700 - (20_000 - 12_570), } higher_rate_threshold = { "gov.hmrc.income_tax.rates.uk[1].threshold": 50_000, } raise_ma_rate = { "gov.hmrc.income_tax.allowances.marriage_allowance.max": 0.25, } repeal_two_child_limit = { "gov.dwp.universal_credit.elements.child.limit.child_count": 90, } policy_reforms = [ repeal_two_child_limit, raise_pa, higher_rate_threshold, raise_ma_rate, ] policy_reform_names = [ "Repeal the two-child limit", "Raise the Personal Allowance to £20,000", "Set the higher rate threshold to £70,000", "Raise the Marriage Allowance rate to 25%", ] years = [] debt_impacts = [] policies = [] from tqdm import tqdm for i in tqdm(range(len(policy_reforms))): reform = {} for j in range(i + 1): reform.update(policy_reforms[j]) sim = Simulation( country="uk", scope="macro", reform=reform, ) print(reform, policy_reform_names[i]) for year in tqdm(range(2025, 2030)): debt_impact = ( sim.reform_simulation.calculate("gov_balance", year).sum() / 1e9 - sim.baseline_simulation.calculate("gov_balance", year).sum() / 1e9 ) years.append(year) debt_impacts.append(debt_impact) policies.append(policy_reform_names[i]) ``` ``` 0%| | 0/4 [00:00<?, ?it/s]INFO:root:Using Google Cloud Storage for download. WARNING:root:No version specified for policyengine-uk-data-private, enhanced_frs_2022_23.h5. Using latest version: 1.11.6 INFO:policyengine.utils.data.caching_google_storage_client:Syncing policyengine-uk-data-private, enhanced_frs_2022_23.h5, 1.11.6 to cache INFO:policyengine.utils.data.caching_google_storage_client:Cache exists and crc is unchanged for policyengine-uk-data-private, enhanced_frs_2022_23.h5. INFO:policyengine.utils.data.caching_google_storage_client:Copying downloaded data for policyengine-uk-data-private, enhanced_frs_2022_23.h5 to enhanced_frs_2022_23.h5 ``` ``` {'gov.dwp.universal_credit.elements.child.limit.child_count': 90} Repeal the two-child limit ``` ``` 100%|██████████| 5/5 [00:52<00:00, 10.54s/it] 25%|██▌ | 1/4 [00:54<02:42, 54.10s/it]INFO:root:Using Google Cloud Storage for download. WARNING:root:No version specified for policyengine-uk-data-private, enhanced_frs_2022_23.h5. Using latest version: 1.11.6 INFO:policyengine.utils.data.caching_google_storage_client:Syncing policyengine-uk-data-private, enhanced_frs_2022_23.h5, 1.11.6 to cache INFO:policyengine.utils.data.caching_google_storage_client:Cache exists and crc is unchanged for policyengine-uk-data-private, enhanced_frs_2022_23.h5. INFO:policyengine.utils.data.caching_google_storage_client:Copying downloaded data for policyengine-uk-data-private, enhanced_frs_2022_23.h5 to enhanced_frs_2022_23.h5 ``` ``` {'gov.dwp.universal_credit.elements.child.limit.child_count': 90, 'gov.hmrc.income_tax.allowances.personal_allowance.amount': 20000, 'gov.hmrc.income_tax.rates.uk[1].threshold': 30270} Raise the Personal Allowance to £20,000 ``` ``` 100%|██████████| 5/5 [00:49<00:00, 9.97s/it] 50%|█████ | 2/4 [01:45<01:44, 52.39s/it]INFO:root:Using Google Cloud Storage for download. WARNING:root:No version specified for policyengine-uk-data-private, enhanced_frs_2022_23.h5. Using latest version: 1.11.6 INFO:policyengine.utils.data.caching_google_storage_client:Syncing policyengine-uk-data-private, enhanced_frs_2022_23.h5, 1.11.6 to cache INFO:policyengine.utils.data.caching_google_storage_client:Cache exists and crc is unchanged for policyengine-uk-data-private, enhanced_frs_2022_23.h5. INFO:policyengine.utils.data.caching_google_storage_client:Copying downloaded data for policyengine-uk-data-private, enhanced_frs_2022_23.h5 to enhanced_frs_2022_23.h5 ``` ``` {'gov.dwp.universal_credit.elements.child.limit.child_count': 90, 'gov.hmrc.income_tax.allowances.personal_allowance.amount': 20000, 'gov.hmrc.income_tax.rates.uk[1].threshold': 50000} Set the higher rate threshold to £70,000 ``` ``` 100%|██████████| 5/5 [00:49<00:00, 9.98s/it] 75%|███████▌ | 3/4 [02:36<00:51, 51.83s/it]INFO:root:Using Google Cloud Storage for download. WARNING:root:No version specified for policyengine-uk-data-private, enhanced_frs_2022_23.h5. Using latest version: 1.11.6 INFO:policyengine.utils.data.caching_google_storage_client:Syncing policyengine-uk-data-private, enhanced_frs_2022_23.h5, 1.11.6 to cache INFO:policyengine.utils.data.caching_google_storage_client:Cache exists and crc is unchanged for policyengine-uk-data-private, enhanced_frs_2022_23.h5. INFO:policyengine.utils.data.caching_google_storage_client:Copying downloaded data for policyengine-uk-data-private, enhanced_frs_2022_23.h5 to enhanced_frs_2022_23.h5 ``` ``` {'gov.dwp.universal_credit.elements.child.limit.child_count': 90, 'gov.hmrc.income_tax.allowances.personal_allowance.amount': 20000, 'gov.hmrc.income_tax.rates.uk[1].threshold': 50000, 'gov.hmrc.income_tax.allowances.marriage_allowance.max': 0.25} Raise the Marriage Allowance rate to 25% ``` ``` 100%|██████████| 5/5 [00:49<00:00, 9.86s/it] 100%|██████████| 4/4 [03:26<00:00, 51.74s/it] ``` ```python import pandas as pd df = pd.DataFrame( { "Year": years, "Debt impact (£ billions)": debt_impacts, "Policy": policies, } ) df = df.pivot( columns="Year", index="Policy", values="Debt impact (£ billions)" ) df = df.iloc[[2, 1, 3, 0]] ``` ```python df.values[1:] = df.values[1:] - df.values[:-1] ``` ```python df["2025-29"] = df.sum(axis=1) ``` ```python # Add 'total' row df.loc["Total"] = df.sum(numeric_only=True) ``` ```python print(df.round(1).to_markdown(index=True)) ``` ``` | Policy | 2025 | 2026 | 2027 | 2028 | 2029 | 2025-29 | |:-----------------------------------------|-------:|-------:|-------:|-------:|-------:|----------:| | Repeal the two-child limit | -1.7 | -1.8 | -1.9 | -2.2 | -2.3 | -9.9 | | Raise the Personal Allowance to £20,000 | -50.7 | -51.5 | -52.4 | -49.1 | -45.5 | -249.3 | | Set the higher rate threshold to £70,000 | -22.2 | -23.8 | -25.5 | -27.2 | -29.3 | -128 | | Raise the Marriage Allowance rate to 25% | -0.7 | -0.7 | -0.8 | -0.8 | -0.9 | -3.9 | | Total | -75.3 | -77.9 | -80.5 | -79.3 | -78.1 | -391.1 | ```