!uv pip show policyengine-uk
2mUsing Python 3.11.11 environment at: /Users/nikhilwoodruff/policyengine/policyengine-app/.venv[0m
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:
- 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._
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 |