Skip to content

Commit 4a321bb

Browse files
authored
Merge pull request #1589 from PolicyEngine/add-1619-bursary-fund
Add 16 to 19 Bursary Fund model
2 parents bbb01b8 + 793306c commit 4a321bb

19 files changed

Lines changed: 515 additions & 0 deletions
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add a first-pass 16 to 19 Bursary Fund model for vulnerable groups.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
description: Minimum age for 16 to 19 Bursary Fund support.
2+
metadata:
3+
unit: year
4+
period: year
5+
label: 16 to 19 Bursary Fund minimum age
6+
reference:
7+
- title: 16 to 19 Bursary Fund guide 2025 to 2026
8+
href: https://www.gov.uk/government/publications/16-to-19-bursary-fund-guidance/16-to-19-bursary-fund-guide-2025-to-2026
9+
values:
10+
2025-01-01: 16
11+
2026-01-01: 16
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
description: Standard upper age limit for 16 to 19 Bursary Fund support.
2+
metadata:
3+
unit: year
4+
period: year
5+
label: 16 to 19 Bursary Fund standard upper age limit
6+
reference:
7+
- title: 16 to 19 Bursary Fund guide 2025 to 2026
8+
href: https://www.gov.uk/government/publications/16-to-19-bursary-fund-guidance/16-to-19-bursary-fund-guide-2025-to-2026
9+
values:
10+
2025-01-01: 19
11+
2026-01-01: 19
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
description: Maximum annual 16 to 19 Bursary Fund award for students in defined vulnerable groups.
2+
metadata:
3+
unit: currency-GBP
4+
period: year
5+
label: 16 to 19 Bursary Fund vulnerable group maximum amount
6+
reference:
7+
- title: "16 to 19 Bursary Fund: what you'll get"
8+
href: https://www.gov.uk/1619-bursary-fund/what-youll-get
9+
values:
10+
2025-01-01: 1200
11+
2026-01-01: 1200

policyengine_uk/programs.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,18 @@ programs:
360360
verified_start_year: 2025
361361
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
362362

363+
- id: bursary_fund_16_to_19
364+
name: 16 to 19 Bursary Fund
365+
full_name: 16 to 19 Bursary Fund
366+
category: Benefits
367+
agency: DfE
368+
status: partial
369+
coverage: England
370+
variable: bursary_fund_16_to_19
371+
parameter_prefix: gov.dfe.bursary_fund_16_to_19
372+
verified_start_year: 2025
373+
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
374+
363375
# --- DCMS programs ---
364376
- id: tv_licence
365377
name: TV Licence
Lines changed: 269 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,269 @@
1+
- name: 16 to 19 Bursary Fund pays actual costs for care leavers below the cap
2+
period: 2025
3+
input:
4+
people:
5+
student:
6+
age: 17
7+
current_education: POST_SECONDARY
8+
bursary_fund_16_to_19_in_care_or_care_leaver: true
9+
bursary_fund_16_to_19_participation_costs: 600
10+
benunits:
11+
benunit:
12+
members: ["student"]
13+
households:
14+
household:
15+
members: ["student"]
16+
country: ENGLAND
17+
output:
18+
bursary_fund_16_to_19_vulnerable_group_eligible: [true]
19+
bursary_fund_16_to_19: [600]
20+
21+
- name: 16 to 19 Bursary Fund caps vulnerable-group support at 1200
22+
period: 2025
23+
input:
24+
people:
25+
student:
26+
age: 17
27+
current_education: POST_SECONDARY
28+
bursary_fund_16_to_19_in_care_or_care_leaver: true
29+
bursary_fund_16_to_19_participation_costs: 2_000
30+
benunits:
31+
benunit:
32+
members: ["student"]
33+
households:
34+
household:
35+
members: ["student"]
36+
country: ENGLAND
37+
output:
38+
bursary_fund_16_to_19: [1_200]
39+
40+
- name: 16 to 19 Bursary Fund covers self-supporting UC recipients
41+
period: 2025
42+
input:
43+
people:
44+
student:
45+
age: 18
46+
current_education: POST_SECONDARY
47+
bursary_fund_16_to_19_self_supporting: true
48+
bursary_fund_16_to_19_participation_costs: 900
49+
universal_credit_reported: 100
50+
benunits:
51+
benunit:
52+
members: ["student"]
53+
households:
54+
household:
55+
members: ["student"]
56+
country: ENGLAND
57+
output:
58+
bursary_fund_16_to_19_vulnerable_group_eligible: [true]
59+
bursary_fund_16_to_19: [900]
60+
61+
- name: 16 to 19 Bursary Fund does not cover UC recipients without self-supporting status
62+
period: 2025
63+
input:
64+
people:
65+
student:
66+
age: 18
67+
current_education: POST_SECONDARY
68+
bursary_fund_16_to_19_participation_costs: 900
69+
universal_credit_reported: 100
70+
benunits:
71+
benunit:
72+
members: ["student"]
73+
households:
74+
household:
75+
members: ["student"]
76+
country: ENGLAND
77+
output:
78+
bursary_fund_16_to_19_vulnerable_group_eligible: [false]
79+
bursary_fund_16_to_19: [0]
80+
81+
- name: 16 to 19 Bursary Fund covers self-supporting Income Support recipients
82+
period: 2025
83+
input:
84+
people:
85+
student:
86+
age: 18
87+
current_education: POST_SECONDARY
88+
bursary_fund_16_to_19_self_supporting: true
89+
bursary_fund_16_to_19_participation_costs: 850
90+
income_support_reported: 100
91+
benunits:
92+
benunit:
93+
members: ["student"]
94+
households:
95+
household:
96+
members: ["student"]
97+
country: ENGLAND
98+
output:
99+
bursary_fund_16_to_19_vulnerable_group_eligible: [true]
100+
bursary_fund_16_to_19: [850]
101+
102+
- name: 16 to 19 Bursary Fund covers students with disability benefit and UC
103+
period: 2025
104+
input:
105+
people:
106+
student:
107+
age: 17
108+
current_education: POST_SECONDARY
109+
bursary_fund_16_to_19_participation_costs: 700
110+
pip_dl_category: STANDARD
111+
universal_credit_reported: 100
112+
benunits:
113+
benunit:
114+
members: ["student"]
115+
households:
116+
household:
117+
members: ["student"]
118+
country: ENGLAND
119+
output:
120+
bursary_fund_16_to_19_vulnerable_group_eligible: [true]
121+
bursary_fund_16_to_19: [700]
122+
123+
- name: 16 to 19 Bursary Fund does not use a parent UC claim for the disability route
124+
period: 2025
125+
input:
126+
people:
127+
parent:
128+
age: 40
129+
universal_credit_reported: 100
130+
student:
131+
age: 17
132+
current_education: POST_SECONDARY
133+
bursary_fund_16_to_19_participation_costs: 700
134+
pip_dl_category: STANDARD
135+
sibling:
136+
age: 10
137+
is_child: true
138+
benunits:
139+
benunit:
140+
members: ["parent", "student", "sibling"]
141+
households:
142+
household:
143+
members: ["parent", "student", "sibling"]
144+
country: ENGLAND
145+
output:
146+
bursary_fund_16_to_19_vulnerable_group_eligible: [false, false, false]
147+
bursary_fund_16_to_19: [0, 0, 0]
148+
149+
- name: 16 to 19 Bursary Fund does not cover disability benefit without UC or ESA
150+
period: 2025
151+
input:
152+
people:
153+
student:
154+
age: 17
155+
current_education: POST_SECONDARY
156+
bursary_fund_16_to_19_participation_costs: 700
157+
pip_dl_category: STANDARD
158+
benunits:
159+
benunit:
160+
members: ["student"]
161+
households:
162+
household:
163+
members: ["student"]
164+
country: ENGLAND
165+
output:
166+
bursary_fund_16_to_19_vulnerable_group_eligible: [false]
167+
bursary_fund_16_to_19: [0]
168+
169+
- name: 16 to 19 Bursary Fund excludes apprentices
170+
period: 2025
171+
input:
172+
people:
173+
student:
174+
age: 17
175+
current_education: POST_SECONDARY
176+
is_apprentice: true
177+
bursary_fund_16_to_19_in_care_or_care_leaver: true
178+
bursary_fund_16_to_19_participation_costs: 600
179+
benunits:
180+
benunit:
181+
members: ["student"]
182+
households:
183+
household:
184+
members: ["student"]
185+
country: ENGLAND
186+
output:
187+
bursary_fund_16_to_19_in_qualifying_education: [false]
188+
bursary_fund_16_to_19: [0]
189+
190+
- name: 16 to 19 Bursary Fund excludes over-19 students without funded extension
191+
period: 2025
192+
input:
193+
people:
194+
student:
195+
age: 20
196+
current_education: POST_SECONDARY
197+
bursary_fund_16_to_19_in_care_or_care_leaver: true
198+
bursary_fund_16_to_19_participation_costs: 600
199+
benunits:
200+
benunit:
201+
members: ["student"]
202+
households:
203+
household:
204+
members: ["student"]
205+
country: ENGLAND
206+
output:
207+
bursary_fund_16_to_19_age_eligible: [false]
208+
bursary_fund_16_to_19: [0]
209+
210+
- name: 16 to 19 Bursary Fund does not extend vulnerable-group support beyond age 18
211+
period: 2025
212+
input:
213+
people:
214+
student:
215+
age: 20
216+
bursary_fund_16_to_19_in_qualifying_education: true
217+
bursary_fund_16_to_19_in_care_or_care_leaver: true
218+
bursary_fund_16_to_19_participation_costs: 500
219+
benunits:
220+
benunit:
221+
members: ["student"]
222+
households:
223+
household:
224+
members: ["student"]
225+
country: ENGLAND
226+
output:
227+
bursary_fund_16_to_19_age_eligible: [false]
228+
bursary_fund_16_to_19: [0]
229+
230+
- name: 16 to 19 Bursary Fund covers students with disability benefit and ESA
231+
period: 2025
232+
input:
233+
people:
234+
student:
235+
age: 17
236+
current_education: POST_SECONDARY
237+
bursary_fund_16_to_19_participation_costs: 800
238+
dla_sc_category: MIDDLE
239+
esa_income_reported: 100
240+
benunits:
241+
benunit:
242+
members: ["student"]
243+
households:
244+
household:
245+
members: ["student"]
246+
country: ENGLAND
247+
output:
248+
bursary_fund_16_to_19_vulnerable_group_eligible: [true]
249+
bursary_fund_16_to_19: [800]
250+
251+
- name: 16 to 19 Bursary Fund only applies in England
252+
period: 2025
253+
input:
254+
people:
255+
student:
256+
age: 17
257+
current_education: POST_SECONDARY
258+
bursary_fund_16_to_19_in_care_or_care_leaver: true
259+
bursary_fund_16_to_19_participation_costs: 600
260+
benunits:
261+
benunit:
262+
members: ["student"]
263+
households:
264+
household:
265+
members: ["student"]
266+
country: WALES
267+
output:
268+
bursary_fund_16_to_19_vulnerable_group_eligible: [false]
269+
bursary_fund_16_to_19: [0]
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from policyengine_uk.model_api import *
2+
3+
4+
class bursary_fund_16_to_19(Variable):
5+
value_type = float
6+
entity = Person
7+
label = "16 to 19 Bursary Fund"
8+
documentation = (
9+
"First-pass vulnerable-group 16 to 19 Bursary Fund support. "
10+
"The model pays actual participation costs up to the vulnerable-group maximum."
11+
)
12+
definition_period = YEAR
13+
unit = GBP
14+
defined_for = "bursary_fund_16_to_19_vulnerable_group_eligible"
15+
16+
def formula(person, period, parameters):
17+
p = parameters(period).gov.dfe.bursary_fund_16_to_19.vulnerable_groups
18+
participation_costs = person(
19+
"bursary_fund_16_to_19_participation_costs", period
20+
)
21+
return min_(participation_costs, p.max_amount)
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from policyengine_uk.model_api import *
2+
3+
4+
class bursary_fund_16_to_19_age_eligible(Variable):
5+
value_type = bool
6+
entity = Person
7+
label = "Age eligible for 16 to 19 Bursary Fund"
8+
documentation = "Whether the student is age eligible for the vulnerable-group 16 to 19 Bursary Fund."
9+
definition_period = YEAR
10+
11+
def formula(person, period, parameters):
12+
p = parameters(period).gov.dfe.bursary_fund_16_to_19.age
13+
age = person("age", period)
14+
return (age >= p.minimum) & (age < p.standard_upper)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from policyengine_uk.model_api import *
2+
3+
4+
class bursary_fund_16_to_19_in_care_or_care_leaver(Variable):
5+
value_type = bool
6+
entity = Person
7+
label = "In care or a care leaver for 16 to 19 Bursary Fund"
8+
documentation = "Whether the student is in care or is a care leaver for 16 to 19 Bursary Fund purposes."
9+
definition_period = YEAR
10+
default_value = False
11+
set_input = set_input_dispatch_by_period
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from policyengine_uk.model_api import *
2+
from policyengine_uk.variables.household.demographic.highest_education import (
3+
EducationType,
4+
)
5+
6+
7+
class bursary_fund_16_to_19_in_qualifying_education(Variable):
8+
value_type = bool
9+
entity = Person
10+
label = "In qualifying education for 16 to 19 Bursary Fund"
11+
documentation = (
12+
"Whether the student is in a qualifying publicly funded post-16 study programme. "
13+
"This can be set explicitly in simulations; by default it uses post-secondary education "
14+
"and excludes apprenticeships."
15+
)
16+
definition_period = YEAR
17+
set_input = set_input_dispatch_by_period
18+
19+
def formula(person, period, parameters):
20+
return (
21+
person("current_education", period) == EducationType.POST_SECONDARY
22+
) & ~person("is_apprentice", period)

0 commit comments

Comments
 (0)