Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
789f676
Edit format based on Pavel's comments
vahid-ahmadi Jan 17, 2025
cd3ff72
Implement universal 15-hours free childcare
vahid-ahmadi Jan 17, 2025
e792de8
Edit folders
vahid-ahmadi Jan 24, 2025
aacf564
Edit codes and labels
vahid-ahmadi Jan 24, 2025
d736589
Format with black
vahid-ahmadi Jan 24, 2025
295b6e3
Edit the labels and shorten the codes
vahid-ahmadi Jan 28, 2025
91f4cde
Format with black
vahid-ahmadi Jan 28, 2025
65d0909
Merge branch 'master' into universal-free-childcare
vahid-ahmadi Feb 4, 2025
fb18cbc
Merge branch 'master' into universal-free-childcare
vahid-ahmadi Feb 11, 2025
c30d21a
Complete py files and unit tests
vahid-ahmadi Feb 11, 2025
30e4376
Edit based on chat-gpt comments
vahid-ahmadi Feb 12, 2025
0245691
Apply Nikhil's comments
vahid-ahmadi Feb 13, 2025
b307f43
Apply Nikhil's comments
vahid-ahmadi Feb 13, 2025
38e5bcc
Merge branch 'master' into universal-free-childcare
vahid-ahmadi Feb 14, 2025
f8462e1
Edit benefit py file
vahid-ahmadi Feb 14, 2025
398db95
Apply Max's comments - add "live in England" condition
vahid-ahmadi Feb 17, 2025
a5b7886
Edit law reference
vahid-ahmadi Feb 17, 2025
e3d0444
Edit py code and define is_of_compulsory_school_age variable
vahid-ahmadi Feb 18, 2025
18f19e6
Move files to dfe folder
vahid-ahmadi Feb 18, 2025
474a1e5
Edit funding rate file
vahid-ahmadi Feb 18, 2025
85ff824
Edit is_of_compulsory_school_age file
vahid-ahmadi Feb 18, 2025
a86c336
Apply Max's comments
vahid-ahmadi Feb 18, 2025
355b760
Delete hours py file
vahid-ahmadi Feb 18, 2025
abf0662
Edit files' names
vahid-ahmadi Feb 18, 2025
d95658a
Merge branch 'master' into universal-free-childcare
vahid-ahmadi Feb 19, 2025
8838ea9
Change to report at person level
vahid-ahmadi Feb 19, 2025
3100b80
Add uprating
vahid-ahmadi Feb 19, 2025
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
24 changes: 24 additions & 0 deletions policyengine_uk/parameters/gov/dfe/childcare_funding_rate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
description: The Department for Education converts childcare hours into expenses for childcare entitlement at these rates.
metadata:
type: single_amount
threshold_unit: year
amount_unit: currency-GBP
label: Childcare entitlement hourly rates by age
uprating: gov.benefit_uprating_cpi
reference:
- title: House of Commons Library | Early years funding in England
href: https://commonslibrary.parliament.uk/research-briefings/cbp-8052/

brackets:
- threshold:
2015-01-01: 0
amount:
2024-04-01: 11.22
- threshold:
2015-01-01: 2
amount:
2024-04-01: 8.28
- threshold:
2015-01-01: 3
amount:
2024-04-01: 5.88
22 changes: 22 additions & 0 deletions policyengine_uk/parameters/gov/dfe/compulsory_school_age.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
description: The Department for Education requires children to receive full-time education in this age range.
metadata:
type: single_amount
threshold_unit: year
amount_unit: bool
label: compulsory school age status
reference:
- title: Education Act 1996 - Section 8 (Compulsory school age)
href: https://www.legislation.gov.uk/ukpga/1996/56/section/8
brackets:
- threshold:
2015-01-01: 0
amount:
2015-01-01: False
- threshold:
2015-01-01: 5
amount:
2015-01-01: True
- threshold:
2015-01-01: 16
amount:
2015-01-01: False
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
description: The Department for Education provides this number of hours per year of childcare for universal childcare entitlement in England.
metadata:
unit: hour
threshold_unit: year
label: universal childcare entitlement hours
reference:
- title: Childcare (Early Years Provision Free of Charge) (Extended Entitlement) Regulations 2016 - Regulation 35(3)
href: https://www.legislation.gov.uk/uksi/2016/1257/part/4/made
- title: Childcare Act 2006 - Section 7.1 (Duty to secure free early years provision)
href: https://www.legislation.gov.uk/ukpga/2006/21/section/7
values:
2015-01-01: 570
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
description: The Department for Education limits universal childcare entitlement in England to children this age or older.
metadata:
type: single_amount
threshold_unit: year
amount_unit: hour
label: universal childcare entitlement child's minimum age
reference:
- title: Childcare (Early Years Provision Free of Charge) (Extended Entitlement) Regulations 2016 - Regulation 35(3)
href: https://www.legislation.gov.uk/uksi/2016/1257/part/4/made
- title: Childcare Act 2006 - Section 7.1 (Duty to secure free early years provision)
href: https://www.legislation.gov.uk/ukpga/2006/21/section/7
values:
2015-01-01: 3
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
- name: Child under 3 isn't eligible (person-level)
period: 2024
input:
age: 2
universal_childcare_entitlement_eligible: False
output:
universal_childcare_entitlement: 0.0

- name: Child aged 3 is eligible (person-level)
period: 2024
input:
age: 3
universal_childcare_entitlement_eligible: True
output:
universal_childcare_entitlement: 3351.60

- name: Child aged 4 is eligible (person-level)
period: 2024
input:
age: 4
universal_childcare_entitlement_eligible: True
output:
universal_childcare_entitlement: 3351.60

- name: Parent (ineligible)
period: 2024
input:
age: 35
universal_childcare_entitlement_eligible: False
output:
universal_childcare_entitlement: 0.0

- name: Child aged 2 (ineligible)
period: 2024
input:
age: 2
universal_childcare_entitlement_eligible: False
output:
universal_childcare_entitlement: 0.0

- name: Child aged 3 (eligible)
period: 2024
input:
age: 3
universal_childcare_entitlement_eligible: True
output:
universal_childcare_entitlement: 3351.60

- name: Child aged 4 (eligible)
period: 2024
input:
age: 4
universal_childcare_entitlement_eligible: True
output:
universal_childcare_entitlement: 3351.60

- name: Child aged 5 (ineligible)
period: 2024
input:
age: 5
universal_childcare_entitlement_eligible: False
output:
universal_childcare_entitlement: 0.0
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
- name: Child aged 3 in England is eligible
period: 2024
input:
age: 3
country: ENGLAND
output:
universal_childcare_entitlement_eligible: True

- name: Child aged 3 in Scotland is not eligible
period: 2024
input:
age: 3
country: SCOTLAND
output:
universal_childcare_entitlement_eligible: False

- name: Child aged 3 in Wales is not eligible
period: 2024
input:
age: 3
country: WALES
output:
universal_childcare_entitlement_eligible: False

- name: Child aged 2 in England is not eligible
period: 2024
input:
age: 2
country: ENGLAND
output:
universal_childcare_entitlement_eligible: False

- name: Child aged 4 in England is eligible
period: 2024
input:
age: 4
country: ENGLAND
output:
universal_childcare_entitlement_eligible: True
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from policyengine_uk.model_api import *


class is_of_compulsory_school_age(Variable):
value_type = bool
entity = Person
label = "Whether the person is of compulsory school age"
definition_period = YEAR

def formula(person, period, parameters):
age = person("age", period)
p = parameters(period).gov.dfe
return p.compulsory_school_age.calc(age)
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from policyengine_uk.model_api import *


class universal_childcare_entitlement(Variable):
value_type = float
entity = Person
defined_for = "universal_childcare_entitlement_eligible"
label = "universal childcare entitlement amount per year"
definition_period = YEAR
unit = "currency-GBP"

def formula(person, period, parameters):
p = parameters(period).gov.dfe
age = person("age", period)
hours = p.universal_childcare_entitlement.hours
return hours * p.childcare_funding_rate.calc(age)
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from policyengine_uk.model_api import *


class universal_childcare_entitlement_eligible(Variable):
value_type = bool
entity = Person
label = "eligible for universal childcare entitlement"
definition_period = YEAR

def formula(person, period, parameters):
country = person.household("country", period)
countries = country.possible_values
in_england = country == countries.ENGLAND
# Childcare (Early Years Provision Free of Charge) Regulations 2016 (part 33)
# The regulation above requires an "English local authority" to secure early years provision, limiting the entitlement to England.

age = person("age", period)
p = parameters(period).gov.dfe.universal_childcare_entitlement
meets_min_age = age >= p.min_age
not_compulsory_age = ~person("is_of_compulsory_school_age", period)
# Section 7 of the Childcare Act 2006
# The regulation above limits free early years provision to children under compulsory school age.
return in_england & meets_min_age & not_compulsory_age
1 change: 1 addition & 0 deletions policyengine_uk/variables/gov/gov_spending.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,5 @@ class gov_spending(Variable):
"education_budget_change",
"other_public_spending_budget_change",
"tax_free_childcare",
"universal_childcare_entitlement",
]
1 change: 1 addition & 0 deletions policyengine_uk/variables/household/income/benefit.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ class household_benefits(Variable):
"other_public_spending_budget_change",
"tax_free_childcare",
"extended_childcare_entitlement",
"universal_childcare_entitlement",
]

def formula(household, period, parameters):
Expand Down