From 223ec0bbc956cfb60e131f0a80bdf5f004037892 Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Mon, 7 Aug 2023 16:52:51 +0000 Subject: [PATCH 01/18] Update PolicyEngine UK --- CHANGELOG.md | 7 +++++++ changelog.yaml | 5 +++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 37db46f84..4142642e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.55.0] - 2023-08-07 16:52:20 + +### Added + +- Updates values for universal credit from 2016 to 2023 + ## [0.54.0] - 2023-07-21 12:20:43 ### Changed @@ -989,6 +995,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[0.55.0]: https://github.com/PolicyEngine/openfisca-uk/compare/0.54.0...0.55.0 [0.54.0]: https://github.com/PolicyEngine/openfisca-uk/compare/0.53.0...0.54.0 [0.53.0]: https://github.com/PolicyEngine/openfisca-uk/compare/0.52.0...0.53.0 [0.52.0]: https://github.com/PolicyEngine/openfisca-uk/compare/0.51.1...0.52.0 diff --git a/changelog.yaml b/changelog.yaml index b7b55a9c3..7b8fbc533 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -821,3 +821,8 @@ changed: - Calibration updated with new DWP statistics. date: 2023-07-21 12:20:43 +- bump: minor + changes: + added: + - Updates values for universal credit from 2016 to 2023 + date: 2023-08-07 16:52:20 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 38bdaf219..e69de29bb 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: minor - changes: - added: - - Updates values for universal credit from 2016 to 2023 diff --git a/setup.py b/setup.py index cc4ebd3ef..12e882755 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ setup( name="PolicyEngine-UK", - version="0.54.0", + version="0.55.0", author="PolicyEngine", author_email="nikhil@policyengine.org", classifiers=[ From e2c4cb538515ca5e60348d72aa51cc7bd1bfba37 Mon Sep 17 00:00:00 2001 From: Weishan-Lu Date: Thu, 10 Aug 2023 12:19:43 -0400 Subject: [PATCH 02/18] Add documentation for fuel duty --- docs/book/_toc.yml | 1 + docs/book/programs/gov/hmrc/fuel-duty.ipynb | 1102 +++++++++++++++++++ 2 files changed, 1103 insertions(+) create mode 100644 docs/book/programs/gov/hmrc/fuel-duty.ipynb diff --git a/docs/book/_toc.yml b/docs/book/_toc.yml index 43d2da370..615edf0e7 100644 --- a/docs/book/_toc.yml +++ b/docs/book/_toc.yml @@ -9,6 +9,7 @@ parts: - caption: Programs chapters: - file: programs/gov/hmrc/child-benefit + - file: programs/gov/hmrc/fuel-duty - file: programs/contrib/ubi-center/carbon-tax - file: programs/gov/ofgem/energy-price-guarantee - caption: Using the model diff --git a/docs/book/programs/gov/hmrc/fuel-duty.ipynb b/docs/book/programs/gov/hmrc/fuel-duty.ipynb new file mode 100644 index 000000000..a00e3b8f9 --- /dev/null +++ b/docs/book/programs/gov/hmrc/fuel-duty.ipynb @@ -0,0 +1,1102 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Fuel Duty\n", + "\n", + "Fuel duty is a tax levied on the sale of fuels, mainly petrol and diesel used in vehicles or used for heating. It is a significant source of revenue for the UK government. Here in our model, we focus on the fuel duty imposed on the purchases of petrol and diesel for vehicles only. By collecting taxes on fuels from consumers, the UK government tends to reduce consumption of fuels and encourge the use of more fuel-efficient transportation for environmental sustainability.\n", + "\n", + "Fuel duty parameters can be found in `policyengine_uk/parameters/gov/hmrc/fuel_duty` and logic in `policyengine_uk/variables/gov/hmrc/fuel_duty`.\n", + "\n", + "## Fuel Duty Rate\n", + "\n", + "Fuel duty is levied per unit of petrol or diesel sold. The rates of fuel duty are changed over time and are closely related to factors like economic conditions, global oil prices, consumer behaviors, and environmental issues, etc. The adjustment of fuel duty rates is decided annually by the UK government, as a part of government budget announcements. In March 2022, the UK government announced a 5 pence cut in fuel duty rates for 12 months and the cut was further extended to March 2024. Before this reduction, the rates of fuel duty had been frozen at £0.5795 per litre of petrol and diesel since April 2013. \n", + "\n", + "The table and graph of historical rates on petrol and giesel for fuel duty since April 2010 show below:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Fuel duty rate (£/litre)
Date of change
2010-04-010.5719
2010-10-010.5819
2011-01-010.5895
2011-03-230.5795
2012-01-010.6097
2013-04-010.5795
2021-01-010.5795
2022-03-230.5295
2023-04-010.5295
\n", + "
" + ], + "text/plain": [ + " Fuel duty rate (£/litre)\n", + "Date of change \n", + "2010-04-01 0.5719\n", + "2010-10-01 0.5819\n", + "2011-01-01 0.5895\n", + "2011-03-23 0.5795\n", + "2012-01-01 0.6097\n", + "2013-04-01 0.5795\n", + "2021-01-01 0.5795\n", + "2022-03-23 0.5295\n", + "2023-04-01 0.5295" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from policyengine_uk import CountryTaxBenefitSystem\n", + "import plotly.express as px\n", + "import pandas as pd\n", + "\n", + "system = CountryTaxBenefitSystem()\n", + "hmrc = system.parameters.gov.hmrc\n", + "\n", + "df = pd.DataFrame()\n", + "\n", + "df[\"Date of change\"] = [\n", + " parameter.instant_str for parameter in hmrc.fuel_duty.petrol_and_diesel.values_list\n", + "]\n", + "df[\"Fuel duty rate (£/litre)\"] = [\n", + " parameter.value for parameter in hmrc.fuel_duty.petrol_and_diesel.values_list\n", + "]\n", + "df.sort_values(\"Date of change\").set_index(\"Date of change\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "tags": [ + "hide-input" + ] + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "Date of change=%{x}
Fuel duty rate (£/litre)=%{y}", + "legendgroup": "", + "line": { + "color": "#2C6496", + "dash": "solid", + "shape": "hv" + }, + "marker": { + "symbol": "circle" + }, + "mode": "lines", + "name": "", + "orientation": "v", + "showlegend": false, + "type": "scatter", + "x": [ + "2023-04-01", + "2022-03-23", + "2021-01-01", + "2013-04-01", + "2012-01-01", + "2011-03-23", + "2011-01-01", + "2010-10-01", + "2010-04-01" + ], + "xaxis": "x", + "y": [ + 0.5295, + 0.5295, + 0.5795, + 0.5795, + 0.6097, + 0.5795, + 0.5895, + 0.5819, + 0.5719 + ], + "yaxis": "y" + } + ], + "layout": { + "height": 600, + "legend": { + "tracegroupgap": 0 + }, + "template": { + "data": { + "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" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "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" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "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" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#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, + "#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, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 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, + "#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 + } + } + }, + "title": { + "text": "Fuel duty rate on petrol and giesel" + }, + "width": 800, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "tickangle": 45, + "tickfont": { + "size": 10 + }, + "tickformat": "%Y-%m-%d", + "title": { + "text": "Date" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "tickformat": ",.2f", + "tickprefix": "£", + "title": { + "text": "Fuel duty rate per litre" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import plotly.express as px\n", + "px.line(\n", + " df,\n", + " x=\"Date of change\",\n", + " y=\"Fuel duty rate (£/litre)\",\n", + " title=\"Fuel duty rate on petrol and giesel\",\n", + " color_discrete_sequence=[\"#2C6496\"]\n", + ").update_layout(\n", + " yaxis_title=\"Fuel duty rate per litre\",\n", + " yaxis_tickprefix=\"£\",\n", + " yaxis_tickformat=\",.2f\",\n", + " xaxis_title=\"Date\",\n", + " xaxis_tickformat=\"%Y-%m-%d\",\n", + " height=600,\n", + " width=800,\n", + " template=\"plotly_white\"\n", + ").update_xaxes(\n", + " tickangle=45,\n", + " tickfont={\"size\":10}\n", + ").update_traces(\n", + " line_shape=\"hv\"\n", + ")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} From cf6880a641b4650e50a21be3c8f211267bc5e999 Mon Sep 17 00:00:00 2001 From: Weishan-Lu Date: Thu, 10 Aug 2023 14:53:50 -0400 Subject: [PATCH 03/18] Fix error on graph --- docs/book/programs/gov/hmrc/fuel-duty.ipynb | 41 +++++++++++---------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/docs/book/programs/gov/hmrc/fuel-duty.ipynb b/docs/book/programs/gov/hmrc/fuel-duty.ipynb index a00e3b8f9..15bff3900 100644 --- a/docs/book/programs/gov/hmrc/fuel-duty.ipynb +++ b/docs/book/programs/gov/hmrc/fuel-duty.ipynb @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 8, "metadata": { "tags": [ "hide-input" @@ -110,7 +110,7 @@ "2023-04-01 0.5295" ] }, - "execution_count": 2, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -131,12 +131,13 @@ "df[\"Fuel duty rate (£/litre)\"] = [\n", " parameter.value for parameter in hmrc.fuel_duty.petrol_and_diesel.values_list\n", "]\n", - "df.sort_values(\"Date of change\").set_index(\"Date of change\")" + "df.sort_values(\"Date of change\",inplace=True)\n", + "df.set_index(\"Date of change\")" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 14, "metadata": { "tags": [ "hide-input" @@ -167,27 +168,27 @@ "showlegend": false, "type": "scatter", "x": [ - "2023-04-01", - "2022-03-23", - "2021-01-01", - "2013-04-01", - "2012-01-01", - "2011-03-23", - "2011-01-01", + "2010-04-01", "2010-10-01", - "2010-04-01" + "2011-01-01", + "2011-03-23", + "2012-01-01", + "2013-04-01", + "2021-01-01", + "2022-03-23", + "2023-04-01" ], "xaxis": "x", "y": [ - 0.5295, - 0.5295, - 0.5795, + 0.5719, + 0.5819, + 0.5895, 0.5795, 0.6097, 0.5795, - 0.5895, - 0.5819, - 0.5719 + 0.5795, + 0.5295, + 0.5295 ], "yaxis": "y" } @@ -1027,7 +1028,7 @@ "tickfont": { "size": 10 }, - "tickformat": "%Y-%m-%d", + "tickformat": "%Y", "title": { "text": "Date" } @@ -1064,7 +1065,7 @@ " yaxis_tickprefix=\"£\",\n", " yaxis_tickformat=\",.2f\",\n", " xaxis_title=\"Date\",\n", - " xaxis_tickformat=\"%Y-%m-%d\",\n", + " xaxis_tickformat=\"%Y\",\n", " height=600,\n", " width=800,\n", " template=\"plotly_white\"\n", From a5526cc46bb11e16f63f17281ef08ede968b0b06 Mon Sep 17 00:00:00 2001 From: Nikhil Woodruff <35577657+nikhilwoodruff@users.noreply.github.com> Date: Sat, 12 Aug 2023 18:32:20 +0100 Subject: [PATCH 04/18] Temporarily remove PIP, DLA and min. wage parameters from the app --- changelog_entry.yaml | 4 ++++ policyengine_uk/parameters/gov/dwp/dla/index.yaml | 4 ++++ policyengine_uk/parameters/gov/dwp/pip/index.yaml | 4 ++++ policyengine_uk/parameters/gov/hmrc/minimum_wage.yaml | 1 + 4 files changed, 13 insertions(+) create mode 100644 policyengine_uk/parameters/gov/dwp/dla/index.yaml create mode 100644 policyengine_uk/parameters/gov/dwp/pip/index.yaml diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb..aef088d9a 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: patch + changes: + fixed: + - Temporarily remove PIP, DLA and minimum wage parameters from the app. diff --git a/policyengine_uk/parameters/gov/dwp/dla/index.yaml b/policyengine_uk/parameters/gov/dwp/dla/index.yaml new file mode 100644 index 000000000..c01ac0278 --- /dev/null +++ b/policyengine_uk/parameters/gov/dwp/dla/index.yaml @@ -0,0 +1,4 @@ +metadata: + economy: false + household: false + propagate_metadata_to_children: true \ No newline at end of file diff --git a/policyengine_uk/parameters/gov/dwp/pip/index.yaml b/policyengine_uk/parameters/gov/dwp/pip/index.yaml new file mode 100644 index 000000000..c01ac0278 --- /dev/null +++ b/policyengine_uk/parameters/gov/dwp/pip/index.yaml @@ -0,0 +1,4 @@ +metadata: + economy: false + household: false + propagate_metadata_to_children: true \ No newline at end of file diff --git a/policyengine_uk/parameters/gov/hmrc/minimum_wage.yaml b/policyengine_uk/parameters/gov/hmrc/minimum_wage.yaml index 96e03b755..b182ed853 100644 --- a/policyengine_uk/parameters/gov/hmrc/minimum_wage.yaml +++ b/policyengine_uk/parameters/gov/hmrc/minimum_wage.yaml @@ -80,6 +80,7 @@ UNDER_18: description: Minimum wage by age group metadata: economy: false + household: false label: Minimum Wage propagate_metadata_to_children: true reference: From f282e483ace159c7cbb64aa5fc25df73e1a0fd28 Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Sat, 12 Aug 2023 17:36:41 +0000 Subject: [PATCH 05/18] Update PolicyEngine UK --- CHANGELOG.md | 7 +++++++ changelog.yaml | 5 +++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4142642e1..50f09fffd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.55.1] - 2023-08-12 17:36:09 + +### Fixed + +- Temporarily remove PIP, DLA and minimum wage parameters from the app. + ## [0.55.0] - 2023-08-07 16:52:20 ### Added @@ -995,6 +1001,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[0.55.1]: https://github.com/PolicyEngine/openfisca-uk/compare/0.55.0...0.55.1 [0.55.0]: https://github.com/PolicyEngine/openfisca-uk/compare/0.54.0...0.55.0 [0.54.0]: https://github.com/PolicyEngine/openfisca-uk/compare/0.53.0...0.54.0 [0.53.0]: https://github.com/PolicyEngine/openfisca-uk/compare/0.52.0...0.53.0 diff --git a/changelog.yaml b/changelog.yaml index 7b8fbc533..2fb371793 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -826,3 +826,8 @@ added: - Updates values for universal credit from 2016 to 2023 date: 2023-08-07 16:52:20 +- bump: patch + changes: + fixed: + - Temporarily remove PIP, DLA and minimum wage parameters from the app. + date: 2023-08-12 17:36:09 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index aef088d9a..e69de29bb 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: patch - changes: - fixed: - - Temporarily remove PIP, DLA and minimum wage parameters from the app. diff --git a/setup.py b/setup.py index 12e882755..607b30b18 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ setup( name="PolicyEngine-UK", - version="0.55.0", + version="0.55.1", author="PolicyEngine", author_email="nikhil@policyengine.org", classifiers=[ From 0f12cd863a35b7e58593327be0a6c7532a8f9b83 Mon Sep 17 00:00:00 2001 From: xiwang Date: Thu, 17 Aug 2023 11:31:08 -0400 Subject: [PATCH 06/18] Add new docs --- docs/book/_toc.yml | 1 + .../gov/hmrc/national-insurance.ipynb | 6009 +++++++++++++++++ 2 files changed, 6010 insertions(+) create mode 100644 docs/book/programs/gov/hmrc/national-insurance.ipynb diff --git a/docs/book/_toc.yml b/docs/book/_toc.yml index 43d2da370..57f582d04 100644 --- a/docs/book/_toc.yml +++ b/docs/book/_toc.yml @@ -9,6 +9,7 @@ parts: - caption: Programs chapters: - file: programs/gov/hmrc/child-benefit + - file: programs/gov/hmrc/national-insurance - file: programs/contrib/ubi-center/carbon-tax - file: programs/gov/ofgem/energy-price-guarantee - caption: Using the model diff --git a/docs/book/programs/gov/hmrc/national-insurance.ipynb b/docs/book/programs/gov/hmrc/national-insurance.ipynb new file mode 100644 index 000000000..635da4531 --- /dev/null +++ b/docs/book/programs/gov/hmrc/national-insurance.ipynb @@ -0,0 +1,6009 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "id": "_gdKAFopTwuB" + }, + "source": [ + "# National Insurance" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b3G5DBwhos_2" + }, + "source": [ + "National Insurance is a key component of the UK tax system. It primarily funds certain types of welfare and state benefits, including the State Pension. Here's an overview of National Insurance:\n", + "\n", + "**Purpose**:\\\n", + "The main purpose of National Insurance is to fund various state benefits such as the State Pension, unemployment benefits, maternity allowance, and sickness and disability allowances.\n", + "\n", + "**Types of National Insurance Contributions (NICs):**\\\n", + "**Class 1**: Paid by employees and their employers. This is based on the employee's earnings and is deducted directly from wages.\\\n", + "**Class 2**: Paid by self-employed people with profits above a certain threshold.\\\n", + "**Class 3**: Voluntary contributions, often made by people who want to fill gaps in their National Insurance record.\\\n", + "**Class 4**: Paid by self-employed people with profits above a certain threshold, in addition to Class 2 NICs." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ie5U-X3ruXj3" + }, + "source": [ + "# Methodology\n", + "\n", + "The table outlines the methodology used by PolicyEngine UK to model Class 1, 2, and 4 National Insurance:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "SfKRQHzBm1rQ", + "outputId": "ca2e1cc7-616a-433c-c1e3-6a0e95f48fbc" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+---------+------------------------------------------------------------------+---------------------------+-----------------------------+----------------------------------------------------------+\n", + "| Class | Methodology & Basis | Thresholds & Limits | Rate Application | Reference |\n", + "+=========+==================================================================+===========================+=============================+==========================================================+\n", + "| Class 1 | - Based on employment income. | - Primary Threshold | - Main and Additional rates | Social Security Contributions and Benefits Act 1992 s. 8 |\n", + "| | - Monthly and annual calculations. | - Upper Earnings Limit | | |\n", + "+---------+------------------------------------------------------------------+---------------------------+-----------------------------+----------------------------------------------------------+\n", + "| Class 2 | - Based on self-employment income. | - Small Profits Threshold | - Flat rate | Social Security and Benefits Act 1992 s. 11 |\n", + "| | - Weekly flat rate. | | | |\n", + "+---------+------------------------------------------------------------------+---------------------------+-----------------------------+----------------------------------------------------------+\n", + "| Class 4 | - Derived from self-employment income minus Class 1 employee NI. | - Lower Profits Limit | - Main and Additional rates | Social Security and Benefits Act 1992 s. 15 |\n", + "| | | - Upper Profits Limit | | |\n", + "+---------+------------------------------------------------------------------+---------------------------+-----------------------------+----------------------------------------------------------+\n" + ] + } + ], + "source": [ + "# @title\n", + "import pandas as pd\n", + "from tabulate import tabulate\n", + "\n", + "\n", + "data = {\n", + " \"Class\": [\"Class 1\", \"Class 2\", \"Class 4\"],\n", + " \"Methodology & Basis\": [\n", + " \"- Based on employment income. \\n- Monthly and annual calculations.\",\n", + " \"- Based on self-employment income. \\n- Weekly flat rate.\",\n", + " \"- Derived from self-employment income minus Class 1 employee NI.\"\n", + " ],\n", + " \"Thresholds & Limits\": [\n", + " \"- Primary Threshold \\n- Upper Earnings Limit\",\n", + " \"- Small Profits Threshold\",\n", + " \"- Lower Profits Limit \\n- Upper Profits Limit\"\n", + " ],\n", + " \"Rate Application\": [\n", + " \"- Main and Additional rates\",\n", + " \"- Flat rate\",\n", + " \"- Main and Additional rates\"\n", + " ],\n", + " \"Reference\": [\n", + " \"Social Security Contributions and Benefits Act 1992 s. 8\",\n", + " \"Social Security and Benefits Act 1992 s. 11\",\n", + " \"Social Security and Benefits Act 1992 s. 15\"\n", + " ]\n", + "}\n", + "\n", + "df = pd.DataFrame(data)\n", + "\n", + "# Print the table without the index column\n", + "print(tabulate(df, headers='keys', tablefmt='grid', showindex=False))\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bxQD7vfe1t2n" + }, + "source": [ + "# Appendix:\n", + "**- Class 1 National Insurance Rates:**" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 542 + }, + "id": "4XPp9G3Q4tbi", + "outputId": "1e4c9c0a-8f03-49ba-dcc0-d1f0ae9cbe45" + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "hovertemplate": "Type=NI Class 1 Main Rate
Date=%{x}
Rates=%{y}", + "legendgroup": "NI Class 1 Main Rate", + "marker": { + "color": "#636efa", + "pattern": { + "shape": "" + } + }, + "name": "NI Class 1 Main Rate", + "offsetgroup": "NI Class 1 Main Rate", + "orientation": "v", + "showlegend": true, + "textposition": "auto", + "type": "bar", + "x": [ + "2015-06-01", + "2022-04-01", + "2022-11-06" + ], + "xaxis": "x", + "y": [ + 0.12, + 0.1325, + 0.12 + ], + "yaxis": "y" + }, + { + "alignmentgroup": "True", + "hovertemplate": "Type=NI Class 1 Additional Rate
Date=%{x}
Rates=%{y}", + "legendgroup": "NI Class 1 Additional Rate", + "marker": { + "color": "#EF553B", + "pattern": { + "shape": "" + } + }, + "name": "NI Class 1 Additional Rate", + "offsetgroup": "NI Class 1 Additional Rate", + "orientation": "v", + "showlegend": true, + "textposition": "auto", + "type": "bar", + "x": [ + "2015-06-01", + "2022-04-01" + ], + "xaxis": "x", + "y": [ + 0.02, + 0.0325 + ], + "yaxis": "y" + }, + { + "alignmentgroup": "True", + "hovertemplate": "Type=NI Employer Rate
Date=%{x}
Rates=%{y}", + "legendgroup": "NI Employer Rate", + "marker": { + "color": "#00cc96", + "pattern": { + "shape": "" + } + }, + "name": "NI Employer Rate", + "offsetgroup": "NI Employer Rate", + "orientation": "v", + "showlegend": true, + "textposition": "auto", + "type": "bar", + "x": [ + "2015-06-01" + ], + "xaxis": "x", + "y": [ + 0.138 + ], + "yaxis": "y" + } + ], + "layout": { + "barmode": "relative", + "legend": { + "title": { + "text": "Type" + }, + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "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" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#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, + "#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, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 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, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Class 1 National Insurance Rates Over Time" + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Date" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Rates" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# @title\n", + "import plotly.express as px\n", + "\n", + "dates_employee_additional = [\"2015-06-01\", \"2022-04-01\"]\n", + "rates_employee_additional = [0.02, 0.0325]\n", + "\n", + "dates_employee_main = [\"2015-06-01\", \"2022-04-01\", \"2022-11-06\"]\n", + "rates_employee_main = [0.12, 0.1325, 0.12]\n", + "\n", + "dates_employer = [\"2015-06-01\"]\n", + "rates_employer = [0.138]\n", + "\n", + "dates = sorted(set(dates_employee_additional + dates_employee_main + dates_employer))\n", + "df_employee_additional = pd.DataFrame({'Date': dates_employee_additional, 'Rate': rates_employee_additional, 'Type': 'NI Class 1 Additional Rate'})\n", + "df_employee_main = pd.DataFrame({'Date': dates_employee_main, 'Rate': rates_employee_main, 'Type': 'NI Class 1 Main Rate'})\n", + "df_employer = pd.DataFrame({'Date': dates_employer, 'Rate': rates_employer, 'Type': 'NI Employer Rate'})\n", + "\n", + "df = pd.concat([df_employee_main, df_employee_additional, df_employer], ignore_index=True)\n", + "\n", + "fig = px.bar(df, x='Date', y='Rate', color='Type',\n", + " title='Class 1 National Insurance Rates',\n", + " labels={'Date': 'Date', 'Rate': 'Rates'},\n", + " category_orders={\"Type\": [\"NI Class 1 Main Rate\", \"NI Class 1 Additional Rate\", \"NI Employer Rate\"]})\n", + "\n", + "fig.show()\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sWgDc7c_2iVp" + }, + "source": [ + "**- Class 1 National Insurance Thresholds:**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 542 + }, + "id": "TMpoDSZP9Osd", + "outputId": "b771a3a2-14fe-4c66-8a9f-05c414f78954" + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "Thresholds=Lower Earnings Limit
Dates=%{x}
Thresholds (GBP)=%{y}", + "legendgroup": "Lower Earnings Limit", + "line": { + "color": "#636efa", + "dash": "solid" + }, + "marker": { + "symbol": "circle" + }, + "mode": "lines", + "name": "Lower Earnings Limit", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + "2015-04-06", + "2016-04-06", + "2017-04-06", + "2018-04-06", + "2019-04-06", + "2020-04-06", + "2021-04-06", + "2022-04-06" + ], + "xaxis": "x", + "y": [ + 112, + 112, + 113, + 116, + 118, + 120, + 120, + 123 + ], + "yaxis": "y" + }, + { + "hovertemplate": "Thresholds=Primary Threshold
Dates=%{x}
Thresholds (GBP)=%{y}", + "legendgroup": "Primary Threshold", + "line": { + "color": "#EF553B", + "dash": "solid" + }, + "marker": { + "symbol": "circle" + }, + "mode": "lines", + "name": "Primary Threshold", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + "2015-04-06", + "2016-04-06", + "2017-04-06", + "2018-04-06", + "2019-04-06", + "2020-04-06", + "2021-04-06", + "2022-04-06" + ], + "xaxis": "x", + "y": [ + 155, + 155, + 157, + 162, + 166, + 183, + 184, + 190 + ], + "yaxis": "y" + }, + { + "hovertemplate": "Thresholds=Secondary Threshold
Dates=%{x}
Thresholds (GBP)=%{y}", + "legendgroup": "Secondary Threshold", + "line": { + "color": "#00cc96", + "dash": "solid" + }, + "marker": { + "symbol": "circle" + }, + "mode": "lines", + "name": "Secondary Threshold", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + "2015-04-06", + "2016-04-06", + "2017-04-06", + "2018-04-06", + "2019-04-06", + "2020-04-06", + "2021-04-06", + "2022-04-06" + ], + "xaxis": "x", + "y": [ + 155, + 155, + 157, + 162, + 166, + 169, + 170, + 175 + ], + "yaxis": "y" + }, + { + "hovertemplate": "Thresholds=Upper Earnings Limit
Dates=%{x}
Thresholds (GBP)=%{y}", + "legendgroup": "Upper Earnings Limit", + "line": { + "color": "#ab63fa", + "dash": "solid" + }, + "marker": { + "symbol": "circle" + }, + "mode": "lines", + "name": "Upper Earnings Limit", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + "2015-04-06", + "2016-04-06", + "2017-04-06", + "2018-04-06", + "2019-04-06", + "2020-04-06", + "2021-04-06", + "2022-04-06" + ], + "xaxis": "x", + "y": [ + 815, + 827, + 866, + 892, + 962, + 962, + 966.73, + 966.73 + ], + "yaxis": "y" + } + ], + "layout": { + "legend": { + "title": { + "text": "Thresholds" + }, + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "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" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#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, + "#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, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 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, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Class 1 National Insurance Thresholds Over Time" + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Dates" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Thresholds (GBP)" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# @title\n", + "dates = ['2015-04-06', '2016-04-06', '2017-04-06', '2018-04-06', '2019-04-06', '2020-04-06', '2021-04-06', '2022-04-06']\n", + "\n", + "lower_earnings = [112, 112, 113, 116, 118, 120, 120, 123]\n", + "primary_threshold = [155, 155, 157, 162, 166, 183, 184, 190]\n", + "secondary_threshold = [155, 155, 157, 162, 166, 169, 170, 175]\n", + "upper_earnings = [815, 827, 866, 892, 962, 962, 966.73, 966.73]\n", + "\n", + "df = pd.DataFrame({\n", + " 'Dates': dates,\n", + " 'Lower Earnings Limit': lower_earnings,\n", + " 'Primary Threshold': primary_threshold,\n", + " 'Secondary Threshold': secondary_threshold,\n", + " 'Upper Earnings Limit': upper_earnings\n", + "})\n", + "\n", + "fig = px.line(df, x='Dates', y=df.columns[1:],\n", + " title='Class 1 National Insurance Thresholds Over Time',\n", + " labels={'value': 'Thresholds (GBP)', 'variable': 'Thresholds', 'Dates': 'Dates'})\n", + "\n", + "fig.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ePYoUq0Y3XLb" + }, + "source": [ + "**- Class 2 National Insurance Rates:**" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 542 + }, + "id": "2nnoLaMakEsZ", + "outputId": "e4fc445f-48b7-46eb-ce6e-4b9e14e36c18" + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "Dates=%{x}
Flat rate (GBP)=%{y}", + "legendgroup": "", + "line": { + "color": "blue", + "dash": "solid" + }, + "marker": { + "symbol": "circle" + }, + "mode": "lines+markers", + "name": "", + "orientation": "v", + "showlegend": false, + "type": "scatter", + "x": [ + "2015-06-01", + "2017-06-01", + "2018-06-01", + "2019-06-01", + "2020-06-01", + "2022-04-06" + ], + "xaxis": "x", + "y": [ + 2.8, + 2.85, + 2.95, + 3, + 3.05, + 3.15 + ], + "yaxis": "y" + } + ], + "layout": { + "legend": { + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "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" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#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, + "#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, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 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, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Class 2 National Insurance: Flat rate" + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Dates" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Flat rate (GBP)" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# @title\n", + "\n", + "dates_flat_rate = ['2015-06-01', '2017-06-01', '2018-06-01', '2019-06-01', '2020-06-01', '2022-04-06']\n", + "flat_rate_values = [2.80, 2.85, 2.95, 3.00, 3.05, 3.15]\n", + "df_flat_rate = pd.DataFrame({'Dates': dates_flat_rate, 'Flat rate': flat_rate_values})\n", + "\n", + "dates_small_profits = ['2015-04-06', '2017-04-06', '2018-04-06', '2019-04-06', '2020-04-06', '2021-04-06', '2022-04-06']\n", + "small_profits_values = [3965, 6025, 6205, 6365, 6475, 6515, 6725]\n", + "df_small_profits = pd.DataFrame({'Dates': dates_small_profits, 'Small profits threshold': small_profits_values})\n", + "\n", + "fig_flat_rate = px.line(df_flat_rate, x='Dates', y='Flat rate',\n", + " title='Class 2 National Insurance: Flat rate',\n", + " labels={'Dates': 'Dates', 'Flat rate': 'Flat rate (GBP)'},\n", + " markers=True, color_discrete_sequence=['blue'])\n", + "fig_flat_rate.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nu9MatvD34bc" + }, + "source": [ + "**- Class 2 National Insurance Thresholds**" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 542 + }, + "id": "THpgsF7A309V", + "outputId": "4261ff0f-8da0-4b70-ef71-a32ede36a2e9" + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "Dates=%{x}
Small profits threshold (GBP)=%{y}", + "legendgroup": "", + "line": { + "color": "red", + "dash": "solid" + }, + "marker": { + "symbol": "circle" + }, + "mode": "lines+markers", + "name": "", + "orientation": "v", + "showlegend": false, + "type": "scatter", + "x": [ + "2015-04-06", + "2017-04-06", + "2018-04-06", + "2019-04-06", + "2020-04-06", + "2021-04-06", + "2022-04-06" + ], + "xaxis": "x", + "y": [ + 3965, + 6025, + 6205, + 6365, + 6475, + 6515, + 6725 + ], + "yaxis": "y" + } + ], + "layout": { + "legend": { + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "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" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#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, + "#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, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 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, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Class 2 National Insurance: Small profits threshold" + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Dates" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Small profits threshold (GBP)" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# @title\n", + "fig_small_profits = px.line(df_small_profits, x='Dates', y='Small profits threshold',\n", + " title='Class 2 National Insurance: Small profits threshold',\n", + " labels={'Dates': 'Dates', 'Small profits threshold': 'Small profits threshold (GBP)'},\n", + " markers=True, color_discrete_sequence=['red'])\n", + "fig_small_profits.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "WCMSiBiz4Dzq" + }, + "source": [ + "**- Class 4 National Insurance Rates:**" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 542 + }, + "id": "IkPwua4Rmi-7", + "outputId": "1e254d6e-5971-4f22-8828-ddd9c13363fd" + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "hovertemplate": "Rate Type=Class 4 Main Rate
Date=%{x}
Rates=%{y}", + "legendgroup": "Class 4 Main Rate", + "marker": { + "color": "#636efa", + "pattern": { + "shape": "" + } + }, + "name": "Class 4 Main Rate", + "offsetgroup": "Class 4 Main Rate", + "orientation": "v", + "showlegend": true, + "textposition": "auto", + "type": "bar", + "x": [ + "2015-06-01", + "2022-04-01", + "2022-11-06" + ], + "xaxis": "x", + "y": [ + 0.09, + 0.1025, + 0.09 + ], + "yaxis": "y" + }, + { + "alignmentgroup": "True", + "hovertemplate": "Rate Type=Class 4 Additional Rate
Date=%{x}
Rates=%{y}", + "legendgroup": "Class 4 Additional Rate", + "marker": { + "color": "#EF553B", + "pattern": { + "shape": "" + } + }, + "name": "Class 4 Additional Rate", + "offsetgroup": "Class 4 Additional Rate", + "orientation": "v", + "showlegend": true, + "textposition": "auto", + "type": "bar", + "x": [ + "2015-06-01", + "2022-04-01" + ], + "xaxis": "x", + "y": [ + 0.02, + 0.035 + ], + "yaxis": "y" + } + ], + "layout": { + "bargap": 0.8, + "barmode": "relative", + "legend": { + "title": { + "text": "Rate Type" + }, + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "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" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#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, + "#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, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 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, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Class 4 National Insurance Rates Over Time" + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Date" + }, + "type": "category" + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Rates" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# @title\n", + "\n", + "dates_main = [\"2015-06-01\", \"2022-04-01\", \"2022-11-06\"]\n", + "rates_main = [0.09, 0.1025, 0.09]\n", + "\n", + "dates_additional = [\"2015-06-01\", \"2022-04-01\"]\n", + "rates_additional = [0.02, 0.035]\n", + "\n", + "df_main = pd.DataFrame({\n", + " 'Date': dates_main,\n", + " 'Rate': rates_main,\n", + " 'Rate Type': 'Class 4 Main Rate'\n", + "})\n", + "\n", + "df_additional = pd.DataFrame({\n", + " 'Date': dates_additional,\n", + " 'Rate': rates_additional,\n", + " 'Rate Type': 'Class 4 Additional Rate'\n", + "})\n", + "\n", + "df = pd.concat([df_main, df_additional], ignore_index=True)\n", + "\n", + "fig = px.bar(df, x='Date', y='Rate', color='Rate Type',\n", + " title='Class 4 National Insurance Rates Over Time',\n", + " labels={'Date': 'Date', 'Rate': 'Rates'},\n", + " category_orders={\"Rate Type\": [\"Class 4 Main Rate\", \"Class 4 Additional Rate\"]})\n", + "\n", + "fig.update_layout(bargap=0.8)\n", + "fig.update_xaxes(type='category')\n", + "\n", + "fig.show()\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "qFtjkiGq4JHW" + }, + "source": [ + "**- Class 4 National Insurance Thresholds:**" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 542 + }, + "id": "SCRMpZI-osFV", + "outputId": "5d6a274e-0bf2-469d-e650-1a21cd0f2b93" + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "Label=Lower Profits Limit
Dates=%{x}
Values=%{y}", + "legendgroup": "Lower Profits Limit", + "line": { + "color": "#636efa", + "dash": "solid" + }, + "marker": { + "symbol": "circle" + }, + "mode": "lines+markers", + "name": "Lower Profits Limit", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + "2015-04-06", + "2017-04-06", + "2018-04-06", + "2019-04-06", + "2020-04-06", + "2021-04-06", + "2022-04-06", + "2026-04-06" + ], + "xaxis": "x", + "y": [ + 8060, + 8164, + 8424, + 8632, + 9500, + 9568, + 11908, + 12570 + ], + "yaxis": "y" + }, + { + "hovertemplate": "Label=Upper Profits Limit
Dates=%{x}
Values=%{y}", + "legendgroup": "Upper Profits Limit", + "line": { + "color": "#EF553B", + "dash": "solid" + }, + "marker": { + "symbol": "circle" + }, + "mode": "lines+markers", + "name": "Upper Profits Limit", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + "2015-04-06", + "2015-06-05", + "2017-04-06", + "2018-04-06", + "2019-04-06", + "2020-04-06", + "2021-04-06", + "2026-04-06" + ], + "xaxis": "x", + "y": [ + 42386, + 43000, + 45000, + 46350, + 50000, + 50000, + 50270, + 50270 + ], + "yaxis": "y" + } + ], + "layout": { + "legend": { + "orientation": "h", + "title": { + "text": "Threshold Type" + }, + "tracegroupgap": 0, + "x": 0.05, + "xanchor": "left", + "y": 1.02, + "yanchor": "bottom" + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "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" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#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, + "#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, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 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, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Class 4 National Insurance Thresholds Over Time" + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Dates" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "Thresholds (GBP)" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# @title\n", + "dates_lower_profits_limit = [\"2015-04-06\", \"2017-04-06\", \"2018-04-06\", \"2019-04-06\", \"2020-04-06\", \"2021-04-06\", \"2022-04-06\", \"2026-04-06\"]\n", + "values_lower_profits_limit = [8060, 8164, 8424, 8632, 9500, 9568, 11908, 12570]\n", + "\n", + "dates_upper_profits_limit = [\"2015-04-06\", \"2015-06-05\", \"2017-04-06\", \"2018-04-06\", \"2019-04-06\", \"2020-04-06\", \"2021-04-06\", \"2026-04-06\"]\n", + "values_upper_profits_limit = [42386, 43000, 45000, 46350, 50000, 50000, 50270, 50270]\n", + "\n", + "df_lower = pd.DataFrame({'Dates': dates_lower_profits_limit, 'Values': values_lower_profits_limit, 'Label': 'Lower Profits Limit'})\n", + "df_upper = pd.DataFrame({'Dates': dates_upper_profits_limit, 'Values': values_upper_profits_limit, 'Label': 'Upper Profits Limit'})\n", + "df = pd.concat([df_lower, df_upper])\n", + "\n", + "fig = px.line(df, x='Dates', y='Values', color='Label', title='Class 4 National Insurance Thresholds Over Time', markers=True)\n", + "\n", + "fig.update_layout(\n", + " xaxis_title=\"Dates\",\n", + " yaxis_title=\"Thresholds (GBP)\",\n", + " legend_title_text='Threshold Type',\n", + " legend=dict(orientation=\"h\", yanchor=\"bottom\", y=1.02, xanchor=\"left\", x=0.05)\n", + ")\n", + "\n", + "fig.show()\n" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} From bd115d3e834b1ee5e7677992c500c0819beb7b93 Mon Sep 17 00:00:00 2001 From: Weishan-Lu Date: Thu, 17 Aug 2023 13:12:46 -0400 Subject: [PATCH 07/18] Add changelog --- changelog_entry.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb..cf92f6a4c 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: patch + changes: + added: + - Documentation for fuel duty. \ No newline at end of file From eb839dd475416a87e36dfaf4dc368cf104a09cc4 Mon Sep 17 00:00:00 2001 From: Nikhil Woodruff <35577657+nikhilwoodruff@users.noreply.github.com> Date: Thu, 24 Aug 2023 15:55:40 +0100 Subject: [PATCH 08/18] Adjust language to be more neutral --- docs/book/programs/gov/hmrc/fuel-duty.ipynb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/book/programs/gov/hmrc/fuel-duty.ipynb b/docs/book/programs/gov/hmrc/fuel-duty.ipynb index 15bff3900..3c17be186 100644 --- a/docs/book/programs/gov/hmrc/fuel-duty.ipynb +++ b/docs/book/programs/gov/hmrc/fuel-duty.ipynb @@ -7,15 +7,15 @@ "source": [ "# Fuel Duty\n", "\n", - "Fuel duty is a tax levied on the sale of fuels, mainly petrol and diesel used in vehicles or used for heating. It is a significant source of revenue for the UK government. Here in our model, we focus on the fuel duty imposed on the purchases of petrol and diesel for vehicles only. By collecting taxes on fuels from consumers, the UK government tends to reduce consumption of fuels and encourge the use of more fuel-efficient transportation for environmental sustainability.\n", + "Fuel duty is a tax levied on the sale of fuels, mainly petrol and diesel used in vehicles or used for heating. PolicyEngine models fuel duty imposed on the purchases of petrol and diesel for vehicles only.\n", "\n", "Fuel duty parameters can be found in `policyengine_uk/parameters/gov/hmrc/fuel_duty` and logic in `policyengine_uk/variables/gov/hmrc/fuel_duty`.\n", "\n", "## Fuel Duty Rate\n", "\n", - "Fuel duty is levied per unit of petrol or diesel sold. The rates of fuel duty are changed over time and are closely related to factors like economic conditions, global oil prices, consumer behaviors, and environmental issues, etc. The adjustment of fuel duty rates is decided annually by the UK government, as a part of government budget announcements. In March 2022, the UK government announced a 5 pence cut in fuel duty rates for 12 months and the cut was further extended to March 2024. Before this reduction, the rates of fuel duty had been frozen at £0.5795 per litre of petrol and diesel since April 2013. \n", + "Fuel duty is levied per unit of petrol or diesel sold. The UK government usually updates rates in Spring or Autumn Budgets alongside other tax reforms. In March 2022, the UK government announced a 5 pence cut in fuel duty rates for 12 months and the cut was further extended to March 2024. Before this reduction, the rates of fuel duty had been frozen at £0.5795 per litre of petrol and diesel since April 2013. \n", "\n", - "The table and graph of historical rates on petrol and giesel for fuel duty since April 2010 show below:" + "The table and graph of historical rates on petrol and diesel for fuel duty since April 2010 show below:" ] }, { From ef6c8440e5581103a5dab1e30366ce3b84e0f688 Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Thu, 24 Aug 2023 15:00:11 +0000 Subject: [PATCH 09/18] Update PolicyEngine UK --- CHANGELOG.md | 7 +++++++ changelog.yaml | 5 +++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50f09fffd..2bf3085df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.55.2] - 2023-08-24 14:59:45 + +### Added + +- Documentation for fuel duty. + ## [0.55.1] - 2023-08-12 17:36:09 ### Fixed @@ -1001,6 +1007,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[0.55.2]: https://github.com/PolicyEngine/openfisca-uk/compare/0.55.1...0.55.2 [0.55.1]: https://github.com/PolicyEngine/openfisca-uk/compare/0.55.0...0.55.1 [0.55.0]: https://github.com/PolicyEngine/openfisca-uk/compare/0.54.0...0.55.0 [0.54.0]: https://github.com/PolicyEngine/openfisca-uk/compare/0.53.0...0.54.0 diff --git a/changelog.yaml b/changelog.yaml index 2fb371793..2a2ac599f 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -831,3 +831,8 @@ fixed: - Temporarily remove PIP, DLA and minimum wage parameters from the app. date: 2023-08-12 17:36:09 +- bump: patch + changes: + added: + - Documentation for fuel duty. + date: 2023-08-24 14:59:45 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index cf92f6a4c..e69de29bb 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: patch - changes: - added: - - Documentation for fuel duty. \ No newline at end of file diff --git a/setup.py b/setup.py index 607b30b18..550cb11dc 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ setup( name="PolicyEngine-UK", - version="0.55.1", + version="0.55.2", author="PolicyEngine", author_email="nikhil@policyengine.org", classifiers=[ From fcb384dcf574a8aedfd9a76f9f45eecbbc81d987 Mon Sep 17 00:00:00 2001 From: xiwang Date: Wed, 30 Aug 2023 18:31:01 -0400 Subject: [PATCH 10/18] update the tables --- ...surance.ipynb => national_insurance.ipynb} | 2496 +++-------------- 1 file changed, 320 insertions(+), 2176 deletions(-) rename docs/book/programs/gov/hmrc/{national-insurance.ipynb => national_insurance.ipynb} (67%) diff --git a/docs/book/programs/gov/hmrc/national-insurance.ipynb b/docs/book/programs/gov/hmrc/national_insurance.ipynb similarity index 67% rename from docs/book/programs/gov/hmrc/national-insurance.ipynb rename to docs/book/programs/gov/hmrc/national_insurance.ipynb index 635da4531..500a1346c 100644 --- a/docs/book/programs/gov/hmrc/national-insurance.ipynb +++ b/docs/book/programs/gov/hmrc/national_insurance.ipynb @@ -1,7 +1,6 @@ { "cells": [ { - "attachments": {}, "cell_type": "markdown", "metadata": { "id": "_gdKAFopTwuB" @@ -41,7 +40,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": { "cellView": "form", "colab": { @@ -113,20 +112,79 @@ }, "source": [ "# Appendix:\n", - "**- Class 1 National Insurance Rates:**" + "**- Class 1 National Insurance Rates:**\\\n", + "This table displays the parameter values for the Class 1 National Insurance rates for employees (both main and additional) and employers." ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Qk95U6v2XqHR", + "outputId": "8551c5df-1844-4299-d52b-288e33dfd39a" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Date Class 1 Employee Main Rates Class 1 Employee Additional Rates Class 1 Employer Rates\n", + "2015-06-01 12.00% 2.00% 13.80%\n", + "2022-04-01 13.25% 3.25% \n", + "2022-11-06 12.00% \n" + ] + } + ], + "source": [ + "# @title\n", + "\n", + "main_dates = [\"2015-06-01\", \"2022-04-01\", \"2022-11-06\"]\n", + "main_rates = [0.12, 0.1325, 0.12]\n", + "\n", + "additional_dates = [\"2015-06-01\", \"2022-04-01\"]\n", + "additional_rates = [0.02, 0.0325]\n", + "\n", + "employer_dates = [\"2015-06-01\"]\n", + "employer_rates = [0.138]\n", + "\n", + "all_dates = sorted(set(main_dates + additional_dates + employer_dates))\n", + "\n", + "df = pd.DataFrame({'Date': all_dates})\n", + "df['Class 1 Employee Main Rates'] = df['Date'].map(dict(zip(main_dates, main_rates)))\n", + "df['Class 1 Employee Additional Rates'] = df['Date'].map(dict(zip(additional_dates, additional_rates)))\n", + "df['Class 1 Employer Rates'] = df['Date'].map(dict(zip(employer_dates, employer_rates)))\n", + "\n", + "df['Class 1 Employee Main Rates'] = df['Class 1 Employee Main Rates'].apply(lambda x: f\"{x*100:.2f}%\" if pd.notnull(x) else \"\")\n", + "df['Class 1 Employee Additional Rates'] = df['Class 1 Employee Additional Rates'].apply(lambda x: f\"{x*100:.2f}%\" if pd.notnull(x) else \"\")\n", + "df['Class 1 Employer Rates'] = df['Class 1 Employer Rates'].apply(lambda x: f\"{x*100:.2f}%\" if pd.notnull(x) else \"\")\n", + "\n", + "print(df.to_string(index=False))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sWgDc7c_2iVp" + }, + "source": [ + "**- Class 1 National Insurance Thresholds:**\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, "metadata": { "cellView": "form", "colab": { "base_uri": "https://localhost:8080/", "height": 542 }, - "id": "4XPp9G3Q4tbi", - "outputId": "1e4c9c0a-8f03-49ba-dcc0-d1f0ae9cbe45" + "id": "TMpoDSZP9Osd", + "outputId": "b771a3a2-14fe-4c66-8a9f-05c414f78954" }, "outputs": [ { @@ -137,2095 +195,163 @@ }, "data": [ { - "alignmentgroup": "True", - "hovertemplate": "Type=NI Class 1 Main Rate
Date=%{x}
Rates=%{y}", - "legendgroup": "NI Class 1 Main Rate", - "marker": { + "hovertemplate": "Thresholds=Lower Earnings Limit
Dates=%{x}
Thresholds (GBP)=%{y}", + "legendgroup": "Lower Earnings Limit", + "line": { "color": "#636efa", - "pattern": { - "shape": "" - } + "dash": "solid" + }, + "marker": { + "symbol": "circle" }, - "name": "NI Class 1 Main Rate", - "offsetgroup": "NI Class 1 Main Rate", + "mode": "lines", + "name": "Lower Earnings Limit", "orientation": "v", "showlegend": true, - "textposition": "auto", - "type": "bar", + "type": "scatter", "x": [ - "2015-06-01", - "2022-04-01", - "2022-11-06" + "2015-04-06", + "2016-04-06", + "2017-04-06", + "2018-04-06", + "2019-04-06", + "2020-04-06", + "2021-04-06", + "2022-04-06" ], "xaxis": "x", "y": [ - 0.12, - 0.1325, - 0.12 + 112, + 112, + 113, + 116, + 118, + 120, + 120, + 123 ], "yaxis": "y" }, { - "alignmentgroup": "True", - "hovertemplate": "Type=NI Class 1 Additional Rate
Date=%{x}
Rates=%{y}", - "legendgroup": "NI Class 1 Additional Rate", - "marker": { + "hovertemplate": "Thresholds=Primary Threshold
Dates=%{x}
Thresholds (GBP)=%{y}", + "legendgroup": "Primary Threshold", + "line": { "color": "#EF553B", - "pattern": { - "shape": "" - } + "dash": "solid" }, - "name": "NI Class 1 Additional Rate", - "offsetgroup": "NI Class 1 Additional Rate", + "marker": { + "symbol": "circle" + }, + "mode": "lines", + "name": "Primary Threshold", "orientation": "v", "showlegend": true, - "textposition": "auto", - "type": "bar", + "type": "scatter", "x": [ - "2015-06-01", - "2022-04-01" + "2015-04-06", + "2016-04-06", + "2017-04-06", + "2018-04-06", + "2019-04-06", + "2020-04-06", + "2021-04-06", + "2022-04-06" ], "xaxis": "x", "y": [ - 0.02, - 0.0325 + 155, + 155, + 157, + 162, + 166, + 183, + 184, + 190 ], "yaxis": "y" }, { - "alignmentgroup": "True", - "hovertemplate": "Type=NI Employer Rate
Date=%{x}
Rates=%{y}", - "legendgroup": "NI Employer Rate", - "marker": { + "hovertemplate": "Thresholds=Secondary Threshold
Dates=%{x}
Thresholds (GBP)=%{y}", + "legendgroup": "Secondary Threshold", + "line": { "color": "#00cc96", - "pattern": { - "shape": "" - } + "dash": "solid" }, - "name": "NI Employer Rate", - "offsetgroup": "NI Employer Rate", - "orientation": "v", - "showlegend": true, - "textposition": "auto", - "type": "bar", - "x": [ - "2015-06-01" - ], - "xaxis": "x", - "y": [ - 0.138 - ], - "yaxis": "y" - } - ], - "layout": { - "barmode": "relative", - "legend": { - "title": { - "text": "Type" + "marker": { + "symbol": "circle" }, - "tracegroupgap": 0 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "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" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#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, - "#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, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 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, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Class 1 National Insurance Rates Over Time" - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Date" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Rates" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# @title\n", - "import plotly.express as px\n", - "\n", - "dates_employee_additional = [\"2015-06-01\", \"2022-04-01\"]\n", - "rates_employee_additional = [0.02, 0.0325]\n", - "\n", - "dates_employee_main = [\"2015-06-01\", \"2022-04-01\", \"2022-11-06\"]\n", - "rates_employee_main = [0.12, 0.1325, 0.12]\n", - "\n", - "dates_employer = [\"2015-06-01\"]\n", - "rates_employer = [0.138]\n", - "\n", - "dates = sorted(set(dates_employee_additional + dates_employee_main + dates_employer))\n", - "df_employee_additional = pd.DataFrame({'Date': dates_employee_additional, 'Rate': rates_employee_additional, 'Type': 'NI Class 1 Additional Rate'})\n", - "df_employee_main = pd.DataFrame({'Date': dates_employee_main, 'Rate': rates_employee_main, 'Type': 'NI Class 1 Main Rate'})\n", - "df_employer = pd.DataFrame({'Date': dates_employer, 'Rate': rates_employer, 'Type': 'NI Employer Rate'})\n", - "\n", - "df = pd.concat([df_employee_main, df_employee_additional, df_employer], ignore_index=True)\n", - "\n", - "fig = px.bar(df, x='Date', y='Rate', color='Type',\n", - " title='Class 1 National Insurance Rates',\n", - " labels={'Date': 'Date', 'Rate': 'Rates'},\n", - " category_orders={\"Type\": [\"NI Class 1 Main Rate\", \"NI Class 1 Additional Rate\", \"NI Employer Rate\"]})\n", - "\n", - "fig.show()\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "sWgDc7c_2iVp" - }, - "source": [ - "**- Class 1 National Insurance Thresholds:**\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "cellView": "form", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 542 - }, - "id": "TMpoDSZP9Osd", - "outputId": "b771a3a2-14fe-4c66-8a9f-05c414f78954" - }, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "hovertemplate": "Thresholds=Lower Earnings Limit
Dates=%{x}
Thresholds (GBP)=%{y}", - "legendgroup": "Lower Earnings Limit", - "line": { - "color": "#636efa", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "Lower Earnings Limit", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - "2015-04-06", - "2016-04-06", - "2017-04-06", - "2018-04-06", - "2019-04-06", - "2020-04-06", - "2021-04-06", - "2022-04-06" - ], - "xaxis": "x", - "y": [ - 112, - 112, - 113, - 116, - 118, - 120, - 120, - 123 - ], - "yaxis": "y" - }, - { - "hovertemplate": "Thresholds=Primary Threshold
Dates=%{x}
Thresholds (GBP)=%{y}", - "legendgroup": "Primary Threshold", - "line": { - "color": "#EF553B", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "Primary Threshold", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - "2015-04-06", - "2016-04-06", - "2017-04-06", - "2018-04-06", - "2019-04-06", - "2020-04-06", - "2021-04-06", - "2022-04-06" - ], - "xaxis": "x", - "y": [ - 155, - 155, - 157, - 162, - 166, - 183, - 184, - 190 - ], - "yaxis": "y" - }, - { - "hovertemplate": "Thresholds=Secondary Threshold
Dates=%{x}
Thresholds (GBP)=%{y}", - "legendgroup": "Secondary Threshold", - "line": { - "color": "#00cc96", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "Secondary Threshold", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - "2015-04-06", - "2016-04-06", - "2017-04-06", - "2018-04-06", - "2019-04-06", - "2020-04-06", - "2021-04-06", - "2022-04-06" - ], - "xaxis": "x", - "y": [ - 155, - 155, - 157, - 162, - 166, - 169, - 170, - 175 - ], - "yaxis": "y" - }, - { - "hovertemplate": "Thresholds=Upper Earnings Limit
Dates=%{x}
Thresholds (GBP)=%{y}", - "legendgroup": "Upper Earnings Limit", - "line": { - "color": "#ab63fa", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "Upper Earnings Limit", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - "2015-04-06", - "2016-04-06", - "2017-04-06", - "2018-04-06", - "2019-04-06", - "2020-04-06", - "2021-04-06", - "2022-04-06" - ], - "xaxis": "x", - "y": [ - 815, - 827, - 866, - 892, - 962, - 962, - 966.73, - 966.73 - ], - "yaxis": "y" - } - ], - "layout": { - "legend": { - "title": { - "text": "Thresholds" - }, - "tracegroupgap": 0 - }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "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" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#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, - "#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, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 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, - "#f0f921" - ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } - }, - "title": { - "text": "Class 1 National Insurance Thresholds Over Time" - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Dates" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "title": { - "text": "Thresholds (GBP)" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# @title\n", - "dates = ['2015-04-06', '2016-04-06', '2017-04-06', '2018-04-06', '2019-04-06', '2020-04-06', '2021-04-06', '2022-04-06']\n", - "\n", - "lower_earnings = [112, 112, 113, 116, 118, 120, 120, 123]\n", - "primary_threshold = [155, 155, 157, 162, 166, 183, 184, 190]\n", - "secondary_threshold = [155, 155, 157, 162, 166, 169, 170, 175]\n", - "upper_earnings = [815, 827, 866, 892, 962, 962, 966.73, 966.73]\n", - "\n", - "df = pd.DataFrame({\n", - " 'Dates': dates,\n", - " 'Lower Earnings Limit': lower_earnings,\n", - " 'Primary Threshold': primary_threshold,\n", - " 'Secondary Threshold': secondary_threshold,\n", - " 'Upper Earnings Limit': upper_earnings\n", - "})\n", - "\n", - "fig = px.line(df, x='Dates', y=df.columns[1:],\n", - " title='Class 1 National Insurance Thresholds Over Time',\n", - " labels={'value': 'Thresholds (GBP)', 'variable': 'Thresholds', 'Dates': 'Dates'})\n", - "\n", - "fig.show()\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ePYoUq0Y3XLb" - }, - "source": [ - "**- Class 2 National Insurance Rates:**" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "cellView": "form", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 542 - }, - "id": "2nnoLaMakEsZ", - "outputId": "e4fc445f-48b7-46eb-ce6e-4b9e14e36c18" - }, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ + "mode": "lines", + "name": "Secondary Threshold", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + "2015-04-06", + "2016-04-06", + "2017-04-06", + "2018-04-06", + "2019-04-06", + "2020-04-06", + "2021-04-06", + "2022-04-06" + ], + "xaxis": "x", + "y": [ + 155, + 155, + 157, + 162, + 166, + 169, + 170, + 175 + ], + "yaxis": "y" + }, { - "hovertemplate": "Dates=%{x}
Flat rate (GBP)=%{y}", - "legendgroup": "", + "hovertemplate": "Thresholds=Upper Earnings Limit
Dates=%{x}
Thresholds (GBP)=%{y}", + "legendgroup": "Upper Earnings Limit", "line": { - "color": "blue", + "color": "#ab63fa", "dash": "solid" }, "marker": { "symbol": "circle" }, - "mode": "lines+markers", - "name": "", + "mode": "lines", + "name": "Upper Earnings Limit", "orientation": "v", - "showlegend": false, + "showlegend": true, "type": "scatter", "x": [ - "2015-06-01", - "2017-06-01", - "2018-06-01", - "2019-06-01", - "2020-06-01", + "2015-04-06", + "2016-04-06", + "2017-04-06", + "2018-04-06", + "2019-04-06", + "2020-04-06", + "2021-04-06", "2022-04-06" ], "xaxis": "x", "y": [ - 2.8, - 2.85, - 2.95, - 3, - 3.05, - 3.15 + 815, + 827, + 866, + 892, + 962, + 962, + 966.73, + 966.73 ], "yaxis": "y" } ], "layout": { "legend": { + "title": { + "text": "Thresholds" + }, "tracegroupgap": 0 }, "template": { @@ -3045,7 +1171,7 @@ } }, "title": { - "text": "Class 2 National Insurance: Flat rate" + "text": "Class 1 National Insurance Thresholds Over Time" }, "xaxis": { "anchor": "y", @@ -3064,7 +1190,7 @@ 1 ], "title": { - "text": "Flat rate (GBP)" + "text": "Thresholds (GBP)" } } } @@ -3076,42 +1202,50 @@ ], "source": [ "# @title\n", + "import plotly.express as px\n", "\n", - "dates_flat_rate = ['2015-06-01', '2017-06-01', '2018-06-01', '2019-06-01', '2020-06-01', '2022-04-06']\n", - "flat_rate_values = [2.80, 2.85, 2.95, 3.00, 3.05, 3.15]\n", - "df_flat_rate = pd.DataFrame({'Dates': dates_flat_rate, 'Flat rate': flat_rate_values})\n", + "dates = ['2015-04-06', '2016-04-06', '2017-04-06', '2018-04-06', '2019-04-06', '2020-04-06', '2021-04-06', '2022-04-06']\n", "\n", - "dates_small_profits = ['2015-04-06', '2017-04-06', '2018-04-06', '2019-04-06', '2020-04-06', '2021-04-06', '2022-04-06']\n", - "small_profits_values = [3965, 6025, 6205, 6365, 6475, 6515, 6725]\n", - "df_small_profits = pd.DataFrame({'Dates': dates_small_profits, 'Small profits threshold': small_profits_values})\n", + "lower_earnings = [112, 112, 113, 116, 118, 120, 120, 123]\n", + "primary_threshold = [155, 155, 157, 162, 166, 183, 184, 190]\n", + "secondary_threshold = [155, 155, 157, 162, 166, 169, 170, 175]\n", + "upper_earnings = [815, 827, 866, 892, 962, 962, 966.73, 966.73]\n", "\n", - "fig_flat_rate = px.line(df_flat_rate, x='Dates', y='Flat rate',\n", - " title='Class 2 National Insurance: Flat rate',\n", - " labels={'Dates': 'Dates', 'Flat rate': 'Flat rate (GBP)'},\n", - " markers=True, color_discrete_sequence=['blue'])\n", - "fig_flat_rate.show()\n" + "df = pd.DataFrame({\n", + " 'Dates': dates,\n", + " 'Lower Earnings Limit': lower_earnings,\n", + " 'Primary Threshold': primary_threshold,\n", + " 'Secondary Threshold': secondary_threshold,\n", + " 'Upper Earnings Limit': upper_earnings\n", + "})\n", + "\n", + "fig = px.line(df, x='Dates', y=df.columns[1:],\n", + " title='Class 1 National Insurance Thresholds Over Time',\n", + " labels={'value': 'Thresholds (GBP)', 'variable': 'Thresholds', 'Dates': 'Dates'})\n", + "\n", + "fig.show()\n" ] }, { "cell_type": "markdown", "metadata": { - "id": "nu9MatvD34bc" + "id": "ePYoUq0Y3XLb" }, "source": [ - "**- Class 2 National Insurance Thresholds**" + "**- Class 2 National Insurance Rates:**" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": { "cellView": "form", "colab": { "base_uri": "https://localhost:8080/", "height": 542 }, - "id": "THpgsF7A309V", - "outputId": "4261ff0f-8da0-4b70-ef71-a32ede36a2e9" + "id": "2nnoLaMakEsZ", + "outputId": "e4fc445f-48b7-46eb-ce6e-4b9e14e36c18" }, "outputs": [ { @@ -3122,38 +1256,36 @@ }, "data": [ { - "hovertemplate": "Dates=%{x}
Small profits threshold (GBP)=%{y}", + "hovertemplate": "Dates=%{x}
Flat rate (GBP)=%{y}", "legendgroup": "", "line": { - "color": "red", + "color": "blue", "dash": "solid" }, "marker": { "symbol": "circle" }, - "mode": "lines+markers", + "mode": "markers+lines", "name": "", "orientation": "v", "showlegend": false, "type": "scatter", "x": [ - "2015-04-06", - "2017-04-06", - "2018-04-06", - "2019-04-06", - "2020-04-06", - "2021-04-06", + "2015-06-01", + "2017-06-01", + "2018-06-01", + "2019-06-01", + "2020-06-01", "2022-04-06" ], "xaxis": "x", "y": [ - 3965, - 6025, - 6205, - 6365, - 6475, - 6515, - 6725 + 2.8, + 2.85, + 2.95, + 3, + 3.05, + 3.15 ], "yaxis": "y" } @@ -3979,7 +2111,7 @@ } }, "title": { - "text": "Class 2 National Insurance: Small profits threshold" + "text": "Class 2 National Insurance: Flat rate" }, "xaxis": { "anchor": "y", @@ -3998,7 +2130,7 @@ 1 ], "title": { - "text": "Small profits threshold (GBP)" + "text": "Flat rate (GBP)" } } } @@ -4010,33 +2142,42 @@ ], "source": [ "# @title\n", - "fig_small_profits = px.line(df_small_profits, x='Dates', y='Small profits threshold',\n", - " title='Class 2 National Insurance: Small profits threshold',\n", - " labels={'Dates': 'Dates', 'Small profits threshold': 'Small profits threshold (GBP)'},\n", - " markers=True, color_discrete_sequence=['red'])\n", - "fig_small_profits.show()\n" + "\n", + "dates_flat_rate = ['2015-06-01', '2017-06-01', '2018-06-01', '2019-06-01', '2020-06-01', '2022-04-06']\n", + "flat_rate_values = [2.80, 2.85, 2.95, 3.00, 3.05, 3.15]\n", + "df_flat_rate = pd.DataFrame({'Dates': dates_flat_rate, 'Flat rate': flat_rate_values})\n", + "\n", + "dates_small_profits = ['2015-04-06', '2017-04-06', '2018-04-06', '2019-04-06', '2020-04-06', '2021-04-06', '2022-04-06']\n", + "small_profits_values = [3965, 6025, 6205, 6365, 6475, 6515, 6725]\n", + "df_small_profits = pd.DataFrame({'Dates': dates_small_profits, 'Small profits threshold': small_profits_values})\n", + "\n", + "fig_flat_rate = px.line(df_flat_rate, x='Dates', y='Flat rate',\n", + " title='Class 2 National Insurance: Flat rate',\n", + " labels={'Dates': 'Dates', 'Flat rate': 'Flat rate (GBP)'},\n", + " markers=True, color_discrete_sequence=['blue'])\n", + "fig_flat_rate.show()\n" ] }, { "cell_type": "markdown", "metadata": { - "id": "WCMSiBiz4Dzq" + "id": "nu9MatvD34bc" }, "source": [ - "**- Class 4 National Insurance Rates:**" + "**- Class 2 National Insurance Thresholds**" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "metadata": { "cellView": "form", "colab": { "base_uri": "https://localhost:8080/", "height": 542 }, - "id": "IkPwua4Rmi-7", - "outputId": "1e254d6e-5971-4f22-8828-ddd9c13363fd" + "id": "THpgsF7A309V", + "outputId": "4261ff0f-8da0-4b70-ef71-a32ede36a2e9" }, "outputs": [ { @@ -4047,69 +2188,44 @@ }, "data": [ { - "alignmentgroup": "True", - "hovertemplate": "Rate Type=Class 4 Main Rate
Date=%{x}
Rates=%{y}", - "legendgroup": "Class 4 Main Rate", - "marker": { - "color": "#636efa", - "pattern": { - "shape": "" - } + "hovertemplate": "Dates=%{x}
Small profits threshold (GBP)=%{y}", + "legendgroup": "", + "line": { + "color": "red", + "dash": "solid" }, - "name": "Class 4 Main Rate", - "offsetgroup": "Class 4 Main Rate", - "orientation": "v", - "showlegend": true, - "textposition": "auto", - "type": "bar", - "x": [ - "2015-06-01", - "2022-04-01", - "2022-11-06" - ], - "xaxis": "x", - "y": [ - 0.09, - 0.1025, - 0.09 - ], - "yaxis": "y" - }, - { - "alignmentgroup": "True", - "hovertemplate": "Rate Type=Class 4 Additional Rate
Date=%{x}
Rates=%{y}", - "legendgroup": "Class 4 Additional Rate", "marker": { - "color": "#EF553B", - "pattern": { - "shape": "" - } + "symbol": "circle" }, - "name": "Class 4 Additional Rate", - "offsetgroup": "Class 4 Additional Rate", + "mode": "markers+lines", + "name": "", "orientation": "v", - "showlegend": true, - "textposition": "auto", - "type": "bar", + "showlegend": false, + "type": "scatter", "x": [ - "2015-06-01", - "2022-04-01" + "2015-04-06", + "2017-04-06", + "2018-04-06", + "2019-04-06", + "2020-04-06", + "2021-04-06", + "2022-04-06" ], "xaxis": "x", "y": [ - 0.02, - 0.035 + 3965, + 6025, + 6205, + 6365, + 6475, + 6515, + 6725 ], "yaxis": "y" } ], "layout": { - "bargap": 0.8, - "barmode": "relative", "legend": { - "title": { - "text": "Rate Type" - }, "tracegroupgap": 0 }, "template": { @@ -4929,7 +3045,7 @@ } }, "title": { - "text": "Class 4 National Insurance Rates Over Time" + "text": "Class 2 National Insurance: Small profits threshold" }, "xaxis": { "anchor": "y", @@ -4938,9 +3054,8 @@ 1 ], "title": { - "text": "Date" - }, - "type": "category" + "text": "Dates" + } }, "yaxis": { "anchor": "x", @@ -4949,7 +3064,7 @@ 1 ], "title": { - "text": "Rates" + "text": "Small profits threshold (GBP)" } } } @@ -4959,39 +3074,67 @@ "output_type": "display_data" } ], + "source": [ + "# @title\n", + "fig_small_profits = px.line(df_small_profits, x='Dates', y='Small profits threshold',\n", + " title='Class 2 National Insurance: Small profits threshold',\n", + " labels={'Dates': 'Dates', 'Small profits threshold': 'Small profits threshold (GBP)'},\n", + " markers=True, color_discrete_sequence=['red'])\n", + "fig_small_profits.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "WCMSiBiz4Dzq" + }, + "source": [ + "**- Class 4 National Insurance Rates:**\\\n", + "This table displays the parameter values for the Class 4 National Insurance rates (both main and additional).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "cellView": "form", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "F4oIyDVIgTeC", + "outputId": "6adafe10-779d-4779-82cc-aa6ae4f5fbf4" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Date Class 4 Main Rate Class 4 Additional Rate\n", + "2015-06-01 9.00% 2.00%\n", + "2022-04-01 10.25% 3.50%\n", + "2022-11-06 9.00% \n" + ] + } + ], "source": [ "# @title\n", "\n", - "dates_main = [\"2015-06-01\", \"2022-04-01\", \"2022-11-06\"]\n", - "rates_main = [0.09, 0.1025, 0.09]\n", - "\n", - "dates_additional = [\"2015-06-01\", \"2022-04-01\"]\n", - "rates_additional = [0.02, 0.035]\n", - "\n", - "df_main = pd.DataFrame({\n", - " 'Date': dates_main,\n", - " 'Rate': rates_main,\n", - " 'Rate Type': 'Class 4 Main Rate'\n", - "})\n", + "main_dates = [\"2015-06-01\", \"2022-04-01\", \"2022-11-06\"]\n", + "main_rates = [0.09, 0.1025, 0.09]\n", "\n", - "df_additional = pd.DataFrame({\n", - " 'Date': dates_additional,\n", - " 'Rate': rates_additional,\n", - " 'Rate Type': 'Class 4 Additional Rate'\n", - "})\n", + "additional_dates = [\"2015-06-01\", \"2022-04-01\"]\n", + "additional_rates = [0.02, 0.035]\n", "\n", - "df = pd.concat([df_main, df_additional], ignore_index=True)\n", + "all_dates = sorted(set(main_dates + additional_dates))\n", "\n", - "fig = px.bar(df, x='Date', y='Rate', color='Rate Type',\n", - " title='Class 4 National Insurance Rates Over Time',\n", - " labels={'Date': 'Date', 'Rate': 'Rates'},\n", - " category_orders={\"Rate Type\": [\"Class 4 Main Rate\", \"Class 4 Additional Rate\"]})\n", + "df = pd.DataFrame({'Date': all_dates})\n", + "df['Class 4 Main Rate'] = df['Date'].map(dict(zip(main_dates, main_rates)))\n", + "df['Class 4 Additional Rate'] = df['Date'].map(dict(zip(additional_dates, additional_rates)))\n", "\n", - "fig.update_layout(bargap=0.8)\n", - "fig.update_xaxes(type='category')\n", + "df['Class 4 Main Rate'] = df['Class 4 Main Rate'].apply(lambda x: f\"{x*100:.2f}%\" if pd.notnull(x) else \"\")\n", + "df['Class 4 Additional Rate'] = df['Class 4 Additional Rate'].apply(lambda x: f\"{x*100:.2f}%\" if pd.notnull(x) else \"\")\n", "\n", - "fig.show()\n", - "\n" + "print(df.to_string(index=False))\n" ] }, { @@ -5005,7 +3148,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "metadata": { "cellView": "form", "colab": { @@ -5033,7 +3176,7 @@ "marker": { "symbol": "circle" }, - "mode": "lines+markers", + "mode": "markers+lines", "name": "Lower Profits Limit", "orientation": "v", "showlegend": true, @@ -5071,7 +3214,7 @@ "marker": { "symbol": "circle" }, - "mode": "lines+markers", + "mode": "markers+lines", "name": "Upper Profits Limit", "orientation": "v", "showlegend": true, @@ -5960,6 +4103,7 @@ ], "source": [ "# @title\n", + "\n", "dates_lower_profits_limit = [\"2015-04-06\", \"2017-04-06\", \"2018-04-06\", \"2019-04-06\", \"2020-04-06\", \"2021-04-06\", \"2022-04-06\", \"2026-04-06\"]\n", "values_lower_profits_limit = [8060, 8164, 8424, 8632, 9500, 9568, 11908, 12570]\n", "\n", From f727218c962ac43521185679978193dc5cf2aa9d Mon Sep 17 00:00:00 2001 From: xiwang Date: Wed, 30 Aug 2023 18:35:03 -0400 Subject: [PATCH 11/18] update changelog --- changelog_entry.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb..29c7971e5 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Update National Insurance documentation \ No newline at end of file From 6b1a7353efa700e39bad144119f9ed05a2b0afb1 Mon Sep 17 00:00:00 2001 From: xiwang Date: Wed, 30 Aug 2023 18:43:45 -0400 Subject: [PATCH 12/18] adjust indent --- changelog_entry.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 29c7971e5..37daeef19 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +1,4 @@ - bump: minor changes: added: - - Update National Insurance documentation \ No newline at end of file + - Update National Insurance documentation From 10944cd5fb05b63d9ea81f762527ffbcafa257fb Mon Sep 17 00:00:00 2001 From: Nikhil Woodruff <35577657+nikhilwoodruff@users.noreply.github.com> Date: Thu, 14 Sep 2023 14:22:12 +0100 Subject: [PATCH 13/18] Update PolicyEngine UK --- changelog_entry.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 37daeef19..0aca3e232 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +1,4 @@ - bump: minor - changes: - added: - - Update National Insurance documentation + changes: + added: + - Update National Insurance documentation From 740c16c4981f7f4fa0f5e0060e9bde2ea535a952 Mon Sep 17 00:00:00 2001 From: Nikhil Woodruff <35577657+nikhilwoodruff@users.noreply.github.com> Date: Thu, 14 Sep 2023 14:44:46 +0100 Subject: [PATCH 14/18] Add example to documentation --- docs/book/_config.yml | 2 + docs/book/_static/style.css | 9 + docs/book/_toc.yml | 3 + docs/book/examples/income-sources.ipynb | 1257 ++++++++++++++++ docs/book/examples/income_sources_hbai.png | Bin 0 -> 216102 bytes docs/book/logo.png | Bin 0 -> 10188 bytes docs/book/model/validation.ipynb | 2 +- .../programs/gov/hmrc/child-benefit.ipynb | 1278 +---------------- 8 files changed, 1332 insertions(+), 1219 deletions(-) create mode 100644 docs/book/_static/style.css create mode 100644 docs/book/examples/income-sources.ipynb create mode 100644 docs/book/examples/income_sources_hbai.png create mode 100644 docs/book/logo.png diff --git a/docs/book/_config.yml b/docs/book/_config.yml index ac0fc418f..e5eae1eb2 100644 --- a/docs/book/_config.yml +++ b/docs/book/_config.yml @@ -16,6 +16,8 @@ sphinx: - https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js html_theme: furo pygments_style: default + html_css_files: + - style.css extra_extensions: - "sphinx.ext.autodoc" - "sphinxarg.ext" diff --git a/docs/book/_static/style.css b/docs/book/_static/style.css new file mode 100644 index 000000000..2a7a0ae4c --- /dev/null +++ b/docs/book/_static/style.css @@ -0,0 +1,9 @@ +@import url('https://fonts.googleapis.com/css2?family=Roboto+Serif:opsz@8..144&family=Roboto:wght@300&display=swap'); + +h1, h2, h3, h4, h5, h6 { + font-family: "Roboto"; +} + +body { + font-family: "Roboto Serif"; +} \ No newline at end of file diff --git a/docs/book/_toc.yml b/docs/book/_toc.yml index 101ee4ffb..aa079c072 100644 --- a/docs/book/_toc.yml +++ b/docs/book/_toc.yml @@ -16,3 +16,6 @@ parts: - caption: Using the model chapters: - file: usage/getting-started + - caption: Examples + chapters: + - file: examples/income-sources diff --git a/docs/book/examples/income-sources.ipynb b/docs/book/examples/income-sources.ipynb new file mode 100644 index 000000000..335a94e33 --- /dev/null +++ b/docs/book/examples/income-sources.ipynb @@ -0,0 +1,1257 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Pensioner income sources\n", + "\n", + "The chart below (Figure 12 from the [2022 HBAI publication](https://www.gov.uk/government/statistics/households-below-average-income-for-financial-years-ending-1995-to-2022/households-below-average-income-an-analysis-of-the-uk-income-distribution-fye-1995-to-fye-2022)) shows the distribution of income for each decile for pensioner households. We can reproduce this figure from PolicyEngine using the code below.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "hovertemplate": "Income source=Earnings
Decile=%{x}
Value=%{y}", + "legendgroup": "Earnings", + "marker": { + "color": "#636efa", + "pattern": { + "shape": "" + } + }, + "name": "Earnings", + "offsetgroup": "Earnings", + "orientation": "v", + "showlegend": true, + "textposition": "auto", + "type": "bar", + "x": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "xaxis": "x", + "y": [ + 0.023733282015790745, + 0.04032294165692396, + 0.019384361242054, + 0.043665457375406426, + 0.0809704704741902, + 0.09065326776307682, + 0.11938511170261688, + 0.18014795016996402, + 0.1864654809665464, + 0.22585495936716685 + ], + "yaxis": "y" + }, + { + "alignmentgroup": "True", + "hovertemplate": "Income source=Investment
Decile=%{x}
Value=%{y}", + "legendgroup": "Investment", + "marker": { + "color": "#EF553B", + "pattern": { + "shape": "" + } + }, + "name": "Investment", + "offsetgroup": "Investment", + "orientation": "v", + "showlegend": true, + "textposition": "auto", + "type": "bar", + "x": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "xaxis": "x", + "y": [ + 0.008169608569307577, + 0.002326600702827372, + 0.022015815289452394, + 0.005622317979186245, + 0.019965006959754953, + 0.011571356155730893, + 0.022289417810898056, + 0.09335665354575108, + 0.056750953842190636, + 0.14907694035826224 + ], + "yaxis": "y" + }, + { + "alignmentgroup": "True", + "hovertemplate": "Income source=Pensions
Decile=%{x}
Value=%{y}", + "legendgroup": "Pensions", + "marker": { + "color": "#00cc96", + "pattern": { + "shape": "" + } + }, + "name": "Pensions", + "offsetgroup": "Pensions", + "orientation": "v", + "showlegend": true, + "textposition": "auto", + "type": "bar", + "x": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "xaxis": "x", + "y": [ + 0.16103750034546394, + 0.1444886107189938, + 0.17188628597826172, + 0.27914872890404546, + 0.3237680809341637, + 0.30889145397308404, + 0.3635801340852097, + 0.34899144325319914, + 0.35759271885346444, + 0.3769421214423549 + ], + "yaxis": "y" + }, + { + "alignmentgroup": "True", + "hovertemplate": "Income source=Other
Decile=%{x}
Value=%{y}", + "legendgroup": "Other", + "marker": { + "color": "#ab63fa", + "pattern": { + "shape": "" + } + }, + "name": "Other", + "offsetgroup": "Other", + "orientation": "v", + "showlegend": true, + "textposition": "auto", + "type": "bar", + "x": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "xaxis": "x", + "y": [ + 0.00040976260944181053, + 0.00029064103518250395, + 0.0018831986465038808, + 0.008803046649771606, + 0.0035210046423854724, + 0.0146054316064409, + 0.01920922094249855, + 0.016438464839505063, + 0.04485815844920127, + 0.105059435621214 + ], + "yaxis": "y" + }, + { + "alignmentgroup": "True", + "hovertemplate": "Income source=State support
Decile=%{x}
Value=%{y}", + "legendgroup": "State support", + "marker": { + "color": "#FFA15A", + "pattern": { + "shape": "" + } + }, + "name": "State support", + "offsetgroup": "State support", + "orientation": "v", + "showlegend": true, + "textposition": "auto", + "type": "bar", + "x": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "xaxis": "x", + "y": [ + 0.8066498464599959, + 0.8125712058860722, + 0.784830338843728, + 0.6627604490915903, + 0.5717754369895055, + 0.5742784905016673, + 0.4755361154587768, + 0.36106548819158074, + 0.3543326878885973, + 0.14306654321100207 + ], + "yaxis": "y" + } + ], + "layout": { + "bargap": 0, + "barmode": "relative", + "font": { + "color": "black", + "family": "Roboto Serif" + }, + "height": 600, + "images": [ + { + "sizex": 0.2, + "sizey": 0.2, + "source": "https://raw.githubusercontent.com/PolicyEngine/policyengine-app/master/src/images/logos/policyengine/blue.png", + "x": 1, + "xanchor": "right", + "xref": "paper", + "y": -0.15, + "yanchor": "bottom", + "yref": "paper" + } + ], + "legend": { + "title": { + "text": "Income source" + }, + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "modebar": { + "bgcolor": "rgba(0,0,0,0)", + "color": "rgba(0,0,0,0)" + }, + "template": { + "data": { + "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" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "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" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "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" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 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, + "#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, + "#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, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 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, + "#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 + } + } + }, + "title": { + "text": "Sources of income for pensioner households" + }, + "width": 800, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "tickvals": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ], + "title": { + "text": "Income decile" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "tickformat": ".0%", + "tickvals": [ + 0, + 0.1, + 0.2, + 0.3, + 0.4, + 0.5, + 0.6, + 0.7, + 0.8, + 0.9, + 1 + ], + "title": { + "text": "Percentage of income" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from policyengine_uk import Microsimulation\n", + "import pandas as pd\n", + "\n", + "sim = Microsimulation()\n", + "\n", + "is_pensioner_household = (sim.calculate(\"is_SP_age\", map_to=\"household\") > 0) * (sim.calculate(\"is_child\", map_to=\"household\") == 0)\n", + "household_benefits = sim.calculate(\"household_benefits\")\n", + "household_pensions = sim.calculate(\"pension_income\", map_to=\"household\")\n", + "household_investment_income = sim.calculate(\"capital_income\", map_to=\"household\")\n", + "household_earnings = sim.calculate(\"employment_income\", map_to=\"household\") + sim.calculate(\"self_employment_income\", map_to=\"household\")\n", + "total_income = sim.calculate(\"household_market_income\") + household_benefits\n", + "\n", + "equivalised_income = sim.calculate(\"equiv_household_net_income\")[is_pensioner_household]\n", + "household_count_people = sim.calculate(\"people\", map_to=\"household\")[is_pensioner_household]\n", + "equivalised_income.weights *= household_count_people.values\n", + "household_income_decile = equivalised_income.decile_rank()\n", + "\n", + "income_source_decodes = {\n", + " \"Earnings\": household_earnings,\n", + " \"Pensions\": household_pensions,\n", + " \"Investment\": household_investment_income,\n", + " \"State support\": household_benefits,\n", + "}\n", + "\n", + "deciles = []\n", + "values = []\n", + "income_sources = []\n", + "\n", + "for decile in range(1, 11):\n", + " in_decile = household_income_decile == decile\n", + " cumulative_income = 0\n", + " for income_source in income_source_decodes:\n", + " deciles.append(decile)\n", + " income_sources.append(income_source)\n", + " income_source_values = income_source_decodes[income_source]\n", + " values.append(\n", + " income_source_values[is_pensioner_household][in_decile].sum() / total_income[is_pensioner_household][in_decile].sum()\n", + " )\n", + " cumulative_income += income_source_values[is_pensioner_household][in_decile].sum()\n", + " # Add 'other income'\n", + " deciles.append(decile)\n", + " income_sources.append(\"Other\")\n", + " values.append(1 - cumulative_income / total_income[is_pensioner_household][in_decile].sum())\n", + "\n", + "df = pd.DataFrame({\n", + " \"Decile\": deciles,\n", + " \"Income source\": income_sources,\n", + " \"Value\": values,\n", + "})\n", + "\n", + "# Order by state support, other income, pensions, investment, earnings\n", + "df[\"Income source\"] = pd.Categorical(df[\"Income source\"], [\"State support\", \"Other\", \"Pensions\", \"Investment\", \"Earnings\"])\n", + "df = df.sort_values([\"Decile\", \"Income source\"], ascending=[True, False])\n", + "\n", + "import plotly.express as px\n", + "from policyengine_core.charts import format_fig\n", + "\n", + "fig = px.bar(\n", + " df,\n", + " x=\"Decile\",\n", + " y=\"Value\",\n", + " color=\"Income source\",\n", + ").update_layout(\n", + " height=600,\n", + " width=800,\n", + " # No bar gap\n", + " bargap=0,\n", + " yaxis=dict(\n", + " tickformat=\".0%\",\n", + " title=\"Percentage of income\",\n", + " tickvals=[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, .7, .8, .9, 1],\n", + " ),\n", + " xaxis=dict(\n", + " title=\"Income decile\",\n", + " tickvals=list(range(1, 11)),\n", + " ),\n", + ")\n", + "\n", + "fig = format_fig(fig).update_layout(\n", + " title=\"Sources of income for pensioner households\",\n", + ")\n", + "fig\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/docs/book/examples/income_sources_hbai.png b/docs/book/examples/income_sources_hbai.png new file mode 100644 index 0000000000000000000000000000000000000000..f5739dfa1c2409582100bb6993bc3301d3de07fe GIT binary patch literal 216102 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ΞPyQTB$m* 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≧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
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
PolicyEngine-UK Aggregate (£m)Official Estimate (£m)Official Estimate TypeUKMOD Aggregate (£m)Absolute Error (£m)Relative Error (%)
Year
20221061911081Outturn11432462-4.2
20231104511116Outturn1162171-0.6
20241106410981Forecast11573-830.8
20251110911213Forecast11668104-0.9
\n", - "
" - ], - "text/plain": [ - " PolicyEngine-UK Aggregate (£m) Official Estimate (£m) \\\n", - "Year \n", - "2022 10619 11081 \n", - "2023 11045 11116 \n", - "2024 11064 10981 \n", - "2025 11109 11213 \n", - "\n", - " Official Estimate Type UKMOD Aggregate (£m) Absolute Error (£m) \\\n", - "Year \n", - "2022 Outturn 11432 462 \n", - "2023 Outturn 11621 71 \n", - "2024 Forecast 11573 -83 \n", - "2025 Forecast 11668 104 \n", - "\n", - " Relative Error (%) \n", - "Year \n", - "2022 -4.2 \n", - "2023 -0.6 \n", - "2024 0.8 \n", - "2025 -0.9 " - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from policyengine_uk import Microsimulation\n", - "from policyengine_uk.data import EnhancedFRS\n", - "\n", - "sim_2019 = Microsimulation()\n", - "\n", - "cb_2019_onwards = [\n", - " int(sim_2019.calc(\"child_benefit\", year, map_to=\"household\").sum() / 1e6)\n", - " for year in range(2022, 2026)\n", - "]\n", - "\n", - "aggregates = pd.DataFrame(\n", - " {\n", - " \"PolicyEngine-UK Aggregate (£m)\": cb_2019_onwards,\n", - " \"Year\": list(range(2022, 2026)),\n", - " \"Official Estimate (£m)\": [11_081, 11_116, 10_981, 11_213],\n", - " \"Official Estimate Type\": [\"Outturn\"] * 2 + [\"Forecast\"] * 2,\n", - " \"UKMOD Aggregate (£m)\": [11_432, 11_621, 11_573, 11_668],\n", - " }\n", - ")\n", - "aggregates[\"Absolute Error (£m)\"] = (\n", - " aggregates[\"Official Estimate (£m)\"]\n", - " - aggregates[\"PolicyEngine-UK Aggregate (£m)\"]\n", - ")\n", - "aggregates[\"Relative Error (%)\"] = 100 * (\n", - " aggregates[\"PolicyEngine-UK Aggregate (£m)\"]\n", - " / aggregates[\"Official Estimate (£m)\"]\n", - " - 1\n", - ").round(3)\n", - "\n", - "aggregates.set_index(\"Year\")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "4ac5bf15-558d-433f-bbdf-726cbf0d67e8", - "metadata": { - "tags": [ - "hide-input" - ] - }, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ - { - "hovertemplate": "variable=PolicyEngine-UK Aggregate (£m)
Year=%{x}
value=%{y}", - "legendgroup": "PolicyEngine-UK Aggregate (£m)", - "line": { - "color": "#636efa", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "PolicyEngine-UK Aggregate (£m)", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - 2022, - 2023, - 2024, - 2025 - ], - "xaxis": "x", - "y": [ - 10619, - 11045, - 11064, - 11109 - ], - "yaxis": "y" - }, - { - "hovertemplate": "variable=Official Estimate (£m)
Year=%{x}
value=%{y}", - "legendgroup": "Official Estimate (£m)", - "line": { - "color": "#EF553B", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "Official Estimate (£m)", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - 2022, - 2023, - 2024, - 2025 - ], - "xaxis": "x", - "y": [ - 11081, - 11116, - 10981, - 11213 - ], - "yaxis": "y" - }, - { - "hovertemplate": "variable=UKMOD Aggregate (£m)
Year=%{x}
value=%{y}", - "legendgroup": "UKMOD Aggregate (£m)", - "line": { - "color": "#00cc96", - "dash": "solid" - }, - "marker": { - "symbol": "circle" - }, - "mode": "lines", - "name": "UKMOD Aggregate (£m)", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - 2022, - 2023, - 2024, - 2025 - ], - "xaxis": "x", - "y": [ - 11432, - 11621, - 11573, - 11668 - ], - "yaxis": "y" - } - ], - "layout": { - "legend": { - "title": { - "text": "" - }, - "tracegroupgap": 0 - }, - "margin": { - "t": 60 - }, - "template": { - "data": { - "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" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "white", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "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" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#f0f921" - ] - ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter" - } - ], - "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" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 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, - "#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, - "#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, - "#f0f921" - ] - ], - "sequentialminus": [ - [ - 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, - "#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 - } - } - }, - "title": { - "text": "Child Benefit aggregate spending" - }, - "xaxis": { - "anchor": "y", - "domain": [ - 0, - 1 - ], - "tickvals": [ - 2022, - 2023, - 2024, - 2025 - ], - "title": { - "text": "Year" - } - }, - "yaxis": { - "anchor": "x", - "domain": [ - 0, - 1 - ], - "range": [ - 0, - 15000 - ], - "title": { - "text": "Spending (£m)" - } - } - } - } - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import plotly.express as px\n", - "\n", - "px.line(\n", - " aggregates,\n", - " x=\"Year\",\n", - " y=[\n", - " \"PolicyEngine-UK Aggregate (£m)\",\n", - " \"Official Estimate (£m)\",\n", - " \"UKMOD Aggregate (£m)\",\n", - " ],\n", - ").update_layout(\n", - " template=\"plotly_white\",\n", - " title=\"Child Benefit aggregate spending\",\n", - " xaxis_tickvals=list(range(2022, 2026)),\n", - " yaxis_title=\"Spending (£m)\",\n", - " legend_title=\"\",\n", - " yaxis_range=(0, 15_000),\n", - ")" - ] } ], "metadata": { From efb10437ad06f501d3d9841b4e0ab4f0bdfe3a5f Mon Sep 17 00:00:00 2001 From: Nikhil Woodruff <35577657+nikhilwoodruff@users.noreply.github.com> Date: Thu, 14 Sep 2023 14:45:22 +0100 Subject: [PATCH 15/18] Versioning --- changelog_entry.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 0aca3e232..5355683f0 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +1,4 @@ -- bump: minor +- bump: patch changes: added: - - Update National Insurance documentation + - Documentation example. From c9d4a2a6a1911faa9135c8fe37df4f0458b103a8 Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Thu, 14 Sep 2023 13:53:48 +0000 Subject: [PATCH 16/18] Update PolicyEngine UK --- CHANGELOG.md | 7 +++++++ changelog.yaml | 5 +++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bf3085df..3c703d7b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.55.3] - 2023-09-14 13:53:16 + +### Added + +- Documentation example. + ## [0.55.2] - 2023-08-24 14:59:45 ### Added @@ -1007,6 +1013,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[0.55.3]: https://github.com/PolicyEngine/openfisca-uk/compare/0.55.2...0.55.3 [0.55.2]: https://github.com/PolicyEngine/openfisca-uk/compare/0.55.1...0.55.2 [0.55.1]: https://github.com/PolicyEngine/openfisca-uk/compare/0.55.0...0.55.1 [0.55.0]: https://github.com/PolicyEngine/openfisca-uk/compare/0.54.0...0.55.0 diff --git a/changelog.yaml b/changelog.yaml index 2a2ac599f..2006e5c89 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -836,3 +836,8 @@ added: - Documentation for fuel duty. date: 2023-08-24 14:59:45 +- bump: patch + changes: + added: + - Documentation example. + date: 2023-09-14 13:53:16 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 5355683f0..e69de29bb 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: patch - changes: - added: - - Documentation example. diff --git a/setup.py b/setup.py index 550cb11dc..85a85668c 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ setup( name="PolicyEngine-UK", - version="0.55.2", + version="0.55.3", author="PolicyEngine", author_email="nikhil@policyengine.org", classifiers=[ From 90c2f32b632dff564fd39dcae2f7de2152a4eaff Mon Sep 17 00:00:00 2001 From: Nikhil Woodruff <35577657+nikhilwoodruff@users.noreply.github.com> Date: Thu, 14 Sep 2023 16:18:38 +0100 Subject: [PATCH 17/18] Fix NI documentation page --- changelog_entry.yaml | 4 ++++ .../{national_insurance.ipynb => national-insurance.ipynb} | 0 2 files changed, 4 insertions(+) rename docs/book/programs/gov/hmrc/{national_insurance.ipynb => national-insurance.ipynb} (100%) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb..92e593786 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: patch + changes: + fixed: + - TOC entry for NI documentation. diff --git a/docs/book/programs/gov/hmrc/national_insurance.ipynb b/docs/book/programs/gov/hmrc/national-insurance.ipynb similarity index 100% rename from docs/book/programs/gov/hmrc/national_insurance.ipynb rename to docs/book/programs/gov/hmrc/national-insurance.ipynb From 71b20598f7ba517fd16a9d5998f0ba2011e85feb Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Thu, 14 Sep 2023 15:25:54 +0000 Subject: [PATCH 18/18] Update PolicyEngine UK --- CHANGELOG.md | 7 +++++++ changelog.yaml | 5 +++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c703d7b4..9fc956413 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.55.4] - 2023-09-14 15:25:24 + +### Fixed + +- TOC entry for NI documentation. + ## [0.55.3] - 2023-09-14 13:53:16 ### Added @@ -1013,6 +1019,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[0.55.4]: https://github.com/PolicyEngine/openfisca-uk/compare/0.55.3...0.55.4 [0.55.3]: https://github.com/PolicyEngine/openfisca-uk/compare/0.55.2...0.55.3 [0.55.2]: https://github.com/PolicyEngine/openfisca-uk/compare/0.55.1...0.55.2 [0.55.1]: https://github.com/PolicyEngine/openfisca-uk/compare/0.55.0...0.55.1 diff --git a/changelog.yaml b/changelog.yaml index 2006e5c89..82d4609f3 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -841,3 +841,8 @@ added: - Documentation example. date: 2023-09-14 13:53:16 +- bump: patch + changes: + fixed: + - TOC entry for NI documentation. + date: 2023-09-14 15:25:24 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 92e593786..e69de29bb 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: patch - changes: - fixed: - - TOC entry for NI documentation. diff --git a/setup.py b/setup.py index 85a85668c..a652672d0 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ setup( name="PolicyEngine-UK", - version="0.55.3", + version="0.55.4", author="PolicyEngine", author_email="nikhil@policyengine.org", classifiers=[

VVk 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 N=z-pS#Jwk>{{sb>U7r8| literal 0 HcmV?d00001 diff --git a/docs/book/model/validation.ipynb b/docs/book/model/validation.ipynb index a388e1901..cd7e9098b 100644 --- a/docs/book/model/validation.ipynb +++ b/docs/book/model/validation.ipynb @@ -118,7 +118,7 @@ "\n", "def estimate(variable: str):\n", " return [\n", - " sim.calculate(variable, period=year).sum() / 1e9\n", + " sim.calculate(variable, period=year, map_to=\"household\").sum() / 1e9\n", " for year in range(2023, 2026)\n", " ]\n", "\n", diff --git a/docs/book/programs/gov/hmrc/child-benefit.ipynb b/docs/book/programs/gov/hmrc/child-benefit.ipynb index d6e0b41e4..a6cb1c291 100644 --- a/docs/book/programs/gov/hmrc/child-benefit.ipynb +++ b/docs/book/programs/gov/hmrc/child-benefit.ipynb @@ -35,13 +35,13 @@ "text/html": [ "\n", - "\n", + "
\n", " \n", " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", " \n", @@ -52,98 +52,98 @@ " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", "
  ValueReferenceValueReference
Date
2007-04-09Eldest£18.80The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)2007-04-09Eldest£18.80The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)
Additional£12.10The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)Additional£12.10The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)
2009-01-05Eldest£20.00The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)2009-01-05Eldest£20.00The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)
Additional£13.20The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)Additional£13.20The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)
2010-04-12Eldest£20.30The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)2010-04-12Eldest£20.30The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)
Additional£13.40The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)Additional£13.40The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)
2014-04-07Eldest£20.50The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)2014-04-07Eldest£20.50The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)
Additional£13.55The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)Additional£13.55The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)
2015-04-06Eldest£20.70The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)2015-04-06Eldest£20.70The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)
Additional£13.70The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)Additional£13.70The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)
2020-04-06Eldest£21.05The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)2020-04-06Eldest£21.05The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)
Additional£13.95The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)Additional£13.95The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)
2021-04-12Eldest£21.15The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)2021-04-12Eldest£21.15The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)
Additional£14.00The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)Additional£14.00The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b)
2022-04-01Eldest£21.802022-04-01Eldest£21.80
Additional£14.45Additional£14.45
\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 1, @@ -318,1164 +318,6 @@ "\n", "PolicyEngine-UK simulates Child Benefit as described for each family in the survey microdata, preserving reported takeup. Child Benefit has a relatively high take-up rate compared to other benefits, most recently estimated at 92%. We use the central estimates from 2006 through 2018, provided by HMRC [Child Benefit Statistics: Annual Release, August 2020 Main Commentary | Table 3.1](https://www.gov.uk/government/statistics/child-benefit-statistics-annual-release-august-2020/child-benefit-statistics-annual-release-august-2020-main-commentary), which are calculated from microsimulation and administrative data held by HMRC." ] - }, - { - "cell_type": "markdown", - "id": "f559b572-1391-4ff3-8e9f-6e325475b5d2", - "metadata": {}, - "source": [ - "## Validation\n", - "\n", - "PolicyEngine-UK matches administrative statistics closely, due to the simplicity of the calculations. The Department for Work and Pensions publishes benefit expenditure and caseload tables every year: below, we use the [2021 release](https://www.gov.uk/government/publications/benefit-expenditure-and-caseload-tables-2021) (the latest at the time of writing) release to compare against PolicyEngine-UK. The table and graph below also show the aggregate spending estimated by UKMOD, as per the latest [country report](https://www.iser.essex.ac.uk/research/publications/working-papers/cempa/cempa7-20.pdf#page=129).\n", - "\n", - "The administrative spending figures include Guardian's Allowance, whereas PolicyEngine-UK and UKMOD do not. Between 2018 and 2021, the DWP replaced previous forecasts with outturn data, revising the forecast aggregate spending for 2018, 2019 and 2020 down by £119m, £250m and £455m, respectively." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "1e21a169-e0fa-4374-9cba-f36062cf0eaa", - "metadata": { - "tags": [ - "hide-input" - ] - }, - "outputs": [ - { - "data": { - "text/html": [ - "