Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/16-to-19-bursary-fund.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add a first-pass 16 to 19 Bursary Fund model for vulnerable groups.
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
description: Minimum age for 16 to 19 Bursary Fund support.
metadata:
unit: year
period: year
label: 16 to 19 Bursary Fund minimum age
reference:
- title: 16 to 19 Bursary Fund guide 2025 to 2026
href: https://www.gov.uk/government/publications/16-to-19-bursary-fund-guidance/16-to-19-bursary-fund-guide-2025-to-2026
values:
2025-01-01: 16
2026-01-01: 16
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
description: Standard upper age limit for 16 to 19 Bursary Fund support.
metadata:
unit: year
period: year
label: 16 to 19 Bursary Fund standard upper age limit
reference:
- title: 16 to 19 Bursary Fund guide 2025 to 2026
href: https://www.gov.uk/government/publications/16-to-19-bursary-fund-guidance/16-to-19-bursary-fund-guide-2025-to-2026
values:
2025-01-01: 19
2026-01-01: 19
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
description: Maximum annual 16 to 19 Bursary Fund award for students in defined vulnerable groups.
metadata:
unit: currency-GBP
period: year
label: 16 to 19 Bursary Fund vulnerable group maximum amount
reference:
- title: "16 to 19 Bursary Fund: what you'll get"
href: https://www.gov.uk/1619-bursary-fund/what-youll-get
values:
2025-01-01: 1200
2026-01-01: 1200
12 changes: 12 additions & 0 deletions policyengine_uk/programs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,18 @@ programs:
verified_start_year: 2025
notes: First-pass full-time undergraduate England model using explicit full-time, SEN, and childcare-support inputs plus maintenance-loan proxies; childcare_expenses are treated as out-of-pocket spend net of free hours

- id: bursary_fund_16_to_19
name: 16 to 19 Bursary Fund
full_name: 16 to 19 Bursary Fund
category: Benefits
agency: DfE
status: partial
coverage: England
variable: bursary_fund_16_to_19
parameter_prefix: gov.dfe.bursary_fund_16_to_19
verified_start_year: 2025
notes: First-pass model of the defined vulnerable-group bursary only, using explicit care, self-supporting, and participation-cost inputs plus person-level reported-benefit proxies

# --- DCMS programs ---
- id: tv_licence
name: TV Licence
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,269 @@
- name: 16 to 19 Bursary Fund pays actual costs for care leavers below the cap
period: 2025
input:
people:
student:
age: 17
current_education: POST_SECONDARY
bursary_fund_16_to_19_in_care_or_care_leaver: true
bursary_fund_16_to_19_participation_costs: 600
benunits:
benunit:
members: ["student"]
households:
household:
members: ["student"]
country: ENGLAND
output:
bursary_fund_16_to_19_vulnerable_group_eligible: [true]
bursary_fund_16_to_19: [600]

- name: 16 to 19 Bursary Fund caps vulnerable-group support at 1200
period: 2025
input:
people:
student:
age: 17
current_education: POST_SECONDARY
bursary_fund_16_to_19_in_care_or_care_leaver: true
bursary_fund_16_to_19_participation_costs: 2_000
benunits:
benunit:
members: ["student"]
households:
household:
members: ["student"]
country: ENGLAND
output:
bursary_fund_16_to_19: [1_200]

- name: 16 to 19 Bursary Fund covers self-supporting UC recipients
period: 2025
input:
people:
student:
age: 18
current_education: POST_SECONDARY
bursary_fund_16_to_19_self_supporting: true
bursary_fund_16_to_19_participation_costs: 900
universal_credit_reported: 100
benunits:
benunit:
members: ["student"]
households:
household:
members: ["student"]
country: ENGLAND
output:
bursary_fund_16_to_19_vulnerable_group_eligible: [true]
bursary_fund_16_to_19: [900]

- name: 16 to 19 Bursary Fund does not cover UC recipients without self-supporting status
period: 2025
input:
people:
student:
age: 18
current_education: POST_SECONDARY
bursary_fund_16_to_19_participation_costs: 900
universal_credit_reported: 100
benunits:
benunit:
members: ["student"]
households:
household:
members: ["student"]
country: ENGLAND
output:
bursary_fund_16_to_19_vulnerable_group_eligible: [false]
bursary_fund_16_to_19: [0]

- name: 16 to 19 Bursary Fund covers self-supporting Income Support recipients
period: 2025
input:
people:
student:
age: 18
current_education: POST_SECONDARY
bursary_fund_16_to_19_self_supporting: true
bursary_fund_16_to_19_participation_costs: 850
income_support_reported: 100
benunits:
benunit:
members: ["student"]
households:
household:
members: ["student"]
country: ENGLAND
output:
bursary_fund_16_to_19_vulnerable_group_eligible: [true]
bursary_fund_16_to_19: [850]

- name: 16 to 19 Bursary Fund covers students with disability benefit and UC
period: 2025
input:
people:
student:
age: 17
current_education: POST_SECONDARY
bursary_fund_16_to_19_participation_costs: 700
pip_dl_category: STANDARD
universal_credit_reported: 100
benunits:
benunit:
members: ["student"]
households:
household:
members: ["student"]
country: ENGLAND
output:
bursary_fund_16_to_19_vulnerable_group_eligible: [true]
bursary_fund_16_to_19: [700]

- name: 16 to 19 Bursary Fund does not use a parent UC claim for the disability route
period: 2025
input:
people:
parent:
age: 40
universal_credit_reported: 100
student:
age: 17
current_education: POST_SECONDARY
bursary_fund_16_to_19_participation_costs: 700
pip_dl_category: STANDARD
sibling:
age: 10
is_child: true
benunits:
benunit:
members: ["parent", "student", "sibling"]
households:
household:
members: ["parent", "student", "sibling"]
country: ENGLAND
output:
bursary_fund_16_to_19_vulnerable_group_eligible: [false, false, false]
bursary_fund_16_to_19: [0, 0, 0]

- name: 16 to 19 Bursary Fund does not cover disability benefit without UC or ESA
period: 2025
input:
people:
student:
age: 17
current_education: POST_SECONDARY
bursary_fund_16_to_19_participation_costs: 700
pip_dl_category: STANDARD
benunits:
benunit:
members: ["student"]
households:
household:
members: ["student"]
country: ENGLAND
output:
bursary_fund_16_to_19_vulnerable_group_eligible: [false]
bursary_fund_16_to_19: [0]

- name: 16 to 19 Bursary Fund excludes apprentices
period: 2025
input:
people:
student:
age: 17
current_education: POST_SECONDARY
is_apprentice: true
bursary_fund_16_to_19_in_care_or_care_leaver: true
bursary_fund_16_to_19_participation_costs: 600
benunits:
benunit:
members: ["student"]
households:
household:
members: ["student"]
country: ENGLAND
output:
bursary_fund_16_to_19_in_qualifying_education: [false]
bursary_fund_16_to_19: [0]

- name: 16 to 19 Bursary Fund excludes over-19 students without funded extension
period: 2025
input:
people:
student:
age: 20
current_education: POST_SECONDARY
bursary_fund_16_to_19_in_care_or_care_leaver: true
bursary_fund_16_to_19_participation_costs: 600
benunits:
benunit:
members: ["student"]
households:
household:
members: ["student"]
country: ENGLAND
output:
bursary_fund_16_to_19_age_eligible: [false]
bursary_fund_16_to_19: [0]

- name: 16 to 19 Bursary Fund does not extend vulnerable-group support beyond age 18
period: 2025
input:
people:
student:
age: 20
bursary_fund_16_to_19_in_qualifying_education: true
bursary_fund_16_to_19_in_care_or_care_leaver: true
bursary_fund_16_to_19_participation_costs: 500
benunits:
benunit:
members: ["student"]
households:
household:
members: ["student"]
country: ENGLAND
output:
bursary_fund_16_to_19_age_eligible: [false]
bursary_fund_16_to_19: [0]

- name: 16 to 19 Bursary Fund covers students with disability benefit and ESA
period: 2025
input:
people:
student:
age: 17
current_education: POST_SECONDARY
bursary_fund_16_to_19_participation_costs: 800
dla_sc_category: MIDDLE
esa_income_reported: 100
benunits:
benunit:
members: ["student"]
households:
household:
members: ["student"]
country: ENGLAND
output:
bursary_fund_16_to_19_vulnerable_group_eligible: [true]
bursary_fund_16_to_19: [800]

- name: 16 to 19 Bursary Fund only applies in England
period: 2025
input:
people:
student:
age: 17
current_education: POST_SECONDARY
bursary_fund_16_to_19_in_care_or_care_leaver: true
bursary_fund_16_to_19_participation_costs: 600
benunits:
benunit:
members: ["student"]
households:
household:
members: ["student"]
country: WALES
output:
bursary_fund_16_to_19_vulnerable_group_eligible: [false]
bursary_fund_16_to_19: [0]
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from policyengine_uk.model_api import *


class bursary_fund_16_to_19(Variable):
value_type = float
entity = Person
label = "16 to 19 Bursary Fund"
documentation = (
"First-pass vulnerable-group 16 to 19 Bursary Fund support. "
"The model pays actual participation costs up to the vulnerable-group maximum."
)
definition_period = YEAR
unit = GBP
defined_for = "bursary_fund_16_to_19_vulnerable_group_eligible"

def formula(person, period, parameters):
p = parameters(period).gov.dfe.bursary_fund_16_to_19.vulnerable_groups
participation_costs = person(
"bursary_fund_16_to_19_participation_costs", period
)
return min_(participation_costs, p.max_amount)
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from policyengine_uk.model_api import *


class bursary_fund_16_to_19_age_eligible(Variable):
value_type = bool
entity = Person
label = "Age eligible for 16 to 19 Bursary Fund"
documentation = "Whether the student is age eligible for the vulnerable-group 16 to 19 Bursary Fund."
definition_period = YEAR

def formula(person, period, parameters):
p = parameters(period).gov.dfe.bursary_fund_16_to_19.age
age = person("age", period)
return (age >= p.minimum) & (age < p.standard_upper)
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from policyengine_uk.model_api import *


class bursary_fund_16_to_19_in_care_or_care_leaver(Variable):
value_type = bool
entity = Person
label = "In care or a care leaver for 16 to 19 Bursary Fund"
documentation = "Whether the student is in care or is a care leaver for 16 to 19 Bursary Fund purposes."
definition_period = YEAR
default_value = False
set_input = set_input_dispatch_by_period
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
from policyengine_uk.model_api import *
from policyengine_uk.variables.household.demographic.highest_education import (
EducationType,
)


class bursary_fund_16_to_19_in_qualifying_education(Variable):
value_type = bool
entity = Person
label = "In qualifying education for 16 to 19 Bursary Fund"
documentation = (
"Whether the student is in a qualifying publicly funded post-16 study programme. "
"This can be set explicitly in simulations; by default it uses post-secondary education "
"and excludes apprenticeships."
)
definition_period = YEAR
set_input = set_input_dispatch_by_period

def formula(person, period, parameters):
return (
person("current_education", period) == EducationType.POST_SECONDARY
) & ~person("is_apprentice", period)
Loading
Loading