diff --git a/changelog.d/540.added.md b/changelog.d/540.added.md new file mode 100644 index 000000000..cd42744ab --- /dev/null +++ b/changelog.d/540.added.md @@ -0,0 +1 @@ +Added child care expense deductions and provincial child care benefits (Ontario CARE credit, BC ACCB, BC CCFRI, Alberta subsidy). diff --git a/changelog_entry.yaml b/changelog_entry.yaml deleted file mode 100644 index e69de29bb..000000000 diff --git a/policyengine_canada/model_api.py b/policyengine_canada/model_api.py index c96a4753e..23020fa75 100644 --- a/policyengine_canada/model_api.py +++ b/policyengine_canada/model_api.py @@ -5,7 +5,6 @@ ) from policyengine_canada.tools.general import * - CAD = "currency-CAD" diff --git a/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/age_limit.yaml b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/age_limit.yaml new file mode 100644 index 000000000..b916d9f28 --- /dev/null +++ b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/age_limit.yaml @@ -0,0 +1,12 @@ +description: The Income Tax Act sets this maximum age for a child to qualify for the child care expense deduction, unless the child has a disability. +values: + 2015-01-01: 16 +metadata: + unit: year + period: year + label: Child care expense deduction age limit + reference: + - title: Income Tax Act, s. 63(3) — definition of "eligible child" — Maximum age without disability + href: https://laws-lois.justice.gc.ca/eng/acts/I-3.3/section-63.html + - title: CRA T778 Child Care Expenses Deduction (2024), Part A — Eligible child age limit + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/t778/t778-24e.pdf#page=2 diff --git a/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/child_income_limit.yaml b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/child_income_limit.yaml new file mode 100644 index 000000000..b517245ff --- /dev/null +++ b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/child_income_limit.yaml @@ -0,0 +1,16 @@ +description: The Income Tax Act sets this maximum net income for an eligible child claiming the child care expense deduction. +values: + 2023-01-01: 15_000 + 2024-01-01: 15_705 +metadata: + unit: currency-CAD + period: year + label: Child income limit for child care expense deduction + note: "Documents ITA s. 63(3)(b) child income limit. Not used in formula — implementing this check would create a circular dependency (child's net income depends on the deduction being calculated)." + reference: + - title: Income Tax Act, s. 63(3) — definition of "eligible child", paragraph (b) + href: https://laws-lois.justice.gc.ca/eng/acts/I-3.3/section-63.html + - title: CRA T778 Child Care Expenses Deduction (2024) — Eligible child income limit + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/t778/t778-24e.pdf#page=2 + - title: CRA T778 Child Care Expenses Deduction (2023) — Eligible child income limit + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/t778/t778-23e.pdf#page=2 diff --git a/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/earned_income_fraction.yaml b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/earned_income_fraction.yaml new file mode 100644 index 000000000..54dc5eb99 --- /dev/null +++ b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/earned_income_fraction.yaml @@ -0,0 +1,12 @@ +description: The Income Tax Act limits the child care expense deduction to this fraction of the claimant's earned income. +values: + 2015-01-01: 0.6667 +metadata: + unit: /1 + period: year + label: Earned income fraction for child care expense deduction + reference: + - title: Income Tax Act, s. 63(1) — paragraph (e) — Two-thirds earned income limit + href: https://laws-lois.justice.gc.ca/eng/acts/I-3.3/section-63.html + - title: CRA T778 Child Care Expenses Deduction (2024), Part D — Earned income fraction + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/t778/t778-24e.pdf#page=4 diff --git a/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/age_threshold.yaml b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/age_threshold.yaml new file mode 100644 index 000000000..1ab811e93 --- /dev/null +++ b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/age_threshold.yaml @@ -0,0 +1,12 @@ +description: The Income Tax Act sets this age threshold that determines the annual child care expense amount per eligible child. +values: + 2015-01-01: 7 +metadata: + unit: year + period: year + label: Age threshold for child care expense limits + reference: + - title: Income Tax Act, s. 63(3) — definition of "annual child care expense amount" — Age threshold between limit tiers + href: https://laws-lois.justice.gc.ca/eng/acts/I-3.3/section-63.html + - title: CRA T778 Child Care Expenses Deduction (2024), Part B — Age threshold for expense limits + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/t778/t778-24e.pdf#page=3 diff --git a/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/disabled.yaml b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/disabled.yaml new file mode 100644 index 000000000..a50dcac48 --- /dev/null +++ b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/disabled.yaml @@ -0,0 +1,12 @@ +description: The Income Tax Act sets this maximum annual child care expense amount for a child eligible for the disability tax credit. +values: + 2015-01-01: 11_000 +metadata: + unit: currency-CAD + period: year + label: Child care expense limit for children with disabilities + reference: + - title: Income Tax Act, s. 63(3) — "annual child care expense amount", paragraph (a) — Limit for disabled child + href: https://laws-lois.justice.gc.ca/eng/acts/I-3.3/section-63.html + - title: CRA T778 Child Care Expenses Deduction (2024), Part B — Limit per disabled child + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/t778/t778-24e.pdf#page=3 diff --git a/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/over_7.yaml b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/over_7.yaml new file mode 100644 index 000000000..6acc61265 --- /dev/null +++ b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/over_7.yaml @@ -0,0 +1,12 @@ +description: The Income Tax Act sets this maximum annual child care expense amount for a child aged 7 to 16. +values: + 2015-01-01: 5_000 +metadata: + unit: currency-CAD + period: year + label: Child care expense limit for children 7-16 + reference: + - title: Income Tax Act, s. 63(3) — "annual child care expense amount", paragraph (c) — Limit for child aged 7 to 16 + href: https://laws-lois.justice.gc.ca/eng/acts/I-3.3/section-63.html + - title: CRA T778 Child Care Expenses Deduction (2024), Part B — Limit per child aged 7 to 16 + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/t778/t778-24e.pdf#page=3 diff --git a/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/under_7.yaml b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/under_7.yaml new file mode 100644 index 000000000..c2390b5c0 --- /dev/null +++ b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/under_7.yaml @@ -0,0 +1,12 @@ +description: The Income Tax Act sets this maximum annual child care expense amount for a child under age 7. +values: + 2015-01-01: 8_000 +metadata: + unit: currency-CAD + period: year + label: Child care expense limit for children under 7 + reference: + - title: Income Tax Act, s. 63(3) — "annual child care expense amount", paragraph (b) — Limit for child under 7 + href: https://laws-lois.justice.gc.ca/eng/acts/I-3.3/section-63.html + - title: CRA T778 Child Care Expenses Deduction (2024), Part B — Limit per child under 7 + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/t778/t778-24e.pdf#page=3 diff --git a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/age_threshold/preschool.yaml b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/age_threshold/preschool.yaml new file mode 100644 index 000000000..4c967a8da --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/age_threshold/preschool.yaml @@ -0,0 +1,11 @@ +description: Alberta applies the preschool child care subsidy schedule to children below this age. +values: + 2024-01-01: 5 +metadata: + unit: year + period: year + label: Alberta child care subsidy preschool age threshold + note: Preschool parent subsidy was discontinued April 1, 2025, replaced by $15/day Affordability Grant paid to providers. These 2024 rates were valid prior to discontinuation but the official page no longer displays them. + reference: + - title: Alberta Child Care Subsidy Program — Preschool age eligibility (2024) + href: https://www.alberta.ca/child-care-subsidy diff --git a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/age_threshold/school_age_max.yaml b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/age_threshold/school_age_max.yaml new file mode 100644 index 000000000..f7efa81e7 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/age_threshold/school_age_max.yaml @@ -0,0 +1,11 @@ +description: Alberta applies the school-age child care subsidy schedule to children up to and including this age. +values: + 2024-01-01: 12 +metadata: + unit: year + period: year + label: Alberta child care subsidy school-age maximum age + note: Age threshold for school-age subsidy (kindergarten through grade 6). + reference: + - title: Alberta Child Care Subsidy Program — School-age age eligibility (2024) + href: https://www.alberta.ca/child-care-subsidy diff --git a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/subsidy_schedule/preschool.yaml b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/subsidy_schedule/preschool.yaml new file mode 100644 index 000000000..f88fbd23e --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/subsidy_schedule/preschool.yaml @@ -0,0 +1,68 @@ +description: Alberta provides this amount as the monthly child care subsidy for preschool-age children under the Alberta Child Care Subsidy program. +brackets: + - threshold: + 2024-01-01: 0 + amount: + 2024-01-01: 266 + - threshold: + 2024-01-01: 120_000 + amount: + 2024-01-01: 253 + - threshold: + 2024-01-01: 125_000 + amount: + 2024-01-01: 239 + - threshold: + 2024-01-01: 130_000 + amount: + 2024-01-01: 226 + - threshold: + 2024-01-01: 135_000 + amount: + 2024-01-01: 213 + - threshold: + 2024-01-01: 140_000 + amount: + 2024-01-01: 200 + - threshold: + 2024-01-01: 145_000 + amount: + 2024-01-01: 186 + - threshold: + 2024-01-01: 150_000 + amount: + 2024-01-01: 173 + - threshold: + 2024-01-01: 155_000 + amount: + 2024-01-01: 160 + - threshold: + 2024-01-01: 160_000 + amount: + 2024-01-01: 146 + - threshold: + 2024-01-01: 165_000 + amount: + 2024-01-01: 133 + - threshold: + 2024-01-01: 170_000 + amount: + 2024-01-01: 120 + - threshold: + 2024-01-01: 175_000 + amount: + 2024-01-01: 106 + - threshold: + 2024-01-01: 180_000 + amount: + 2024-01-01: 0 + +metadata: + type: single_amount + amount_unit: currency-CAD + threshold_unit: currency-CAD + label: Alberta child care subsidy schedule (preschool, facility-based) + note: Preschool parent subsidy was discontinued April 1, 2025, replaced by $15/day Affordability Grant paid to providers. These 2024 rates were valid prior to discontinuation but the official page no longer displays them. + reference: + - title: Alberta Child Care Subsidy Program — Preschool monthly subsidy rates by family income (2024) + href: https://www.alberta.ca/child-care-subsidy diff --git a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/subsidy_schedule/school_age.yaml b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/subsidy_schedule/school_age.yaml new file mode 100644 index 000000000..98baaf5d5 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/subsidy_schedule/school_age.yaml @@ -0,0 +1,52 @@ +description: Alberta provides this amount as the monthly child care subsidy for school-age children under the Alberta Child Care Subsidy program. +brackets: + - threshold: + 2024-01-01: 0 + amount: + 2024-01-01: 366 + - threshold: + 2024-01-01: 50_000 + amount: + 2024-01-01: 348 + - threshold: + 2024-01-01: 55_000 + amount: + 2024-01-01: 311 + - threshold: + 2024-01-01: 60_000 + amount: + 2024-01-01: 275 + - threshold: + 2024-01-01: 65_000 + amount: + 2024-01-01: 238 + - threshold: + 2024-01-01: 70_000 + amount: + 2024-01-01: 201 + - threshold: + 2024-01-01: 75_000 + amount: + 2024-01-01: 165 + - threshold: + 2024-01-01: 80_000 + amount: + 2024-01-01: 128 + - threshold: + 2024-01-01: 85_000 + amount: + 2024-01-01: 92 + - threshold: + 2024-01-01: 90_000 + amount: + 2024-01-01: 0 + +metadata: + type: single_amount + amount_unit: currency-CAD + threshold_unit: currency-CAD + label: Alberta child care subsidy schedule (school-age, facility-based) + note: Rates set by ministerial policy, published at alberta.ca. Verified against official website March 2026. Covers kindergarten through grade 6, facility-based, 50+ hours/month. + reference: + - title: Alberta Child Care Subsidy Program — School-age monthly subsidy rates by family income (2024) + href: https://www.alberta.ca/child-care-subsidy diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/max_age.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/max_age.yaml new file mode 100644 index 000000000..bdcdda0af --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/max_age.yaml @@ -0,0 +1,14 @@ +description: >- + British Columbia provides the Affordable Child Care Benefit for children + under this age. +values: + 2018-01-01: 13 +metadata: + unit: year + period: year + label: BC ACCB maximum eligible age + reference: + - title: BC Affordable Child Care Benefit — Eligibility, maximum eligible child age + href: https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit/information-for-families/eligibility-estimate-funding + - title: Early Learning and Child Care Regulation, B.C. Reg. 189/2024 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/189_2024 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/preschool.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/preschool.yaml new file mode 100644 index 000000000..04b622ad3 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/preschool.yaml @@ -0,0 +1,14 @@ +description: >- + British Columbia applies the preschool benefit rate starting at this age + for the Affordable Child Care Benefit. +values: + 2018-01-01: 3 +metadata: + unit: year + period: year + label: BC ACCB preschool age threshold + reference: + - title: BC Affordable Child Care Benefit — Rates and payments, preschool age threshold + href: https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit/information-for-families/rates-payments + - title: Early Learning and Child Care Regulation, B.C. Reg. 189/2024 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/189_2024 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/school_age.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/school_age.yaml new file mode 100644 index 000000000..38a3ea374 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/school_age.yaml @@ -0,0 +1,14 @@ +description: >- + British Columbia applies the school-age benefit rate starting at this age + for the Affordable Child Care Benefit. +values: + 2018-01-01: 5 +metadata: + unit: year + period: year + label: BC ACCB school age threshold + reference: + - title: BC Affordable Child Care Benefit — Rates and payments, school-age threshold + href: https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit/information-for-families/rates-payments + - title: Early Learning and Child Care Regulation, B.C. Reg. 189/2024 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/189_2024 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/toddler.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/toddler.yaml new file mode 100644 index 000000000..a27d616c1 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/toddler.yaml @@ -0,0 +1,14 @@ +description: >- + British Columbia applies the toddler benefit rate starting at this age + (in years) for the Affordable Child Care Benefit. +values: + 2018-01-01: 1.583 +metadata: + unit: year + period: year + label: BC ACCB toddler age threshold (19 months) + reference: + - title: BC Affordable Child Care Benefit — Rates and payments, toddler age threshold (19 months) + href: https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit/information-for-families/rates-payments + - title: Early Learning and Child Care Regulation, B.C. Reg. 189/2024 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/189_2024 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/base_family_size.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/base_family_size.yaml new file mode 100644 index 000000000..c591ed0c7 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/base_family_size.yaml @@ -0,0 +1,15 @@ +description: >- + British Columbia applies the family size income adjustment for each + household member beyond this base count for the Affordable Child Care + Benefit. +values: + 2018-01-01: 2 +metadata: + unit: person + period: year + label: BC ACCB base family size + reference: + - title: BC Affordable Child Care Benefit — Eligibility, base family size for income adjustment + href: https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit/information-for-families/eligibility-estimate-funding + - title: Early Learning and Child Care Regulation, B.C. Reg. 189/2024 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/189_2024 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/family_size_adjustment.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/family_size_adjustment.yaml new file mode 100644 index 000000000..68f25f291 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/family_size_adjustment.yaml @@ -0,0 +1,12 @@ +description: British Columbia reduces adjusted family income by this amount per family member beyond the first two for the Affordable Child Care Benefit. +values: + 2018-01-01: 2_000 +metadata: + unit: currency-CAD + period: year + label: BC Affordable Child Care Benefit family size adjustment + reference: + - title: BC Affordable Child Care Benefit — Eligibility, family size income adjustment + href: https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit/information-for-families/eligibility-estimate-funding + - title: Early Learning and Child Care Regulation, B.C. Reg. 189/2024 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/189_2024 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/income_limit.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/income_limit.yaml new file mode 100644 index 000000000..8d472f27c --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/income_limit.yaml @@ -0,0 +1,12 @@ +description: British Columbia limits adjusted family income to this amount for eligibility under the Affordable Child Care Benefit. +values: + 2018-01-01: 111_000 +metadata: + unit: currency-CAD + period: year + label: BC Affordable Child Care Benefit income limit + reference: + - title: BC Affordable Child Care Benefit — Eligibility, maximum family income limit + href: https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit/information-for-families/eligibility-estimate-funding + - title: Early Learning and Child Care Regulation, B.C. Reg. 189/2024 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/189_2024 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/age_19_to_36_months.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/age_19_to_36_months.yaml new file mode 100644 index 000000000..0776a3974 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/age_19_to_36_months.yaml @@ -0,0 +1,12 @@ +description: British Columbia provides this maximum monthly Affordable Child Care Benefit for children aged 19 to 36 months in licensed group care. +values: + 2018-01-01: 1_060 +metadata: + unit: currency-CAD + period: month + label: BC Affordable Child Care Benefit max for 19-36 months + reference: + - title: BC Affordable Child Care Benefit — Maximum monthly benefit for children aged 19 to 36 months + href: https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit/information-for-families/rates-payments + - title: Early Learning and Child Care Regulation, B.C. Reg. 189/2024 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/189_2024 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/preschool_age.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/preschool_age.yaml new file mode 100644 index 000000000..d0e6a45e5 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/preschool_age.yaml @@ -0,0 +1,12 @@ +description: British Columbia provides this maximum monthly Affordable Child Care Benefit for preschool-age children in licensed group care. +values: + 2018-01-01: 550 +metadata: + unit: currency-CAD + period: month + label: BC Affordable Child Care Benefit max for preschool age + reference: + - title: BC Affordable Child Care Benefit — Maximum monthly benefit for preschool-age children + href: https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit/information-for-families/rates-payments + - title: Early Learning and Child Care Regulation, B.C. Reg. 189/2024 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/189_2024 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/school_age.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/school_age.yaml new file mode 100644 index 000000000..1cf814672 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/school_age.yaml @@ -0,0 +1,12 @@ +description: British Columbia provides this maximum monthly Affordable Child Care Benefit for school-age children in licensed group care. +values: + 2018-01-01: 415 +metadata: + unit: currency-CAD + period: month + label: BC Affordable Child Care Benefit max for school age + reference: + - title: BC Affordable Child Care Benefit — Maximum monthly benefit for school-age children + href: https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit/information-for-families/rates-payments + - title: Early Learning and Child Care Regulation, B.C. Reg. 189/2024 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/189_2024 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/under_19_months.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/under_19_months.yaml new file mode 100644 index 000000000..adb43cc7c --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/under_19_months.yaml @@ -0,0 +1,12 @@ +description: British Columbia provides this maximum monthly Affordable Child Care Benefit for children under 19 months in licensed group care. +values: + 2018-01-01: 1_250 +metadata: + unit: currency-CAD + period: month + label: BC Affordable Child Care Benefit max for under 19 months + reference: + - title: BC Affordable Child Care Benefit — Maximum monthly benefit for children under 19 months + href: https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit/information-for-families/rates-payments + - title: Early Learning and Child Care Regulation, B.C. Reg. 189/2024 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/189_2024 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_benefit_income_threshold.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_benefit_income_threshold.yaml new file mode 100644 index 000000000..fd3d52a86 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_benefit_income_threshold.yaml @@ -0,0 +1,12 @@ +description: British Columbia provides the maximum Affordable Child Care Benefit to families with adjusted income at or below this amount. +values: + 2018-01-01: 45_000 +metadata: + unit: currency-CAD + period: year + label: BC Affordable Child Care Benefit maximum benefit threshold + reference: + - title: BC Affordable Child Care Benefit — Eligibility, maximum benefit income threshold + href: https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit/information-for-families/eligibility-estimate-funding + - title: Early Learning and Child Care Regulation, B.C. Reg. 189/2024 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/189_2024 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/kindergarten.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/kindergarten.yaml new file mode 100644 index 000000000..63726b9cf --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/kindergarten.yaml @@ -0,0 +1,12 @@ +description: >- + British Columbia applies the kindergarten fee reduction rate starting at + this age through the Child Care Fee Reduction Initiative. +values: + 2018-01-01: 5 +metadata: + unit: year + period: year + label: BC CCFRI kindergarten age threshold + reference: + - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25, Table 1 + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf#page=5 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/preschool.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/preschool.yaml new file mode 100644 index 000000000..561c6cf6a --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/preschool.yaml @@ -0,0 +1,12 @@ +description: >- + British Columbia applies the preschool fee reduction rate starting at + this age through the Child Care Fee Reduction Initiative. +values: + 2018-01-01: 3 +metadata: + unit: year + period: year + label: BC CCFRI preschool age threshold + reference: + - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25, Table 1 + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf#page=5 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/school_age.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/school_age.yaml new file mode 100644 index 000000000..cded8f075 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/school_age.yaml @@ -0,0 +1,12 @@ +description: >- + British Columbia applies the school-age fee reduction rate starting at + this age through the Child Care Fee Reduction Initiative. +values: + 2018-01-01: 6 +metadata: + unit: year + period: year + label: BC CCFRI school age threshold + reference: + - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25, Table 1 + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf#page=5 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_age.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_age.yaml new file mode 100644 index 000000000..bae55083a --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_age.yaml @@ -0,0 +1,10 @@ +description: British Columbia limits eligibility for the Child Care Fee Reduction Initiative to children up to this age. +values: + 2018-01-01: 12 +metadata: + unit: year + period: year + label: BC Child Care Fee Reduction max age + reference: + - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25, Table 1 — Maximum eligible age + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf#page=5 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/infant_toddler.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/infant_toddler.yaml new file mode 100644 index 000000000..7ea280a54 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/infant_toddler.yaml @@ -0,0 +1,13 @@ +description: >- + British Columbia reduces child care fees by this monthly amount for + infant and toddler children (under 3 years) in licensed family or + in-home multi-age care through the Child Care Fee Reduction Initiative. +values: + 2024-01-01: 600 +metadata: + unit: currency-CAD + period: month + label: BC CCFRI max reduction for infant/toddler (family/in-home multi-age) + reference: + - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25, Table 1 + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf#page=5 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/kindergarten.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/kindergarten.yaml new file mode 100644 index 000000000..feb12bf75 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/kindergarten.yaml @@ -0,0 +1,13 @@ +description: >- + British Columbia reduces child care fees by this monthly amount for + kindergarten-age children in licensed family or in-home multi-age care + through the Child Care Fee Reduction Initiative. +values: + 2024-01-01: 500 +metadata: + unit: currency-CAD + period: month + label: BC CCFRI max reduction for kindergarten (family/in-home multi-age) + reference: + - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25, Table 1 + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf#page=5 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/preschool.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/preschool.yaml new file mode 100644 index 000000000..005120d45 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/preschool.yaml @@ -0,0 +1,13 @@ +description: >- + British Columbia reduces child care fees by this monthly amount for + preschool-age children (3 years to kindergarten) in licensed family or + in-home multi-age care through the Child Care Fee Reduction Initiative. +values: + 2024-01-01: 600 +metadata: + unit: currency-CAD + period: month + label: BC CCFRI max reduction for preschool (family/in-home multi-age) + reference: + - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25, Table 1 + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf#page=5 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/school_age.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/school_age.yaml new file mode 100644 index 000000000..002529ca7 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/school_age.yaml @@ -0,0 +1,13 @@ +description: >- + British Columbia reduces child care fees by this monthly amount for + school-age children (grade 1 to age 12) in licensed family or in-home + multi-age care through the Child Care Fee Reduction Initiative. +values: + 2024-01-01: 145 +metadata: + unit: currency-CAD + period: month + label: BC CCFRI max reduction for school age (family/in-home multi-age) + reference: + - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25, Table 1 + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf#page=5 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/infant_toddler.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/infant_toddler.yaml new file mode 100644 index 000000000..0f3157013 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/infant_toddler.yaml @@ -0,0 +1,16 @@ +description: >- + British Columbia reduces child care fees by this monthly amount for + infant and toddler children (under 3 years) in licensed group care + through the Child Care Fee Reduction Initiative. +values: + 2018-01-01: 350 + # CCFRI funding year runs April-March. Using Jan 1 for annual calculations. + 2024-01-01: 900 +metadata: + unit: currency-CAD + period: month + label: BC CCFRI max reduction for infant/toddler + note: "CCFRI Guidelines Table 1 defines Infant (0-18 months) and Toddler (18-36 months) as separate categories. Both share the same Group rate ($900 for 2024-25). May need splitting if rates diverge in future years." + reference: + - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25, Table 1 + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf#page=5 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/kindergarten.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/kindergarten.yaml new file mode 100644 index 000000000..2a78b8f76 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/kindergarten.yaml @@ -0,0 +1,15 @@ +description: >- + British Columbia reduces child care fees by this monthly amount for + kindergarten-age children in licensed group care through the Child Care + Fee Reduction Initiative. +values: + 2018-01-01: 100 + # CCFRI funding year runs April-March. Using Jan 1 for annual calculations. + 2024-01-01: 320 +metadata: + unit: currency-CAD + period: month + label: BC CCFRI max reduction for kindergarten + reference: + - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25, Table 1 + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf#page=5 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/preschool.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/preschool.yaml new file mode 100644 index 000000000..2eeaf2d0a --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/preschool.yaml @@ -0,0 +1,16 @@ +description: >- + British Columbia reduces child care fees by this monthly amount for + preschool-age children (3 years to kindergarten) in licensed group care + through the Child Care Fee Reduction Initiative. +values: + 2018-01-01: 100 + # CCFRI funding year runs April-March. Using Jan 1 for annual calculations. + 2023-09-01: 350 + 2024-01-01: 545 +metadata: + unit: currency-CAD + period: month + label: BC CCFRI max reduction for preschool (3 years to kindergarten) + reference: + - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25, Table 1 + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf#page=5 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/school_age.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/school_age.yaml new file mode 100644 index 000000000..4a7f97d94 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/school_age.yaml @@ -0,0 +1,15 @@ +description: >- + British Columbia reduces child care fees by this monthly amount for + school-age children (grade 1 to age 12) in licensed group care through + the Child Care Fee Reduction Initiative. +values: + 2018-01-01: 100 + # CCFRI funding year runs April-March. Using Jan 1 for annual calculations. + 2024-01-01: 115 +metadata: + unit: currency-CAD + period: month + label: BC CCFRI max reduction for school age + reference: + - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25, Table 1 + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf#page=5 diff --git a/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/income_limit.yaml b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/income_limit.yaml new file mode 100644 index 000000000..99dacfd40 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/income_limit.yaml @@ -0,0 +1,12 @@ +description: Ontario sets this maximum adjusted family income for eligibility for the Childcare Access and Relief from Expenses tax credit. +values: + 2019-01-01: 150_000 +metadata: + unit: currency-CAD + period: year + label: Ontario CARE credit income limit + reference: + - title: Ontario Taxation Act, 2007, s. 103.0.3(7) + href: https://www.ontario.ca/laws/statute/07o11#BK181 + - title: CRA ON479-A Schedule (2024) — CARE credit income limit + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/5006-tca/5006-tca-24e.pdf#page=1 diff --git a/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/age_threshold.yaml b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/age_threshold.yaml new file mode 100644 index 000000000..0072f7af1 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/age_threshold.yaml @@ -0,0 +1,13 @@ +description: Ontario uses this age threshold to determine the maximum Childcare Access and Relief from Expenses tax credit amount per child. +values: + 2019-01-01: 7 +metadata: + unit: year + period: year + label: Ontario CARE credit age threshold + note: "Documents OTA s. 103.0.3 maximum amounts. Not used in formula — Ontario CARE applies rate to federal CCED (line 21400) without separate cap." + reference: + - title: Ontario Taxation Act, 2007, s. 103.0.3(4) + href: https://www.ontario.ca/laws/statute/07o11#BK181 + - title: CRA ON479-A Schedule (2024) — CARE credit age threshold + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/5006-tca/5006-tca-24e.pdf#page=1 diff --git a/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/disabled.yaml b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/disabled.yaml new file mode 100644 index 000000000..e1e7427a9 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/disabled.yaml @@ -0,0 +1,15 @@ +description: Ontario sets this maximum Childcare Access and Relief from Expenses tax credit amount for children with severe disabilities. +values: + 2019-01-01: 8_250 + 2021-01-01: 9_900 # Includes 20% top-up for 2021 + 2022-01-01: 8_250 +metadata: + unit: currency-CAD + period: year + label: Ontario CARE max credit for children with disabilities + note: "Documents OTA s. 103.0.3 maximum amounts. Not used in formula — Ontario CARE applies rate to federal CCED (line 21400) without separate cap." + reference: + - title: Ontario Taxation Act, 2007, s. 103.0.3(4)(c) + href: https://www.ontario.ca/laws/statute/07o11#BK181 + - title: CRA ON479-A Schedule (2024) — CARE credit maximum for children with disabilities + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/5006-tca/5006-tca-24e.pdf#page=1 diff --git a/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/over_7.yaml b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/over_7.yaml new file mode 100644 index 000000000..579b1353f --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/over_7.yaml @@ -0,0 +1,15 @@ +description: Ontario sets this maximum Childcare Access and Relief from Expenses tax credit amount for children aged 7 to 16. +values: + 2019-01-01: 3_750 + 2021-01-01: 4_500 # Includes 20% top-up for 2021 + 2022-01-01: 3_750 +metadata: + unit: currency-CAD + period: year + label: Ontario CARE max credit for children 7-16 + note: "Documents OTA s. 103.0.3 maximum amounts. Not used in formula — Ontario CARE applies rate to federal CCED (line 21400) without separate cap." + reference: + - title: Ontario Taxation Act, 2007, s. 103.0.3(4)(b) + href: https://www.ontario.ca/laws/statute/07o11#BK181 + - title: CRA ON479-A Schedule (2024) — CARE credit maximum for children 7 to 16 + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/5006-tca/5006-tca-24e.pdf#page=1 diff --git a/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/under_7.yaml b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/under_7.yaml new file mode 100644 index 000000000..6aea0f393 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/under_7.yaml @@ -0,0 +1,15 @@ +description: Ontario sets this maximum Childcare Access and Relief from Expenses tax credit amount for children under 7. +values: + 2019-01-01: 6_000 + 2021-01-01: 7_200 # Includes 20% top-up for 2021 + 2022-01-01: 6_000 +metadata: + unit: currency-CAD + period: year + label: Ontario CARE max credit for children under 7 + note: "Documents OTA s. 103.0.3 maximum amounts. Not used in formula — Ontario CARE applies rate to federal CCED (line 21400) without separate cap." + reference: + - title: Ontario Taxation Act, 2007, s. 103.0.3(4)(a) + href: https://www.ontario.ca/laws/statute/07o11#BK181 + - title: CRA ON479-A Schedule (2024) — CARE credit maximum for children under 7 + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/5006-tca/5006-tca-24e.pdf#page=1 diff --git a/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/rate.yaml b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/rate.yaml new file mode 100644 index 000000000..35369d98d --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/rate.yaml @@ -0,0 +1,209 @@ +description: Ontario applies this rate to the federal child care expense deduction to calculate the Childcare Access and Relief from Expenses tax credit. +brackets: + - amount: + 2019-01-01: 0.75 + threshold: + 2019-01-01: 0 + + - amount: + 2019-01-01: 0.73 + threshold: + 2019-01-01: 20_001 + + - amount: + 2019-01-01: 0.71 + threshold: + 2019-01-01: 22_501 + + - amount: + 2019-01-01: 0.69 + threshold: + 2019-01-01: 25_001 + + - amount: + 2019-01-01: 0.67 + threshold: + 2019-01-01: 27_501 + + - amount: + 2019-01-01: 0.65 + threshold: + 2019-01-01: 30_001 + + - amount: + 2019-01-01: 0.63 + threshold: + 2019-01-01: 32_501 + + - amount: + 2019-01-01: 0.61 + threshold: + 2019-01-01: 35_001 + + - amount: + 2019-01-01: 0.59 + threshold: + 2019-01-01: 37_501 + + - amount: + 2019-01-01: 0.57 + threshold: + 2019-01-01: 40_001 + + - amount: + 2019-01-01: 0.55 + threshold: + 2019-01-01: 45_001 + + - amount: + 2019-01-01: 0.53 + threshold: + 2019-01-01: 50_001 + + - amount: + 2019-01-01: 0.51 + threshold: + 2019-01-01: 55_001 + + - amount: + 2019-01-01: 0.49 + threshold: + 2019-01-01: 60_001 + + - amount: + 2019-01-01: 0.47 + threshold: + 2019-01-01: 63_601 + + - amount: + 2019-01-01: 0.45 + threshold: + 2019-01-01: 67_201 + + - amount: + 2019-01-01: 0.43 + threshold: + 2019-01-01: 70_801 + + - amount: + 2019-01-01: 0.41 + threshold: + 2019-01-01: 74_401 + + - amount: + 2019-01-01: 0.39 + threshold: + 2019-01-01: 78_001 + + - amount: + 2019-01-01: 0.37 + threshold: + 2019-01-01: 81_601 + + - amount: + 2019-01-01: 0.35 + threshold: + 2019-01-01: 85_201 + + - amount: + 2019-01-01: 0.33 + threshold: + 2019-01-01: 88_801 + + - amount: + 2019-01-01: 0.31 + threshold: + 2019-01-01: 92_401 + + - amount: + 2019-01-01: 0.29 + threshold: + 2019-01-01: 96_001 + + - amount: + 2019-01-01: 0.27 + threshold: + 2019-01-01: 99_601 + + - amount: + 2019-01-01: 0.25 + threshold: + 2019-01-01: 103_201 + + - amount: + 2019-01-01: 0.23 + threshold: + 2019-01-01: 106_801 + + - amount: + 2019-01-01: 0.21 + threshold: + 2019-01-01: 110_401 + + - amount: + 2019-01-01: 0.19 + threshold: + 2019-01-01: 114_001 + + - amount: + 2019-01-01: 0.17 + threshold: + 2019-01-01: 117_601 + + - amount: + 2019-01-01: 0.15 + threshold: + 2019-01-01: 121_201 + + - amount: + 2019-01-01: 0.13 + threshold: + 2019-01-01: 124_801 + + - amount: + 2019-01-01: 0.11 + threshold: + 2019-01-01: 128_401 + + - amount: + 2019-01-01: 0.09 + threshold: + 2019-01-01: 132_001 + + - amount: + 2019-01-01: 0.07 + threshold: + 2019-01-01: 135_601 + + - amount: + 2019-01-01: 0.05 + threshold: + 2019-01-01: 139_201 + + - amount: + 2019-01-01: 0.03 + threshold: + 2019-01-01: 142_801 + + - amount: + 2019-01-01: 0.01 + threshold: + 2019-01-01: 146_401 + + - amount: + 2019-01-01: 0 + threshold: + 2019-01-01: 150_001 + +metadata: + type: single_amount + threshold_unit: currency-CAD + amount_unit: /1 + label: Ontario CARE credit rate + reference: + - title: Ontario Taxation Act, 2007, s. 103.0.3(6) + href: https://www.ontario.ca/laws/statute/07o11#BK181 + - title: CRA ON479-A Schedule (2019) -- CARE credit rate table + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/5006-tca/5006-tca-19e.pdf#page=2 + - title: CRA ON479-A Schedule (2024) — CARE credit rate table + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/5006-tca/5006-tca-24e.pdf#page=2 diff --git a/policyengine_canada/tests/gov/cra/deductions/child_care_expense/child_care_expense_deduction.yaml b/policyengine_canada/tests/gov/cra/deductions/child_care_expense/child_care_expense_deduction.yaml new file mode 100644 index 000000000..647b726df --- /dev/null +++ b/policyengine_canada/tests/gov/cra/deductions/child_care_expense/child_care_expense_deduction.yaml @@ -0,0 +1,329 @@ +- name: Basic child care expense deduction for child under 7 + period: 2024 + input: + people: + parent: + employment_income: 50_000 + child: + age: 5 + childcare_expense: 10_000 + is_dependant: true + individual_net_income: 0 + households: + household: + members: [parent, child] + output: + child_care_expense_deduction: 8_000 # Capped at $8,000 for child under 7 + child_care_expense_deduction_person: [8_000, 0] # Only parent claims it + +- name: Child care expense deduction for child aged 7-16 + period: 2024 + input: + people: + parent: + employment_income: 40_000 + child: + age: 10 + childcare_expense: 6_000 + is_dependant: true + individual_net_income: 0 + households: + household: + members: [parent, child] + output: + child_care_expense_deduction: 5_000 # Capped at $5,000 for child 7-16 + child_care_expense_deduction_person: [5_000, 0] + +- name: Child care expense deduction for disabled child + period: 2024 + input: + people: + parent: + employment_income: 60_000 + child: + age: 10 + childcare_expense: 12_000 + is_dependant: true + is_disabled: true + individual_net_income: 0 + households: + household: + members: [parent, child] + output: + child_care_expense_deduction: 11_000 # Capped at $11,000 for disabled child + child_care_expense_deduction_person: [11_000, 0] + +- name: Child care expense deduction limited by 2/3 earned income + period: 2024 + input: + people: + parent: + employment_income: 15_000 + child: + age: 5 + childcare_expense: 12_000 + is_dependant: true + individual_net_income: 0 + households: + household: + members: [parent, child] + output: + child_care_expense_deduction: 8_000 # Capped at $8,000 for child under 7, even though 2/3 of $15,000 = $10,000 + child_care_expense_deduction_person: [8_000, 0] + +- name: Multiple children with different ages + period: 2024 + input: + people: + parent: + employment_income: 80_000 + child1: + age: 4 + childcare_expense: 9_000 + is_dependant: true + individual_net_income: 0 + child2: + age: 12 + childcare_expense: 6_000 + is_dependant: true + individual_net_income: 0 + households: + household: + members: [parent, child1, child2] + output: + child_care_expense_deduction: 13_000 # $8,000 (child1 capped) + $5,000 (child2 capped) + child_care_expense_deduction_person: [13_000, 0, 0] + +- name: Child care expense deduction where 2/3 earned income is binding constraint + period: 2024 + absolute_error_margin: 0.5 + input: + people: + parent: + employment_income: 9_000 + child: + age: 5 + childcare_expense: 8_000 + is_dependant: true + individual_net_income: 0 + households: + household: + members: [parent, child] + output: + # Per-child cap: min($8,000 expenses, $8,000 under-7 limit) = $8,000 + # 2/3 earned income limit: $9,000 * 0.6667 = $6,000 (binding) + # Deduction = min($8,000, $6,000) = $6,000 + child_care_expense_deduction: 6_000 + child_care_expense_deduction_person: [6_000, 0] + +- name: Two-parent household - deduction claimed by lower-income spouse + period: 2024 + input: + people: + adult1: + employment_income: 80_000 + adult2: + employment_income: 30_000 + child: + age: 5 + childcare_expense: 10_000 + is_dependant: true + individual_net_income: 0 + households: + household: + members: [adult1, adult2, child] + output: + # Per-child cap: min($10,000 expenses, $8,000 under-7 limit) = $8,000 + # 2/3 claimant earned income: $30,000 * 0.6667 = $20,001 (not binding) + # Household deduction = $8,000 + # Allocated to lower-income spouse (adult2 with $30,000) + child_care_expense_deduction: 8_000 + child_care_expense_deduction_person: [0, 8_000, 0] + +- name: Two-parent household - 2/3 earned income uses claimant only + period: 2024 + absolute_error_margin: 0.5 + input: + people: + high_earner: + employment_income: 60_000 + low_earner: + employment_income: 6_000 + child: + age: 5 + childcare_expense: 8_000 + is_dependant: true + individual_net_income: 0 + households: + household: + members: [high_earner, low_earner, child] + output: + # Per-child cap: min($8,000 expenses, $8,000 under-7 limit) = $8,000 + # Claimant is low_earner (lower income, $6,000) + # Per ITA s. 63(1)(e): 2/3 of claimant's earned income = $6,000 * 0.6667 = $4,000 (binding) + # If family income were used: 2/3 * $66,000 = $44,000 (not binding) - WRONG + # Deduction = min($8,000, $4,000) = $4,000 + child_care_expense_deduction: 4_000 + child_care_expense_deduction_person: [0, 4_000, 0] + +# --- Boundary tests: age 6 vs 7 threshold (S9) --- + +- name: Boundary - child age 6 gets under-7 limit ($8,000) + period: 2024 + input: + people: + parent: + employment_income: 50_000 + child: + age: 6 + childcare_expense: 10_000 + is_dependant: true + individual_net_income: 0 + households: + household: + members: [parent, child] + output: + # age 6 < age_threshold 7, so under_7 limit = $8,000 + # min($10,000 expenses, $8,000 limit) = $8,000 + # 2/3 earned income: $50,000 * 0.6667 = $33,335 (not binding) + child_care_expense_deduction: 8_000 + child_care_expense_deduction_person: [8_000, 0] + +- name: Boundary - child age 7 gets over-7 limit ($5,000) + period: 2024 + input: + people: + parent: + employment_income: 50_000 + child: + age: 7 + childcare_expense: 10_000 + is_dependant: true + individual_net_income: 0 + households: + household: + members: [parent, child] + output: + # age 7 is NOT < age_threshold 7, so over_7 limit = $5,000 + # min($10,000 expenses, $5,000 limit) = $5,000 + # 2/3 earned income: $50,000 * 0.6667 = $33,335 (not binding) + child_care_expense_deduction: 5_000 + child_care_expense_deduction_person: [5_000, 0] + +# --- Boundary tests: age 15 vs 16 eligibility threshold (S10) --- + +- name: Boundary - child age 15 is eligible (under age limit 16) + period: 2024 + input: + people: + parent: + employment_income: 50_000 + child: + age: 15 + childcare_expense: 10_000 + is_dependant: true + individual_net_income: 0 + households: + household: + members: [parent, child] + output: + # age 15 < age_limit 16, so eligible; over_7 limit = $5,000 + # min($10,000 expenses, $5,000 limit) = $5,000 + child_care_expense_deduction: 5_000 + child_care_expense_deduction_person: [5_000, 0] + +- name: Boundary - child age 16 is ineligible (at age limit 16, no disability) + period: 2024 + input: + people: + parent: + employment_income: 50_000 + child: + age: 16 + childcare_expense: 10_000 + is_dependant: true + individual_net_income: 0 + households: + household: + members: [parent, child] + output: + # age 16 is NOT < age_limit 16, and no disability, so ineligible + # max_per_child = $0, deduction = $0 + child_care_expense_deduction: 0 + child_care_expense_deduction_person: [0, 0] + +# --- Boundary test: disabled child over age 16 (S11) --- + +- name: Boundary - disabled child age 17 is still eligible + period: 2024 + input: + people: + parent: + employment_income: 50_000 + child: + age: 17 + childcare_expense: 12_000 + is_dependant: true + is_disabled: true + individual_net_income: 0 + households: + household: + members: [parent, child] + output: + # age 17 >= age_limit 16, but has disability, so eligible + # Disabled limit = $11,000 + # min($12,000 expenses, $11,000 limit) = $11,000 + # 2/3 earned income: $50,000 * 0.6667 = $33,335 (not binding) + child_care_expense_deduction: 11_000 + child_care_expense_deduction_person: [11_000, 0] + +# --- Edge case: zero earned income (S13) --- + +- name: Edge case - zero earned income yields zero deduction + period: 2024 + input: + people: + parent: + employment_income: 0 + self_employment_income: 0 + child: + age: 5 + childcare_expense: 8_000 + is_dependant: true + individual_net_income: 0 + households: + household: + members: [parent, child] + output: + # Per-child cap: min($8,000 expenses, $8,000 under-7 limit) = $8,000 + # Claimant earned income = $0 + $0 = $0 + # 2/3 earned income limit: $0 * 0.6667 = $0 (binding) + # max_(0, min($8,000, $0)) = $0 + child_care_expense_deduction: 0 + child_care_expense_deduction_person: [0, 0] + +# --- Edge case: negative self-employment income (S14) --- + +- name: Edge case - negative self-employment income reduces earned income + period: 2024 + absolute_error_margin: 0.5 + input: + people: + parent: + employment_income: 50_000 + self_employment_income: -10_000 + child: + age: 5 + childcare_expense: 8_000 + is_dependant: true + individual_net_income: 0 + households: + household: + members: [parent, child] + output: + # Per-child cap: min($8,000 expenses, $8,000 under-7 limit) = $8,000 + # Claimant earned income = $50,000 + (-$10,000) = $40,000 + # 2/3 earned income limit: $40,000 * 0.6667 = $26,668 (not binding) + # max_(0, min($8,000, $26,668)) = $8,000 + child_care_expense_deduction: 8_000 + child_care_expense_deduction_person: [8_000, 0] diff --git a/policyengine_canada/tests/gov/provinces/ab/benefits/child_care/ab_child_care_subsidy.yaml b/policyengine_canada/tests/gov/provinces/ab/benefits/child_care/ab_child_care_subsidy.yaml new file mode 100644 index 000000000..2df5a458f --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/ab/benefits/child_care/ab_child_care_subsidy.yaml @@ -0,0 +1,247 @@ +- name: Alberta Child Care Subsidy - preschool at maximum + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 3 + is_child: true + households: + household: + province_code: AB + members: [parent, child] + adjusted_family_net_income: 40_000 + output: + ab_child_care_subsidy: 3_192 # $266/month * 12, income in lowest bracket + +- name: Alberta Child Care Subsidy - school age child + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 8 + is_child: true + households: + household: + province_code: AB + members: [parent, child] + adjusted_family_net_income: 50_000 + output: + ab_child_care_subsidy: 4_176 # $348/month * 12, income in $50k-$55k bracket + +- name: Alberta Child Care Subsidy - preschool income over limit (ineligible) + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 3 + is_child: true + households: + household: + province_code: AB + members: [parent, child] + adjusted_family_net_income: 185_000 + output: + ab_child_care_subsidy: 0 # Income over $180,000 limit + +- name: Alberta Child Care Subsidy - school age income over limit (ineligible) + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 8 + is_child: true + households: + household: + province_code: AB + members: [parent, child] + adjusted_family_net_income: 95_000 + output: + ab_child_care_subsidy: 0 # Income over $90,000 limit for school age + +- name: Alberta Child Care Subsidy - reduced bracket for preschool + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 4 + is_child: true + households: + household: + province_code: AB + members: [parent, child] + adjusted_family_net_income: 130_000 + output: + ab_child_care_subsidy: 2_712 # $226/month * 12, income in $130k-$135k bracket + +- name: Alberta Child Care Subsidy - multiple children mixed ages + period: 2024 + input: + people: + parent: + age: 30 + child1: + age: 3 + is_child: true + child2: + age: 7 + is_child: true + households: + household: + province_code: AB + members: [parent, child1, child2] + adjusted_family_net_income: 60_000 + output: + ab_child_care_subsidy: 6_492 # Preschool $266/mo + school-age $275/mo = $541/mo * 12 + +- name: Alberta Child Care Subsidy - child aged 13 (ineligible) + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 13 + is_child: true + households: + household: + province_code: AB + members: [parent, child] + adjusted_family_net_income: 50_000 + output: + ab_child_care_subsidy: 0 # Child over age 12 + +- name: Alberta Child Care Subsidy - preschool mid-range bracket + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 2 + is_child: true + households: + household: + province_code: AB + members: [parent, child] + adjusted_family_net_income: 155_000 + output: + ab_child_care_subsidy: 1_920 # $160/month * 12, income in $155k-$160k bracket + +- name: Alberta Child Care Subsidy - school age lowest bracket + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 6 + is_child: true + households: + household: + province_code: AB + members: [parent, child] + adjusted_family_net_income: 30_000 + output: + ab_child_care_subsidy: 4_392 # $366/month * 12, income in lowest bracket + +- name: Alberta Child Care Subsidy - preschool top of max bracket boundary + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 3 + is_child: true + households: + household: + province_code: AB + members: [parent, child] + adjusted_family_net_income: 119_999 + output: + ab_child_care_subsidy: 3_192 # $266/month * 12, income $119,999 still in $0-$120k bracket + +- name: Alberta Child Care Subsidy - preschool first reduced bracket boundary + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 3 + is_child: true + households: + household: + province_code: AB + members: [parent, child] + adjusted_family_net_income: 120_000 + output: + ab_child_care_subsidy: 3_036 # $253/month * 12, income $120,000 enters $120k-$125k bracket + +- name: Alberta Child Care Subsidy - school age top of max bracket boundary + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 8 + is_child: true + households: + household: + province_code: AB + members: [parent, child] + adjusted_family_net_income: 49_999 + output: + ab_child_care_subsidy: 4_392 # $366/month * 12, income $49,999 still in $0-$50k bracket + +- name: Alberta Child Care Subsidy - preschool at exactly $180,000 cutoff + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 3 + is_child: true + households: + household: + province_code: AB + members: [parent, child] + adjusted_family_net_income: 180_000 + output: + ab_child_care_subsidy: 0 # $0/month * 12, income at $180k bracket = $0 + +# --- Boundary test: age 5 preschool-to-school-age transition (S13) --- + +- name: Boundary - child age 5 uses school-age schedule (not preschool) + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 5 + is_child: true + households: + household: + province_code: AB + members: [parent, child] + adjusted_family_net_income: 40_000 + output: + # preschool_age_threshold = 5, so is_preschool = (age < 5) = false + # is_school_age = (age >= 5) & (age <= 12) = true + # School-age schedule at $40,000 income: $0-$50k bracket = $366/month + # Annual = $366 * 12 = $4,392 + # (Compare: preschool at same income would be $266/month = $3,192/year) + ab_child_care_subsidy: 4_392 diff --git a/policyengine_canada/tests/gov/provinces/bc/benefits/child_care/bc_affordable_child_care_benefit.yaml b/policyengine_canada/tests/gov/provinces/bc/benefits/child_care/bc_affordable_child_care_benefit.yaml new file mode 100644 index 000000000..b51aa1c03 --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/bc/benefits/child_care/bc_affordable_child_care_benefit.yaml @@ -0,0 +1,221 @@ +- name: BC Affordable Child Care Benefit - infant at maximum benefit + period: 2024 + input: + people: + parent: + age: 30 + infant: + age: 1 + is_child: true + households: + household: + province_code: BC + members: [parent, infant] + adjusted_family_net_income: 40_000 + output: + bc_affordable_child_care_benefit: 15_000 # $1,250/month * 12 + +- name: BC Affordable Child Care Benefit - toddler 19-36 months + period: 2024 + input: + people: + parent: + age: 30 + toddler: + age: 2 + is_child: true + households: + household: + province_code: BC + members: [parent, toddler] + adjusted_family_net_income: 40_000 + output: + bc_affordable_child_care_benefit: 12_720 # $1,060/month * 12 + +- name: BC Affordable Child Care Benefit - preschool age child + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 4 + is_child: true + households: + household: + province_code: BC + members: [parent, child] + adjusted_family_net_income: 40_000 + output: + bc_affordable_child_care_benefit: 6_600 # $550/month * 12 + +- name: BC Affordable Child Care Benefit - school age child + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 8 + is_child: true + households: + household: + province_code: BC + members: [parent, child] + adjusted_family_net_income: 40_000 + output: + bc_affordable_child_care_benefit: 4_980 # $415/month * 12 + +- name: BC Affordable Child Care Benefit - income above general limit (ineligible) + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 3 + is_child: true + households: + household: + province_code: BC + members: [parent, child] + adjusted_family_net_income: 120_000 + output: + bc_affordable_child_care_benefit: 0 # Income over $111,000 + +- name: BC Affordable Child Care Benefit - with family size adjustment + period: 2024 + absolute_error_margin: 0.01 + input: + people: + parent1: + age: 30 + parent2: + age: 32 + child1: + age: 2 + is_child: true + child2: + age: 5 + is_child: true + child3: + age: 8 + is_child: true + households: + household: + province_code: BC + members: [parent1, parent2, child1, child2, child3] + adjusted_family_net_income: 80_000 + household_size: 5 + output: + bc_affordable_child_care_benefit: 12714.55 # ($1,060 + $415 + $415) * 12 with income phase-out and family size adjustment + +- name: BC Affordable Child Care Benefit - partial benefit above threshold + period: 2024 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + child: + age: 3 + is_child: true + households: + household: + province_code: BC + members: [parent, child] + adjusted_family_net_income: 75_000 + output: + bc_affordable_child_care_benefit: 3_600 # Partial benefit due to income phase-out + +# --- Boundary tests: income at exactly $111,000 limit (S12) --- + +- name: Boundary - income exactly at $111,000 limit (eligible but fully phased out) + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 3 + is_child: true + households: + household: + province_code: BC + members: [parent, child] + adjusted_family_net_income: 111_000 + output: + # 2-person household: family_size_adjustment = max(0, 2 - 2) * $2,000 = $0 + # adjusted_income = $111,000 + # adjusted_income <= income_limit ($111,000) => eligible = true + # benefit_rate = max(0, 1 - (111,000 - 45,000) / (111,000 - 45,000)) = 0 + # Benefit = $550 * 12 * 0 = $0 + bc_affordable_child_care_benefit: 0 + +- name: Boundary - income $111,001 just above limit (ineligible) + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 3 + is_child: true + households: + household: + province_code: BC + members: [parent, child] + adjusted_family_net_income: 111_001 + output: + # 2-person household: family_size_adjustment = $0 + # adjusted_income = $111,001 > income_limit ($111,000) => eligible = false + # Benefit = $0 + bc_affordable_child_care_benefit: 0 + +# --- Edge case: zero income family (S15) --- + +- name: Edge case - zero income family gets full maximum benefit + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 2 + is_child: true + households: + household: + province_code: BC + members: [parent, child] + adjusted_family_net_income: 0 + output: + # adjusted_income = max(0, $0 - $0 family_size_adj) = $0 + # $0 <= $111,000 income_limit => eligible + # $0 <= $45,000 max_benefit_threshold => benefit_rate = 1.0 + # Age 2 >= toddler(1.583) and < preschool(3) => toddler rate $1,060/month + # Annual benefit = $1,060 * 12 * 1.0 = $12,720 + bc_affordable_child_care_benefit: 12_720 + +# --- Edge case: infant age 0 gets under-19-months rate (S16) --- + +- name: Edge case - infant age 0 gets under-19-months rate + period: 2024 + input: + people: + parent: + age: 25 + infant: + age: 0 + is_child: true + households: + household: + province_code: BC + members: [parent, infant] + adjusted_family_net_income: 30_000 + output: + # adjusted_income = max(0, $30,000 - $0 family_size_adj) = $30,000 + # $30,000 <= $111,000 income_limit => eligible + # $30,000 <= $45,000 max_benefit_threshold => benefit_rate = 1.0 + # Age 0 < toddler(1.583) => under_19_months rate $1,250/month + # Annual benefit = $1,250 * 12 * 1.0 = $15,000 + bc_affordable_child_care_benefit: 15_000 diff --git a/policyengine_canada/tests/gov/provinces/bc/benefits/child_care/bc_child_care_fee_reduction.yaml b/policyengine_canada/tests/gov/provinces/bc/benefits/child_care/bc_child_care_fee_reduction.yaml new file mode 100644 index 000000000..311bb2753 --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/bc/benefits/child_care/bc_child_care_fee_reduction.yaml @@ -0,0 +1,227 @@ +- name: BC Child Care Fee Reduction - infant/toddler + period: 2024 + input: + people: + parent: + age: 30 + infant: + age: 1 + households: + household: + province_code: BC + members: [parent, infant] + output: + bc_child_care_fee_reduction: 10_800 # $900/month * 12 (not income-tested) + +- name: BC Child Care Fee Reduction - preschool age + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 4 + households: + household: + province_code: BC + members: [parent, child] + output: + bc_child_care_fee_reduction: 6_540 # $545/month * 12 + +- name: BC Child Care Fee Reduction - kindergarten age + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 5 + households: + household: + province_code: BC + members: [parent, child] + output: + bc_child_care_fee_reduction: 3_840 # $320/month * 12 + +- name: BC Child Care Fee Reduction - school age + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 8 + households: + household: + province_code: BC + members: [parent, child] + output: + bc_child_care_fee_reduction: 1_380 # $115/month * 12 + +- name: BC Child Care Fee Reduction - child over age 12 (ineligible) + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 13 + households: + household: + province_code: BC + members: [parent, child] + output: + bc_child_care_fee_reduction: 0 # Child over 12 + +- name: BC Child Care Fee Reduction - multiple children + period: 2024 + input: + people: + parent: + age: 30 + child1: + age: 2 + child2: + age: 6 + child3: + age: 10 + households: + household: + province_code: BC + members: [parent, child1, child2, child3] + output: + bc_child_care_fee_reduction: 13_560 # ($900 infant/toddler + $115 school age 6 + $115 school age 10) per month * 12 + +- name: BC Child Care Fee Reduction - high income family (still eligible) + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 3 + households: + household: + province_code: BC + members: [parent, child] + adjusted_family_net_income: 200_000 + output: + bc_child_care_fee_reduction: 6_540 # Not income-tested, $545/month * 12 for preschool age (3 years) + +- name: BC Child Care Fee Reduction - age 2 infant/toddler boundary + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 2 + households: + household: + province_code: BC + members: [parent, child] + output: + bc_child_care_fee_reduction: 10_800 # Age 2 < 3 (preschool threshold), infant/toddler rate $900/month * 12 + +- name: BC Child Care Fee Reduction - age 12 max eligible school age + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 12 + households: + household: + province_code: BC + members: [parent, child] + output: + bc_child_care_fee_reduction: 1_380 # Age 12 <= max_age (12), school-age rate $115/month * 12 + +- name: BC Child Care Fee Reduction - age 3 preschool boundary start + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 3 + households: + household: + province_code: BC + members: [parent, child] + output: + bc_child_care_fee_reduction: 6_540 # Age 3 >= preschool threshold (3), preschool rate $545/month * 12 + +# --- Edge case: newborn age 0 gets infant/toddler rate (S17) --- + +- name: Edge case - newborn age 0 gets infant/toddler rate + period: 2024 + input: + people: + parent: + age: 28 + newborn: + age: 0 + households: + household: + province_code: BC + members: [parent, newborn] + output: + # Age 0 < preschool_age threshold => is_infant_toddler = True + # Monthly reduction = $900 (infant_toddler rate) + # Annual reduction = $900 * 12 = $10,800 + bc_child_care_fee_reduction: 10_800 + +# --- Family/in-home multi-age care tests --- + +- name: BC Child Care Fee Reduction - family care infant/toddler + period: 2024 + input: + people: + parent: + age: 30 + infant: + age: 1 + is_family_child_care: true + households: + household: + province_code: BC + members: [parent, infant] + output: + bc_child_care_fee_reduction: 7_200 # $600/month * 12 (family rate) + +- name: BC Child Care Fee Reduction - family care school age + period: 2024 + input: + people: + parent: + age: 30 + child: + age: 8 + is_family_child_care: true + households: + household: + province_code: BC + members: [parent, child] + output: + bc_child_care_fee_reduction: 1_740 # $145/month * 12 (family rate) + +- name: BC Child Care Fee Reduction - mixed group and family care + period: 2024 + input: + people: + parent: + age: 30 + child1: + age: 1 + is_family_child_care: true + child2: + age: 4 + is_family_child_care: false + households: + household: + province_code: BC + members: [parent, child1, child2] + output: + bc_child_care_fee_reduction: 13_740 # ($600 family infant + $545 group preschool) * 12 diff --git a/policyengine_canada/tests/gov/provinces/on/tax/income/credits/child_care/on_child_care_tax_credit.yaml b/policyengine_canada/tests/gov/provinces/on/tax/income/credits/child_care/on_child_care_tax_credit.yaml new file mode 100644 index 000000000..d573846fd --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/on/tax/income/credits/child_care/on_child_care_tax_credit.yaml @@ -0,0 +1,133 @@ +- name: Low income family - 75% rate + period: 2024 + input: + family_net_income: 10_000 + child_care_expense_deduction: 8_000 + province_code: ONT + output: + # adjusted_income = 10,000 + 8,000 = 18,000 -> rate 0.75 (bracket $0 to $20,000) + on_child_care_tax_credit: 6_000 # 0.75 * 8,000 + +- name: Income in 73% bracket (adjusted $22,000) + period: 2024 + input: + family_net_income: 14_000 + child_care_expense_deduction: 8_000 + province_code: ONT + output: + # adjusted_income = 14,000 + 8,000 = 22,000 -> rate 0.73 (bracket >20,000 to 22,500) + on_child_care_tax_credit: 5_840 # 0.73 * 8,000 + +- name: Income in 71% bracket (adjusted $23,000) + period: 2024 + input: + family_net_income: 15_000 + child_care_expense_deduction: 8_000 + province_code: ONT + output: + # adjusted_income = 15,000 + 8,000 = 23,000 -> rate 0.71 (bracket >22,500 to 25,000) + on_child_care_tax_credit: 5_680 # 0.71 * 8,000 + +- name: Boundary - adjusted income exactly $20,000 stays in 75% bracket + period: 2024 + input: + family_net_income: 12_000 + child_care_expense_deduction: 8_000 + province_code: ONT + output: + # adjusted_income = 12,000 + 8,000 = 20,000 -> rate 0.75 (bracket $0 to $20,000) + # Form says "$0 to $20,000" so $20,000 exactly is still 75% + on_child_care_tax_credit: 6_000 # 0.75 * 8,000 + +- name: Boundary - adjusted income $20,001 drops to 73% bracket + period: 2024 + input: + family_net_income: 12_001 + child_care_expense_deduction: 8_000 + province_code: ONT + output: + # adjusted_income = 12,001 + 8,000 = 20,001 -> rate 0.73 (bracket >20,000 to 22,500) + # Form says "more than $20,000" so $20,001 is the first integer in the 73% bracket + on_child_care_tax_credit: 5_840 # 0.73 * 8,000 + +- name: Income in 55% bracket (adjusted $50,000 exactly) + period: 2024 + input: + family_net_income: 45_000 + child_care_expense_deduction: 5_000 + province_code: ONT + output: + # adjusted_income = 45,000 + 5,000 = 50,000 -> rate 0.55 (bracket >45,000 to 50,000) + # Form says "not more than $50,000" so $50,000 is still in the 55% bracket + on_child_care_tax_credit: 2_750 # 0.55 * 5,000 + +- name: Boundary - adjusted income exactly $150,000 gets 1% rate + period: 2024 + input: + family_net_income: 142_000 + child_care_expense_deduction: 8_000 + province_code: ONT + output: + # adjusted_income = 142,000 + 8,000 = 150,000 -> rate 0.01 (bracket >146,400 to 150,000) + # Form says "not more than $150,000" so $150,000 is still in the 1% bracket + on_child_care_tax_credit: 80 # 0.01 * 8,000 + +- name: Income above limit - ineligible + period: 2024 + input: + family_net_income: 145_000 + child_care_expense_deduction: 8_000 + province_code: ONT + output: + # adjusted_income = 145,000 + 8,000 = 153,000 > 150,000 + on_child_care_tax_credit: 0 + +- name: Income in 1% bracket + period: 2024 + input: + family_net_income: 140_000 + child_care_expense_deduction: 8_000 + province_code: ONT + output: + # adjusted_income = 140,000 + 8,000 = 148,000 -> rate 0.01 (bracket >146,400 to 150,000) + on_child_care_tax_credit: 80 # 0.01 * 8,000 + +- name: Zero child care expenses + period: 2024 + input: + family_net_income: 30_000 + child_care_expense_deduction: 0 + province_code: ONT + output: + on_child_care_tax_credit: 0 + +- name: Small CCED with mid-range income (47% bracket) + period: 2024 + input: + family_net_income: 60_000 + child_care_expense_deduction: 5_000 + province_code: ONT + output: + # adjusted_income = 60,000 + 5,000 = 65,000 -> rate 0.47 (bracket >63,600 to 67,200) + on_child_care_tax_credit: 2_350 # 0.47 * 5,000 + +- name: Boundary - adjusted income just below $150,000 limit + period: 2024 + input: + family_net_income: 141_999 + child_care_expense_deduction: 8_000 + province_code: ONT + output: + # adjusted_income = 141,999 + 8,000 = 149,999 -> eligible (<= 150,000) + # rate = 0.01 (bracket >146,400 to 150,000) + on_child_care_tax_credit: 80 # 0.01 * 8,000 + +- name: Boundary - adjusted income just above $150,000 limit + period: 2024 + input: + family_net_income: 142_001 + child_care_expense_deduction: 8_000 + province_code: ONT + output: + # adjusted_income = 142,001 + 8,000 = 150,001 > 150,000 -> ineligible + on_child_care_tax_credit: 0 diff --git a/policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction.py b/policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction.py new file mode 100644 index 000000000..e667a4ddb --- /dev/null +++ b/policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction.py @@ -0,0 +1,49 @@ +from policyengine_canada.model_api import * + + +class child_care_expense_deduction(Variable): + value_type = float + entity = Household + label = "Child care expense deduction" + documentation = "Federal deduction for child care expenses (line 21400). In two-parent households, typically claimed by the lower-income spouse." + unit = CAD + definition_period = YEAR + reference = ( + "https://laws-lois.justice.gc.ca/eng/acts/I-3.3/section-63.html", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/t778/t778-24e.pdf", + ) + + def formula(household, period, parameters): + person = household.members + + # Step 1: Cap each child's expenses at their per-child maximum + expenses = person("childcare_expense", period) + max_per_child = person( + "child_care_expense_deduction_max_per_child", period + ) + capped_expenses = min_(expenses, max_per_child) + total_household_expenses = household.sum(capped_expenses) + + # Step 2: Apply 2/3 earned income limit per ITA s. 63(1)(e) + # "2/3 of the taxpayer's earned income" - the taxpayer is the + # lower-income claimant per ITA s. 63(2), not the family total. + p = parameters(period).gov.cra.deductions.child_care_expense + + is_claimant = person("is_child_care_expense_claimant", period) + + # Claimant's earned income per ITA s. 63(3) + # ITA s. 63(3) "earned income" also includes CPP/QPP disability + # benefits, taxable scholarships/fellowships/bursaries, + # apprenticeship incentive grants, and research grants (net of + # expenses). These are not yet modeled in policyengine-canada. + person_earned_income = person("employment_income", period) + person( + "self_employment_income", period + ) + claimant_earned_income = household.sum( + where(is_claimant, person_earned_income, 0) + ) + earned_income_limit = claimant_earned_income * p.earned_income_fraction + + # Prevent negative deduction when self-employment losses + # make earned_income_limit negative (ITA s. 63). + return max_(0, min_(total_household_expenses, earned_income_limit)) diff --git a/policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction_max_per_child.py b/policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction_max_per_child.py new file mode 100644 index 000000000..2682d66ff --- /dev/null +++ b/policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction_max_per_child.py @@ -0,0 +1,37 @@ +from policyengine_canada.model_api import * + + +class child_care_expense_deduction_max_per_child(Variable): + value_type = float + entity = Person + label = "Maximum child care expense deduction per child" + documentation = "Maximum deductible child care expenses per eligible child based on age and disability status" + unit = CAD + definition_period = YEAR + reference = ( + "https://laws-lois.justice.gc.ca/eng/acts/I-3.3/section-63.html", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/t778/t778-24e.pdf#page=3", + ) + + def formula(person, period, parameters): + age = person("age", period) + is_disabled = person("is_disabled", period) + is_eligible = person( + "is_eligible_child_for_child_care_expense_deduction", period + ) + p = parameters(period).gov.cra.deductions.child_care_expense + + # Per ITA s. 63(3) "annual child care expense amount" + return where( + is_eligible, + where( + is_disabled, + p.limit.disabled, + where( + age < p.limit.age_threshold, + p.limit.under_7, + p.limit.over_7, + ), + ), + 0, + ) diff --git a/policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction_person.py b/policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction_person.py new file mode 100644 index 000000000..64033d020 --- /dev/null +++ b/policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction_person.py @@ -0,0 +1,20 @@ +from policyengine_canada.model_api import * + + +class child_care_expense_deduction_person(Variable): + value_type = float + entity = Person + label = "Child care expense deduction (person-level)" + documentation = "Federal child care expense deduction allocated to the person in the household. In two-parent households, typically allocated to the lower-income spouse." + unit = CAD + definition_period = YEAR + reference = ( + "https://laws-lois.justice.gc.ca/eng/acts/I-3.3/section-63.html", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/t778/t778-24e.pdf", + ) + + def formula(person, period, parameters): + household = person.household + household_deduction = household("child_care_expense_deduction", period) + is_claimant = person("is_child_care_expense_claimant", period) + return where(is_claimant, household_deduction, 0) diff --git a/policyengine_canada/variables/gov/cra/deductions/child_care_expense/is_child_care_expense_claimant.py b/policyengine_canada/variables/gov/cra/deductions/child_care_expense/is_child_care_expense_claimant.py new file mode 100644 index 000000000..8b501d310 --- /dev/null +++ b/policyengine_canada/variables/gov/cra/deductions/child_care_expense/is_child_care_expense_claimant.py @@ -0,0 +1,34 @@ +from policyengine_canada.model_api import * + + +class is_child_care_expense_claimant(Variable): + value_type = bool + entity = Person + label = "Whether this person is the child care expense claimant" + documentation = "Per ITA s. 63(2), the lower net income supporting person claims the child care expense deduction. Uses total_individual_pre_tax_income as a proxy for net income to avoid circular dependency." + definition_period = YEAR + reference = ( + "https://laws-lois.justice.gc.ca/eng/acts/I-3.3/section-63.html", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/t778/t778-24e.pdf", + ) + + def formula(person, period, parameters): + household = person.household + + # Per ITA s. 63(2), the lower net income supporting person claims. + income = person("total_individual_pre_tax_income", period) + has_income = income > 0 + + # Among earners, find the one with the lowest income. + # Non-earners get inf so they never match the household minimum. + earner_income = where(has_income, income, inf) + min_earner_income = household.min(earner_income) + is_lowest_earner = earner_income == min_earner_income + + # Use person_index as a deterministic tiebreaker when two + # earners have equal income: lowest index claims. + person_idx = person("person_index", period) + min_idx_among_lowest = household.min( + where(is_lowest_earner, person_idx, inf) + ) + return is_lowest_earner & (person_idx == min_idx_among_lowest) diff --git a/policyengine_canada/variables/gov/cra/deductions/child_care_expense/is_eligible_child_for_child_care_expense_deduction.py b/policyengine_canada/variables/gov/cra/deductions/child_care_expense/is_eligible_child_for_child_care_expense_deduction.py new file mode 100644 index 000000000..163918992 --- /dev/null +++ b/policyengine_canada/variables/gov/cra/deductions/child_care_expense/is_eligible_child_for_child_care_expense_deduction.py @@ -0,0 +1,27 @@ +from policyengine_canada.model_api import * + + +class is_eligible_child_for_child_care_expense_deduction(Variable): + value_type = bool + entity = Person + label = "Eligible child for child care expense deduction" + documentation = "Whether the person is an eligible child for the federal child care expense deduction" + definition_period = YEAR + reference = ( + "https://laws-lois.justice.gc.ca/eng/acts/I-3.3/section-63.html", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/t778/t778-24e.pdf#page=2", + ) + + def formula(person, period, parameters): + age = person("age", period) + is_dependant = person("is_dependant", period) + p = parameters(period).gov.cra.deductions.child_care_expense + + # Per ITA s. 63(3): child must be under 16 or have a disability + age_eligible = age < p.age_limit + has_disability = person("is_disabled", period) + + # Must be a dependant. Child's net income limit is not checked + # here to avoid circular dependency (net income depends on this + # deduction via deductions_from_total_to_net_income). + return is_dependant & (age_eligible | has_disability) diff --git a/policyengine_canada/variables/gov/cra/deductions/deductions_from_total_to_net_income.py b/policyengine_canada/variables/gov/cra/deductions/deductions_from_total_to_net_income.py index 3ea006133..0695ca987 100644 --- a/policyengine_canada/variables/gov/cra/deductions/deductions_from_total_to_net_income.py +++ b/policyengine_canada/variables/gov/cra/deductions/deductions_from_total_to_net_income.py @@ -9,3 +9,7 @@ class deductions_from_total_to_net_income(Variable): documentation = "Deductions used in the calculation of Net Income" definition_period = YEAR reference = "SPSD/M 29.0 Variable Guide, Page 8" + + adds = [ + "child_care_expense_deduction_person", + ] diff --git a/policyengine_canada/variables/gov/provinces/ab/benefits/child_care/ab_child_care_subsidy.py b/policyengine_canada/variables/gov/provinces/ab/benefits/child_care/ab_child_care_subsidy.py new file mode 100644 index 000000000..27840ab2c --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/ab/benefits/child_care/ab_child_care_subsidy.py @@ -0,0 +1,40 @@ +from policyengine_canada.model_api import * + + +class ab_child_care_subsidy(Variable): + value_type = float + entity = Household + label = "Alberta Child Care Subsidy" + unit = CAD + definition_period = YEAR + defined_for = ProvinceCode.AB + reference = "https://www.alberta.ca/child-care-subsidy" + + def formula(household, period, parameters): + p = parameters(period).gov.provinces.ab.benefits.child_care + income = household("adjusted_family_net_income", period) + + person = household.members + age = person("age", period) + + # Per alberta.ca, subsidy depends on child age group + preschool_age = p.age_threshold.preschool + school_age_max = p.age_threshold.school_age_max + + is_preschool = age < preschool_age + is_school_age = (age >= preschool_age) & (age <= school_age_max) + + # Look up monthly subsidy from income bracket tables + preschool_monthly = p.subsidy_schedule.preschool.calc(income) + school_age_monthly = p.subsidy_schedule.school_age.calc(income) + + monthly_subsidy = where( + is_preschool, + preschool_monthly, + where(is_school_age, school_age_monthly, 0), + ) + + # Annual subsidy = monthly amount * 12 months + annual_per_child = monthly_subsidy * 12 + + return household.sum(annual_per_child) diff --git a/policyengine_canada/variables/gov/provinces/bc/benefits/child_care/bc_affordable_child_care_benefit.py b/policyengine_canada/variables/gov/provinces/bc/benefits/child_care/bc_affordable_child_care_benefit.py new file mode 100644 index 000000000..5d0b8131f --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/bc/benefits/child_care/bc_affordable_child_care_benefit.py @@ -0,0 +1,69 @@ +from policyengine_canada.model_api import * + + +class bc_affordable_child_care_benefit(Variable): + value_type = float + entity = Household + label = "BC Affordable Child Care Benefit" + unit = CAD + definition_period = YEAR + defined_for = ProvinceCode.BC + reference = ( + "https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit", + "https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit/information-for-families/rates-payments", + ) + + def formula(household, period, parameters): + p = parameters(period).gov.provinces.bc.benefits.child_care + + # Family size adjustment: per member beyond base count + income = household("adjusted_family_net_income", period) + household_size = household("household_size", period) + family_size_adjustment = ( + max_(0, household_size - p.base_family_size) + * p.family_size_adjustment + ) + adjusted_income = max_(0, income - family_size_adjustment) + + eligible = adjusted_income <= p.income_limit + + person = household.members + age = person("age", period) + + # Age boundaries per ACCB rate schedule + toddler_age = p.age.toddler + preschool_age = p.age.preschool + school_age_start = p.age.school_age + max_age = p.age.max_age + + is_under_19_months = age < toddler_age + is_toddler = (age >= toddler_age) & (age < preschool_age) + is_preschool = (age >= preschool_age) & (age < school_age_start) + is_school_age = (age >= school_age_start) & (age < max_age) + + monthly_benefit = select( + [is_under_19_months, is_toddler, is_preschool, is_school_age], + [ + p.max_amount.under_19_months, + p.max_amount.age_19_to_36_months, + p.max_amount.preschool_age, + p.max_amount.school_age, + ], + default=0, + ) + + # Income phase-out above max benefit threshold + max_benefit_threshold = p.max_benefit_income_threshold + excess_income = max_(0, adjusted_income - max_benefit_threshold) + phase_out_range = p.income_limit - max_benefit_threshold + phase_out_fraction = excess_income / phase_out_range + benefit_rate = where( + adjusted_income <= max_benefit_threshold, + 1.0, + max_(0, 1 - phase_out_fraction), + ) + + annual_benefit_per_child = monthly_benefit * 12 * benefit_rate + total_benefit = household.sum(annual_benefit_per_child) + + return where(eligible, total_benefit, 0) diff --git a/policyengine_canada/variables/gov/provinces/bc/benefits/child_care/bc_child_care_fee_reduction.py b/policyengine_canada/variables/gov/provinces/bc/benefits/child_care/bc_child_care_fee_reduction.py new file mode 100644 index 000000000..715608d26 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/bc/benefits/child_care/bc_child_care_fee_reduction.py @@ -0,0 +1,73 @@ +from policyengine_canada.model_api import * + + +class bc_child_care_fee_reduction(Variable): + value_type = float + entity = Household + label = "BC Child Care Fee Reduction Initiative" + unit = CAD + definition_period = YEAR + defined_for = ProvinceCode.BC + reference = ( + "https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-fee-reduction-initiative-provider-opt-in-status", + "https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf#page=5", + ) + + def formula(household, period, parameters): + p = parameters( + period + ).gov.provinces.bc.benefits.child_care_fee_reduction + + person = household.members + age = person("age", period) + is_family = person("is_family_child_care", period) + + is_eligible = age <= p.max_age + + # Age boundaries per CCFRI Funding Guidelines Table 1 + preschool_age = p.age.preschool + kindergarten_age = p.age.kindergarten + school_age_start = p.age.school_age + + is_infant_toddler = age < preschool_age + is_preschool = (age >= preschool_age) & (age < kindergarten_age) + is_kindergarten = (age >= kindergarten_age) & (age < school_age_start) + is_school_age = (age >= school_age_start) & is_eligible + + # Group care rates (default) + group_reduction = select( + [ + is_infant_toddler, + is_preschool, + is_kindergarten, + is_school_age, + ], + [ + p.max_reduction.group.infant_toddler, + p.max_reduction.group.preschool, + p.max_reduction.group.kindergarten, + p.max_reduction.group.school_age, + ], + default=0, + ) + + # Family/in-home multi-age care rates + family_reduction = select( + [ + is_infant_toddler, + is_preschool, + is_kindergarten, + is_school_age, + ], + [ + p.max_reduction.family.infant_toddler, + p.max_reduction.family.preschool, + p.max_reduction.family.kindergarten, + p.max_reduction.family.school_age, + ], + default=0, + ) + + monthly_reduction = where(is_family, family_reduction, group_reduction) + annual_reduction_per_child = monthly_reduction * 12 + return household.sum(annual_reduction_per_child) diff --git a/policyengine_canada/variables/gov/provinces/bc/benefits/child_care/is_family_child_care.py b/policyengine_canada/variables/gov/provinces/bc/benefits/child_care/is_family_child_care.py new file mode 100644 index 000000000..5baefc9fb --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/bc/benefits/child_care/is_family_child_care.py @@ -0,0 +1,10 @@ +from policyengine_canada.model_api import * + + +class is_family_child_care(Variable): + value_type = bool + entity = Person + label = "Whether the child attends family or in-home multi-age child care (as opposed to group child care)" + definition_period = YEAR + default_value = False + reference = "https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf#page=5" diff --git a/policyengine_canada/variables/gov/provinces/on/tax/income/credits/child_care/on_child_care_tax_credit.py b/policyengine_canada/variables/gov/provinces/on/tax/income/credits/child_care/on_child_care_tax_credit.py new file mode 100644 index 000000000..cb8a31b98 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/on/tax/income/credits/child_care/on_child_care_tax_credit.py @@ -0,0 +1,32 @@ +from policyengine_canada.model_api import * + + +class on_child_care_tax_credit(Variable): + value_type = float + entity = Household + label = "Ontario Child Care Tax Credit (CARE Credit)" + unit = CAD + definition_period = YEAR + defined_for = ProvinceCode.ONT + reference = ( + "https://www.ontario.ca/laws/statute/07o11#BK181", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/5006-tca/5006-tca-24e.pdf#page=1", + ) + + def formula(household, period, parameters): + p = parameters(period).gov.provinces.on.tax.income.credits.child_care + + # Per ON479-A: adjusted income = net income + CCED + social benefits repayment + # social_benefits_repayment is not modeled, so we approximate with: + # family_net_income (line 23600 sum) + child_care_expense_deduction (line 21400) + family_net_income = household("family_net_income", period) + cced = household("child_care_expense_deduction", period) + adjusted_income = family_net_income + cced + + eligible = adjusted_income <= p.income_limit + + # Per ON479-A: credit = rate(adjusted_income) x federal CCED (line 21400) + credit_rate = p.rate.calc(adjusted_income) + credit = credit_rate * cced + + return where(eligible, credit, 0)