From 82f0d7137b883a42b12f6f7f190c27629d50b216 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Wed, 27 May 2026 11:50:02 +0200 Subject: [PATCH 1/7] Add PIP point system planning doc (#1069) #1069 references SI 2013/377 Part 2 (daily living activities and points) and asks for the underlying point system to be modelled. Currently PolicyEngine UK reads the category (STANDARD / ENHANCED / NONE) directly via pip_dl_category and pip_m_category and multiplies by the weekly rate. That's correct for population aggregates because the FRS doesn't capture activity-level scores and DWP's caseload publications report bands rather than scores. Where the points machinery would matter: descriptor reforms (e.g. the 2024 Green Paper proposals), threshold reforms (raising the 8/12 cutoffs), and any analysis distributing by activity. Three-phase plan: 1. Points-to-category mapping behind a use_point_system switch parameter, preserving the categorical default (10 daily-living activity scores + 2 mobility activity scores -> total -> band via threshold params). 2. Descriptor-level parameters under gov/dwp/pip/descriptors/ so descriptor point values themselves are reformable. 3. Data-side descriptor imputation in policyengine-uk-data (needed to make Phase 2 reforms work on the calibrated microsim). Pure planning; current pip variables and parameters unchanged. --- changelog.d/1069.md | 1 + docs/book/programs/gov/dwp/pip-points-plan.md | 143 ++++++++++++++++++ 2 files changed, 144 insertions(+) create mode 100644 changelog.d/1069.md create mode 100644 docs/book/programs/gov/dwp/pip-points-plan.md diff --git a/changelog.d/1069.md b/changelog.d/1069.md new file mode 100644 index 0000000000..fdf62f3ec5 --- /dev/null +++ b/changelog.d/1069.md @@ -0,0 +1 @@ +- Add a PIP point system planning docs page at `docs/book/programs/gov/dwp/pip-points-plan.md` capturing the SI 2013/377 activity-and-descriptor scoring rules and proposing a three-phase implementation route (points-to-category mapping behind a `use_point_system` flag, descriptor-level parameters, then data-side descriptor imputation) that preserves the current categorical PIP model by default. diff --git a/docs/book/programs/gov/dwp/pip-points-plan.md b/docs/book/programs/gov/dwp/pip-points-plan.md new file mode 100644 index 0000000000..c14fdcabbe --- /dev/null +++ b/docs/book/programs/gov/dwp/pip-points-plan.md @@ -0,0 +1,143 @@ +# PIP point system (planned) + +```{warning} +**Not yet modelled.** PolicyEngine UK currently takes the PIP daily-living +and mobility **band** as a categorical input (`pip_dl_category` and +`pip_m_category`, each `STANDARD | ENHANCED | NONE`) and multiplies by +the published weekly rate. The **points-system** logic that determines +which band a claimant falls into — 0–12 daily-living activities and 12 +mobility activities, scored from the legislation — is **not** modelled. +This page captures the proposed scope, tracked under +[#1069](https://github.com/PolicyEngine/policyengine-uk/issues/1069). +``` + +## What PIP scoring actually is + +The Personal Independence Payment is awarded on a **points-based** +assessment defined in [SI 2013/377][si-377] (the Social Security +(Personal Independence Payment) Regulations 2013): + +- **Part 2: Daily living activities** — ten activities (preparing food, + taking nutrition, managing therapy, washing and bathing, managing + toilet needs, dressing and undressing, communicating verbally, + reading and understanding signs and symbols, engaging with other + people face-to-face, making budgeting decisions). Each activity has + a set of descriptors with point values from 0 to 12. +- **Part 3: Mobility activities** — two activities (planning and + following a journey, moving around). Same descriptor-based scoring. + +The award rule: + +| Total points (per component) | Award | +|-----------------------------|-------| +| 0–7 | None | +| 8–11 | Standard rate | +| 12+ | Enhanced rate | + +Daily living and mobility are scored independently — a claimant can be +on standard daily-living and enhanced mobility, or any other +combination. + +## Why the current categorical model is reasonable for microsim + +For population-aggregate simulation, the categorical bands are +sufficient because: + +- the FRS doesn't capture activity-level point scores at all, +- DWP's published caseload reports band counts (standard / enhanced) + rather than activity scores, +- the calibrated `pip_dl_category` / `pip_m_category` in + `policyengine-uk-data` are derived directly from FRS reported PIP + payments and DWP outturn caseload. + +So for headline distributional and fiscal analysis the categorical +inputs are correct. + +## Where the point system would matter + +Three reform scenarios that the categorical model can't answer: + +1. **Activity-level descriptor reform** — e.g. the 2024 Conservative + Green Paper proposed restricting points awarded for descriptors like + "needs prompting to prepare food". A categorical input can't capture + this; the categorical band wouldn't shift unless an analyst manually + re-bands a synthetic distribution. +2. **Threshold reform** — changing the band thresholds (e.g. raising + the standard-rate floor from 8 to 10 points). Same limitation. +3. **Targeted analysis by descriptor** — distributional questions like + "how does the enhanced cohort split between mobility activities" need + the underlying activity scores. + +## Proposed scope + +### Phase 1 — points-to-category mapping + +- Add the threshold parameters under `gov/dwp/pip/`: + - `daily_living/standard_threshold.yaml` (8) + - `daily_living/enhanced_threshold.yaml` (12) + - `mobility/standard_threshold.yaml` (8) + - `mobility/enhanced_threshold.yaml` (12) +- Add per-activity score inputs as `pip_dl_activity_1_score` ... + `pip_dl_activity_10_score`, `pip_m_activity_1_score`, + `pip_m_activity_2_score`. Type: integer (Person, YEAR), default 0. +- Add derived variables `pip_dl_total_score` and `pip_m_total_score` + summing the activity scores. +- Add `pip_dl_category_from_points` and `pip_m_category_from_points` + that look up the band from the total score against the threshold + parameters. +- Keep `pip_dl_category` / `pip_m_category` as the **input** the rest of + the model reads, with a new switch parameter + `gov.dwp.pip.use_point_system` (default `false`) that, when `true`, + overrides the categorical input with the points-derived band. + +This is a strict superset of the current model: the categorical input +remains authoritative by default, and analysts opting into the points +machinery (for reform analysis) get the activity-level surface. + +### Phase 2 — descriptor-level parameters + +- Per-activity descriptor tables under `gov/dwp/pip/descriptors/`, + encoding the point value of each descriptor in SI 2013/377. The + representation can be flat (one YAML per activity with a list of + `(descriptor_id, points)` entries). +- A `pip_dl_activity_1_descriptor` (etc.) enum input that selects which + descriptor applies; the activity score is then a parameter lookup. +- Reform-side: descriptor point values are then parameters that can be + perturbed for "what if descriptor X scored 4 instead of 6" analyses. + +### Phase 3 — data-side imputation + +- The FRS provides PIP payment amounts but not descriptor selections. + `policyengine-uk-data` would need to impute descriptor selections per + claimant that are consistent with the observed band. The plausible + approach is to draw uniformly across descriptor combinations that + sum to the observed band, weighted by DWP-published "activities most + commonly scoring above zero" tables. +- This phase is the heaviest and is only required to make Phase 2 + reforms work on the calibrated microsim. For the household + calculator, users can input activity scores directly. + +## Open questions + +- Should the score inputs default to `None` (sentinel) or 0? Sentinel + is cleaner when the points machinery is opt-in via the + `use_point_system` flag. +- DWP's PIP review process distinguishes "ongoing" vs "fixed-term" + awards. Should the model expose the award duration, or treat all + current awards as ongoing? (Current model assumes ongoing.) +- The 2024 Green Paper considered moving some of the highest-points + activities to a separate disability benefit — should the design + anticipate that? + +## References + +- [The Social Security (Personal Independence Payment) Regulations 2013 (SI 2013/377)][si-377] — Parts 2 and 3 define the point system. +- DWP, [Personal Independence Payment: Assessment guide][assess-guide]. +- DWP, [PIP statistics](https://www.gov.uk/government/collections/personal-independence-payment-statistics) — caseload by component and band. +- DWP, [Modernising support for independent living: the health and disability green paper (April 2024)][green-paper] — proposals to restrict descriptors. +- Issue: [#1069](https://github.com/PolicyEngine/policyengine-uk/issues/1069). +- Existing model: `pip_dl_category`, `pip_m_category`, `pip_dl`, `pip_m`. + +[si-377]: https://www.legislation.gov.uk/uksi/2013/377 +[assess-guide]: https://www.gov.uk/government/publications/personal-independence-payment-assessment-guide-for-assessment-providers +[green-paper]: https://www.gov.uk/government/consultations/modernising-support-for-independent-living-the-health-and-disability-green-paper From 18215883d7f7d1052bd1e2c15ec901c8ef5dd44e Mon Sep 17 00:00:00 2001 From: vahid-ahmadi Date: Thu, 8 Oct 2026 15:49:30 +0100 Subject: [PATCH 2/7] Refresh the page against current main and Microcosm UK; type the changelog fragment Co-Authored-By: Claude Opus 5.5 --- changelog.d/1069-pip-points-plan.added.md | 1 + changelog.d/1069.md | 1 - docs/book/programs/gov/dwp/pip-points-plan.md | 40 +++++++++++++------ 3 files changed, 29 insertions(+), 13 deletions(-) create mode 100644 changelog.d/1069-pip-points-plan.added.md delete mode 100644 changelog.d/1069.md diff --git a/changelog.d/1069-pip-points-plan.added.md b/changelog.d/1069-pip-points-plan.added.md new file mode 100644 index 0000000000..759d59fe3d --- /dev/null +++ b/changelog.d/1069-pip-points-plan.added.md @@ -0,0 +1 @@ +Added a PIP point system planning page (docs/book/programs/gov/dwp/pip-points-plan.md) setting out the SI 2013/377 scoring rules and a phased route to modelling them, starting from #1661. diff --git a/changelog.d/1069.md b/changelog.d/1069.md deleted file mode 100644 index fdf62f3ec5..0000000000 --- a/changelog.d/1069.md +++ /dev/null @@ -1 +0,0 @@ -- Add a PIP point system planning docs page at `docs/book/programs/gov/dwp/pip-points-plan.md` capturing the SI 2013/377 activity-and-descriptor scoring rules and proposing a three-phase implementation route (points-to-category mapping behind a `use_point_system` flag, descriptor-level parameters, then data-side descriptor imputation) that preserves the current categorical PIP model by default. diff --git a/docs/book/programs/gov/dwp/pip-points-plan.md b/docs/book/programs/gov/dwp/pip-points-plan.md index c14fdcabbe..88d0d8fb8c 100644 --- a/docs/book/programs/gov/dwp/pip-points-plan.md +++ b/docs/book/programs/gov/dwp/pip-points-plan.md @@ -5,12 +5,24 @@ and mobility **band** as a categorical input (`pip_dl_category` and `pip_m_category`, each `STANDARD | ENHANCED | NONE`) and multiplies by the published weekly rate. The **points-system** logic that determines -which band a claimant falls into — 0–12 daily-living activities and 12 -mobility activities, scored from the legislation — is **not** modelled. +which band a claimant falls into — ten daily-living activities and two +mobility activities, each scored 0–12 points under the legislation — is +**not** modelled. This page captures the proposed scope, tracked under [#1069](https://github.com/PolicyEngine/policyengine-uk/issues/1069). ``` +```{admonition} Status, October 2026 +A first step is open as +[#1661](https://github.com/PolicyEngine/policyengine-uk/pull/1661): total +points inputs (`pip_dl_points`, `pip_m_points`) and the 8- and 12-point +thresholds under `gov.dwp.pip.{daily_living,mobility}.points_thresholds`, +with the category derived from points only when it is not given as an +input. That is a simpler form of Phase 1 below: no per-activity scores +and no `use_point_system` switch, since a category input already takes +precedence over the formula. +``` + ## What PIP scoring actually is The Personal Independence Payment is awarded on a **points-based** @@ -46,9 +58,9 @@ sufficient because: - the FRS doesn't capture activity-level point scores at all, - DWP's published caseload reports band counts (standard / enhanced) rather than activity scores, -- the calibrated `pip_dl_category` / `pip_m_category` in - `policyengine-uk-data` are derived directly from FRS reported PIP - payments and DWP outturn caseload. +- the data pipeline (now Microcosm UK) sets `pip_dl_category` / + `pip_m_category` from the PIP components respondents report in the + FRS. So for headline distributional and fiscal analysis the categorical inputs are correct. @@ -57,9 +69,12 @@ inputs are correct. Three reform scenarios that the categorical model can't answer: -1. **Activity-level descriptor reform** — e.g. the 2024 Conservative - Green Paper proposed restricting points awarded for descriptors like - "needs prompting to prepare food". A categorical input can't capture +1. **Activity-level descriptor reform** — e.g. the April 2024 green paper + proposed changing the descriptors, and the March 2025 *Pathways to + Work* green paper proposed requiring at least four points in one + daily-living activity for the daily-living component. The government + withdrew the four-point change in July 2025, pending a review of the + PIP assessment. A categorical input can't capture this; the categorical band wouldn't shift unless an analyst manually re-bands a synthetic distribution. 2. **Threshold reform** — changing the band thresholds (e.g. raising @@ -108,7 +123,7 @@ machinery (for reform analysis) get the activity-level surface. ### Phase 3 — data-side imputation - The FRS provides PIP payment amounts but not descriptor selections. - `policyengine-uk-data` would need to impute descriptor selections per + The data pipeline (Microcosm UK) would need to impute descriptor selections per claimant that are consistent with the observed band. The plausible approach is to draw uniformly across descriptor combinations that sum to the observed band, weighted by DWP-published "activities most @@ -125,9 +140,9 @@ machinery (for reform analysis) get the activity-level surface. - DWP's PIP review process distinguishes "ongoing" vs "fixed-term" awards. Should the model expose the award duration, or treat all current awards as ongoing? (Current model assumes ongoing.) -- The 2024 Green Paper considered moving some of the highest-points - activities to a separate disability benefit — should the design - anticipate that? +- The outcome of the PIP assessment review may change descriptors or + the scoring rule; the descriptor-parameter design in Phase 2 should + make such changes a parameter edit. ## References @@ -135,6 +150,7 @@ machinery (for reform analysis) get the activity-level surface. - DWP, [Personal Independence Payment: Assessment guide][assess-guide]. - DWP, [PIP statistics](https://www.gov.uk/government/collections/personal-independence-payment-statistics) — caseload by component and band. - DWP, [Modernising support for independent living: the health and disability green paper (April 2024)][green-paper] — proposals to restrict descriptors. +- DWP, [Pathways to Work: Reforming Benefits and Support to Get Britain Working (March 2025)](https://www.gov.uk/government/consultations/pathways-to-work-reforming-benefits-and-support-to-get-britain-working-green-paper) — the four-point proposal. - Issue: [#1069](https://github.com/PolicyEngine/policyengine-uk/issues/1069). - Existing model: `pip_dl_category`, `pip_m_category`, `pip_dl`, `pip_m`. From ceedee1fb9218e229904b14b9f9f65816a506941 Mon Sep 17 00:00:00 2001 From: vahid-ahmadi Date: Mon, 12 Oct 2026 11:06:05 +0200 Subject: [PATCH 3/7] Bring the PIP points plan up to date Cite Schedule 1 of SI 2013/377, note per-activity maxima, describe how Microcosm UK derives the PIP categories, record that uk-data #408 was closed with the points work moved to microcosm #145, and drop em dashes. Co-Authored-By: Claude Opus 5.5 --- docs/book/programs/gov/dwp/pip-points-plan.md | 59 +++++++++++-------- 1 file changed, 35 insertions(+), 24 deletions(-) diff --git a/docs/book/programs/gov/dwp/pip-points-plan.md b/docs/book/programs/gov/dwp/pip-points-plan.md index 88d0d8fb8c..9a0e10eb3f 100644 --- a/docs/book/programs/gov/dwp/pip-points-plan.md +++ b/docs/book/programs/gov/dwp/pip-points-plan.md @@ -5,9 +5,9 @@ and mobility **band** as a categorical input (`pip_dl_category` and `pip_m_category`, each `STANDARD | ENHANCED | NONE`) and multiplies by the published weekly rate. The **points-system** logic that determines -which band a claimant falls into — ten daily-living activities and two -mobility activities, each scored 0–12 points under the legislation — is -**not** modelled. +which band a claimant falls into (ten daily-living activities and two +mobility activities, with descriptors worth 0 to 12 points under the +legislation) is **not** modelled. This page captures the proposed scope, tracked under [#1069](https://github.com/PolicyEngine/policyengine-uk/issues/1069). ``` @@ -21,22 +21,32 @@ with the category derived from points only when it is not given as an input. That is a simpler form of Phase 1 below: no per-activity scores and no `use_point_system` switch, since a category input already takes precedence over the formula. + +PR #1661 is waiting on a data-side path. Its companion, +[policyengine-uk-data #408](https://github.com/PolicyEngine/policyengine-uk-data/pull/408) +(points imputed from the observed categories), was closed in June 2026 +in the uk-data archive clean-up, with PIP points derivation to move into +Microcosm UK's source stages +([microcosm #145](https://github.com/PolicyEngine/microcosm/issues/145)) +once the input variables exist here. ``` ## What PIP scoring actually is The Personal Independence Payment is awarded on a **points-based** -assessment defined in [SI 2013/377][si-377] (the Social Security -(Personal Independence Payment) Regulations 2013): +assessment defined in Schedule 1 to [SI 2013/377][si-377] (the Social +Security (Personal Independence Payment) Regulations 2013): -- **Part 2: Daily living activities** — ten activities (preparing food, +- **Part 2: Daily living activities**: ten activities (preparing food, taking nutrition, managing therapy, washing and bathing, managing toilet needs, dressing and undressing, communicating verbally, reading and understanding signs and symbols, engaging with other people face-to-face, making budgeting decisions). Each activity has - a set of descriptors with point values from 0 to 12. -- **Part 3: Mobility activities** — two activities (planning and - following a journey, moving around). Same descriptor-based scoring. + a set of descriptors with point values from 0 up to 12; the top + value varies by activity. +- **Part 3: Mobility activities**: two activities (planning and + following a journey, moving around), each with descriptors worth up + to 12 points. The award rule: @@ -46,7 +56,7 @@ The award rule: | 8–11 | Standard rate | | 12+ | Enhanced rate | -Daily living and mobility are scored independently — a claimant can be +Daily living and mobility are scored independently, so a claimant can be on standard daily-living and enhanced mobility, or any other combination. @@ -58,9 +68,10 @@ sufficient because: - the FRS doesn't capture activity-level point scores at all, - DWP's published caseload reports band counts (standard / enhanced) rather than activity scores, -- the data pipeline (now Microcosm UK) sets `pip_dl_category` / - `pip_m_category` from the PIP components respondents report in the - FRS. +- the data pipeline (now Microcosm UK) sets `pip_dl_category` and + `pip_m_category` by comparing the weekly PIP daily-living and mobility + amounts respondents report in the FRS with the standard and enhanced + rates. So for headline distributional and fiscal analysis the categorical inputs are correct. @@ -69,23 +80,23 @@ inputs are correct. Three reform scenarios that the categorical model can't answer: -1. **Activity-level descriptor reform** — e.g. the April 2024 green paper - proposed changing the descriptors, and the March 2025 *Pathways to +1. **Activity-level descriptor reform**: for example, the April 2024 + green paper consulted on changing the descriptors, and the March 2025 *Pathways to Work* green paper proposed requiring at least four points in one daily-living activity for the daily-living component. The government withdrew the four-point change in July 2025, pending a review of the PIP assessment. A categorical input can't capture this; the categorical band wouldn't shift unless an analyst manually re-bands a synthetic distribution. -2. **Threshold reform** — changing the band thresholds (e.g. raising +2. **Threshold reform**: changing the band thresholds (for example raising the standard-rate floor from 8 to 10 points). Same limitation. -3. **Targeted analysis by descriptor** — distributional questions like +3. **Targeted analysis by descriptor**: distributional questions like "how does the enhanced cohort split between mobility activities" need the underlying activity scores. ## Proposed scope -### Phase 1 — points-to-category mapping +### Phase 1: points-to-category mapping - Add the threshold parameters under `gov/dwp/pip/`: - `daily_living/standard_threshold.yaml` (8) @@ -109,7 +120,7 @@ This is a strict superset of the current model: the categorical input remains authoritative by default, and analysts opting into the points machinery (for reform analysis) get the activity-level surface. -### Phase 2 — descriptor-level parameters +### Phase 2: descriptor-level parameters - Per-activity descriptor tables under `gov/dwp/pip/descriptors/`, encoding the point value of each descriptor in SI 2013/377. The @@ -120,7 +131,7 @@ machinery (for reform analysis) get the activity-level surface. - Reform-side: descriptor point values are then parameters that can be perturbed for "what if descriptor X scored 4 instead of 6" analyses. -### Phase 3 — data-side imputation +### Phase 3: data-side imputation - The FRS provides PIP payment amounts but not descriptor selections. The data pipeline (Microcosm UK) would need to impute descriptor selections per @@ -146,11 +157,11 @@ machinery (for reform analysis) get the activity-level surface. ## References -- [The Social Security (Personal Independence Payment) Regulations 2013 (SI 2013/377)][si-377] — Parts 2 and 3 define the point system. +- [The Social Security (Personal Independence Payment) Regulations 2013 (SI 2013/377)][si-377]: Schedule 1, Parts 2 and 3 define the point system. - DWP, [Personal Independence Payment: Assessment guide][assess-guide]. -- DWP, [PIP statistics](https://www.gov.uk/government/collections/personal-independence-payment-statistics) — caseload by component and band. -- DWP, [Modernising support for independent living: the health and disability green paper (April 2024)][green-paper] — proposals to restrict descriptors. -- DWP, [Pathways to Work: Reforming Benefits and Support to Get Britain Working (March 2025)](https://www.gov.uk/government/consultations/pathways-to-work-reforming-benefits-and-support-to-get-britain-working-green-paper) — the four-point proposal. +- DWP, [PIP statistics](https://www.gov.uk/government/collections/personal-independence-payment-statistics: caseload by component and band. +- DWP, [Modernising support for independent living: the health and disability green paper (April 2024)][green-paper]: proposals on the descriptors. +- DWP, [Pathways to Work: Reforming Benefits and Support to Get Britain Working (March 2025)](https://www.gov.uk/government/consultations/pathways-to-work-reforming-benefits-and-support-to-get-britain-working-green-paper): the four-point proposal. - Issue: [#1069](https://github.com/PolicyEngine/policyengine-uk/issues/1069). - Existing model: `pip_dl_category`, `pip_m_category`, `pip_dl`, `pip_m`. From 3b89aee1636d3a28ef67a7de446387b00ff16a5b Mon Sep 17 00:00:00 2001 From: vahid-ahmadi Date: Mon, 12 Oct 2026 11:41:39 +0200 Subject: [PATCH 4/7] Describe the Enhanced FRS as the certified UK dataset policyengine.py 6.2.6 certifies policyengine-uk-data 1.58.0 as the UK default; Microcosm UK is the replacement being built. Both derive the fields this page relies on in the same way. Co-Authored-By: Claude Opus 5.5 --- docs/book/programs/gov/dwp/pip-points-plan.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/book/programs/gov/dwp/pip-points-plan.md b/docs/book/programs/gov/dwp/pip-points-plan.md index 9a0e10eb3f..33afd2ef86 100644 --- a/docs/book/programs/gov/dwp/pip-points-plan.md +++ b/docs/book/programs/gov/dwp/pip-points-plan.md @@ -68,8 +68,9 @@ sufficient because: - the FRS doesn't capture activity-level point scores at all, - DWP's published caseload reports band counts (standard / enhanced) rather than activity scores, -- the data pipeline (now Microcosm UK) sets `pip_dl_category` and - `pip_m_category` by comparing the weekly PIP daily-living and mobility +- the data (both the certified Enhanced FRS from policyengine-uk-data + and Microcosm UK, which is being built to replace it) sets + `pip_dl_category` and `pip_m_category` by comparing the weekly PIP daily-living and mobility amounts respondents report in the FRS with the standard and enhanced rates. @@ -134,8 +135,8 @@ machinery (for reform analysis) get the activity-level surface. ### Phase 3: data-side imputation - The FRS provides PIP payment amounts but not descriptor selections. - The data pipeline (Microcosm UK) would need to impute descriptor selections per - claimant that are consistent with the observed band. The plausible + The data (Microcosm UK, as the replacement dataset) would need to + impute descriptor selections per claimant that are consistent with the observed band. The plausible approach is to draw uniformly across descriptor combinations that sum to the observed band, weighted by DWP-published "activities most commonly scoring above zero" tables. From 0b013a6c1a24c6726281bcf94e68627f1604c584 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Fri, 23 Oct 2026 02:39:11 -0400 Subject: [PATCH 5/7] Bring the PIP point system plan up to date with main and its sources - #1661 merged on 21 October 2026: pip_dl_points and pip_m_points and the gov.dwp.pip.{daily_living,mobility}.points_thresholds parameters exist, so the page is "partly planned"; the category comes from points only when none is supplied for the year, and an earlier category carries forward unless points are newer (utils/pip.py). - No data path supplies points: microcosm#145 closed on 16 October with the PIP points item dropped. - Microcosm UK is the certified default (policyengine.py 6.10.0), not a dataset "being built"; both derive bands from reported amounts. - Threshold reforms now work for households entered with points, not in microsimulation; Phase 1's threshold parameters are done. - Activity 8 is "reading and understanding signs, symbols and words" (SI 2013/377 Sch. 1 Part 2). - No DWP table is called "activities most commonly scoring above zero"; the per-activity score distributions are Tables 2.27 and 2.28 of the Pathways to Work evidence pack, chapter 2. - Replaced the released .added fragment with a .changed fragment. Co-Authored-By: Claude Opus 5.5 --- ...069-pip-points-page-corrections.changed.md | 1 + changelog.d/1069-pip-points-plan.added.md | 1 - docs/book/programs/gov/dwp/pip-points-plan.md | 66 +++++++++++-------- 3 files changed, 38 insertions(+), 30 deletions(-) create mode 100644 changelog.d/1069-pip-points-page-corrections.changed.md delete mode 100644 changelog.d/1069-pip-points-plan.added.md diff --git a/changelog.d/1069-pip-points-page-corrections.changed.md b/changelog.d/1069-pip-points-page-corrections.changed.md new file mode 100644 index 0000000000..557b043573 --- /dev/null +++ b/changelog.d/1069-pip-points-page-corrections.changed.md @@ -0,0 +1 @@ +Brought the PIP point system planning page (`docs/book/programs/gov/dwp/pip-points-plan.md`) up to date: #1661 merged on 21 October 2026, so total points and the 8- and 12-point thresholds are modelled, with no data path supplying points yet; Microcosm #145 closed without the points item; Microcosm UK is now the certified default; and the descriptor-weighting source is DWP's Pathways to Work evidence pack (Tables 2.27 and 2.28). diff --git a/changelog.d/1069-pip-points-plan.added.md b/changelog.d/1069-pip-points-plan.added.md deleted file mode 100644 index 759d59fe3d..0000000000 --- a/changelog.d/1069-pip-points-plan.added.md +++ /dev/null @@ -1 +0,0 @@ -Added a PIP point system planning page (docs/book/programs/gov/dwp/pip-points-plan.md) setting out the SI 2013/377 scoring rules and a phased route to modelling them, starting from #1661. diff --git a/docs/book/programs/gov/dwp/pip-points-plan.md b/docs/book/programs/gov/dwp/pip-points-plan.md index 67a20e8091..f43fcdbf46 100644 --- a/docs/book/programs/gov/dwp/pip-points-plan.md +++ b/docs/book/programs/gov/dwp/pip-points-plan.md @@ -1,34 +1,39 @@ -# PIP point system (planned) +# PIP point system (partly planned) ```{warning} -**Not yet modelled.** PolicyEngine UK currently takes the PIP daily-living -and mobility **band** as a categorical input (`pip_dl_category` and -`pip_m_category`, each `STANDARD | ENHANCED | NONE`) and multiplies by -the published weekly rate. The **points-system** logic that determines -which band a claimant falls into (ten daily-living activities and two -mobility activities, with descriptors worth 0 to 12 points under the -legislation) is **not** modelled. +**Partly modelled.** PolicyEngine UK sets the PIP daily-living and +mobility **band** in `pip_dl_category` and `pip_m_category` (each +`STANDARD | ENHANCED | NONE`) and multiplies by the published weekly rate. +A band can be given as an input or derived from total points +(`pip_dl_points`, `pip_m_points`) against the 8- and 12-point thresholds. +The activity-level logic (ten daily-living activities and two mobility +activities, with descriptors worth 0 to 12 points under the legislation) +is **not** modelled. This page captures the proposed scope, tracked under [#1069](https://github.com/PolicyEngine/policyengine-uk/issues/1069). ``` ```{admonition} Status, October 2026 -A first step is open as +A first step merged on 21 October 2026 as [#1661](https://github.com/PolicyEngine/policyengine-uk/pull/1661): total points inputs (`pip_dl_points`, `pip_m_points`) and the 8- and 12-point -thresholds under `gov.dwp.pip.{daily_living,mobility}.points_thresholds`, -with the category derived from points only when it is not given as an -input. That is a simpler form of Phase 1 below: no per-activity scores -and no `use_point_system` switch, since a category input already takes -precedence over the formula. - -PR #1661 is waiting on a data-side path. Its companion, +thresholds under `gov.dwp.pip.{daily_living,mobility}.points_thresholds`. +The category is derived from the person's latest points only when no +category is given as an input for the year; a category given for an +earlier year carries forward unless the person has points for a later year +(`policyengine_uk/utils/pip.py`). That is a simpler form of Phase 1 below: +no per-activity scores and no `use_point_system` switch, since a category +input already takes precedence over the formula. + +No data path supplies points yet. The datasets store categories, not +points, so points play no part in microsimulation. The companion PR, [policyengine-uk-data #408](https://github.com/PolicyEngine/policyengine-uk-data/pull/408) (points imputed from the observed categories), was closed in June 2026 in the uk-data archive clean-up, with PIP points derivation to move into Microcosm UK's source stages ([microcosm #145](https://github.com/PolicyEngine/microcosm/issues/145)) -once the input variables exist here. +once the input variables existed here. Microcosm #145 closed on 16 October +2026 with that item dropped, because the variables did not exist yet. ``` ## What PIP scoring actually is @@ -40,7 +45,7 @@ Security (Personal Independence Payment) Regulations 2013): - **Part 2: Daily living activities**: ten activities (preparing food, taking nutrition, managing therapy, washing and bathing, managing toilet needs, dressing and undressing, communicating verbally, - reading and understanding signs and symbols, engaging with other + reading and understanding signs, symbols and words, engaging with other people face-to-face, making budgeting decisions). Each activity has a set of descriptors with point values from 0 up to 12; the top value varies by activity. @@ -68,8 +73,8 @@ sufficient because: - the FRS doesn't capture activity-level point scores at all, - DWP's published caseload reports band counts (standard / enhanced) rather than activity scores, -- the data (both the certified Enhanced FRS from policyengine-uk-data - and Microcosm UK, which is being built to replace it) sets +- the data (both Microcosm UK, the certified default since October 2026, + and the Enhanced FRS from policyengine-uk-data, which it replaced) sets `pip_dl_category` and `pip_m_category` by comparing the weekly PIP daily-living and mobility amounts respondents report in the FRS with the standard and enhanced rates. @@ -90,7 +95,9 @@ Three reform scenarios that the categorical model can't answer: this; the categorical band wouldn't shift unless an analyst manually re-bands a synthetic distribution. 2. **Threshold reform**: changing the band thresholds (for example raising - the standard-rate floor from 8 to 10 points). Same limitation. + the standard-rate floor from 8 to 10 points). The thresholds are now + parameters, so this works for households entered with points, but not in + microsimulation, where the data supply bands rather than points. 3. **Targeted analysis by descriptor**: distributional questions like "how does the enhanced cohort split between mobility activities" need the underlying activity scores. @@ -99,11 +106,9 @@ Three reform scenarios that the categorical model can't answer: ### Phase 1: points-to-category mapping -- Add the threshold parameters under `gov/dwp/pip/`: - - `daily_living/standard_threshold.yaml` (8) - - `daily_living/enhanced_threshold.yaml` (12) - - `mobility/standard_threshold.yaml` (8) - - `mobility/enhanced_threshold.yaml` (12) +- Threshold parameters: done in #1661 as + `gov.dwp.pip.{daily_living,mobility}.points_thresholds.{standard,enhanced}` + (8 and 12). - Add per-activity score inputs as `pip_dl_activity_1_score` ... `pip_dl_activity_10_score`, `pip_m_activity_1_score`, `pip_m_activity_2_score`. Type: integer (Person, YEAR), default 0. @@ -138,8 +143,11 @@ machinery (for reform analysis) get the activity-level surface. The data (Microcosm UK, as the replacement dataset) would need to impute descriptor selections per claimant that are consistent with the observed band. The plausible approach is to draw uniformly across descriptor combinations that - sum to the observed band, weighted by DWP-published "activities most - commonly scoring above zero" tables. + sum to the observed band, weighted by the point-score distributions for + each daily-living activity that DWP published in the + [Pathways to Work evidence pack](https://www.gov.uk/government/consultations/pathways-to-work-reforming-benefits-and-support-to-get-britain-working-green-paper/pathways-to-work-evidence-pack-chapter-2-reforming-the-structure) + (chapter 2, Tables 2.27 and 2.28, January 2025 caseload; daily living + only). - This phase is the heaviest and is only required to make Phase 2 reforms work on the calibrated microsim. For the household calculator, users can input activity scores directly. @@ -164,7 +172,7 @@ machinery (for reform analysis) get the activity-level surface. - DWP, [Modernising support for independent living: the health and disability green paper (April 2024)][green-paper]: proposals on the descriptors. - DWP, [Pathways to Work: Reforming Benefits and Support to Get Britain Working (March 2025)](https://www.gov.uk/government/consultations/pathways-to-work-reforming-benefits-and-support-to-get-britain-working-green-paper): the four-point proposal. - Issue: [#1069](https://github.com/PolicyEngine/policyengine-uk/issues/1069). -- Existing model: `pip_dl_category`, `pip_m_category`, `pip_dl`, `pip_m`. +- Existing model: `pip_dl_category`, `pip_m_category`, `pip_dl_points`, `pip_m_points`, `pip_dl`, `pip_m`, and the thresholds under `gov.dwp.pip.{daily_living,mobility}.points_thresholds`. [si-377]: https://www.legislation.gov.uk/uksi/2013/377 [assess-guide]: https://www.gov.uk/government/publications/personal-independence-payment-assessment-guide-for-assessment-providers From 4726024aecc3acc83163e97597e6d983290c103d Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Fri, 23 Oct 2026 03:15:56 -0400 Subject: [PATCH 6/7] State the PIP category rule exactly and scope the evidence-pack tables From the independent review of the corrections (household runs on main): - A category supplied for a year is stored for the whole simulation, with NONE for anyone not given one; points count only up to the year being calculated, and an earlier category carries forward unless the points are for a later year than it (utils/pip.py). - DWP's regular statistics report award levels; per-activity figures are one-off, which the Phase 3 citation now matches. Tables 2.27 and 2.28 cover working-age, normal-rules daily living awards in England, Wales and abroad. - "partly modelled" heading; descriptor combinations are drawn within the observed band; #1661's points inputs default to -1 ("not assessed"). Co-Authored-By: Claude Opus 5.5 --- docs/book/programs/gov/dwp/pip-points-plan.md | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/docs/book/programs/gov/dwp/pip-points-plan.md b/docs/book/programs/gov/dwp/pip-points-plan.md index f43fcdbf46..d380f3ff63 100644 --- a/docs/book/programs/gov/dwp/pip-points-plan.md +++ b/docs/book/programs/gov/dwp/pip-points-plan.md @@ -1,4 +1,4 @@ -# PIP point system (partly planned) +# PIP point system (partly modelled) ```{warning} **Partly modelled.** PolicyEngine UK sets the PIP daily-living and @@ -18,9 +18,12 @@ A first step merged on 21 October 2026 as [#1661](https://github.com/PolicyEngine/policyengine-uk/pull/1661): total points inputs (`pip_dl_points`, `pip_m_points`) and the 8- and 12-point thresholds under `gov.dwp.pip.{daily_living,mobility}.points_thresholds`. -The category is derived from the person's latest points only when no -category is given as an input for the year; a category given for an -earlier year carries forward unless the person has points for a later year +The category is derived from points only when no category is given as an +input for the year. A category given for a year is stored for everyone in +the simulation, with NONE for anyone not given one. Otherwise the person's +latest points for that year or an earlier one set the category, except that +a category given for an earlier year carries forward unless those points are +for a later year than it; with neither, the category is NONE (`policyengine_uk/utils/pip.py`). That is a simpler form of Phase 1 below: no per-activity scores and no `use_point_system` switch, since a category input already takes precedence over the formula. @@ -71,8 +74,10 @@ For population-aggregate simulation, the categorical bands are sufficient because: - the FRS doesn't capture activity-level point scores at all, -- DWP's published caseload reports band counts (standard / enhanced) - rather than activity scores, +- DWP's regular PIP statistics report the caseload by award level + (standard / enhanced) rather than activity scores; per-activity figures + appear only in one-off publications such as the evidence-pack tables + cited under Phase 3, - the data (both Microcosm UK, the certified default since October 2026, and the Enhanced FRS from policyengine-uk-data, which it replaced) sets `pip_dl_category` and `pip_m_category` by comparing the weekly PIP daily-living and mobility @@ -142,12 +147,13 @@ machinery (for reform analysis) get the activity-level surface. - The FRS provides PIP payment amounts but not descriptor selections. The data (Microcosm UK, as the replacement dataset) would need to impute descriptor selections per claimant that are consistent with the observed band. The plausible - approach is to draw uniformly across descriptor combinations that - sum to the observed band, weighted by the point-score distributions for + approach is to draw descriptor combinations whose total falls in the + observed band, weighted by the point-score distributions for each daily-living activity that DWP published in the [Pathways to Work evidence pack](https://www.gov.uk/government/consultations/pathways-to-work-reforming-benefits-and-support-to-get-britain-working-green-paper/pathways-to-work-evidence-pack-chapter-2-reforming-the-structure) - (chapter 2, Tables 2.27 and 2.28, January 2025 caseload; daily living - only). + (chapter 2, Tables 2.27 and 2.28: working-age, normal-rules claimants + awarded the daily living component in England, Wales and abroad, January + 2025 caseload; there is no mobility equivalent). - This phase is the heaviest and is only required to make Phase 2 reforms work on the calibrated microsim. For the household calculator, users can input activity scores directly. @@ -156,7 +162,8 @@ machinery (for reform analysis) get the activity-level surface. - Should the score inputs default to `None` (sentinel) or 0? Sentinel is cleaner when the points machinery is opt-in via the - `use_point_system` flag. + `use_point_system` flag. (#1661's total points inputs use -1 for "not + assessed".) - DWP's PIP review process distinguishes "ongoing" vs "fixed-term" awards. Should the model expose the award duration, or treat all current awards as ongoing? (Current model assumes ongoing.) From 5f515b87fdf0402f51db684844b1318db329ae44 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Fri, 23 Oct 2026 03:50:34 -0400 Subject: [PATCH 7/7] Say -1 points are skipped and the pack has no per-activity mobility table Second-round review (approved): utils/pip.py ignores -1 ("not assessed") points; the evidence pack has mobility total-points tables but none per activity. Co-Authored-By: Claude Opus 5.5 --- docs/book/programs/gov/dwp/pip-points-plan.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/book/programs/gov/dwp/pip-points-plan.md b/docs/book/programs/gov/dwp/pip-points-plan.md index d380f3ff63..79400b2b94 100644 --- a/docs/book/programs/gov/dwp/pip-points-plan.md +++ b/docs/book/programs/gov/dwp/pip-points-plan.md @@ -21,7 +21,8 @@ thresholds under `gov.dwp.pip.{daily_living,mobility}.points_thresholds`. The category is derived from points only when no category is given as an input for the year. A category given for a year is stored for everyone in the simulation, with NONE for anyone not given one. Otherwise the person's -latest points for that year or an earlier one set the category, except that +latest assessed points (not -1) for that year or an earlier one set the +category, except that a category given for an earlier year carries forward unless those points are for a later year than it; with neither, the category is NONE (`policyengine_uk/utils/pip.py`). That is a simpler form of Phase 1 below: @@ -153,7 +154,7 @@ machinery (for reform analysis) get the activity-level surface. [Pathways to Work evidence pack](https://www.gov.uk/government/consultations/pathways-to-work-reforming-benefits-and-support-to-get-britain-working-green-paper/pathways-to-work-evidence-pack-chapter-2-reforming-the-structure) (chapter 2, Tables 2.27 and 2.28: working-age, normal-rules claimants awarded the daily living component in England, Wales and abroad, January - 2025 caseload; there is no mobility equivalent). + 2025 caseload; the pack has no per-activity mobility table). - This phase is the heaviest and is only required to make Phase 2 reforms work on the calibrated microsim. For the household calculator, users can input activity scores directly.