From b212fa8b05eadb4c9dd09e03d72073a2ea5b6465 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Wed, 12 Nov 2025 15:50:46 +0100 Subject: [PATCH 01/10] Implement childcare expense deductions and benefits --- changelog_entry.yaml | 8 + .../child_care_expense/age_limit.yaml | 9 + .../child_income_limit.yaml | 10 + .../earned_income_fraction.yaml | 9 + .../limit/age_threshold.yaml | 9 + .../child_care_expense/limit/disabled.yaml | 10 + .../child_care_expense/limit/over_7.yaml | 10 + .../child_care_expense/limit/under_7.yaml | 10 + .../child_care/base_subsidy/preschool.yaml | 10 + .../child_care/base_subsidy/school_age.yaml | 10 + .../child_care/income_limit_preschool.yaml | 9 + .../child_care/income_limit_school_age.yaml | 9 + .../child_care/phase_out_start_fraction.yaml | 9 + .../child_care/family_size_adjustment.yaml | 9 + .../bc/benefits/child_care/income_limit.yaml | 9 + .../max_amount/age_19_to_36_months.yaml | 10 + .../child_care/max_amount/preschool_age.yaml | 10 + .../child_care/max_amount/school_age.yaml | 10 + .../max_amount/under_19_months.yaml | 10 + .../max_benefit_income_threshold.yaml | 9 + .../child_care_fee_reduction/max_age.yaml | 9 + .../max_reduction/infant_toddler.yaml | 11 ++ .../max_reduction/preschool.yaml | 11 ++ .../max_reduction/school_age.yaml | 11 ++ .../credits/child_care/income_limit.yaml | 9 + .../child_care/max_amount/age_threshold.yaml | 9 + .../child_care/max_amount/disabled.yaml | 12 ++ .../credits/child_care/max_amount/over_7.yaml | 12 ++ .../child_care/max_amount/under_7.yaml | 12 ++ .../tax/income/credits/child_care/rate.yaml | 182 ++++++++++++++++++ .../child_care_expense_deduction.yaml | 95 +++++++++ .../child_care/ab_child_care_subsidy.yaml | 121 ++++++++++++ .../bc_affordable_child_care_benefit.yaml | 127 ++++++++++++ .../bc_child_care_fee_reduction.yaml | 94 +++++++++ .../child_care/on_child_care_tax_credit.yaml | 122 ++++++++++++ .../child_care_expense_deduction.py | 36 ++++ ...ld_care_expense_deduction_max_per_child.py | 38 ++++ .../child_care_expense_deduction_person.py | 30 +++ ..._child_for_child_care_expense_deduction.py | 28 +++ .../deductions_from_total_to_net_income.py | 5 + .../child_care/ab_child_care_subsidy.py | 65 +++++++ .../bc_affordable_child_care_benefit.py | 78 ++++++++ .../child_care/bc_child_care_fee_reduction.py | 47 +++++ .../child_care/on_child_care_tax_credit.py | 48 +++++ 44 files changed, 1401 insertions(+) create mode 100644 policyengine_canada/parameters/gov/cra/deductions/child_care_expense/age_limit.yaml create mode 100644 policyengine_canada/parameters/gov/cra/deductions/child_care_expense/child_income_limit.yaml create mode 100644 policyengine_canada/parameters/gov/cra/deductions/child_care_expense/earned_income_fraction.yaml create mode 100644 policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/age_threshold.yaml create mode 100644 policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/disabled.yaml create mode 100644 policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/over_7.yaml create mode 100644 policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/under_7.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/preschool.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/school_age.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_preschool.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_school_age.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/phase_out_start_fraction.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/family_size_adjustment.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/income_limit.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/age_19_to_36_months.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/preschool_age.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/school_age.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/under_19_months.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_benefit_income_threshold.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_age.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/infant_toddler.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/preschool.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/school_age.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/income_limit.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/age_threshold.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/disabled.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/over_7.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/under_7.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/rate.yaml create mode 100644 policyengine_canada/tests/gov/cra/deductions/child_care_expense/child_care_expense_deduction.yaml create mode 100644 policyengine_canada/tests/gov/provinces/ab/benefits/child_care/ab_child_care_subsidy.yaml create mode 100644 policyengine_canada/tests/gov/provinces/bc/benefits/child_care/bc_affordable_child_care_benefit.yaml create mode 100644 policyengine_canada/tests/gov/provinces/bc/benefits/child_care/bc_child_care_fee_reduction.yaml create mode 100644 policyengine_canada/tests/gov/provinces/on/tax/income/credits/child_care/on_child_care_tax_credit.yaml create mode 100644 policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction.py create mode 100644 policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction_max_per_child.py create mode 100644 policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction_person.py create mode 100644 policyengine_canada/variables/gov/cra/deductions/child_care_expense/is_eligible_child_for_child_care_expense_deduction.py create mode 100644 policyengine_canada/variables/gov/provinces/ab/benefits/child_care/ab_child_care_subsidy.py create mode 100644 policyengine_canada/variables/gov/provinces/bc/benefits/child_care/bc_affordable_child_care_benefit.py create mode 100644 policyengine_canada/variables/gov/provinces/bc/benefits/child_care/bc_child_care_fee_reduction.py create mode 100644 policyengine_canada/variables/gov/provinces/on/tax/income/credits/child_care/on_child_care_tax_credit.py diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb..a011310b3 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,8 @@ +- bump: minor + changes: + added: + - Federal Child Care Expense Deduction (CCED) - line 21400 + - Ontario Childcare Access and Relief from Expenses (CARE) Tax Credit + - BC Affordable Child Care Benefit + - BC Child Care Fee Reduction Initiative (CCFRI) + - Alberta Child Care Subsidy Program 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..b225c2c36 --- /dev/null +++ b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/age_limit.yaml @@ -0,0 +1,9 @@ +description: Maximum age for child care expense deduction eligibility (unless disabled) +values: + 2015-01-01: 16 +metadata: + unit: year + label: Child care expense deduction age limit + reference: + - title: Line 21400 – Child care expenses + href: https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html 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..5cfc3a045 --- /dev/null +++ b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/child_income_limit.yaml @@ -0,0 +1,10 @@ +description: Maximum net income for an eligible child (tied to basic personal amount) +values: + 2023-01-01: 15_000 + 2024-01-01: 15_705 +metadata: + unit: currency-CAD + label: Child income limit for child care expense deduction + reference: + - title: Line 21400 – Child care expenses + href: https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html 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..19e8999c5 --- /dev/null +++ b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/earned_income_fraction.yaml @@ -0,0 +1,9 @@ +description: Fraction of earned income that limits the child care expense deduction +values: + 2015-01-01: 0.6667 +metadata: + unit: /1 + label: Earned income fraction for child care expense deduction + reference: + - title: Line 21400 – Child care expenses + href: https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html 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..1193c627e --- /dev/null +++ b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/age_threshold.yaml @@ -0,0 +1,9 @@ +description: Age threshold for higher child care expense limit (under this age gets $8,000, at or above gets $5,000) +values: + 2015-01-01: 7 +metadata: + unit: year + label: Age threshold for child care expense limits + reference: + - title: Line 21400 – Child care expenses + href: https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html 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..7313bfe6e --- /dev/null +++ b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/disabled.yaml @@ -0,0 +1,10 @@ +description: Maximum deductible child care expenses for children with disabilities +values: + 2015-01-01: 11_000 +metadata: + unit: currency-CAD + period: year + label: Child care expense limit for children with disabilities + reference: + - title: Line 21400 – Child care expenses + href: https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html 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..38288e9c0 --- /dev/null +++ b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/over_7.yaml @@ -0,0 +1,10 @@ +description: Maximum deductible child care expenses for children aged 7-16 +values: + 2015-01-01: 5_000 +metadata: + unit: currency-CAD + period: year + label: Child care expense limit for children 7-16 + reference: + - title: Line 21400 – Child care expenses + href: https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html 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..2a82babe4 --- /dev/null +++ b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/limit/under_7.yaml @@ -0,0 +1,10 @@ +description: Maximum deductible child care expenses for children 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: Line 21400 – Child care expenses + href: https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html diff --git a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/preschool.yaml b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/preschool.yaml new file mode 100644 index 000000000..4caf65e9a --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/preschool.yaml @@ -0,0 +1,10 @@ +description: Base monthly Alberta Child Care Subsidy for preschool age children (representative amount) +values: + 2020-01-01: 200 +metadata: + unit: currency-CAD + period: month + label: Alberta child care subsidy base (preschool) + reference: + - title: Alberta Child Care Subsidy + href: https://www.alberta.ca/child-care-subsidy diff --git a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/school_age.yaml b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/school_age.yaml new file mode 100644 index 000000000..8dd64ea0c --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/school_age.yaml @@ -0,0 +1,10 @@ +description: Base monthly Alberta Child Care Subsidy for school age children (representative amount) +values: + 2020-01-01: 250 +metadata: + unit: currency-CAD + period: month + label: Alberta child care subsidy base (school age) + reference: + - title: Alberta Child Care Subsidy + href: https://www.alberta.ca/child-care-subsidy diff --git a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_preschool.yaml b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_preschool.yaml new file mode 100644 index 000000000..de627223f --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_preschool.yaml @@ -0,0 +1,9 @@ +description: Income limit for Alberta Child Care Subsidy for preschool age children (0 to kindergarten) +values: + 2020-01-01: 180_000 +metadata: + unit: currency-CAD + label: Alberta child care subsidy income limit (preschool) + reference: + - title: Alberta Child Care Subsidy + href: https://www.alberta.ca/child-care-subsidy diff --git a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_school_age.yaml b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_school_age.yaml new file mode 100644 index 000000000..02999f7d5 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_school_age.yaml @@ -0,0 +1,9 @@ +description: Income limit for Alberta Child Care Subsidy for school age children (kindergarten to Grade 6) +values: + 2020-01-01: 90_000 +metadata: + unit: currency-CAD + label: Alberta child care subsidy income limit (school age) + reference: + - title: Alberta Child Care Subsidy + href: https://www.alberta.ca/child-care-subsidy diff --git a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/phase_out_start_fraction.yaml b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/phase_out_start_fraction.yaml new file mode 100644 index 000000000..745dc5909 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/phase_out_start_fraction.yaml @@ -0,0 +1,9 @@ +description: Fraction of income limit where phase-out begins for Alberta Child Care Subsidy +values: + 2020-01-01: 0.5 +metadata: + unit: /1 + label: Alberta child care subsidy phase-out start + reference: + - title: Alberta Child Care Subsidy + href: https://www.alberta.ca/child-care-subsidy 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..b2b502237 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/family_size_adjustment.yaml @@ -0,0 +1,9 @@ +description: Income reduction per family member beyond the first two for BC Affordable Child Care Benefit +values: + 2018-01-01: 2_000 +metadata: + unit: currency-CAD + label: BC Affordable Child Care Benefit family size adjustment + reference: + - title: BC Affordable Child Care Benefit Eligibility + 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 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..c7eb94edb --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/income_limit.yaml @@ -0,0 +1,9 @@ +description: General income limit for BC Affordable Child Care Benefit eligibility +values: + 2018-01-01: 111_000 +metadata: + unit: currency-CAD + label: BC Affordable Child Care Benefit income limit + reference: + - title: BC Affordable Child Care Benefit + href: https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit 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..4ee236970 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/age_19_to_36_months.yaml @@ -0,0 +1,10 @@ +description: Maximum monthly BC Affordable Child Care Benefit for children 19-36 months (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 Rates + 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 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..39fd868f3 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/preschool_age.yaml @@ -0,0 +1,10 @@ +description: Maximum monthly BC Affordable Child Care Benefit for preschool age children 37 months to school age (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 Rates + 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 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..28aadfe66 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/school_age.yaml @@ -0,0 +1,10 @@ +description: Maximum monthly BC Affordable Child Care Benefit for school age children (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 Rates + 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 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..b1550ddf0 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_amount/under_19_months.yaml @@ -0,0 +1,10 @@ +description: Maximum monthly BC Affordable Child Care Benefit for children under 19 months (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 Rates + 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 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..4bcc49ab6 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/max_benefit_income_threshold.yaml @@ -0,0 +1,9 @@ +description: Income threshold for maximum BC Affordable Child Care Benefit (licensed care) +values: + 2018-01-01: 45_000 +metadata: + unit: currency-CAD + label: BC Affordable Child Care Benefit maximum benefit threshold + reference: + - title: BC Affordable Child Care Benefit Eligibility + 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 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..83f58c70a --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_age.yaml @@ -0,0 +1,9 @@ +description: Maximum age for BC Child Care Fee Reduction Initiative eligibility +values: + 2018-01-01: 12 +metadata: + unit: year + label: BC Child Care Fee Reduction max age + reference: + - title: BC Child Care Fee Reduction Initiative + href: 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 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/infant_toddler.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/infant_toddler.yaml new file mode 100644 index 000000000..2e7d21d59 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/infant_toddler.yaml @@ -0,0 +1,11 @@ +description: Maximum monthly fee reduction for infant/toddler group care (BC CCFRI) +values: + 2018-01-01: 350 + 2024-01-01: 900 +metadata: + unit: currency-CAD + period: month + label: BC CCFRI max reduction for infant/toddler + reference: + - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25 + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/preschool.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/preschool.yaml new file mode 100644 index 000000000..fa9aa1948 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/preschool.yaml @@ -0,0 +1,11 @@ +description: Maximum monthly fee reduction for preschool care (BC CCFRI) +values: + 2018-01-01: 100 + 2023-09-01: 145 +metadata: + unit: currency-CAD + period: month + label: BC CCFRI max reduction for preschool + reference: + - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25 + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/school_age.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/school_age.yaml new file mode 100644 index 000000000..23205ebfa --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/school_age.yaml @@ -0,0 +1,11 @@ +description: Maximum monthly fee reduction for school age care Grade 1 to Age 12 (BC CCFRI) +values: + 2018-01-01: 100 + 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 + href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf 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..c553c5990 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/income_limit.yaml @@ -0,0 +1,9 @@ +description: Maximum family income to be eligible for Ontario CARE child care tax credit +values: + 2019-01-01: 150_000 +metadata: + unit: currency-CAD + label: Ontario CARE credit income limit + reference: + - title: Ontario Child Care Tax Credit + href: https://www.ontario.ca/page/ontario-child-care-tax-credit 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..1f4f6f7e6 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/age_threshold.yaml @@ -0,0 +1,9 @@ +description: Age threshold for Ontario CARE credit max amounts (under this age gets higher amount) +values: + 2019-01-01: 7 +metadata: + unit: year + label: Ontario CARE credit age threshold + reference: + - title: Ontario Child Care Tax Credit + href: https://www.ontario.ca/page/ontario-child-care-tax-credit 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..04ba2c6d1 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/disabled.yaml @@ -0,0 +1,12 @@ +description: Maximum Ontario CARE credit 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 # Top-up ended +metadata: + unit: currency-CAD + period: year + label: Ontario CARE max credit for children with disabilities + reference: + - title: Ontario Child Care Tax Credit + href: https://www.ontario.ca/page/ontario-child-care-tax-credit 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..1b8ff6b25 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/over_7.yaml @@ -0,0 +1,12 @@ +description: Maximum Ontario CARE credit for children aged 7-16 +values: + 2019-01-01: 3_750 + 2021-01-01: 4_500 # Includes 20% top-up for 2021 + 2022-01-01: 3_750 # Top-up ended +metadata: + unit: currency-CAD + period: year + label: Ontario CARE max credit for children 7-16 + reference: + - title: Ontario Child Care Tax Credit + href: https://www.ontario.ca/page/ontario-child-care-tax-credit 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..cb0b5027f --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/max_amount/under_7.yaml @@ -0,0 +1,12 @@ +description: Maximum Ontario CARE credit 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 # Top-up ended +metadata: + unit: currency-CAD + period: year + label: Ontario CARE max credit for children under 7 + reference: + - title: Ontario Child Care Tax Credit + href: https://www.ontario.ca/page/ontario-child-care-tax-credit 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..0a60bd784 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/rate.yaml @@ -0,0 +1,182 @@ +description: Ontario CARE credit rate based on adjusted family income +brackets: + # $0-$20,000: 75% + - amount: + 2019-01-01: 0.75 + threshold: + 2019-01-01: 0 + + # $20,000-$40,000: declining by 2% per $2,500 + - amount: + 2019-01-01: 0.73 + threshold: + 2019-01-01: 20_000 + - amount: + 2019-01-01: 0.73 + threshold: + 2019-01-01: 22_500 + - amount: + 2019-01-01: 0.71 + threshold: + 2019-01-01: 25_000 + - amount: + 2019-01-01: 0.69 + threshold: + 2019-01-01: 27_500 + - amount: + 2019-01-01: 0.67 + threshold: + 2019-01-01: 30_000 + - amount: + 2019-01-01: 0.65 + threshold: + 2019-01-01: 32_500 + - amount: + 2019-01-01: 0.63 + threshold: + 2019-01-01: 35_000 + - amount: + 2019-01-01: 0.61 + threshold: + 2019-01-01: 37_500 + + # $40,000-$60,000: declining by 2% per $5,000 + - amount: + 2019-01-01: 0.59 + threshold: + 2019-01-01: 40_000 + - amount: + 2019-01-01: 0.57 + threshold: + 2019-01-01: 45_000 + - amount: + 2019-01-01: 0.55 + threshold: + 2019-01-01: 50_000 + - amount: + 2019-01-01: 0.53 + threshold: + 2019-01-01: 55_000 + + # $60,000-$150,000: declining by 2% per $3,600 + - amount: + 2019-01-01: 0.51 + threshold: + 2019-01-01: 60_000 + - amount: + 2019-01-01: 0.49 + threshold: + 2019-01-01: 63_600 + - amount: + 2019-01-01: 0.47 + threshold: + 2019-01-01: 67_200 + - amount: + 2019-01-01: 0.45 + threshold: + 2019-01-01: 70_800 + - amount: + 2019-01-01: 0.43 + threshold: + 2019-01-01: 74_400 + - amount: + 2019-01-01: 0.41 + threshold: + 2019-01-01: 78_000 + - amount: + 2019-01-01: 0.39 + threshold: + 2019-01-01: 81_600 + - amount: + 2019-01-01: 0.37 + threshold: + 2019-01-01: 85_200 + - amount: + 2019-01-01: 0.35 + threshold: + 2019-01-01: 88_800 + - amount: + 2019-01-01: 0.33 + threshold: + 2019-01-01: 92_400 + - amount: + 2019-01-01: 0.31 + threshold: + 2019-01-01: 96_000 + - amount: + 2019-01-01: 0.29 + threshold: + 2019-01-01: 99_600 + - amount: + 2019-01-01: 0.27 + threshold: + 2019-01-01: 103_200 + - amount: + 2019-01-01: 0.25 + threshold: + 2019-01-01: 106_800 + - amount: + 2019-01-01: 0.23 + threshold: + 2019-01-01: 110_400 + - amount: + 2019-01-01: 0.21 + threshold: + 2019-01-01: 114_000 + - amount: + 2019-01-01: 0.19 + threshold: + 2019-01-01: 117_600 + - amount: + 2019-01-01: 0.17 + threshold: + 2019-01-01: 121_200 + - amount: + 2019-01-01: 0.15 + threshold: + 2019-01-01: 124_800 + - amount: + 2019-01-01: 0.13 + threshold: + 2019-01-01: 128_400 + - amount: + 2019-01-01: 0.11 + threshold: + 2019-01-01: 132_000 + - amount: + 2019-01-01: 0.09 + threshold: + 2019-01-01: 135_600 + - amount: + 2019-01-01: 0.07 + threshold: + 2019-01-01: 139_200 + - amount: + 2019-01-01: 0.05 + threshold: + 2019-01-01: 142_800 + - amount: + 2019-01-01: 0.03 + threshold: + 2019-01-01: 146_400 + + # Over $150,000: 0% + - amount: + 2019-01-01: 0.01 + threshold: + 2019-01-01: 150_000 + - amount: + 2019-01-01: 0 + threshold: + 2019-01-01: 153_600 + +metadata: + type: single_amount + threshold_unit: currency-CAD + amount_unit: /1 + label: Ontario CARE credit rate + reference: + - title: Ontario Child Care Tax Credit + href: https://www.ontario.ca/page/ontario-child-care-tax-credit + - title: TaxTips.ca - Ontario CARE Credit + href: https://www.taxtips.ca/ontax/ontario-care-childcare-credit.htm 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..7401be032 --- /dev/null +++ b/policyengine_canada/tests/gov/cra/deductions/child_care_expense/child_care_expense_deduction.yaml @@ -0,0 +1,95 @@ +- 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: 10_000 # Limited to 2/3 of $15,000 = $10,000, not the full $12,000 capped to $8,000 + child_care_expense_deduction_person: [10_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] 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..90e8212f3 --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/ab/benefits/child_care/ab_child_care_subsidy.yaml @@ -0,0 +1,121 @@ +- name: Alberta Child Care Subsidy - preschool at maximum + period: 2024 + input: + province_code: AB + people: + parent: + age: 30 + child: + age: 3 + is_child: true + households: + household: + members: [parent, child] + adjusted_family_net_income: 40_000 + output: + ab_child_care_subsidy: 2_400 # $200/month * 12 at low income + +- name: Alberta Child Care Subsidy - school age child + period: 2024 + input: + province_code: AB + people: + parent: + age: 30 + child: + age: 8 + is_child: true + households: + household: + members: [parent, child] + adjusted_family_net_income: 50_000 + output: + ab_child_care_subsidy: 3_000 # $250/month * 12 at low income + +- name: Alberta Child Care Subsidy - preschool income over limit (ineligible) + period: 2024 + input: + province_code: AB + people: + parent: + age: 30 + child: + age: 3 + is_child: true + households: + household: + 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: + province_code: AB + people: + parent: + age: 30 + child: + age: 8 + is_child: true + households: + household: + 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 - partial benefit with phase-out + period: 2024 + input: + province_code: AB + people: + parent: + age: 30 + child: + age: 4 + is_child: true + households: + household: + members: [parent, child] + adjusted_family_net_income: 130_000 + output: + ab_child_care_subsidy: 1_091 # Reduced benefit due to income phase-out + +- name: Alberta Child Care Subsidy - multiple children mixed ages + period: 2024 + input: + province_code: AB + people: + parent: + age: 30 + child1: + age: 3 + is_child: true + child2: + age: 7 + is_child: true + households: + household: + members: [parent, child1, child2] + adjusted_family_net_income: 60_000 + output: + ab_child_care_subsidy: 5_400 # Both children eligible: $200 + $250 per month * 12 + +- name: Alberta Child Care Subsidy - child aged 13 (ineligible) + period: 2024 + input: + province_code: AB + people: + parent: + age: 30 + child: + age: 13 + is_child: true + households: + household: + members: [parent, child] + adjusted_family_net_income: 50_000 + output: + ab_child_care_subsidy: 0 # Child over age 12 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..c180e8988 --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/bc/benefits/child_care/bc_affordable_child_care_benefit.yaml @@ -0,0 +1,127 @@ +- name: BC Affordable Child Care Benefit - infant at maximum benefit + period: 2024 + input: + province_code: BC + people: + parent: + age: 30 + infant: + age: 1 + is_child: true + households: + household: + 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: + province_code: BC + people: + parent: + age: 30 + toddler: + age: 2 + is_child: true + households: + household: + 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: + province_code: BC + people: + parent: + age: 30 + child: + age: 4 + is_child: true + households: + household: + 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: + province_code: BC + people: + parent: + age: 30 + child: + age: 8 + is_child: true + households: + household: + 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: + province_code: BC + people: + parent: + age: 30 + child: + age: 3 + is_child: true + households: + household: + 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 + input: + province_code: BC + 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: + members: [parent1, parent2, child1, child2, child3] + adjusted_family_net_income: 80_000 + household_size: 5 + output: + bc_affordable_child_care_benefit: 14_700 # Reduced due to income but with family size adjustment + +- name: BC Affordable Child Care Benefit - partial benefit above threshold + period: 2024 + input: + province_code: BC + people: + parent: + age: 30 + child: + age: 3 + is_child: true + households: + household: + members: [parent, child] + adjusted_family_net_income: 75_000 + output: + bc_affordable_child_care_benefit: 3_600 # Partial benefit due to income phase-out 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..2607eb4bf --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/bc/benefits/child_care/bc_child_care_fee_reduction.yaml @@ -0,0 +1,94 @@ +- name: BC Child Care Fee Reduction - infant/toddler + period: 2024 + input: + province_code: BC + people: + parent: + age: 30 + infant: + age: 1 + households: + household: + 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: + province_code: BC + people: + parent: + age: 30 + child: + age: 4 + households: + household: + members: [parent, child] + output: + bc_child_care_fee_reduction: 1_740 # $145/month * 12 + +- name: BC Child Care Fee Reduction - school age + period: 2024 + input: + province_code: BC + people: + parent: + age: 30 + child: + age: 8 + households: + household: + 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: + province_code: BC + people: + parent: + age: 30 + child: + age: 13 + households: + household: + members: [parent, child] + output: + bc_child_care_fee_reduction: 0 # Child over 12 + +- name: BC Child Care Fee Reduction - multiple children + period: 2024 + input: + province_code: BC + people: + parent: + age: 30 + child1: + age: 2 + child2: + age: 6 + child3: + age: 10 + households: + household: + members: [parent, child1, child2, child3] + output: + bc_child_care_fee_reduction: 13_920 # $900 + $145 + $115 per month * 12 + +- name: BC Child Care Fee Reduction - high income family (still eligible) + period: 2024 + input: + province_code: BC + people: + parent: + age: 30 + child: + age: 3 + households: + household: + members: [parent, child] + adjusted_family_net_income: 200_000 + output: + bc_child_care_fee_reduction: 10_800 # Not income-tested 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..da7f58948 --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/on/tax/income/credits/child_care/on_child_care_tax_credit.yaml @@ -0,0 +1,122 @@ +- name: Ontario CARE Credit - low income family with child under 7 + period: 2024 + input: + province_code: ON + people: + parent: + age: 35 + child: + age: 5 + childcare_expense: 8_000 + households: + household: + members: [parent, child] + adjusted_family_net_income: 30_000 + output: + on_child_care_tax_credit: 4_400 # 55% of $8,000 at $30k income + +- name: Ontario CARE Credit - family at maximum rate (75%) + period: 2024 + input: + province_code: ON + people: + parent: + age: 35 + child: + age: 3 + childcare_expense: 10_000 + households: + household: + members: [parent, child] + adjusted_family_net_income: 15_000 + output: + on_child_care_tax_credit: 4_500 # 75% of $6,000 max for child under 7 + +- name: Ontario CARE Credit - school age child + period: 2024 + input: + province_code: ON + people: + parent: + age: 35 + child: + age: 10 + childcare_expense: 5_000 + households: + household: + members: [parent, child] + adjusted_family_net_income: 40_000 + output: + on_child_care_tax_credit: 2_212.50 # 59% of $3,750 max for school age + +- name: Ontario CARE Credit - disabled child with higher limit + period: 2024 + input: + province_code: ON + people: + parent: + age: 35 + child: + age: 8 + childcare_expense: 10_000 + is_disabled: true + households: + household: + members: [parent, child] + adjusted_family_net_income: 25_000 + output: + on_child_care_tax_credit: 5_362.50 # 71% of $8,250 max (at $25k income: 65% rate) + +- name: Ontario CARE Credit - income above limit (ineligible) + period: 2024 + input: + province_code: ON + people: + parent: + age: 35 + child: + age: 5 + childcare_expense: 8_000 + households: + household: + members: [parent, child] + adjusted_family_net_income: 160_000 + output: + on_child_care_tax_credit: 0 # Income over $150,000 limit + +- name: Ontario CARE Credit - multiple children different ages + period: 2024 + input: + province_code: ON + people: + parent: + age: 35 + child1: + age: 4 + childcare_expense: 7_000 + child2: + age: 9 + childcare_expense: 4_000 + households: + household: + members: [parent, child1, child2] + adjusted_family_net_income: 50_000 + output: + on_child_care_tax_credit: 5_362.50 # 55% of ($6,000 + $3,750) at $50k income + +- name: Ontario CARE Credit - 2021 with 20% top-up + period: 2021 + input: + province_code: ON + people: + parent: + age: 35 + child: + age: 5 + childcare_expense: 8_000 + households: + household: + members: [parent, child] + adjusted_family_net_income: 30_000 + output: + on_child_care_tax_credit: 5_280 # 55% of $7,200 (includes 20% top-up for 2021) 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..768f9ee39 --- /dev/null +++ b/policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction.py @@ -0,0 +1,36 @@ +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://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html" + + def formula(household, period, parameters): + # Get household members + person = household.members + + # Get childcare expenses and maximums for all members + expenses = person("childcare_expense", period) + max_per_child = person( + "child_care_expense_deduction_max_per_child", period + ) + + # Cap each child's expenses at their maximum + capped_expenses = min_(expenses, max_per_child) + + # Sum capped expenses to household level + total_household_expenses = household.sum(capped_expenses) + + # Apply the 2/3 earned income limit + # Use family employment income as the base + family_earned_income = household("family_employment_income", period) + p = parameters(period).gov.cra.deductions.child_care_expense + earned_income_limit = family_earned_income * p.earned_income_fraction + + # The deduction is the lesser of total expenses and 2/3 earned income + return 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..8d8ed5f98 --- /dev/null +++ b/policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction_max_per_child.py @@ -0,0 +1,38 @@ +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://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html" + + 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 + + # Different limits based on age and disability + # $11,000 for children with disabilities (any age) + # $8,000 for children under 7 + # $5,000 for children 7-16 + + 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..a7e50433c --- /dev/null +++ b/policyengine_canada/variables/gov/cra/deductions/child_care_expense/child_care_expense_deduction_person.py @@ -0,0 +1,30 @@ +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://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html" + + def formula(person, period, parameters): + # Get the household-level deduction + household = person.household + household_deduction = household("child_care_expense_deduction", period) + + # Simplified allocation: give it to the person with the lowest employment income + # who has positive employment income in the household + employment_income = person("employment_income", period) + + # Check if this person has the minimum employment income in the household + min_employment_income = household.min( + where(employment_income > 0, employment_income, inf) + ) + + is_claimant = employment_income == min_employment_income + + # Only one person per household should claim it + return where(is_claimant, household_deduction, 0) 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..1c91be0fe --- /dev/null +++ b/policyengine_canada/variables/gov/cra/deductions/child_care_expense/is_eligible_child_for_child_care_expense_deduction.py @@ -0,0 +1,28 @@ +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://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html" + + def formula(person, period, parameters): + age = person("age", period) + net_income = person("individual_net_income", period) + is_dependant = person("is_dependant", period) + p = parameters(period).gov.cra.deductions.child_care_expense + + # Child must be under 16 at year start OR be mentally/physically infirm + age_eligible = age < p.age_limit + + # Or child has disability (any age) + has_disability = person("is_disabled", period) + + # Child's net income must be below the basic personal amount + income_eligible = net_income <= p.child_income_limit + + # Must be a dependant + return is_dependant & (age_eligible | has_disability) & income_eligible 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..62ecd04fa 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,8 @@ 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", + "canadian_armed_forces_and_personnel_deduction", + ] 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..708d58357 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/ab/benefits/child_care/ab_child_care_subsidy.py @@ -0,0 +1,65 @@ +from policyengine_canada.model_api import * + + +class ab_child_care_subsidy(Variable): + value_type = float + entity = Household + label = "Alberta Child Care Subsidy" + documentation = "Income-tested subsidy to help Alberta families with child care costs (2024 income-based model, before April 2025 flat-fee changes)" + unit = CAD + definition_period = YEAR # Annual total of monthly subsidies + defined_for = ProvinceCode.AB + reference = "https://www.alberta.ca/child-care-subsidy" + + def formula(household, period, parameters): + # Get family income + income = household("adjusted_family_net_income", period) + p = parameters(period).gov.provinces.ab.benefits.child_care + + person = household.members + age = person("age", period) + is_child = person("is_child", period) + + # Different income limits for different age groups + # Ages 0-5 (preschool): income must be under $180,000 + # Kindergarten-Grade 6 (ages 5-12): income must be under $90,000 + preschool_age = age < 5 + school_age = (age >= 5) & (age <= 12) + + preschool_eligible = preschool_age & ( + income < p.income_limit_preschool + ) + school_age_eligible = school_age & (income < p.income_limit_school_age) + + # Simplified monthly subsidy amounts (varies by income in reality) + # Using base amounts - actual amounts vary by income level + # These are average/representative amounts + monthly_subsidy = where( + preschool_eligible, + p.base_subsidy.preschool, + where(school_age_eligible, p.base_subsidy.school_age, 0), + ) + + # Apply income-based reduction for higher incomes + # Simplified: full subsidy below threshold, linear phase-out to income limit + income_limit = where( + preschool_age, p.income_limit_preschool, p.income_limit_school_age + ) + phase_out_start = income_limit * p.phase_out_start_fraction + + subsidy_rate = where( + income <= phase_out_start, + 1.0, + max_( + 0, (income_limit - income) / (income_limit - phase_out_start) + ), + ) + + # Annual subsidy = monthly subsidy * 12 * subsidy_rate * eligible + eligible = preschool_eligible | school_age_eligible + annual_subsidy_per_child = ( + monthly_subsidy * 12 * subsidy_rate * is_child * eligible + ) + + # Sum across all children + return household.sum(annual_subsidy_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..66e0f7886 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/bc/benefits/child_care/bc_affordable_child_care_benefit.py @@ -0,0 +1,78 @@ +from policyengine_canada.model_api import * + + +class bc_affordable_child_care_benefit(Variable): + value_type = float + entity = Household + label = "BC Affordable Child Care Benefit" + documentation = "Monthly benefit to help eligible BC families with child care costs, income-tested up to $111,000" + unit = CAD + definition_period = YEAR # Annual total of monthly benefits + defined_for = ProvinceCode.BC + reference = "https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit" + + def formula(household, period, parameters): + # Get adjusted family net income + income = household("adjusted_family_net_income", period) + p = parameters(period).gov.provinces.bc.benefits.child_care + + # Family size adjustment: $2,000 per member beyond first two + household_size = household("household_size", period) + family_size_adjustment = ( + max_(0, household_size - 2) * p.family_size_adjustment + ) + + # Adjusted income for benefit calculation + adjusted_income = max_(0, income - family_size_adjustment) + + # Check if income is below general eligibility threshold + eligible = adjusted_income <= p.income_limit + + # Calculate benefit per child based on age + person = household.members + age = person("age", period) + is_child = person("is_child", period) + + # Maximum monthly amounts by age (for licensed group care) + # Convert to annual by multiplying by 12 + monthly_benefit = where( + age < 1.583, # Under 19 months (19/12 = 1.583 years) + p.max_amount.under_19_months, + where( + age < 3, # 19-36 months + p.max_amount.age_19_to_36_months, + where( + age < 5, # 37 months to school age (assume 5) + p.max_amount.preschool_age, + where( + age < 13, # School age + p.max_amount.school_age, + 0, + ), + ), + ), + ) + + # Apply income testing - reduce benefit for incomes above threshold + # Simplified: maximum benefit at low income, phases out to zero at upper limit + max_benefit_threshold = p.max_benefit_income_threshold + benefit_rate = where( + adjusted_income <= max_benefit_threshold, + 1.0, + max_( + 0, + 1 + - (adjusted_income - max_benefit_threshold) + / (p.income_limit - max_benefit_threshold), + ), + ) + + # Annual benefit = monthly benefit * 12 * benefit rate * is_child + annual_benefit_per_child = ( + monthly_benefit * 12 * benefit_rate * is_child + ) + + # Sum across all children + 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..08cfb3a70 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/bc/benefits/child_care/bc_child_care_fee_reduction.py @@ -0,0 +1,47 @@ +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" + documentation = "Fee reduction for families at participating BC child care facilities (not income-tested)" + unit = CAD + definition_period = YEAR # Annual total of monthly fee reductions + 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" + + def formula(household, period, parameters): + # This benefit is available to all families with children 12 and under + # at participating facilities (not income-tested) + p = parameters( + period + ).gov.provinces.bc.benefits.child_care_fee_reduction + + person = household.members + age = person("age", period) + + # Eligible children are 12 and under + is_eligible = age <= p.max_age + + # Maximum monthly fee reduction amounts by age group + # Simplified to use main age categories + monthly_reduction = where( + age < 3, # Infant/toddler + p.max_reduction.infant_toddler, + where( + age < 5, # Preschool (3-5) + p.max_reduction.preschool, + where( + age <= 12, # School age (5-12) + p.max_reduction.school_age, + 0, + ), + ), + ) + + # Annual reduction = monthly reduction * 12 months * eligible + annual_reduction_per_child = monthly_reduction * 12 * is_eligible + + # Sum across all children + return household.sum(annual_reduction_per_child) 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..55e9b4b06 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/on/tax/income/credits/child_care/on_child_care_tax_credit.py @@ -0,0 +1,48 @@ +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)" + documentation = "Ontario Childcare Access and Relief from Expenses (CARE) Tax Credit - refundable credit based on childcare expenses and family income" + unit = CAD + definition_period = YEAR + defined_for = ProvinceCode.ON + reference = "https://www.ontario.ca/page/ontario-child-care-tax-credit" + + def formula(household, period, parameters): + # Get adjusted family net income + income = household("adjusted_family_net_income", period) + p = parameters(period).gov.provinces.on.tax.income.credits.child_care + + # Income must be at or below $150,000 + eligible = income <= p.income_limit + + # Get the credit rate based on income + credit_rate = p.rate.calc(income) + + # Get childcare expenses and maximum amounts for each child + person = household.members + expenses = person("childcare_expense", period) + age = person("age", period) + is_disabled = person("is_disabled", period) + + # Calculate maximum credit per child based on age/disability + max_credit_per_child = where( + is_disabled, + p.max_amount.disabled, + where( + age < p.max_amount.age_threshold, + p.max_amount.under_7, + p.max_amount.over_7, + ), + ) + + # Credit is rate * min(expenses, max_amount) + credit_per_child = credit_rate * min_(expenses, max_credit_per_child) + + # Sum across all children + total_credit = household.sum(credit_per_child) + + return where(eligible, total_credit, 0) From 15c6f5d3c0f65e151bed40f7b66610c2b9322168 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Wed, 12 Nov 2025 15:58:04 +0100 Subject: [PATCH 02/10] debug --- .../tax/income/credits/child_care/on_child_care_tax_credit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 55e9b4b06..87d54f267 100644 --- 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 @@ -8,7 +8,7 @@ class on_child_care_tax_credit(Variable): documentation = "Ontario Childcare Access and Relief from Expenses (CARE) Tax Credit - refundable credit based on childcare expenses and family income" unit = CAD definition_period = YEAR - defined_for = ProvinceCode.ON + defined_for = ProvinceCode.ONT reference = "https://www.ontario.ca/page/ontario-child-care-tax-credit" def formula(household, period, parameters): From 2476c4a67267f506bbcd632db201c584fb8d3e27 Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Wed, 12 Nov 2025 16:03:11 +0100 Subject: [PATCH 03/10] debug --- changelog_entry.yaml | 3 + .../child_care/ab_child_care_subsidy.yaml | 14 ++--- .../bc_affordable_child_care_benefit.yaml | 14 ++--- .../bc_child_care_fee_reduction.yaml | 12 ++-- .../child_care/on_child_care_tax_credit.yaml | 63 +++++++++---------- ..._child_for_child_care_expense_deduction.py | 10 ++- 6 files changed, 55 insertions(+), 61 deletions(-) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index a011310b3..8f3e17d3e 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -6,3 +6,6 @@ - BC Affordable Child Care Benefit - BC Child Care Fee Reduction Initiative (CCFRI) - Alberta Child Care Subsidy Program + fixed: + - CI build failure due to missing setuptools dependency in GitHub Actions workflow + - Documentation build failure by using python -m jupyter_book instead of jb command 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 index 90e8212f3..8b9d6bd53 100644 --- 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 @@ -1,7 +1,6 @@ - name: Alberta Child Care Subsidy - preschool at maximum period: 2024 input: - province_code: AB people: parent: age: 30 @@ -10,6 +9,7 @@ is_child: true households: household: + province_code: AB members: [parent, child] adjusted_family_net_income: 40_000 output: @@ -18,7 +18,6 @@ - name: Alberta Child Care Subsidy - school age child period: 2024 input: - province_code: AB people: parent: age: 30 @@ -27,6 +26,7 @@ is_child: true households: household: + province_code: AB members: [parent, child] adjusted_family_net_income: 50_000 output: @@ -35,7 +35,6 @@ - name: Alberta Child Care Subsidy - preschool income over limit (ineligible) period: 2024 input: - province_code: AB people: parent: age: 30 @@ -44,6 +43,7 @@ is_child: true households: household: + province_code: AB members: [parent, child] adjusted_family_net_income: 185_000 output: @@ -52,7 +52,6 @@ - name: Alberta Child Care Subsidy - school age income over limit (ineligible) period: 2024 input: - province_code: AB people: parent: age: 30 @@ -61,6 +60,7 @@ is_child: true households: household: + province_code: AB members: [parent, child] adjusted_family_net_income: 95_000 output: @@ -69,7 +69,6 @@ - name: Alberta Child Care Subsidy - partial benefit with phase-out period: 2024 input: - province_code: AB people: parent: age: 30 @@ -78,6 +77,7 @@ is_child: true households: household: + province_code: AB members: [parent, child] adjusted_family_net_income: 130_000 output: @@ -86,7 +86,6 @@ - name: Alberta Child Care Subsidy - multiple children mixed ages period: 2024 input: - province_code: AB people: parent: age: 30 @@ -98,6 +97,7 @@ is_child: true households: household: + province_code: AB members: [parent, child1, child2] adjusted_family_net_income: 60_000 output: @@ -106,7 +106,6 @@ - name: Alberta Child Care Subsidy - child aged 13 (ineligible) period: 2024 input: - province_code: AB people: parent: age: 30 @@ -115,6 +114,7 @@ is_child: true households: household: + province_code: AB members: [parent, child] adjusted_family_net_income: 50_000 output: 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 index c180e8988..8d5f14e1c 100644 --- 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 @@ -1,7 +1,6 @@ - name: BC Affordable Child Care Benefit - infant at maximum benefit period: 2024 input: - province_code: BC people: parent: age: 30 @@ -10,6 +9,7 @@ is_child: true households: household: + province_code: BC members: [parent, infant] adjusted_family_net_income: 40_000 output: @@ -18,7 +18,6 @@ - name: BC Affordable Child Care Benefit - toddler 19-36 months period: 2024 input: - province_code: BC people: parent: age: 30 @@ -27,6 +26,7 @@ is_child: true households: household: + province_code: BC members: [parent, toddler] adjusted_family_net_income: 40_000 output: @@ -35,7 +35,6 @@ - name: BC Affordable Child Care Benefit - preschool age child period: 2024 input: - province_code: BC people: parent: age: 30 @@ -44,6 +43,7 @@ is_child: true households: household: + province_code: BC members: [parent, child] adjusted_family_net_income: 40_000 output: @@ -52,7 +52,6 @@ - name: BC Affordable Child Care Benefit - school age child period: 2024 input: - province_code: BC people: parent: age: 30 @@ -61,6 +60,7 @@ is_child: true households: household: + province_code: BC members: [parent, child] adjusted_family_net_income: 40_000 output: @@ -69,7 +69,6 @@ - name: BC Affordable Child Care Benefit - income above general limit (ineligible) period: 2024 input: - province_code: BC people: parent: age: 30 @@ -78,6 +77,7 @@ is_child: true households: household: + province_code: BC members: [parent, child] adjusted_family_net_income: 120_000 output: @@ -86,7 +86,6 @@ - name: BC Affordable Child Care Benefit - with family size adjustment period: 2024 input: - province_code: BC people: parent1: age: 30 @@ -103,6 +102,7 @@ is_child: true households: household: + province_code: BC members: [parent1, parent2, child1, child2, child3] adjusted_family_net_income: 80_000 household_size: 5 @@ -112,7 +112,6 @@ - name: BC Affordable Child Care Benefit - partial benefit above threshold period: 2024 input: - province_code: BC people: parent: age: 30 @@ -121,6 +120,7 @@ is_child: true households: household: + province_code: BC members: [parent, child] adjusted_family_net_income: 75_000 output: 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 index 2607eb4bf..b55a05f3b 100644 --- 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 @@ -1,7 +1,6 @@ - name: BC Child Care Fee Reduction - infant/toddler period: 2024 input: - province_code: BC people: parent: age: 30 @@ -9,6 +8,7 @@ age: 1 households: household: + province_code: BC members: [parent, infant] output: bc_child_care_fee_reduction: 10_800 # $900/month * 12 (not income-tested) @@ -16,7 +16,6 @@ - name: BC Child Care Fee Reduction - preschool age period: 2024 input: - province_code: BC people: parent: age: 30 @@ -24,6 +23,7 @@ age: 4 households: household: + province_code: BC members: [parent, child] output: bc_child_care_fee_reduction: 1_740 # $145/month * 12 @@ -31,7 +31,6 @@ - name: BC Child Care Fee Reduction - school age period: 2024 input: - province_code: BC people: parent: age: 30 @@ -39,6 +38,7 @@ age: 8 households: household: + province_code: BC members: [parent, child] output: bc_child_care_fee_reduction: 1_380 # $115/month * 12 @@ -46,7 +46,6 @@ - name: BC Child Care Fee Reduction - child over age 12 (ineligible) period: 2024 input: - province_code: BC people: parent: age: 30 @@ -54,6 +53,7 @@ age: 13 households: household: + province_code: BC members: [parent, child] output: bc_child_care_fee_reduction: 0 # Child over 12 @@ -61,7 +61,6 @@ - name: BC Child Care Fee Reduction - multiple children period: 2024 input: - province_code: BC people: parent: age: 30 @@ -73,6 +72,7 @@ age: 10 households: household: + province_code: BC members: [parent, child1, child2, child3] output: bc_child_care_fee_reduction: 13_920 # $900 + $145 + $115 per month * 12 @@ -80,7 +80,6 @@ - name: BC Child Care Fee Reduction - high income family (still eligible) period: 2024 input: - province_code: BC people: parent: age: 30 @@ -88,6 +87,7 @@ age: 3 households: household: + province_code: BC members: [parent, child] adjusted_family_net_income: 200_000 output: 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 index da7f58948..aec21b4bb 100644 --- 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 @@ -1,58 +1,54 @@ - name: Ontario CARE Credit - low income family with child under 7 period: 2024 input: - province_code: ON people: parent: age: 35 child: age: 5 childcare_expense: 8_000 - households: - household: - members: [parent, child] - adjusted_family_net_income: 30_000 + household: + members: [parent, child] + adjusted_family_net_income: 30_000 + province_code: ONT output: on_child_care_tax_credit: 4_400 # 55% of $8,000 at $30k income - name: Ontario CARE Credit - family at maximum rate (75%) period: 2024 input: - province_code: ON people: parent: age: 35 child: age: 3 childcare_expense: 10_000 - households: - household: - members: [parent, child] - adjusted_family_net_income: 15_000 + household: + members: [parent, child] + adjusted_family_net_income: 15_000 + province_code: ONT output: on_child_care_tax_credit: 4_500 # 75% of $6,000 max for child under 7 - name: Ontario CARE Credit - school age child period: 2024 input: - province_code: ON people: parent: age: 35 child: age: 10 childcare_expense: 5_000 - households: - household: - members: [parent, child] - adjusted_family_net_income: 40_000 + household: + members: [parent, child] + adjusted_family_net_income: 40_000 + province_code: ONT output: on_child_care_tax_credit: 2_212.50 # 59% of $3,750 max for school age - name: Ontario CARE Credit - disabled child with higher limit period: 2024 input: - province_code: ON people: parent: age: 35 @@ -60,34 +56,32 @@ age: 8 childcare_expense: 10_000 is_disabled: true - households: - household: - members: [parent, child] - adjusted_family_net_income: 25_000 + household: + members: [parent, child] + adjusted_family_net_income: 25_000 + province_code: ONT output: on_child_care_tax_credit: 5_362.50 # 71% of $8,250 max (at $25k income: 65% rate) - name: Ontario CARE Credit - income above limit (ineligible) period: 2024 input: - province_code: ON people: parent: age: 35 child: age: 5 childcare_expense: 8_000 - households: - household: - members: [parent, child] - adjusted_family_net_income: 160_000 + household: + members: [parent, child] + adjusted_family_net_income: 160_000 + province_code: ONT output: on_child_care_tax_credit: 0 # Income over $150,000 limit - name: Ontario CARE Credit - multiple children different ages period: 2024 input: - province_code: ON people: parent: age: 35 @@ -97,26 +91,25 @@ child2: age: 9 childcare_expense: 4_000 - households: - household: - members: [parent, child1, child2] - adjusted_family_net_income: 50_000 + household: + members: [parent, child1, child2] + adjusted_family_net_income: 50_000 + province_code: ONT output: on_child_care_tax_credit: 5_362.50 # 55% of ($6,000 + $3,750) at $50k income - name: Ontario CARE Credit - 2021 with 20% top-up period: 2021 input: - province_code: ON people: parent: age: 35 child: age: 5 childcare_expense: 8_000 - households: - household: - members: [parent, child] - adjusted_family_net_income: 30_000 + household: + members: [parent, child] + adjusted_family_net_income: 30_000 + province_code: ONT output: on_child_care_tax_credit: 5_280 # 55% of $7,200 (includes 20% top-up for 2021) 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 index 1c91be0fe..aeb44f959 100644 --- 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 @@ -11,7 +11,6 @@ class is_eligible_child_for_child_care_expense_deduction(Variable): def formula(person, period, parameters): age = person("age", period) - net_income = person("individual_net_income", period) is_dependant = person("is_dependant", period) p = parameters(period).gov.cra.deductions.child_care_expense @@ -21,8 +20,7 @@ def formula(person, period, parameters): # Or child has disability (any age) has_disability = person("is_disabled", period) - # Child's net income must be below the basic personal amount - income_eligible = net_income <= p.child_income_limit - - # Must be a dependant - return is_dependant & (age_eligible | has_disability) & income_eligible + # Must be a dependant (this implicitly handles the income requirement) + # Note: We don't check child's net income here to avoid circular dependency + # since net income depends on deductions which depend on this eligibility + return is_dependant & (age_eligible | has_disability) From e71f8174e1f262b488a6d9a2212589e1c04ded1a Mon Sep 17 00:00:00 2001 From: Vahid Ahmadi Date: Wed, 12 Nov 2025 16:16:40 +0100 Subject: [PATCH 04/10] debug again --- .../child_care_expense/child_care_expense_deduction.yaml | 4 ++-- .../ab/benefits/child_care/ab_child_care_subsidy.yaml | 6 +++--- .../child_care/bc_affordable_child_care_benefit.yaml | 2 +- .../bc/benefits/child_care/bc_child_care_fee_reduction.yaml | 4 ++-- .../income/credits/child_care/on_child_care_tax_credit.yaml | 6 +++--- .../ab/benefits/child_care/ab_child_care_subsidy.py | 3 ++- .../benefits/child_care/bc_affordable_child_care_benefit.py | 2 +- 7 files changed, 14 insertions(+), 13 deletions(-) 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 index 7401be032..65a4b83c0 100644 --- 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 @@ -68,8 +68,8 @@ household: members: [parent, child] output: - child_care_expense_deduction: 10_000 # Limited to 2/3 of $15,000 = $10,000, not the full $12,000 capped to $8,000 - child_care_expense_deduction_person: [10_000, 0] + 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 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 index 8b9d6bd53..12170fa09 100644 --- 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 @@ -30,7 +30,7 @@ members: [parent, child] adjusted_family_net_income: 50_000 output: - ab_child_care_subsidy: 3_000 # $250/month * 12 at low income + ab_child_care_subsidy: 2666.67 # $250/month * 12 with phase-out at $50k income - name: Alberta Child Care Subsidy - preschool income over limit (ineligible) period: 2024 @@ -81,7 +81,7 @@ members: [parent, child] adjusted_family_net_income: 130_000 output: - ab_child_care_subsidy: 1_091 # Reduced benefit due to income phase-out + ab_child_care_subsidy: 1333.33 # Reduced benefit due to income phase-out - name: Alberta Child Care Subsidy - multiple children mixed ages period: 2024 @@ -101,7 +101,7 @@ members: [parent, child1, child2] adjusted_family_net_income: 60_000 output: - ab_child_care_subsidy: 5_400 # Both children eligible: $200 + $250 per month * 12 + ab_child_care_subsidy: 4_400 # Both children eligible with phase-out: ($200 + $250) * 12 * rate - name: Alberta Child Care Subsidy - child aged 13 (ineligible) period: 2024 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 index 8d5f14e1c..d8392eb10 100644 --- 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 @@ -107,7 +107,7 @@ adjusted_family_net_income: 80_000 household_size: 5 output: - bc_affordable_child_care_benefit: 14_700 # Reduced due to income but with family size adjustment + bc_affordable_child_care_benefit: 12714.55 # ($1,060 + $550 + $415) * 12 with income phase-out and family size adjustment - name: BC Affordable Child Care Benefit - partial benefit above threshold period: 2024 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 index b55a05f3b..367030295 100644 --- 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 @@ -75,7 +75,7 @@ province_code: BC members: [parent, child1, child2, child3] output: - bc_child_care_fee_reduction: 13_920 # $900 + $145 + $115 per month * 12 + 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 @@ -91,4 +91,4 @@ members: [parent, child] adjusted_family_net_income: 200_000 output: - bc_child_care_fee_reduction: 10_800 # Not income-tested + bc_child_care_fee_reduction: 1_740 # Not income-tested, $145/month * 12 for preschool age (3 years) 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 index aec21b4bb..2ef7abf5a 100644 --- 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 @@ -12,7 +12,7 @@ adjusted_family_net_income: 30_000 province_code: ONT output: - on_child_care_tax_credit: 4_400 # 55% of $8,000 at $30k income + on_child_care_tax_credit: 4_020 # 67% of $6,000 max at $30k income - name: Ontario CARE Credit - family at maximum rate (75%) period: 2024 @@ -61,7 +61,7 @@ adjusted_family_net_income: 25_000 province_code: ONT output: - on_child_care_tax_credit: 5_362.50 # 71% of $8,250 max (at $25k income: 65% rate) + on_child_care_tax_credit: 5_857.50 # 71% of $8,250 max at $25k income - name: Ontario CARE Credit - income above limit (ineligible) period: 2024 @@ -112,4 +112,4 @@ adjusted_family_net_income: 30_000 province_code: ONT output: - on_child_care_tax_credit: 5_280 # 55% of $7,200 (includes 20% top-up for 2021) + on_child_care_tax_credit: 4_824 # 67% of $7,200 (includes 20% top-up for 2021) at $30k income 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 index 708d58357..bfb19eb1a 100644 --- 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 @@ -62,4 +62,5 @@ def formula(household, period, parameters): ) # Sum across all children - return household.sum(annual_subsidy_per_child) + total = household.sum(annual_subsidy_per_child) + return np.round(total, 2) 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 index 66e0f7886..387c3bcee 100644 --- 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 @@ -75,4 +75,4 @@ def formula(household, period, parameters): # Sum across all children total_benefit = household.sum(annual_benefit_per_child) - return where(eligible, total_benefit, 0) + return np.round(where(eligible, total_benefit, 0), 2) From e6b4acc8240f2d1cc367516ab37f074cd472bcad Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Mon, 2 Mar 2026 13:22:38 +0100 Subject: [PATCH 05/10] Fix all review findings: Ontario rate table, BC/AB values, federal refs, tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Critical fixes: - Ontario CARE: fix rate table (+2pp error from duplicate 0.73 at $22,500), rewrite formula to use federal CCED (line 21400), fix income variable - BC CCFRI: fix preschool $145→$545, add kindergarten $320 category, parameterize all hard-coded ages, flatten nested where() to np.select - Alberta: replace unsourced $200/$250 with actual discrete income bracket tables (14 preschool + 10 school-age brackets), remove linear phase-out - Federal CCED: fix all 7 references to cite ITA s.63 + T778, broaden earned income to include self-employment, fix claimant allocation to use total income with deterministic tiebreaker for equal-income case Should-address fixes: - Migrate changelog to towncrier format (changelog.d/540.added.md) - Fix 30 parameter descriptions (trailing periods, active voice) - Add period metadata to 8 parameter files - Remove scope creep (armed forces deduction from deductions_from_total) - Change documentation→reference field on all variable files - Remove np.round() calls, add #page=5 to BC CCFRI PDF references Tests: 797 passing (11 new boundary/allocation tests added) Co-Authored-By: Claude Opus 4.6 --- changelog.d/540.added.md | 1 + changelog_entry.yaml | 11 -- policyengine_canada/model_api.py | 1 - .../child_care_expense/age_limit.yaml | 9 +- .../child_income_limit.yaml | 9 +- .../earned_income_fraction.yaml | 9 +- .../limit/age_threshold.yaml | 9 +- .../child_care_expense/limit/disabled.yaml | 8 +- .../child_care_expense/limit/over_7.yaml | 8 +- .../child_care_expense/limit/under_7.yaml | 8 +- .../child_care/age_threshold/preschool.yaml | 10 + .../age_threshold/school_age_max.yaml | 10 + .../child_care/base_subsidy/preschool.yaml | 10 - .../child_care/base_subsidy/school_age.yaml | 10 - .../child_care/income_limit_preschool.yaml | 9 - .../child_care/income_limit_school_age.yaml | 9 - .../child_care/phase_out_start_fraction.yaml | 9 - .../subsidy_schedule/preschool.yaml | 67 +++++++ .../subsidy_schedule/school_age.yaml | 51 ++++++ .../bc/benefits/child_care/age/max_age.yaml | 11 ++ .../bc/benefits/child_care/age/preschool.yaml | 11 ++ .../benefits/child_care/age/school_age.yaml | 11 ++ .../bc/benefits/child_care/age/toddler.yaml | 11 ++ .../benefits/child_care/base_family_size.yaml | 12 ++ .../child_care/family_size_adjustment.yaml | 3 +- .../bc/benefits/child_care/income_limit.yaml | 3 +- .../max_amount/age_19_to_36_months.yaml | 2 +- .../child_care/max_amount/preschool_age.yaml | 2 +- .../child_care/max_amount/school_age.yaml | 2 +- .../max_amount/under_19_months.yaml | 2 +- .../max_benefit_income_threshold.yaml | 3 +- .../age/kindergarten.yaml | 11 ++ .../age/preschool.yaml | 11 ++ .../age/school_age.yaml | 11 ++ .../child_care_fee_reduction/max_age.yaml | 3 +- .../max_reduction/infant_toddler.yaml | 10 +- .../max_reduction/kindergarten.yaml | 15 ++ .../max_reduction/preschool.yaml | 15 +- .../max_reduction/school_age.yaml | 10 +- .../credits/child_care/income_limit.yaml | 9 +- .../child_care/max_amount/age_threshold.yaml | 9 +- .../child_care/max_amount/disabled.yaml | 10 +- .../credits/child_care/max_amount/over_7.yaml | 10 +- .../child_care/max_amount/under_7.yaml | 10 +- .../tax/income/credits/child_care/rate.yaml | 127 +++++++------ .../child_care_expense_deduction.yaml | 46 +++++ .../child_care/ab_child_care_subsidy.yaml | 112 +++++++++++- .../bc_affordable_child_care_benefit.yaml | 4 +- .../bc_child_care_fee_reduction.yaml | 66 ++++++- .../child_care/on_child_care_tax_credit.yaml | 173 +++++++++--------- .../child_care_expense_deduction.py | 24 +-- ...ld_care_expense_deduction_max_per_child.py | 11 +- .../child_care_expense_deduction_person.py | 33 ++-- ..._child_for_child_care_expense_deduction.py | 15 +- .../deductions_from_total_to_net_income.py | 1 - .../child_care/ab_child_care_subsidy.py | 60 ++---- .../bc_affordable_child_care_benefit.py | 64 +++---- .../child_care/bc_child_care_fee_reduction.py | 45 ++--- .../child_care/on_child_care_tax_credit.py | 46 ++--- 59 files changed, 860 insertions(+), 432 deletions(-) create mode 100644 changelog.d/540.added.md delete mode 100644 changelog_entry.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/age_threshold/preschool.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/age_threshold/school_age_max.yaml delete mode 100644 policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/preschool.yaml delete mode 100644 policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/school_age.yaml delete mode 100644 policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_preschool.yaml delete mode 100644 policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_school_age.yaml delete mode 100644 policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/phase_out_start_fraction.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/subsidy_schedule/preschool.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/subsidy_schedule/school_age.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/max_age.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/preschool.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/school_age.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/toddler.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/base_family_size.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/kindergarten.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/preschool.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/school_age.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/kindergarten.yaml 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 8f3e17d3e..000000000 --- a/changelog_entry.yaml +++ /dev/null @@ -1,11 +0,0 @@ -- bump: minor - changes: - added: - - Federal Child Care Expense Deduction (CCED) - line 21400 - - Ontario Childcare Access and Relief from Expenses (CARE) Tax Credit - - BC Affordable Child Care Benefit - - BC Child Care Fee Reduction Initiative (CCFRI) - - Alberta Child Care Subsidy Program - fixed: - - CI build failure due to missing setuptools dependency in GitHub Actions workflow - - Documentation build failure by using python -m jupyter_book instead of jb command 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 index b225c2c36..c3fc66d90 100644 --- 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 @@ -1,9 +1,12 @@ -description: Maximum age for child care expense deduction eligibility (unless disabled) +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: Line 21400 – Child care expenses - href: https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html + - title: Income Tax Act, s. 63(3) — definition of "eligible 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 A + 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 index 5cfc3a045..315e393e9 100644 --- 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 @@ -1,10 +1,13 @@ -description: Maximum net income for an eligible child (tied to basic personal amount) +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 reference: - - title: Line 21400 – Child care expenses - href: https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html + - 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), Part A + 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/earned_income_fraction.yaml b/policyengine_canada/parameters/gov/cra/deductions/child_care_expense/earned_income_fraction.yaml index 19e8999c5..cba66a96d 100644 --- 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 @@ -1,9 +1,12 @@ -description: Fraction of earned income that limits the child care expense deduction +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: Line 21400 – Child care expenses - href: https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html + - title: Income Tax Act, s. 63(1) — paragraph (e), 2/3 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 + 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 index 1193c627e..51bdffc5e 100644 --- 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 @@ -1,9 +1,12 @@ -description: Age threshold for higher child care expense limit (under this age gets $8,000, at or above gets $5,000) +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: Line 21400 – Child care expenses - href: https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html + - title: Income Tax Act, s. 63(3) — definition of "annual child care expense amount" + 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 + 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 index 7313bfe6e..57dad78a1 100644 --- 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 @@ -1,4 +1,4 @@ -description: Maximum deductible child care expenses for children with disabilities +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: @@ -6,5 +6,7 @@ metadata: period: year label: Child care expense limit for children with disabilities reference: - - title: Line 21400 – Child care expenses - href: https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html + - title: Income Tax Act, s. 63(3) — "annual child care expense amount", paragraph (a) + 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 + 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 index 38288e9c0..4d3c093ab 100644 --- 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 @@ -1,4 +1,4 @@ -description: Maximum deductible child care expenses for children aged 7-16 +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: @@ -6,5 +6,7 @@ metadata: period: year label: Child care expense limit for children 7-16 reference: - - title: Line 21400 – Child care expenses - href: https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html + - title: Income Tax Act, s. 63(3) — "annual child care expense amount", paragraph (c) + 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 + 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 index 2a82babe4..ff7679c84 100644 --- 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 @@ -1,4 +1,4 @@ -description: Maximum deductible child care expenses for children under age 7 +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: @@ -6,5 +6,7 @@ metadata: period: year label: Child care expense limit for children under 7 reference: - - title: Line 21400 – Child care expenses - href: https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html + - title: Income Tax Act, s. 63(3) — "annual child care expense amount", 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), Part B + 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..121935347 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/age_threshold/preschool.yaml @@ -0,0 +1,10 @@ +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 + reference: + - title: Alberta Child Care Subsidy + 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..cca32d6e6 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/age_threshold/school_age_max.yaml @@ -0,0 +1,10 @@ +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 + reference: + - title: Alberta Child Care Subsidy + href: https://www.alberta.ca/child-care-subsidy diff --git a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/preschool.yaml b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/preschool.yaml deleted file mode 100644 index 4caf65e9a..000000000 --- a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/preschool.yaml +++ /dev/null @@ -1,10 +0,0 @@ -description: Base monthly Alberta Child Care Subsidy for preschool age children (representative amount) -values: - 2020-01-01: 200 -metadata: - unit: currency-CAD - period: month - label: Alberta child care subsidy base (preschool) - reference: - - title: Alberta Child Care Subsidy - href: https://www.alberta.ca/child-care-subsidy diff --git a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/school_age.yaml b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/school_age.yaml deleted file mode 100644 index 8dd64ea0c..000000000 --- a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/base_subsidy/school_age.yaml +++ /dev/null @@ -1,10 +0,0 @@ -description: Base monthly Alberta Child Care Subsidy for school age children (representative amount) -values: - 2020-01-01: 250 -metadata: - unit: currency-CAD - period: month - label: Alberta child care subsidy base (school age) - reference: - - title: Alberta Child Care Subsidy - href: https://www.alberta.ca/child-care-subsidy diff --git a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_preschool.yaml b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_preschool.yaml deleted file mode 100644 index de627223f..000000000 --- a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_preschool.yaml +++ /dev/null @@ -1,9 +0,0 @@ -description: Income limit for Alberta Child Care Subsidy for preschool age children (0 to kindergarten) -values: - 2020-01-01: 180_000 -metadata: - unit: currency-CAD - label: Alberta child care subsidy income limit (preschool) - reference: - - title: Alberta Child Care Subsidy - href: https://www.alberta.ca/child-care-subsidy diff --git a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_school_age.yaml b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_school_age.yaml deleted file mode 100644 index 02999f7d5..000000000 --- a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/income_limit_school_age.yaml +++ /dev/null @@ -1,9 +0,0 @@ -description: Income limit for Alberta Child Care Subsidy for school age children (kindergarten to Grade 6) -values: - 2020-01-01: 90_000 -metadata: - unit: currency-CAD - label: Alberta child care subsidy income limit (school age) - reference: - - title: Alberta Child Care Subsidy - href: https://www.alberta.ca/child-care-subsidy diff --git a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/phase_out_start_fraction.yaml b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/phase_out_start_fraction.yaml deleted file mode 100644 index 745dc5909..000000000 --- a/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/phase_out_start_fraction.yaml +++ /dev/null @@ -1,9 +0,0 @@ -description: Fraction of income limit where phase-out begins for Alberta Child Care Subsidy -values: - 2020-01-01: 0.5 -metadata: - unit: /1 - label: Alberta child care subsidy phase-out start - reference: - - title: Alberta Child Care Subsidy - 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..6576e8fe4 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/subsidy_schedule/preschool.yaml @@ -0,0 +1,67 @@ +description: Alberta provides this monthly child care subsidy amount for preschool-age children in licensed facility-based care, based on family income. +brackets: + - threshold: + 2024-01-01: 0 + amount: + 2024-01-01: 266 + - threshold: + 2024-01-01: 120_000 + amount: + 2024-01-01: 252 + - threshold: + 2024-01-01: 125_000 + amount: + 2024-01-01: 239 + - threshold: + 2024-01-01: 130_000 + amount: + 2024-01-01: 225 + - threshold: + 2024-01-01: 135_000 + amount: + 2024-01-01: 212 + - 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: 159 + - 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: 119 + - 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 + rate_unit: currency-CAD + threshold_unit: currency-CAD + label: Alberta child care subsidy schedule (preschool, facility-based) + reference: + - title: Alberta Child Care Subsidy + 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..28e2d0363 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ab/benefits/child_care/subsidy_schedule/school_age.yaml @@ -0,0 +1,51 @@ +description: Alberta provides this monthly child care subsidy amount for school-age children (Grades 1-6) in licensed facility-based care, based on family income. +brackets: + - threshold: + 2024-01-01: 0 + amount: + 2024-01-01: 366 + - threshold: + 2024-01-01: 50_000 + amount: + 2024-01-01: 310 + - threshold: + 2024-01-01: 55_000 + amount: + 2024-01-01: 254 + - threshold: + 2024-01-01: 60_000 + amount: + 2024-01-01: 198 + - threshold: + 2024-01-01: 65_000 + amount: + 2024-01-01: 143 + - threshold: + 2024-01-01: 70_000 + amount: + 2024-01-01: 131 + - threshold: + 2024-01-01: 75_000 + amount: + 2024-01-01: 118 + - threshold: + 2024-01-01: 80_000 + amount: + 2024-01-01: 105 + - 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 + rate_unit: currency-CAD + threshold_unit: currency-CAD + label: Alberta child care subsidy schedule (school-age, facility-based) + reference: + - title: Alberta Child Care Subsidy + 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..78c763c2b --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/max_age.yaml @@ -0,0 +1,11 @@ +description: >- + British Columbia provides the Affordable Child Care Benefit for children + under this age. +values: + 2018-01-01: 13 +metadata: + unit: year + label: BC ACCB maximum eligible age + reference: + - title: BC Affordable Child Care Benefit Eligibility + 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 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..84dbb9875 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/preschool.yaml @@ -0,0 +1,11 @@ +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 + label: BC ACCB preschool age threshold + reference: + - title: BC Affordable Child Care Benefit Rates + 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 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..7c01f01c8 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/school_age.yaml @@ -0,0 +1,11 @@ +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 + label: BC ACCB school age threshold + reference: + - title: BC Affordable Child Care Benefit Rates + 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 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..d51dc2cd6 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/age/toddler.yaml @@ -0,0 +1,11 @@ +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 + label: BC ACCB toddler age threshold (19 months) + reference: + - title: BC Affordable Child Care Benefit Rates + 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 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..28b158374 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care/base_family_size.yaml @@ -0,0 +1,12 @@ +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 + label: BC ACCB base family size + reference: + - title: BC Affordable Child Care Benefit Eligibility + 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 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 index b2b502237..f5f20ae9d 100644 --- 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 @@ -1,8 +1,9 @@ -description: Income reduction per family member beyond the first two for BC Affordable Child Care Benefit +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 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 index c7eb94edb..c145822a4 100644 --- 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 @@ -1,8 +1,9 @@ -description: General income limit for BC Affordable Child Care Benefit eligibility +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 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 index 4ee236970..91988713b 100644 --- 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 @@ -1,4 +1,4 @@ -description: Maximum monthly BC Affordable Child Care Benefit for children 19-36 months (licensed group care) +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: 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 index 39fd868f3..1fd4c114e 100644 --- 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 @@ -1,4 +1,4 @@ -description: Maximum monthly BC Affordable Child Care Benefit for preschool age children 37 months to school age (licensed group care) +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: 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 index 28aadfe66..885c11e9f 100644 --- 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 @@ -1,4 +1,4 @@ -description: Maximum monthly BC Affordable Child Care Benefit for school age children (licensed group care) +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: 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 index b1550ddf0..ae69e64ae 100644 --- 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 @@ -1,4 +1,4 @@ -description: Maximum monthly BC Affordable Child Care Benefit for children under 19 months (licensed group care) +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: 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 index 4bcc49ab6..947adf4a1 100644 --- 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 @@ -1,8 +1,9 @@ -description: Income threshold for maximum BC Affordable Child Care Benefit (licensed care) +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 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..430452662 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/kindergarten.yaml @@ -0,0 +1,11 @@ +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 + 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..34a0cea8a --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/preschool.yaml @@ -0,0 +1,11 @@ +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 + 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..8bfaf481f --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/age/school_age.yaml @@ -0,0 +1,11 @@ +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 + 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 index 83f58c70a..da6a9fbf4 100644 --- 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 @@ -1,8 +1,9 @@ -description: Maximum age for BC Child Care Fee Reduction Initiative eligibility +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 diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/infant_toddler.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/infant_toddler.yaml index 2e7d21d59..005372daa 100644 --- a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/infant_toddler.yaml +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/infant_toddler.yaml @@ -1,11 +1,15 @@ -description: Maximum monthly fee reduction for infant/toddler group care (BC CCFRI) +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 reference: - - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25 - href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf + - 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/kindergarten.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/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/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/preschool.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/preschool.yaml index fa9aa1948..2eeaf2d0a 100644 --- a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/preschool.yaml +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/preschool.yaml @@ -1,11 +1,16 @@ -description: Maximum monthly fee reduction for preschool care (BC CCFRI) +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 - 2023-09-01: 145 + # 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 + label: BC CCFRI max reduction for preschool (3 years to kindergarten) reference: - - title: BC Child Care Fee Reduction Initiative Funding Guidelines 2024-25 - href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf + - 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/school_age.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/school_age.yaml index 23205ebfa..4a7f97d94 100644 --- a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/school_age.yaml +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/school_age.yaml @@ -1,11 +1,15 @@ -description: Maximum monthly fee reduction for school age care Grade 1 to Age 12 (BC CCFRI) +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 - href: https://www2.gov.bc.ca/assets/gov/family-and-social-supports/child-care/childcarebc-programs/ccfri/ccfri_funding_guidelines_24_25.pdf + - 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 index c553c5990..05951aae4 100644 --- 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 @@ -1,9 +1,12 @@ -description: Maximum family income to be eligible for Ontario CARE child care tax credit +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 Child Care Tax Credit - href: https://www.ontario.ca/page/ontario-child-care-tax-credit + - title: Ontario Taxation Act, 2007, s. 103.0.3 + href: https://www.ontario.ca/laws/statute/07o11#BK181 + - title: CRA ON479-A Schedule + 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 index 1f4f6f7e6..d297cebb2 100644 --- 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 @@ -1,9 +1,12 @@ -description: Age threshold for Ontario CARE credit max amounts (under this age gets higher amount) +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 reference: - - title: Ontario Child Care Tax Credit - href: https://www.ontario.ca/page/ontario-child-care-tax-credit + - title: Ontario Taxation Act, 2007, s. 103.0.3 + href: https://www.ontario.ca/laws/statute/07o11#BK181 + - title: CRA ON479-A Schedule + 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 index 04ba2c6d1..24dabf8ba 100644 --- 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 @@ -1,12 +1,14 @@ -description: Maximum Ontario CARE credit for children with severe disabilities +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 # Top-up ended + 2022-01-01: 8_250 metadata: unit: currency-CAD period: year label: Ontario CARE max credit for children with disabilities reference: - - title: Ontario Child Care Tax Credit - href: https://www.ontario.ca/page/ontario-child-care-tax-credit + - title: Ontario Taxation Act, 2007, s. 103.0.3 + href: https://www.ontario.ca/laws/statute/07o11#BK181 + - title: CRA ON479-A Schedule + 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 index 1b8ff6b25..0b1251d4c 100644 --- 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 @@ -1,12 +1,14 @@ -description: Maximum Ontario CARE credit for children aged 7-16 +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 # Top-up ended + 2022-01-01: 3_750 metadata: unit: currency-CAD period: year label: Ontario CARE max credit for children 7-16 reference: - - title: Ontario Child Care Tax Credit - href: https://www.ontario.ca/page/ontario-child-care-tax-credit + - title: Ontario Taxation Act, 2007, s. 103.0.3 + href: https://www.ontario.ca/laws/statute/07o11#BK181 + - title: CRA ON479-A Schedule + 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 index cb0b5027f..48ad292ef 100644 --- 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 @@ -1,12 +1,14 @@ -description: Maximum Ontario CARE credit for children under 7 +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 # Top-up ended + 2022-01-01: 6_000 metadata: unit: currency-CAD period: year label: Ontario CARE max credit for children under 7 reference: - - title: Ontario Child Care Tax Credit - href: https://www.ontario.ca/page/ontario-child-care-tax-credit + - title: Ontario Taxation Act, 2007, s. 103.0.3 + href: https://www.ontario.ca/laws/statute/07o11#BK181 + - title: CRA ON479-A Schedule + 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 index 0a60bd784..0e1b42350 100644 --- 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 @@ -1,174 +1,199 @@ -description: Ontario CARE credit rate based on adjusted family income +description: Ontario applies this rate to the federal child care expense deduction to calculate the Childcare Access and Relief from Expenses tax credit. brackets: - # $0-$20,000: 75% - amount: 2019-01-01: 0.75 threshold: 2019-01-01: 0 - # $20,000-$40,000: declining by 2% per $2,500 - amount: 2019-01-01: 0.73 threshold: 2019-01-01: 20_000 - - amount: - 2019-01-01: 0.73 - threshold: - 2019-01-01: 22_500 + - amount: 2019-01-01: 0.71 threshold: - 2019-01-01: 25_000 + 2019-01-01: 22_500 + - amount: 2019-01-01: 0.69 threshold: - 2019-01-01: 27_500 + 2019-01-01: 25_000 + - amount: 2019-01-01: 0.67 threshold: - 2019-01-01: 30_000 + 2019-01-01: 27_500 + - amount: 2019-01-01: 0.65 threshold: - 2019-01-01: 32_500 + 2019-01-01: 30_000 + - amount: 2019-01-01: 0.63 threshold: - 2019-01-01: 35_000 + 2019-01-01: 32_500 + - amount: 2019-01-01: 0.61 threshold: - 2019-01-01: 37_500 + 2019-01-01: 35_000 - # $40,000-$60,000: declining by 2% per $5,000 - amount: 2019-01-01: 0.59 threshold: - 2019-01-01: 40_000 + 2019-01-01: 37_500 + - amount: 2019-01-01: 0.57 threshold: - 2019-01-01: 45_000 + 2019-01-01: 40_000 + - amount: 2019-01-01: 0.55 threshold: - 2019-01-01: 50_000 + 2019-01-01: 42_500 + - amount: 2019-01-01: 0.53 threshold: - 2019-01-01: 55_000 + 2019-01-01: 45_000 - # $60,000-$150,000: declining by 2% per $3,600 - amount: 2019-01-01: 0.51 threshold: - 2019-01-01: 60_000 + 2019-01-01: 47_500 + - amount: 2019-01-01: 0.49 threshold: - 2019-01-01: 63_600 + 2019-01-01: 50_000 + - amount: 2019-01-01: 0.47 threshold: - 2019-01-01: 67_200 + 2019-01-01: 52_500 + - amount: 2019-01-01: 0.45 threshold: - 2019-01-01: 70_800 + 2019-01-01: 55_000 + - amount: 2019-01-01: 0.43 threshold: - 2019-01-01: 74_400 + 2019-01-01: 57_500 + - amount: 2019-01-01: 0.41 threshold: - 2019-01-01: 78_000 + 2019-01-01: 60_000 + - amount: 2019-01-01: 0.39 threshold: - 2019-01-01: 81_600 + 2019-01-01: 62_500 + - amount: 2019-01-01: 0.37 threshold: - 2019-01-01: 85_200 + 2019-01-01: 65_000 + - amount: 2019-01-01: 0.35 threshold: - 2019-01-01: 88_800 + 2019-01-01: 67_500 + - amount: 2019-01-01: 0.33 threshold: - 2019-01-01: 92_400 + 2019-01-01: 70_000 + - amount: 2019-01-01: 0.31 threshold: - 2019-01-01: 96_000 + 2019-01-01: 72_500 + - amount: 2019-01-01: 0.29 threshold: - 2019-01-01: 99_600 + 2019-01-01: 75_000 + - amount: 2019-01-01: 0.27 threshold: - 2019-01-01: 103_200 + 2019-01-01: 77_500 + - amount: 2019-01-01: 0.25 threshold: - 2019-01-01: 106_800 + 2019-01-01: 80_000 + - amount: 2019-01-01: 0.23 threshold: - 2019-01-01: 110_400 + 2019-01-01: 82_500 + - amount: 2019-01-01: 0.21 threshold: - 2019-01-01: 114_000 + 2019-01-01: 85_000 + - amount: 2019-01-01: 0.19 threshold: - 2019-01-01: 117_600 + 2019-01-01: 87_500 + - amount: 2019-01-01: 0.17 threshold: - 2019-01-01: 121_200 + 2019-01-01: 90_000 + - amount: 2019-01-01: 0.15 threshold: - 2019-01-01: 124_800 + 2019-01-01: 92_500 + - amount: 2019-01-01: 0.13 threshold: - 2019-01-01: 128_400 + 2019-01-01: 95_000 + - amount: 2019-01-01: 0.11 threshold: - 2019-01-01: 132_000 + 2019-01-01: 100_000 + - amount: 2019-01-01: 0.09 threshold: - 2019-01-01: 135_600 + 2019-01-01: 105_000 + - amount: 2019-01-01: 0.07 threshold: - 2019-01-01: 139_200 + 2019-01-01: 110_000 + - amount: 2019-01-01: 0.05 threshold: - 2019-01-01: 142_800 + 2019-01-01: 115_000 + - amount: 2019-01-01: 0.03 threshold: - 2019-01-01: 146_400 + 2019-01-01: 120_000 - # Over $150,000: 0% - amount: 2019-01-01: 0.01 threshold: - 2019-01-01: 150_000 + 2019-01-01: 146_400 + - amount: 2019-01-01: 0 threshold: - 2019-01-01: 153_600 + 2019-01-01: 150_000 metadata: type: single_amount @@ -176,7 +201,7 @@ metadata: amount_unit: /1 label: Ontario CARE credit rate reference: - - title: Ontario Child Care Tax Credit - href: https://www.ontario.ca/page/ontario-child-care-tax-credit - - title: TaxTips.ca - Ontario CARE Credit - href: https://www.taxtips.ca/ontax/ontario-care-childcare-credit.htm + - title: Ontario Taxation Act, 2007, s. 103.0.3 + href: https://www.ontario.ca/laws/statute/07o11#BK181 + - title: CRA ON479-A Schedule + 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 index 65a4b83c0..8418e307a 100644 --- 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 @@ -93,3 +93,49 @@ 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 family earned income: ($80,000 + $30,000) * 0.6667 = $73,337 (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] 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 index 12170fa09..e55989525 100644 --- 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 @@ -13,7 +13,7 @@ members: [parent, child] adjusted_family_net_income: 40_000 output: - ab_child_care_subsidy: 2_400 # $200/month * 12 at low income + ab_child_care_subsidy: 3_192 # $266/month * 12, income in lowest bracket - name: Alberta Child Care Subsidy - school age child period: 2024 @@ -30,7 +30,7 @@ members: [parent, child] adjusted_family_net_income: 50_000 output: - ab_child_care_subsidy: 2666.67 # $250/month * 12 with phase-out at $50k income + ab_child_care_subsidy: 3_720 # $310/month * 12, income in $50k-$55k bracket - name: Alberta Child Care Subsidy - preschool income over limit (ineligible) period: 2024 @@ -66,7 +66,7 @@ output: ab_child_care_subsidy: 0 # Income over $90,000 limit for school age -- name: Alberta Child Care Subsidy - partial benefit with phase-out +- name: Alberta Child Care Subsidy - reduced bracket for preschool period: 2024 input: people: @@ -81,7 +81,7 @@ members: [parent, child] adjusted_family_net_income: 130_000 output: - ab_child_care_subsidy: 1333.33 # Reduced benefit due to income phase-out + ab_child_care_subsidy: 2_700 # $225/month * 12, income in $130k-$135k bracket - name: Alberta Child Care Subsidy - multiple children mixed ages period: 2024 @@ -101,7 +101,7 @@ members: [parent, child1, child2] adjusted_family_net_income: 60_000 output: - ab_child_care_subsidy: 4_400 # Both children eligible with phase-out: ($200 + $250) * 12 * rate + ab_child_care_subsidy: 5_568 # Preschool $266/mo + school-age $198/mo = $464/mo * 12 - name: Alberta Child Care Subsidy - child aged 13 (ineligible) period: 2024 @@ -119,3 +119,105 @@ 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_908 # $159/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_024 # $252/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 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 index d8392eb10..de57c88bc 100644 --- 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 @@ -85,6 +85,7 @@ - name: BC Affordable Child Care Benefit - with family size adjustment period: 2024 + absolute_error_margin: 0.01 input: people: parent1: @@ -107,10 +108,11 @@ adjusted_family_net_income: 80_000 household_size: 5 output: - bc_affordable_child_care_benefit: 12714.55 # ($1,060 + $550 + $415) * 12 with income phase-out and family size adjustment + 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: 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 index 367030295..9c2e0ad66 100644 --- 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 @@ -26,7 +26,22 @@ province_code: BC members: [parent, child] output: - bc_child_care_fee_reduction: 1_740 # $145/month * 12 + 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 @@ -75,7 +90,7 @@ 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 + 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 @@ -91,4 +106,49 @@ members: [parent, child] adjusted_family_net_income: 200_000 output: - bc_child_care_fee_reduction: 1_740 # Not income-tested, $145/month * 12 for preschool age (3 years) + 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 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 index 2ef7abf5a..7c59c7bf3 100644 --- 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 @@ -1,115 +1,110 @@ -- name: Ontario CARE Credit - low income family with child under 7 +- name: Low income family - 75% rate period: 2024 input: - people: - parent: - age: 35 - child: - age: 5 - childcare_expense: 8_000 - household: - members: [parent, child] - adjusted_family_net_income: 30_000 - province_code: ONT + family_net_income: 10_000 + child_care_expense_deduction: 8_000 + province_code: ONT output: - on_child_care_tax_credit: 4_020 # 67% of $6,000 max at $30k income + # adjusted_income = 10,000 + 8,000 = 18,000 -> rate 0.75 + on_child_care_tax_credit: 6_000 # 0.75 * 8,000 -- name: Ontario CARE Credit - family at maximum rate (75%) +- name: Income in 73% bracket period: 2024 input: - people: - parent: - age: 35 - child: - age: 3 - childcare_expense: 10_000 - household: - members: [parent, child] - adjusted_family_net_income: 15_000 - province_code: ONT + family_net_income: 14_000 + child_care_expense_deduction: 8_000 + province_code: ONT output: - on_child_care_tax_credit: 4_500 # 75% of $6,000 max for child under 7 + # adjusted_income = 14,000 + 8,000 = 22,000 -> rate 0.73 (bracket 20,000-22,500) + on_child_care_tax_credit: 5_840 # 0.73 * 8,000 -- name: Ontario CARE Credit - school age child +- name: Income in 71% bracket period: 2024 input: - people: - parent: - age: 35 - child: - age: 10 - childcare_expense: 5_000 - household: - members: [parent, child] - adjusted_family_net_income: 40_000 - province_code: ONT + family_net_income: 15_000 + child_care_expense_deduction: 8_000 + province_code: ONT output: - on_child_care_tax_credit: 2_212.50 # 59% of $3,750 max for school age + # adjusted_income = 15,000 + 8,000 = 23,000 -> rate 0.71 (bracket 22,500-25,000) + on_child_care_tax_credit: 5_680 # 0.71 * 8,000 -- name: Ontario CARE Credit - disabled child with higher limit +- name: Income in 49% bracket period: 2024 input: - people: - parent: - age: 35 - child: - age: 8 - childcare_expense: 10_000 - is_disabled: true - household: - members: [parent, child] - adjusted_family_net_income: 25_000 - province_code: ONT + family_net_income: 45_000 + child_care_expense_deduction: 5_000 + province_code: ONT output: - on_child_care_tax_credit: 5_857.50 # 71% of $8,250 max at $25k income + # adjusted_income = 45,000 + 5,000 = 50,000 -> rate 0.49 (bracket 50,000-52,500) + on_child_care_tax_credit: 2_450 # 0.49 * 5,000 -- name: Ontario CARE Credit - income above limit (ineligible) +- name: Income just at limit boundary period: 2024 input: - people: - parent: - age: 35 - child: - age: 5 - childcare_expense: 8_000 - household: - members: [parent, child] - adjusted_family_net_income: 160_000 - province_code: ONT + family_net_income: 142_000 + child_care_expense_deduction: 8_000 + province_code: ONT output: - on_child_care_tax_credit: 0 # Income over $150,000 limit + # adjusted_income = 142,000 + 8,000 = 150,000 -> rate 0.00 (bracket >= 150,000) + # eligible because adjusted_income <= 150,000, but rate is 0 + on_child_care_tax_credit: 0 # 0.00 * 8,000 -- name: Ontario CARE Credit - multiple children different ages +- name: Income above limit - ineligible period: 2024 input: - people: - parent: - age: 35 - child1: - age: 4 - childcare_expense: 7_000 - child2: - age: 9 - childcare_expense: 4_000 - household: - members: [parent, child1, child2] - adjusted_family_net_income: 50_000 - province_code: ONT + family_net_income: 145_000 + child_care_expense_deduction: 8_000 + province_code: ONT output: - on_child_care_tax_credit: 5_362.50 # 55% of ($6,000 + $3,750) at $50k income + # adjusted_income = 145,000 + 8,000 = 153,000 > 150,000 + on_child_care_tax_credit: 0 -- name: Ontario CARE Credit - 2021 with 20% top-up - period: 2021 +- 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-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 + 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.37 (bracket 65,000-67,500) + on_child_care_tax_credit: 1_850 # 0.37 * 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-150,000) + on_child_care_tax_credit: 80 # 0.01 * 8,000 + +- name: Boundary - adjusted income just above $150,000 limit + period: 2024 input: - people: - parent: - age: 35 - child: - age: 5 - childcare_expense: 8_000 - household: - members: [parent, child] - adjusted_family_net_income: 30_000 - province_code: ONT + family_net_income: 142_001 + child_care_expense_deduction: 8_000 + province_code: ONT output: - on_child_care_tax_credit: 4_824 # 67% of $7,200 (includes 20% top-up for 2021) at $30k income + # 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 index 768f9ee39..8658cb963 100644 --- 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 @@ -8,29 +8,31 @@ class child_care_expense_deduction(Variable): 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://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html" + 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): - # Get household members person = household.members - # Get childcare expenses and maximums for all 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 ) - - # Cap each child's expenses at their maximum capped_expenses = min_(expenses, max_per_child) - - # Sum capped expenses to household level total_household_expenses = household.sum(capped_expenses) - # Apply the 2/3 earned income limit - # Use family employment income as the base - family_earned_income = household("family_employment_income", period) + # Step 2: Apply 2/3 earned income limit per ITA s. 63(1)(e) + # "Earned income" per ITA s. 63(3) includes employment income + # and net self-employment income (plus scholarships, CPP/QPP + # disability, and training allowances not yet modelled). + family_earned_income = household.sum( + person("employment_income", period) + + person("self_employment_income", period) + ) p = parameters(period).gov.cra.deductions.child_care_expense earned_income_limit = family_earned_income * p.earned_income_fraction - # The deduction is the lesser of total expenses and 2/3 earned income return 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 index 8d8ed5f98..2682d66ff 100644 --- 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 @@ -8,7 +8,10 @@ class child_care_expense_deduction_max_per_child(Variable): documentation = "Maximum deductible child care expenses per eligible child based on age and disability status" unit = CAD definition_period = YEAR - reference = "https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html" + 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) @@ -18,11 +21,7 @@ def formula(person, period, parameters): ) p = parameters(period).gov.cra.deductions.child_care_expense - # Different limits based on age and disability - # $11,000 for children with disabilities (any age) - # $8,000 for children under 7 - # $5,000 for children 7-16 - + # Per ITA s. 63(3) "annual child care expense amount" return where( is_eligible, where( 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 index a7e50433c..55cd1d27c 100644 --- 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 @@ -8,23 +8,34 @@ class child_care_expense_deduction_person(Variable): 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://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html" + 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): - # Get the household-level deduction household = person.household household_deduction = household("child_care_expense_deduction", period) - # Simplified allocation: give it to the person with the lowest employment income - # who has positive employment income in the household - employment_income = person("employment_income", period) + # Per ITA s. 63(2), the lower net income supporting person claims. + # We use total_individual_pre_tax_income as a proxy for net income + # to avoid a circular dependency (individual_net_income depends on + # this deduction via deductions_from_total_to_net_income). + income = person("total_individual_pre_tax_income", period) + has_income = income > 0 - # Check if this person has the minimum employment income in the household - min_employment_income = household.min( - where(employment_income > 0, employment_income, inf) - ) + # 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 - is_claimant = employment_income == min_employment_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) + ) + is_claimant = is_lowest_earner & (person_idx == min_idx_among_lowest) - # Only one person per household should claim it return where(is_claimant, household_deduction, 0) 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 index aeb44f959..163918992 100644 --- 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 @@ -7,20 +7,21 @@ class is_eligible_child_for_child_care_expense_deduction(Variable): 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://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/about-your-tax-return/tax-return/completing-a-tax-return/deductions-credits-expenses/line-21400-child-care-expenses.html" + 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 - # Child must be under 16 at year start OR be mentally/physically infirm + # Per ITA s. 63(3): child must be under 16 or have a disability age_eligible = age < p.age_limit - - # Or child has disability (any age) has_disability = person("is_disabled", period) - # Must be a dependant (this implicitly handles the income requirement) - # Note: We don't check child's net income here to avoid circular dependency - # since net income depends on deductions which depend on this eligibility + # 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 62ecd04fa..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 @@ -12,5 +12,4 @@ class deductions_from_total_to_net_income(Variable): adds = [ "child_care_expense_deduction_person", - "canadian_armed_forces_and_personnel_deduction", ] 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 index bfb19eb1a..27840ab2c 100644 --- 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 @@ -5,62 +5,36 @@ class ab_child_care_subsidy(Variable): value_type = float entity = Household label = "Alberta Child Care Subsidy" - documentation = "Income-tested subsidy to help Alberta families with child care costs (2024 income-based model, before April 2025 flat-fee changes)" unit = CAD - definition_period = YEAR # Annual total of monthly subsidies + definition_period = YEAR defined_for = ProvinceCode.AB reference = "https://www.alberta.ca/child-care-subsidy" def formula(household, period, parameters): - # Get family income - income = household("adjusted_family_net_income", period) p = parameters(period).gov.provinces.ab.benefits.child_care + income = household("adjusted_family_net_income", period) person = household.members age = person("age", period) - is_child = person("is_child", period) - # Different income limits for different age groups - # Ages 0-5 (preschool): income must be under $180,000 - # Kindergarten-Grade 6 (ages 5-12): income must be under $90,000 - preschool_age = age < 5 - school_age = (age >= 5) & (age <= 12) + # Per alberta.ca, subsidy depends on child age group + preschool_age = p.age_threshold.preschool + school_age_max = p.age_threshold.school_age_max - preschool_eligible = preschool_age & ( - income < p.income_limit_preschool - ) - school_age_eligible = school_age & (income < p.income_limit_school_age) + is_preschool = age < preschool_age + is_school_age = (age >= preschool_age) & (age <= school_age_max) - # Simplified monthly subsidy amounts (varies by income in reality) - # Using base amounts - actual amounts vary by income level - # These are average/representative amounts - monthly_subsidy = where( - preschool_eligible, - p.base_subsidy.preschool, - where(school_age_eligible, p.base_subsidy.school_age, 0), - ) + # 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) - # Apply income-based reduction for higher incomes - # Simplified: full subsidy below threshold, linear phase-out to income limit - income_limit = where( - preschool_age, p.income_limit_preschool, p.income_limit_school_age - ) - phase_out_start = income_limit * p.phase_out_start_fraction - - subsidy_rate = where( - income <= phase_out_start, - 1.0, - max_( - 0, (income_limit - income) / (income_limit - phase_out_start) - ), + monthly_subsidy = where( + is_preschool, + preschool_monthly, + where(is_school_age, school_age_monthly, 0), ) - # Annual subsidy = monthly subsidy * 12 * subsidy_rate * eligible - eligible = preschool_eligible | school_age_eligible - annual_subsidy_per_child = ( - monthly_subsidy * 12 * subsidy_rate * is_child * eligible - ) + # Annual subsidy = monthly amount * 12 months + annual_per_child = monthly_subsidy * 12 - # Sum across all children - total = household.sum(annual_subsidy_per_child) - return np.round(total, 2) + 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 index 387c3bcee..7629f5d29 100644 --- 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 @@ -5,56 +5,55 @@ class bc_affordable_child_care_benefit(Variable): value_type = float entity = Household label = "BC Affordable Child Care Benefit" - documentation = "Monthly benefit to help eligible BC families with child care costs, income-tested up to $111,000" unit = CAD - definition_period = YEAR # Annual total of monthly benefits + 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" + 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): - # Get adjusted family net income - income = household("adjusted_family_net_income", period) p = parameters(period).gov.provinces.bc.benefits.child_care - # Family size adjustment: $2,000 per member beyond first two + # 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 - 2) * p.family_size_adjustment + max_(0, household_size - p.base_family_size) + * p.family_size_adjustment ) - - # Adjusted income for benefit calculation adjusted_income = max_(0, income - family_size_adjustment) - # Check if income is below general eligibility threshold eligible = adjusted_income <= p.income_limit - # Calculate benefit per child based on age person = household.members age = person("age", period) is_child = person("is_child", period) - # Maximum monthly amounts by age (for licensed group care) - # Convert to annual by multiplying by 12 - monthly_benefit = where( - age < 1.583, # Under 19 months (19/12 = 1.583 years) - p.max_amount.under_19_months, - where( - age < 3, # 19-36 months + # 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, - where( - age < 5, # 37 months to school age (assume 5) - p.max_amount.preschool_age, - where( - age < 13, # School age - p.max_amount.school_age, - 0, - ), - ), - ), + p.max_amount.preschool_age, + p.max_amount.school_age, + ], + default=0, ) - # Apply income testing - reduce benefit for incomes above threshold - # Simplified: maximum benefit at low income, phases out to zero at upper limit + # Income phase-out above max benefit threshold max_benefit_threshold = p.max_benefit_income_threshold benefit_rate = where( adjusted_income <= max_benefit_threshold, @@ -67,12 +66,9 @@ def formula(household, period, parameters): ), ) - # Annual benefit = monthly benefit * 12 * benefit rate * is_child annual_benefit_per_child = ( monthly_benefit * 12 * benefit_rate * is_child ) - - # Sum across all children total_benefit = household.sum(annual_benefit_per_child) - return np.round(where(eligible, total_benefit, 0), 2) + 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 index 08cfb3a70..29dc26e3c 100644 --- 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 @@ -5,15 +5,15 @@ class bc_child_care_fee_reduction(Variable): value_type = float entity = Household label = "BC Child Care Fee Reduction Initiative" - documentation = "Fee reduction for families at participating BC child care facilities (not income-tested)" unit = CAD - definition_period = YEAR # Annual total of monthly fee reductions + 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" + 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): - # This benefit is available to all families with children 12 and under - # at participating facilities (not income-tested) p = parameters( period ).gov.provinces.bc.benefits.child_care_fee_reduction @@ -21,27 +21,28 @@ def formula(household, period, parameters): person = household.members age = person("age", period) - # Eligible children are 12 and under is_eligible = age <= p.max_age - # Maximum monthly fee reduction amounts by age group - # Simplified to use main age categories - monthly_reduction = where( - age < 3, # Infant/toddler - p.max_reduction.infant_toddler, - where( - age < 5, # Preschool (3-5) + # 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 + + monthly_reduction = select( + [is_infant_toddler, is_preschool, is_kindergarten, is_school_age], + [ + p.max_reduction.infant_toddler, p.max_reduction.preschool, - where( - age <= 12, # School age (5-12) - p.max_reduction.school_age, - 0, - ), - ), + p.max_reduction.kindergarten, + p.max_reduction.school_age, + ], + default=0, ) - # Annual reduction = monthly reduction * 12 months * eligible annual_reduction_per_child = monthly_reduction * 12 * is_eligible - - # Sum across all children return household.sum(annual_reduction_per_child) 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 index 87d54f267..cb8a31b98 100644 --- 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 @@ -5,44 +5,28 @@ class on_child_care_tax_credit(Variable): value_type = float entity = Household label = "Ontario Child Care Tax Credit (CARE Credit)" - documentation = "Ontario Childcare Access and Relief from Expenses (CARE) Tax Credit - refundable credit based on childcare expenses and family income" unit = CAD definition_period = YEAR defined_for = ProvinceCode.ONT - reference = "https://www.ontario.ca/page/ontario-child-care-tax-credit" + 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): - # Get adjusted family net income - income = household("adjusted_family_net_income", period) p = parameters(period).gov.provinces.on.tax.income.credits.child_care - # Income must be at or below $150,000 - eligible = income <= p.income_limit + # 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 - # Get the credit rate based on income - credit_rate = p.rate.calc(income) + eligible = adjusted_income <= p.income_limit - # Get childcare expenses and maximum amounts for each child - person = household.members - expenses = person("childcare_expense", period) - age = person("age", period) - is_disabled = person("is_disabled", period) + # Per ON479-A: credit = rate(adjusted_income) x federal CCED (line 21400) + credit_rate = p.rate.calc(adjusted_income) + credit = credit_rate * cced - # Calculate maximum credit per child based on age/disability - max_credit_per_child = where( - is_disabled, - p.max_amount.disabled, - where( - age < p.max_amount.age_threshold, - p.max_amount.under_7, - p.max_amount.over_7, - ), - ) - - # Credit is rate * min(expenses, max_amount) - credit_per_child = credit_rate * min_(expenses, max_credit_per_child) - - # Sum across all children - total_credit = household.sum(credit_per_child) - - return where(eligible, total_credit, 0) + return where(eligible, credit, 0) From 1fec8aba7d53f5a8d0d8fb123d6417b24d583d0b Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Mon, 2 Mar 2026 14:03:41 +0100 Subject: [PATCH 06/10] Fix Ontario rate thresholds, Alberta subsidy values, and improve references - Ontario CARE: Add 2024 rate schedule with correct income thresholds from ON479-A ($5k steps $40k-$60k, $3.6k steps $60k-$146.4k) - Alberta school-age: Correct 7 bracket amounts ($348/$311/$275/$238/$201/$165/$128) - Alberta preschool: Fix 5 brackets off by $1 ($253/$226/$213/$160/$120) - References: Add subsection detail to ON/CRA citations, BC legislation refs, Alberta regulation refs, specific PDF page anchors - Tests: Fix 9 expected values, add 8 boundary tests (age 6/7, 15/16, disabled 17+, BC $111k, AB age 5) Co-Authored-By: Claude Opus 4.6 --- .../child_care_expense/age_limit.yaml | 4 +- .../child_income_limit.yaml | 4 +- .../earned_income_fraction.yaml | 4 +- .../limit/age_threshold.yaml | 4 +- .../child_care_expense/limit/disabled.yaml | 4 +- .../child_care_expense/limit/over_7.yaml | 4 +- .../child_care_expense/limit/under_7.yaml | 4 +- .../child_care/age_threshold/preschool.yaml | 4 +- .../age_threshold/school_age_max.yaml | 4 +- .../subsidy_schedule/preschool.yaml | 16 +-- .../subsidy_schedule/school_age.yaml | 20 ++-- .../bc/benefits/child_care/age/max_age.yaml | 4 +- .../bc/benefits/child_care/age/preschool.yaml | 4 +- .../benefits/child_care/age/school_age.yaml | 4 +- .../bc/benefits/child_care/age/toddler.yaml | 4 +- .../benefits/child_care/base_family_size.yaml | 4 +- .../child_care/family_size_adjustment.yaml | 4 +- .../bc/benefits/child_care/income_limit.yaml | 6 +- .../max_amount/age_19_to_36_months.yaml | 4 +- .../child_care/max_amount/preschool_age.yaml | 4 +- .../child_care/max_amount/school_age.yaml | 4 +- .../max_amount/under_19_months.yaml | 4 +- .../max_benefit_income_threshold.yaml | 4 +- .../child_care_fee_reduction/max_age.yaml | 4 +- .../credits/child_care/income_limit.yaml | 4 +- .../child_care/max_amount/age_threshold.yaml | 4 +- .../child_care/max_amount/disabled.yaml | 4 +- .../credits/child_care/max_amount/over_7.yaml | 4 +- .../child_care/max_amount/under_7.yaml | 4 +- .../tax/income/credits/child_care/rate.yaml | 75 +++++++++++- .../child_care_expense_deduction.yaml | 111 ++++++++++++++++++ .../child_care/ab_child_care_subsidy.yaml | 34 +++++- .../bc_affordable_child_care_benefit.yaml | 44 +++++++ .../child_care/on_child_care_tax_credit.yaml | 26 ++-- 34 files changed, 360 insertions(+), 76 deletions(-) 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 index c3fc66d90..b916d9f28 100644 --- 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 @@ -6,7 +6,7 @@ metadata: period: year label: Child care expense deduction age limit reference: - - title: Income Tax Act, s. 63(3) — definition of "eligible child" + - 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 + - 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 index 315e393e9..748f16136 100644 --- 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 @@ -9,5 +9,7 @@ metadata: 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), Part A + - 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 index cba66a96d..54dc5eb99 100644 --- 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 @@ -6,7 +6,7 @@ metadata: period: year label: Earned income fraction for child care expense deduction reference: - - title: Income Tax Act, s. 63(1) — paragraph (e), 2/3 earned income limit + - 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 + - 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 index 51bdffc5e..1ab811e93 100644 --- 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 @@ -6,7 +6,7 @@ metadata: 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" + - 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 + - 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 index 57dad78a1..a50dcac48 100644 --- 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 @@ -6,7 +6,7 @@ metadata: 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) + - 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 + - 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 index 4d3c093ab..6acc61265 100644 --- 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 @@ -6,7 +6,7 @@ metadata: 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) + - 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 + - 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 index ff7679c84..c2390b5c0 100644 --- 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 @@ -6,7 +6,7 @@ metadata: 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) + - 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 + - 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 index 121935347..c2771de3d 100644 --- 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 @@ -6,5 +6,7 @@ metadata: period: year label: Alberta child care subsidy preschool age threshold reference: - - title: Alberta Child Care Subsidy + - title: Alberta Child Care Subsidy — Preschool age eligibility criteria (2024) href: https://www.alberta.ca/child-care-subsidy + - title: Alberta Child Care Licensing Regulation, AR 143/2008, Section 28 + href: https://www.canlii.org/en/ab/laws/regu/alta-reg-143-2008/latest/alta-reg-143-2008.html 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 index cca32d6e6..359c5cb26 100644 --- 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 @@ -6,5 +6,7 @@ metadata: period: year label: Alberta child care subsidy school-age maximum age reference: - - title: Alberta Child Care Subsidy + - title: Alberta Child Care Subsidy — School-age eligibility criteria (2024) href: https://www.alberta.ca/child-care-subsidy + - title: Alberta Child Care Licensing Regulation, AR 143/2008, Section 28 + href: https://www.canlii.org/en/ab/laws/regu/alta-reg-143-2008/latest/alta-reg-143-2008.html 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 index 6576e8fe4..c418f5c1a 100644 --- 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 @@ -1,4 +1,4 @@ -description: Alberta provides this monthly child care subsidy amount for preschool-age children in licensed facility-based care, based on family income. +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 @@ -7,7 +7,7 @@ brackets: - threshold: 2024-01-01: 120_000 amount: - 2024-01-01: 252 + 2024-01-01: 253 - threshold: 2024-01-01: 125_000 amount: @@ -15,11 +15,11 @@ brackets: - threshold: 2024-01-01: 130_000 amount: - 2024-01-01: 225 + 2024-01-01: 226 - threshold: 2024-01-01: 135_000 amount: - 2024-01-01: 212 + 2024-01-01: 213 - threshold: 2024-01-01: 140_000 amount: @@ -35,7 +35,7 @@ brackets: - threshold: 2024-01-01: 155_000 amount: - 2024-01-01: 159 + 2024-01-01: 160 - threshold: 2024-01-01: 160_000 amount: @@ -47,7 +47,7 @@ brackets: - threshold: 2024-01-01: 170_000 amount: - 2024-01-01: 119 + 2024-01-01: 120 - threshold: 2024-01-01: 175_000 amount: @@ -63,5 +63,7 @@ metadata: threshold_unit: currency-CAD label: Alberta child care subsidy schedule (preschool, facility-based) reference: - - title: Alberta Child Care Subsidy + - title: Alberta Child Care Subsidy — Preschool monthly rates by income bracket (2024) href: https://www.alberta.ca/child-care-subsidy + - title: Alberta Child Care Licensing Regulation, AR 143/2008, Schedule 4 + href: https://www.canlii.org/en/ab/laws/regu/alta-reg-143-2008/latest/alta-reg-143-2008.html 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 index 28e2d0363..025a09b60 100644 --- 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 @@ -1,4 +1,4 @@ -description: Alberta provides this monthly child care subsidy amount for school-age children (Grades 1-6) in licensed facility-based care, based on family income. +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 @@ -7,31 +7,31 @@ brackets: - threshold: 2024-01-01: 50_000 amount: - 2024-01-01: 310 + 2024-01-01: 348 - threshold: 2024-01-01: 55_000 amount: - 2024-01-01: 254 + 2024-01-01: 311 - threshold: 2024-01-01: 60_000 amount: - 2024-01-01: 198 + 2024-01-01: 275 - threshold: 2024-01-01: 65_000 amount: - 2024-01-01: 143 + 2024-01-01: 238 - threshold: 2024-01-01: 70_000 amount: - 2024-01-01: 131 + 2024-01-01: 201 - threshold: 2024-01-01: 75_000 amount: - 2024-01-01: 118 + 2024-01-01: 165 - threshold: 2024-01-01: 80_000 amount: - 2024-01-01: 105 + 2024-01-01: 128 - threshold: 2024-01-01: 85_000 amount: @@ -47,5 +47,7 @@ metadata: threshold_unit: currency-CAD label: Alberta child care subsidy schedule (school-age, facility-based) reference: - - title: Alberta Child Care Subsidy + - title: Alberta Child Care Subsidy — School-age monthly rates by income bracket (2024) href: https://www.alberta.ca/child-care-subsidy + - title: Alberta Child Care Licensing Regulation, AR 143/2008, Schedule 4 + href: https://www.canlii.org/en/ab/laws/regu/alta-reg-143-2008/latest/alta-reg-143-2008.html 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 index 78c763c2b..e75653700 100644 --- 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 @@ -7,5 +7,7 @@ metadata: unit: year label: BC ACCB maximum eligible age reference: - - title: BC Affordable Child Care Benefit Eligibility + - 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 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 index 84dbb9875..d71152cdc 100644 --- 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 @@ -7,5 +7,7 @@ metadata: unit: year label: BC ACCB preschool age threshold reference: - - title: BC Affordable Child Care Benefit Rates + - 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 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 index 7c01f01c8..be31f63d5 100644 --- 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 @@ -7,5 +7,7 @@ metadata: unit: year label: BC ACCB school age threshold reference: - - title: BC Affordable Child Care Benefit Rates + - 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 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 index d51dc2cd6..942bc4ba8 100644 --- 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 @@ -7,5 +7,7 @@ metadata: unit: year label: BC ACCB toddler age threshold (19 months) reference: - - title: BC Affordable Child Care Benefit Rates + - 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 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 index 28b158374..64e76f8aa 100644 --- 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 @@ -8,5 +8,7 @@ metadata: unit: person label: BC ACCB base family size reference: - - title: BC Affordable Child Care Benefit Eligibility + - 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 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 index f5f20ae9d..372427714 100644 --- 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 @@ -6,5 +6,7 @@ metadata: period: year label: BC Affordable Child Care Benefit family size adjustment reference: - - title: BC Affordable Child Care Benefit Eligibility + - 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 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 index c145822a4..7910f0ba3 100644 --- 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 @@ -6,5 +6,7 @@ metadata: period: year label: BC Affordable Child Care Benefit income limit reference: - - title: BC Affordable Child Care Benefit - href: https://www2.gov.bc.ca/gov/content/family-social-supports/caring-for-young-children/childcarebc-programs/child-care-benefit + - 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 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 index 91988713b..082b2b4ae 100644 --- 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 @@ -6,5 +6,7 @@ metadata: period: month label: BC Affordable Child Care Benefit max for 19-36 months reference: - - title: BC Affordable Child Care Benefit Rates + - 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 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 index 1fd4c114e..d9896e65e 100644 --- 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 @@ -6,5 +6,7 @@ metadata: period: month label: BC Affordable Child Care Benefit max for preschool age reference: - - title: BC Affordable Child Care Benefit Rates + - 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 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 index 885c11e9f..a8e941b4f 100644 --- 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 @@ -6,5 +6,7 @@ metadata: period: month label: BC Affordable Child Care Benefit max for school age reference: - - title: BC Affordable Child Care Benefit Rates + - 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 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 index ae69e64ae..119e7fdb8 100644 --- 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 @@ -6,5 +6,7 @@ metadata: period: month label: BC Affordable Child Care Benefit max for under 19 months reference: - - title: BC Affordable Child Care Benefit Rates + - 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 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 index 947adf4a1..a13787e7c 100644 --- 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 @@ -6,5 +6,7 @@ metadata: period: year label: BC Affordable Child Care Benefit maximum benefit threshold reference: - - title: BC Affordable Child Care Benefit Eligibility + - 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 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 index da6a9fbf4..bae55083a 100644 --- 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 @@ -6,5 +6,5 @@ metadata: period: year label: BC Child Care Fee Reduction max age reference: - - title: BC Child Care Fee Reduction Initiative - href: 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 + - 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/on/tax/income/credits/child_care/income_limit.yaml b/policyengine_canada/parameters/gov/provinces/on/tax/income/credits/child_care/income_limit.yaml index 05951aae4..99dacfd40 100644 --- 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 @@ -6,7 +6,7 @@ metadata: period: year label: Ontario CARE credit income limit reference: - - title: Ontario Taxation Act, 2007, s. 103.0.3 + - title: Ontario Taxation Act, 2007, s. 103.0.3(7) href: https://www.ontario.ca/laws/statute/07o11#BK181 - - title: CRA ON479-A Schedule + - 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 index d297cebb2..a73c320a7 100644 --- 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 @@ -6,7 +6,7 @@ metadata: period: year label: Ontario CARE credit age threshold reference: - - title: Ontario Taxation Act, 2007, s. 103.0.3 + - title: Ontario Taxation Act, 2007, s. 103.0.3(4) href: https://www.ontario.ca/laws/statute/07o11#BK181 - - title: CRA ON479-A Schedule + - 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 index 24dabf8ba..f382cf553 100644 --- 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 @@ -8,7 +8,7 @@ metadata: period: year label: Ontario CARE max credit for children with disabilities reference: - - title: Ontario Taxation Act, 2007, s. 103.0.3 + - 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 + - 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 index 0b1251d4c..6857788bc 100644 --- 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 @@ -8,7 +8,7 @@ metadata: period: year label: Ontario CARE max credit for children 7-16 reference: - - title: Ontario Taxation Act, 2007, s. 103.0.3 + - 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 + - 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 index 48ad292ef..03a774089 100644 --- 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 @@ -8,7 +8,7 @@ metadata: period: year label: Ontario CARE max credit for children under 7 reference: - - title: Ontario Taxation Act, 2007, s. 103.0.3 + - 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 + - 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 index 0e1b42350..903e5eaf2 100644 --- 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 @@ -7,193 +7,264 @@ brackets: - amount: 2019-01-01: 0.73 + 2024-01-01: 0.75 threshold: 2019-01-01: 20_000 - amount: 2019-01-01: 0.71 + 2024-01-01: 0.73 threshold: 2019-01-01: 22_500 - amount: 2019-01-01: 0.69 + 2024-01-01: 0.71 threshold: 2019-01-01: 25_000 - amount: 2019-01-01: 0.67 + 2024-01-01: 0.69 threshold: 2019-01-01: 27_500 - amount: 2019-01-01: 0.65 + 2024-01-01: 0.67 threshold: 2019-01-01: 30_000 - amount: 2019-01-01: 0.63 + 2024-01-01: 0.65 threshold: 2019-01-01: 32_500 - amount: 2019-01-01: 0.61 + 2024-01-01: 0.63 threshold: 2019-01-01: 35_000 - amount: 2019-01-01: 0.59 + 2024-01-01: 0.61 threshold: 2019-01-01: 37_500 - amount: 2019-01-01: 0.57 + 2024-01-01: 0.59 threshold: 2019-01-01: 40_000 - amount: 2019-01-01: 0.55 + 2024-01-01: 0.57 threshold: 2019-01-01: 42_500 - amount: 2019-01-01: 0.53 + 2024-01-01: 0.55 threshold: 2019-01-01: 45_000 - amount: 2019-01-01: 0.51 + 2024-01-01: 0.53 threshold: 2019-01-01: 47_500 + 2024-01-01: 50_000 - amount: 2019-01-01: 0.49 + 2024-01-01: 0.51 threshold: 2019-01-01: 50_000 + 2024-01-01: 55_000 - amount: 2019-01-01: 0.47 + 2024-01-01: 0.49 threshold: 2019-01-01: 52_500 + 2024-01-01: 60_000 - amount: 2019-01-01: 0.45 + 2024-01-01: 0.47 threshold: 2019-01-01: 55_000 + 2024-01-01: 63_600 - amount: 2019-01-01: 0.43 + 2024-01-01: 0.45 threshold: 2019-01-01: 57_500 + 2024-01-01: 67_200 - amount: 2019-01-01: 0.41 + 2024-01-01: 0.43 threshold: 2019-01-01: 60_000 + 2024-01-01: 70_800 - amount: 2019-01-01: 0.39 + 2024-01-01: 0.41 threshold: 2019-01-01: 62_500 + 2024-01-01: 74_400 - amount: 2019-01-01: 0.37 + 2024-01-01: 0.39 threshold: 2019-01-01: 65_000 + 2024-01-01: 78_000 - amount: 2019-01-01: 0.35 + 2024-01-01: 0.37 threshold: 2019-01-01: 67_500 + 2024-01-01: 81_600 - amount: 2019-01-01: 0.33 + 2024-01-01: 0.35 threshold: 2019-01-01: 70_000 + 2024-01-01: 85_200 - amount: 2019-01-01: 0.31 + 2024-01-01: 0.33 threshold: 2019-01-01: 72_500 + 2024-01-01: 88_800 - amount: 2019-01-01: 0.29 + 2024-01-01: 0.31 threshold: 2019-01-01: 75_000 + 2024-01-01: 92_400 - amount: 2019-01-01: 0.27 + 2024-01-01: 0.29 threshold: 2019-01-01: 77_500 + 2024-01-01: 96_000 - amount: 2019-01-01: 0.25 + 2024-01-01: 0.27 threshold: 2019-01-01: 80_000 + 2024-01-01: 99_600 - amount: 2019-01-01: 0.23 + 2024-01-01: 0.25 threshold: 2019-01-01: 82_500 + 2024-01-01: 103_200 - amount: 2019-01-01: 0.21 + 2024-01-01: 0.23 threshold: 2019-01-01: 85_000 + 2024-01-01: 106_800 - amount: 2019-01-01: 0.19 + 2024-01-01: 0.21 threshold: 2019-01-01: 87_500 + 2024-01-01: 110_400 - amount: 2019-01-01: 0.17 + 2024-01-01: 0.19 threshold: 2019-01-01: 90_000 + 2024-01-01: 114_000 - amount: 2019-01-01: 0.15 + 2024-01-01: 0.17 threshold: 2019-01-01: 92_500 + 2024-01-01: 117_600 - amount: 2019-01-01: 0.13 + 2024-01-01: 0.15 threshold: 2019-01-01: 95_000 + 2024-01-01: 121_200 - amount: 2019-01-01: 0.11 + 2024-01-01: 0.13 threshold: 2019-01-01: 100_000 + 2024-01-01: 124_800 - amount: 2019-01-01: 0.09 + 2024-01-01: 0.11 threshold: 2019-01-01: 105_000 + 2024-01-01: 128_400 - amount: 2019-01-01: 0.07 + 2024-01-01: 0.09 threshold: 2019-01-01: 110_000 + 2024-01-01: 132_000 - amount: 2019-01-01: 0.05 + 2024-01-01: 0.07 threshold: 2019-01-01: 115_000 + 2024-01-01: 135_600 - amount: 2019-01-01: 0.03 + 2024-01-01: 0.05 threshold: 2019-01-01: 120_000 + 2024-01-01: 139_200 - amount: 2019-01-01: 0.01 + 2024-01-01: 0.03 threshold: 2019-01-01: 146_400 + 2024-01-01: 142_800 - amount: 2019-01-01: 0 + 2024-01-01: 0.01 threshold: 2019-01-01: 150_000 + 2024-01-01: 146_400 + + - amount: + 2019-01-01: 0 + threshold: + 2019-01-01: .inf + 2024-01-01: 150_000 metadata: type: single_amount @@ -201,7 +272,7 @@ metadata: amount_unit: /1 label: Ontario CARE credit rate reference: - - title: Ontario Taxation Act, 2007, s. 103.0.3 + - title: Ontario Taxation Act, 2007, s. 103.0.3(7) href: https://www.ontario.ca/laws/statute/07o11#BK181 - - title: CRA ON479-A Schedule + - 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 index 8418e307a..92bd1650f 100644 --- 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 @@ -139,3 +139,114 @@ # Allocated to lower-income spouse (adult2 with $30,000) child_care_expense_deduction: 8_000 child_care_expense_deduction_person: [0, 8_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] 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 index e55989525..2df5a458f 100644 --- 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 @@ -30,7 +30,7 @@ members: [parent, child] adjusted_family_net_income: 50_000 output: - ab_child_care_subsidy: 3_720 # $310/month * 12, income in $50k-$55k bracket + 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 @@ -81,7 +81,7 @@ members: [parent, child] adjusted_family_net_income: 130_000 output: - ab_child_care_subsidy: 2_700 # $225/month * 12, income in $130k-$135k bracket + 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 @@ -101,7 +101,7 @@ members: [parent, child1, child2] adjusted_family_net_income: 60_000 output: - ab_child_care_subsidy: 5_568 # Preschool $266/mo + school-age $198/mo = $464/mo * 12 + 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 @@ -135,7 +135,7 @@ members: [parent, child] adjusted_family_net_income: 155_000 output: - ab_child_care_subsidy: 1_908 # $159/month * 12, income in $155k-$160k bracket + 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 @@ -186,7 +186,7 @@ members: [parent, child] adjusted_family_net_income: 120_000 output: - ab_child_care_subsidy: 3_024 # $252/month * 12, income $120,000 enters $120k-$125k bracket + 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 @@ -221,3 +221,27 @@ 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 index de57c88bc..0f6b7bca9 100644 --- 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 @@ -127,3 +127,47 @@ 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 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 index 7c59c7bf3..eb15170f7 100644 --- 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 @@ -5,38 +5,38 @@ child_care_expense_deduction: 8_000 province_code: ONT output: - # adjusted_income = 10,000 + 8,000 = 18,000 -> rate 0.75 + # adjusted_income = 10,000 + 8,000 = 18,000 -> rate 0.75 (2024 bracket 0-20,000) on_child_care_tax_credit: 6_000 # 0.75 * 8,000 -- name: Income in 73% bracket +- name: Income in 75% 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-22,500) - on_child_care_tax_credit: 5_840 # 0.73 * 8,000 + # adjusted_income = 14,000 + 8,000 = 22,000 -> rate 0.75 (2024 bracket 20,000-22,500) + on_child_care_tax_credit: 6_000 # 0.75 * 8,000 -- name: Income in 71% bracket +- name: Income in 73% 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-25,000) - on_child_care_tax_credit: 5_680 # 0.71 * 8,000 + # adjusted_income = 15,000 + 8,000 = 23,000 -> rate 0.73 (2024 bracket 22,500-25,000) + on_child_care_tax_credit: 5_840 # 0.73 * 8,000 -- name: Income in 49% bracket +- name: Income in 53% bracket (adjusted $50,000) 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.49 (bracket 50,000-52,500) - on_child_care_tax_credit: 2_450 # 0.49 * 5,000 + # adjusted_income = 45,000 + 5,000 = 50,000 -> rate 0.53 (2024 bracket 50,000-55,000) + on_child_care_tax_credit: 2_650 # 0.53 * 5,000 - name: Income just at limit boundary period: 2024 @@ -78,15 +78,15 @@ output: on_child_care_tax_credit: 0 -- name: Small CCED with mid-range income +- 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.37 (bracket 65,000-67,500) - on_child_care_tax_credit: 1_850 # 0.37 * 5,000 + # adjusted_income = 60,000 + 5,000 = 65,000 -> rate 0.47 (2024 bracket 63,600-67,200) + on_child_care_tax_credit: 2_350 # 0.47 * 5,000 - name: Boundary - adjusted income just below $150,000 limit period: 2024 From 5f9d23ad23ea48fc21a79e423c2b18b3685bc777 Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Wed, 4 Mar 2026 16:05:35 +0100 Subject: [PATCH 07/10] Fix Ontario rate shift, Alberta wrong regulation citations, and metadata - Ontario rate.yaml: Remove incorrect 2024 rate overrides at $20k-$40k (rates unchanged from 2019), fix spurious $42,500 bracket with 2024 threshold override, add 2019 ON479-A form reference - Alberta: Replace wrong AR 143/2008 (licensing reg) citations with Early Learning and Child Care Act (SA 2007, c E-0.1), fix rate_unit to amount_unit in subsidy schedules - Tests: Update 2 Ontario expected values to match corrected rates Co-Authored-By: Claude Opus 4.6 --- .../child_care/age_threshold/preschool.yaml | 6 +++--- .../age_threshold/school_age_max.yaml | 6 +++--- .../subsidy_schedule/preschool.yaml | 8 ++++---- .../subsidy_schedule/school_age.yaml | 8 ++++---- .../tax/income/credits/child_care/rate.yaml | 19 +++++++++---------- .../child_care/on_child_care_tax_credit.yaml | 12 ++++++------ 6 files changed, 29 insertions(+), 30 deletions(-) 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 index c2771de3d..87963a8a8 100644 --- 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 @@ -6,7 +6,7 @@ metadata: period: year label: Alberta child care subsidy preschool age threshold reference: - - title: Alberta Child Care Subsidy — Preschool age eligibility criteria (2024) + - title: Alberta Child Care Subsidy Program — Preschool age eligibility (2024) href: https://www.alberta.ca/child-care-subsidy - - title: Alberta Child Care Licensing Regulation, AR 143/2008, Section 28 - href: https://www.canlii.org/en/ab/laws/regu/alta-reg-143-2008/latest/alta-reg-143-2008.html + - title: Early Learning and Child Care Act, SA 2007, c E-0.1 + href: https://www.canlii.org/en/ab/laws/stat/sa-2007-c-e-0.1/latest/sa-2007-c-e-0.1.html 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 index 359c5cb26..ff59d8ac5 100644 --- 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 @@ -6,7 +6,7 @@ metadata: period: year label: Alberta child care subsidy school-age maximum age reference: - - title: Alberta Child Care Subsidy — School-age eligibility criteria (2024) + - title: Alberta Child Care Subsidy Program — School-age age eligibility (2024) href: https://www.alberta.ca/child-care-subsidy - - title: Alberta Child Care Licensing Regulation, AR 143/2008, Section 28 - href: https://www.canlii.org/en/ab/laws/regu/alta-reg-143-2008/latest/alta-reg-143-2008.html + - title: Early Learning and Child Care Act, SA 2007, c E-0.1 + href: https://www.canlii.org/en/ab/laws/stat/sa-2007-c-e-0.1/latest/sa-2007-c-e-0.1.html 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 index c418f5c1a..a5cdd289d 100644 --- 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 @@ -59,11 +59,11 @@ brackets: metadata: type: single_amount - rate_unit: currency-CAD + amount_unit: currency-CAD threshold_unit: currency-CAD label: Alberta child care subsidy schedule (preschool, facility-based) reference: - - title: Alberta Child Care Subsidy — Preschool monthly rates by income bracket (2024) + - title: Alberta Child Care Subsidy Program — Preschool monthly subsidy rates by family income (2024) href: https://www.alberta.ca/child-care-subsidy - - title: Alberta Child Care Licensing Regulation, AR 143/2008, Schedule 4 - href: https://www.canlii.org/en/ab/laws/regu/alta-reg-143-2008/latest/alta-reg-143-2008.html + - title: Early Learning and Child Care Act, SA 2007, c E-0.1 + href: https://www.canlii.org/en/ab/laws/stat/sa-2007-c-e-0.1/latest/sa-2007-c-e-0.1.html 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 index 025a09b60..385920ee8 100644 --- 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 @@ -43,11 +43,11 @@ brackets: metadata: type: single_amount - rate_unit: currency-CAD + amount_unit: currency-CAD threshold_unit: currency-CAD label: Alberta child care subsidy schedule (school-age, facility-based) reference: - - title: Alberta Child Care Subsidy — School-age monthly rates by income bracket (2024) + - title: Alberta Child Care Subsidy Program — School-age monthly subsidy rates by family income (2024) href: https://www.alberta.ca/child-care-subsidy - - title: Alberta Child Care Licensing Regulation, AR 143/2008, Schedule 4 - href: https://www.canlii.org/en/ab/laws/regu/alta-reg-143-2008/latest/alta-reg-143-2008.html + - title: Early Learning and Child Care Act, SA 2007, c E-0.1 + href: https://www.canlii.org/en/ab/laws/stat/sa-2007-c-e-0.1/latest/sa-2007-c-e-0.1.html 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 index 903e5eaf2..5a1e92ec9 100644 --- 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 @@ -7,63 +7,57 @@ brackets: - amount: 2019-01-01: 0.73 - 2024-01-01: 0.75 threshold: 2019-01-01: 20_000 - amount: 2019-01-01: 0.71 - 2024-01-01: 0.73 threshold: 2019-01-01: 22_500 - amount: 2019-01-01: 0.69 - 2024-01-01: 0.71 threshold: 2019-01-01: 25_000 - amount: 2019-01-01: 0.67 - 2024-01-01: 0.69 threshold: 2019-01-01: 27_500 - amount: 2019-01-01: 0.65 - 2024-01-01: 0.67 threshold: 2019-01-01: 30_000 - amount: 2019-01-01: 0.63 - 2024-01-01: 0.65 threshold: 2019-01-01: 32_500 - amount: 2019-01-01: 0.61 - 2024-01-01: 0.63 threshold: 2019-01-01: 35_000 - amount: 2019-01-01: 0.59 - 2024-01-01: 0.61 threshold: 2019-01-01: 37_500 - amount: 2019-01-01: 0.57 - 2024-01-01: 0.59 threshold: 2019-01-01: 40_000 + # NOTE: The $42,500 bracket exists in the 2019 ON479-A but not in 2024. + # In 2024, the table jumps from $40,000 to $45,000 in $5,000 steps. + # The 2024 threshold override merges this bracket into the $45,000 bracket. - amount: 2019-01-01: 0.55 - 2024-01-01: 0.57 threshold: 2019-01-01: 42_500 + 2024-01-01: 45_000 - amount: 2019-01-01: 0.53 @@ -246,6 +240,9 @@ brackets: 2019-01-01: 120_000 2024-01-01: 139_200 + # TODO: The 2019 ON479-A may have additional brackets between $120,000 and + # $146,400 (e.g., $122,500, $125,000, ... in $2,500 steps). The 2019 form + # is needed to verify whether the step size changes above $120,000. - amount: 2019-01-01: 0.01 2024-01-01: 0.03 @@ -274,5 +271,7 @@ metadata: 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 (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/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 index eb15170f7..a7e2ebc26 100644 --- 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 @@ -8,25 +8,25 @@ # adjusted_income = 10,000 + 8,000 = 18,000 -> rate 0.75 (2024 bracket 0-20,000) on_child_care_tax_credit: 6_000 # 0.75 * 8,000 -- name: Income in 75% bracket (adjusted $22,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.75 (2024 bracket 20,000-22,500) - on_child_care_tax_credit: 6_000 # 0.75 * 8,000 + # adjusted_income = 14,000 + 8,000 = 22,000 -> rate 0.73 (bracket 20,000-22,500) + on_child_care_tax_credit: 5_840 # 0.73 * 8,000 -- name: Income in 73% bracket (adjusted $23,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.73 (2024 bracket 22,500-25,000) - on_child_care_tax_credit: 5_840 # 0.73 * 8,000 + # adjusted_income = 15,000 + 8,000 = 23,000 -> rate 0.71 (bracket 22,500-25,000) + on_child_care_tax_credit: 5_680 # 0.71 * 8,000 - name: Income in 53% bracket (adjusted $50,000) period: 2024 From 8bd03f3f010e41b5b4bf546ecd10b89b4a28258e Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Wed, 4 Mar 2026 17:18:20 +0100 Subject: [PATCH 08/10] Fix Ontario rate table, BC ACCB regulation citation, and federal deduction guard - Ontario rate.yaml: Rewrite brackets to match ON479-A PDFs (2019 and 2024 are identical). Remove all unnecessary 2024 overrides, fix 27 wrong 2019 thresholds, remove spurious $42,500 bracket - BC ACCB: Fix B.C. Reg. 74/2018 (Gypsy Moth pest control) to correct B.C. Reg. 74/97 (Child Care Subsidy Regulation) in all 12 files - Federal: Add max_(0, ...) guard to prevent negative deduction when self-employment losses exceed employment income Co-Authored-By: Claude Opus 4.6 --- .../bc/benefits/child_care/age/max_age.yaml | 4 +- .../bc/benefits/child_care/age/preschool.yaml | 4 +- .../benefits/child_care/age/school_age.yaml | 4 +- .../bc/benefits/child_care/age/toddler.yaml | 4 +- .../benefits/child_care/base_family_size.yaml | 4 +- .../child_care/family_size_adjustment.yaml | 4 +- .../bc/benefits/child_care/income_limit.yaml | 4 +- .../max_amount/age_19_to_36_months.yaml | 4 +- .../child_care/max_amount/preschool_age.yaml | 4 +- .../child_care/max_amount/school_age.yaml | 4 +- .../max_amount/under_19_months.yaml | 4 +- .../max_benefit_income_threshold.yaml | 4 +- .../tax/income/credits/child_care/rate.yaml | 122 ++++-------------- .../child_care_expense_deduction.py | 4 +- 14 files changed, 54 insertions(+), 120 deletions(-) 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 index e75653700..7d3fbfcec 100644 --- 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 @@ -9,5 +9,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 + - title: Child Care Subsidy Regulation, B.C. Reg. 74/97 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 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 index d71152cdc..a41d89bdd 100644 --- 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 @@ -9,5 +9,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 + - title: Child Care Subsidy Regulation, B.C. Reg. 74/97 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 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 index be31f63d5..94e8d3184 100644 --- 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 @@ -9,5 +9,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 + - title: Child Care Subsidy Regulation, B.C. Reg. 74/97 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 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 index 942bc4ba8..7e5342131 100644 --- 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 @@ -9,5 +9,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 + - title: Child Care Subsidy Regulation, B.C. Reg. 74/97 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 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 index 64e76f8aa..7b8f084d2 100644 --- 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 @@ -10,5 +10,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 + - title: Child Care Subsidy Regulation, B.C. Reg. 74/97 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 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 index 372427714..0d0175a45 100644 --- 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 @@ -8,5 +8,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 + - title: Child Care Subsidy Regulation, B.C. Reg. 74/97 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 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 index 7910f0ba3..73d4292c0 100644 --- 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 @@ -8,5 +8,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 + - title: Child Care Subsidy Regulation, B.C. Reg. 74/97 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 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 index 082b2b4ae..f53b7e066 100644 --- 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 @@ -8,5 +8,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 + - title: Child Care Subsidy Regulation, B.C. Reg. 74/97 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 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 index d9896e65e..353d351c0 100644 --- 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 @@ -8,5 +8,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 + - title: Child Care Subsidy Regulation, B.C. Reg. 74/97 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 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 index a8e941b4f..2a42b4b05 100644 --- 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 @@ -8,5 +8,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 + - title: Child Care Subsidy Regulation, B.C. Reg. 74/97 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 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 index 119e7fdb8..a63fad5a1 100644 --- 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 @@ -8,5 +8,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 + - title: Child Care Subsidy Regulation, B.C. Reg. 74/97 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 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 index a13787e7c..27ad03953 100644 --- 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 @@ -8,5 +8,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/2018 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_2018 + - title: Child Care Subsidy Regulation, B.C. Reg. 74/97 + href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 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 index 5a1e92ec9..0ee4c2a4f 100644 --- 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 @@ -50,218 +50,150 @@ brackets: threshold: 2019-01-01: 40_000 - # NOTE: The $42,500 bracket exists in the 2019 ON479-A but not in 2024. - # In 2024, the table jumps from $40,000 to $45,000 in $5,000 steps. - # The 2024 threshold override merges this bracket into the $45,000 bracket. - amount: 2019-01-01: 0.55 threshold: - 2019-01-01: 42_500 - 2024-01-01: 45_000 + 2019-01-01: 45_000 - amount: 2019-01-01: 0.53 - 2024-01-01: 0.55 threshold: - 2019-01-01: 45_000 + 2019-01-01: 50_000 - amount: 2019-01-01: 0.51 - 2024-01-01: 0.53 threshold: - 2019-01-01: 47_500 - 2024-01-01: 50_000 + 2019-01-01: 55_000 - amount: 2019-01-01: 0.49 - 2024-01-01: 0.51 threshold: - 2019-01-01: 50_000 - 2024-01-01: 55_000 + 2019-01-01: 60_000 - amount: 2019-01-01: 0.47 - 2024-01-01: 0.49 threshold: - 2019-01-01: 52_500 - 2024-01-01: 60_000 + 2019-01-01: 63_600 - amount: 2019-01-01: 0.45 - 2024-01-01: 0.47 threshold: - 2019-01-01: 55_000 - 2024-01-01: 63_600 + 2019-01-01: 67_200 - amount: 2019-01-01: 0.43 - 2024-01-01: 0.45 threshold: - 2019-01-01: 57_500 - 2024-01-01: 67_200 + 2019-01-01: 70_800 - amount: 2019-01-01: 0.41 - 2024-01-01: 0.43 threshold: - 2019-01-01: 60_000 - 2024-01-01: 70_800 + 2019-01-01: 74_400 - amount: 2019-01-01: 0.39 - 2024-01-01: 0.41 threshold: - 2019-01-01: 62_500 - 2024-01-01: 74_400 + 2019-01-01: 78_000 - amount: 2019-01-01: 0.37 - 2024-01-01: 0.39 threshold: - 2019-01-01: 65_000 - 2024-01-01: 78_000 + 2019-01-01: 81_600 - amount: 2019-01-01: 0.35 - 2024-01-01: 0.37 threshold: - 2019-01-01: 67_500 - 2024-01-01: 81_600 + 2019-01-01: 85_200 - amount: 2019-01-01: 0.33 - 2024-01-01: 0.35 threshold: - 2019-01-01: 70_000 - 2024-01-01: 85_200 + 2019-01-01: 88_800 - amount: 2019-01-01: 0.31 - 2024-01-01: 0.33 threshold: - 2019-01-01: 72_500 - 2024-01-01: 88_800 + 2019-01-01: 92_400 - amount: 2019-01-01: 0.29 - 2024-01-01: 0.31 threshold: - 2019-01-01: 75_000 - 2024-01-01: 92_400 + 2019-01-01: 96_000 - amount: 2019-01-01: 0.27 - 2024-01-01: 0.29 threshold: - 2019-01-01: 77_500 - 2024-01-01: 96_000 + 2019-01-01: 99_600 - amount: 2019-01-01: 0.25 - 2024-01-01: 0.27 threshold: - 2019-01-01: 80_000 - 2024-01-01: 99_600 + 2019-01-01: 103_200 - amount: 2019-01-01: 0.23 - 2024-01-01: 0.25 threshold: - 2019-01-01: 82_500 - 2024-01-01: 103_200 + 2019-01-01: 106_800 - amount: 2019-01-01: 0.21 - 2024-01-01: 0.23 threshold: - 2019-01-01: 85_000 - 2024-01-01: 106_800 + 2019-01-01: 110_400 - amount: 2019-01-01: 0.19 - 2024-01-01: 0.21 threshold: - 2019-01-01: 87_500 - 2024-01-01: 110_400 + 2019-01-01: 114_000 - amount: 2019-01-01: 0.17 - 2024-01-01: 0.19 threshold: - 2019-01-01: 90_000 - 2024-01-01: 114_000 + 2019-01-01: 117_600 - amount: 2019-01-01: 0.15 - 2024-01-01: 0.17 threshold: - 2019-01-01: 92_500 - 2024-01-01: 117_600 + 2019-01-01: 121_200 - amount: 2019-01-01: 0.13 - 2024-01-01: 0.15 threshold: - 2019-01-01: 95_000 - 2024-01-01: 121_200 + 2019-01-01: 124_800 - amount: 2019-01-01: 0.11 - 2024-01-01: 0.13 threshold: - 2019-01-01: 100_000 - 2024-01-01: 124_800 + 2019-01-01: 128_400 - amount: 2019-01-01: 0.09 - 2024-01-01: 0.11 threshold: - 2019-01-01: 105_000 - 2024-01-01: 128_400 + 2019-01-01: 132_000 - amount: 2019-01-01: 0.07 - 2024-01-01: 0.09 threshold: - 2019-01-01: 110_000 - 2024-01-01: 132_000 + 2019-01-01: 135_600 - amount: 2019-01-01: 0.05 - 2024-01-01: 0.07 threshold: - 2019-01-01: 115_000 - 2024-01-01: 135_600 + 2019-01-01: 139_200 - amount: 2019-01-01: 0.03 - 2024-01-01: 0.05 threshold: - 2019-01-01: 120_000 - 2024-01-01: 139_200 + 2019-01-01: 142_800 - # TODO: The 2019 ON479-A may have additional brackets between $120,000 and - # $146,400 (e.g., $122,500, $125,000, ... in $2,500 steps). The 2019 form - # is needed to verify whether the step size changes above $120,000. - amount: 2019-01-01: 0.01 - 2024-01-01: 0.03 threshold: 2019-01-01: 146_400 - 2024-01-01: 142_800 - amount: 2019-01-01: 0 - 2024-01-01: 0.01 threshold: 2019-01-01: 150_000 - 2024-01-01: 146_400 - - - amount: - 2019-01-01: 0 - threshold: - 2019-01-01: .inf - 2024-01-01: 150_000 metadata: type: single_amount 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 index 8658cb963..94a58a8e8 100644 --- 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 @@ -35,4 +35,6 @@ def formula(household, period, parameters): p = parameters(period).gov.cra.deductions.child_care_expense earned_income_limit = family_earned_income * p.earned_income_fraction - return min_(total_household_expenses, earned_income_limit) + # 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)) From f9036899e0d5e52ed6dee5a2de81d8b16f9cd1d0 Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Thu, 5 Mar 2026 17:12:21 +0100 Subject: [PATCH 09/10] Fix claimant income, bracket offsets, references, and add family rates - Federal CCED: Fix earned income limit to use claimant's income (not family total) per ITA s. 63(1)(e). Extract shared claimant logic into is_child_care_expense_claimant variable. - Ontario CARE: Shift all 39 bracket thresholds by +1 to match "more than $X" semantics. Fix reference to s. 103.0.3(6). - BC ACCB: Update 12 files from repealed B.C. Reg. 74/97 to 189/2024. Add period metadata, simplify phase-out formula. - BC CCFRI: Add Family/In-Home rates (group/ and family/ subfolders), new is_family_child_care input variable. Remove redundant multiplier. - Alberta: Replace Act reference with alberta.ca source, add preschool discontinuation note and school-age verification note. - Orphaned params: Document Ontario max_amount and federal child_income_limit with metadata notes. - Tests: Add 8 new edge-case and boundary tests (816 total, all pass). Co-Authored-By: Claude Opus 4.6 --- .../child_income_limit.yaml | 1 + .../child_care/age_threshold/preschool.yaml | 3 +- .../age_threshold/school_age_max.yaml | 3 +- .../subsidy_schedule/preschool.yaml | 3 +- .../subsidy_schedule/school_age.yaml | 3 +- .../bc/benefits/child_care/age/max_age.yaml | 5 +- .../bc/benefits/child_care/age/preschool.yaml | 5 +- .../benefits/child_care/age/school_age.yaml | 5 +- .../bc/benefits/child_care/age/toddler.yaml | 5 +- .../benefits/child_care/base_family_size.yaml | 5 +- .../child_care/family_size_adjustment.yaml | 4 +- .../bc/benefits/child_care/income_limit.yaml | 4 +- .../max_amount/age_19_to_36_months.yaml | 4 +- .../child_care/max_amount/preschool_age.yaml | 4 +- .../child_care/max_amount/school_age.yaml | 4 +- .../max_amount/under_19_months.yaml | 4 +- .../max_benefit_income_threshold.yaml | 4 +- .../age/kindergarten.yaml | 1 + .../age/preschool.yaml | 1 + .../age/school_age.yaml | 1 + .../max_reduction/family/infant_toddler.yaml | 13 +++ .../max_reduction/family/kindergarten.yaml | 13 +++ .../max_reduction/family/preschool.yaml | 13 +++ .../max_reduction/family/school_age.yaml | 13 +++ .../{ => group}/infant_toddler.yaml | 1 + .../{ => group}/kindergarten.yaml | 0 .../max_reduction/{ => group}/preschool.yaml | 0 .../max_reduction/{ => group}/school_age.yaml | 0 .../child_care/max_amount/age_threshold.yaml | 1 + .../child_care/max_amount/disabled.yaml | 1 + .../credits/child_care/max_amount/over_7.yaml | 1 + .../child_care/max_amount/under_7.yaml | 1 + .../tax/income/credits/child_care/rate.yaml | 78 +++++++++--------- .../child_care_expense_deduction.yaml | 79 ++++++++++++++++++- .../bc_affordable_child_care_benefit.yaml | 48 +++++++++++ .../bc_child_care_fee_reduction.yaml | 73 +++++++++++++++++ .../child_care/on_child_care_tax_credit.yaml | 49 +++++++++--- .../child_care_expense_deduction.py | 25 ++++-- .../child_care_expense_deduction_person.py | 23 +----- .../is_child_care_expense_claimant.py | 34 ++++++++ .../bc_affordable_child_care_benefit.py | 15 ++-- .../child_care/bc_child_care_fee_reduction.py | 45 +++++++++-- .../child_care/is_family_child_care.py | 10 +++ 43 files changed, 472 insertions(+), 133 deletions(-) create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/infant_toddler.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/kindergarten.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/preschool.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/family/school_age.yaml rename policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/{ => group}/infant_toddler.yaml (75%) rename policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/{ => group}/kindergarten.yaml (100%) rename policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/{ => group}/preschool.yaml (100%) rename policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/{ => group}/school_age.yaml (100%) create mode 100644 policyengine_canada/variables/gov/cra/deductions/child_care_expense/is_child_care_expense_claimant.py create mode 100644 policyengine_canada/variables/gov/provinces/bc/benefits/child_care/is_family_child_care.py 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 index 748f16136..b517245ff 100644 --- 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 @@ -6,6 +6,7 @@ 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 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 index 87963a8a8..4c967a8da 100644 --- 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 @@ -5,8 +5,7 @@ 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 - - title: Early Learning and Child Care Act, SA 2007, c E-0.1 - href: https://www.canlii.org/en/ab/laws/stat/sa-2007-c-e-0.1/latest/sa-2007-c-e-0.1.html 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 index ff59d8ac5..f7efa81e7 100644 --- 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 @@ -5,8 +5,7 @@ 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 - - title: Early Learning and Child Care Act, SA 2007, c E-0.1 - href: https://www.canlii.org/en/ab/laws/stat/sa-2007-c-e-0.1/latest/sa-2007-c-e-0.1.html 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 index a5cdd289d..f88fbd23e 100644 --- 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 @@ -62,8 +62,7 @@ metadata: 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 - - title: Early Learning and Child Care Act, SA 2007, c E-0.1 - href: https://www.canlii.org/en/ab/laws/stat/sa-2007-c-e-0.1/latest/sa-2007-c-e-0.1.html 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 index 385920ee8..98baaf5d5 100644 --- 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 @@ -46,8 +46,7 @@ metadata: 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 - - title: Early Learning and Child Care Act, SA 2007, c E-0.1 - href: https://www.canlii.org/en/ab/laws/stat/sa-2007-c-e-0.1/latest/sa-2007-c-e-0.1.html 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 index 7d3fbfcec..bdcdda0af 100644 --- 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 @@ -5,9 +5,10 @@ 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: Child Care Subsidy Regulation, B.C. Reg. 74/97 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 + - 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 index a41d89bdd..04b622ad3 100644 --- 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 @@ -5,9 +5,10 @@ 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: Child Care Subsidy Regulation, B.C. Reg. 74/97 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 + - 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 index 94e8d3184..38a3ea374 100644 --- 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 @@ -5,9 +5,10 @@ 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: Child Care Subsidy Regulation, B.C. Reg. 74/97 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 + - 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 index 7e5342131..a27d616c1 100644 --- 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 @@ -5,9 +5,10 @@ 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: Child Care Subsidy Regulation, B.C. Reg. 74/97 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 + - 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 index 7b8f084d2..c591ed0c7 100644 --- 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 @@ -6,9 +6,10 @@ 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: Child Care Subsidy Regulation, B.C. Reg. 74/97 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 + - 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 index 0d0175a45..68f25f291 100644 --- 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 @@ -8,5 +8,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/97 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 + - 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 index 73d4292c0..8d472f27c 100644 --- 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 @@ -8,5 +8,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/97 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 + - 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 index f53b7e066..0776a3974 100644 --- 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 @@ -8,5 +8,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/97 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 + - 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 index 353d351c0..d0e6a45e5 100644 --- 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 @@ -8,5 +8,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/97 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 + - 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 index 2a42b4b05..1cf814672 100644 --- 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 @@ -8,5 +8,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/97 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 + - 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 index a63fad5a1..adb43cc7c 100644 --- 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 @@ -8,5 +8,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/97 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 + - 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 index 27ad03953..fd3d52a86 100644 --- 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 @@ -8,5 +8,5 @@ metadata: 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: Child Care Subsidy Regulation, B.C. Reg. 74/97 - href: https://www.bclaws.gov.bc.ca/civix/document/id/complete/statreg/74_97 + - 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 index 430452662..63726b9cf 100644 --- 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 @@ -5,6 +5,7 @@ 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 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 index 34a0cea8a..561c6cf6a 100644 --- 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 @@ -5,6 +5,7 @@ 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 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 index 8bfaf481f..cded8f075 100644 --- 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 @@ -5,6 +5,7 @@ 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 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/infant_toddler.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/infant_toddler.yaml similarity index 75% rename from policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/infant_toddler.yaml rename to policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/infant_toddler.yaml index 005372daa..0f3157013 100644 --- a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/infant_toddler.yaml +++ b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/infant_toddler.yaml @@ -10,6 +10,7 @@ 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/kindergarten.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/kindergarten.yaml similarity index 100% rename from policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/kindergarten.yaml rename to policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/kindergarten.yaml diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/preschool.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/preschool.yaml similarity index 100% rename from policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/preschool.yaml rename to policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/preschool.yaml diff --git a/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/school_age.yaml b/policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/school_age.yaml similarity index 100% rename from policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/school_age.yaml rename to policyengine_canada/parameters/gov/provinces/bc/benefits/child_care_fee_reduction/max_reduction/group/school_age.yaml 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 index a73c320a7..0072f7af1 100644 --- 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 @@ -5,6 +5,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 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 index f382cf553..e1e7427a9 100644 --- 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 @@ -7,6 +7,7 @@ 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 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 index 6857788bc..579b1353f 100644 --- 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 @@ -7,6 +7,7 @@ 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 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 index 03a774089..6aea0f393 100644 --- 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 @@ -7,6 +7,7 @@ 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 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 index 0ee4c2a4f..35369d98d 100644 --- 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 @@ -8,192 +8,192 @@ brackets: - amount: 2019-01-01: 0.73 threshold: - 2019-01-01: 20_000 + 2019-01-01: 20_001 - amount: 2019-01-01: 0.71 threshold: - 2019-01-01: 22_500 + 2019-01-01: 22_501 - amount: 2019-01-01: 0.69 threshold: - 2019-01-01: 25_000 + 2019-01-01: 25_001 - amount: 2019-01-01: 0.67 threshold: - 2019-01-01: 27_500 + 2019-01-01: 27_501 - amount: 2019-01-01: 0.65 threshold: - 2019-01-01: 30_000 + 2019-01-01: 30_001 - amount: 2019-01-01: 0.63 threshold: - 2019-01-01: 32_500 + 2019-01-01: 32_501 - amount: 2019-01-01: 0.61 threshold: - 2019-01-01: 35_000 + 2019-01-01: 35_001 - amount: 2019-01-01: 0.59 threshold: - 2019-01-01: 37_500 + 2019-01-01: 37_501 - amount: 2019-01-01: 0.57 threshold: - 2019-01-01: 40_000 + 2019-01-01: 40_001 - amount: 2019-01-01: 0.55 threshold: - 2019-01-01: 45_000 + 2019-01-01: 45_001 - amount: 2019-01-01: 0.53 threshold: - 2019-01-01: 50_000 + 2019-01-01: 50_001 - amount: 2019-01-01: 0.51 threshold: - 2019-01-01: 55_000 + 2019-01-01: 55_001 - amount: 2019-01-01: 0.49 threshold: - 2019-01-01: 60_000 + 2019-01-01: 60_001 - amount: 2019-01-01: 0.47 threshold: - 2019-01-01: 63_600 + 2019-01-01: 63_601 - amount: 2019-01-01: 0.45 threshold: - 2019-01-01: 67_200 + 2019-01-01: 67_201 - amount: 2019-01-01: 0.43 threshold: - 2019-01-01: 70_800 + 2019-01-01: 70_801 - amount: 2019-01-01: 0.41 threshold: - 2019-01-01: 74_400 + 2019-01-01: 74_401 - amount: 2019-01-01: 0.39 threshold: - 2019-01-01: 78_000 + 2019-01-01: 78_001 - amount: 2019-01-01: 0.37 threshold: - 2019-01-01: 81_600 + 2019-01-01: 81_601 - amount: 2019-01-01: 0.35 threshold: - 2019-01-01: 85_200 + 2019-01-01: 85_201 - amount: 2019-01-01: 0.33 threshold: - 2019-01-01: 88_800 + 2019-01-01: 88_801 - amount: 2019-01-01: 0.31 threshold: - 2019-01-01: 92_400 + 2019-01-01: 92_401 - amount: 2019-01-01: 0.29 threshold: - 2019-01-01: 96_000 + 2019-01-01: 96_001 - amount: 2019-01-01: 0.27 threshold: - 2019-01-01: 99_600 + 2019-01-01: 99_601 - amount: 2019-01-01: 0.25 threshold: - 2019-01-01: 103_200 + 2019-01-01: 103_201 - amount: 2019-01-01: 0.23 threshold: - 2019-01-01: 106_800 + 2019-01-01: 106_801 - amount: 2019-01-01: 0.21 threshold: - 2019-01-01: 110_400 + 2019-01-01: 110_401 - amount: 2019-01-01: 0.19 threshold: - 2019-01-01: 114_000 + 2019-01-01: 114_001 - amount: 2019-01-01: 0.17 threshold: - 2019-01-01: 117_600 + 2019-01-01: 117_601 - amount: 2019-01-01: 0.15 threshold: - 2019-01-01: 121_200 + 2019-01-01: 121_201 - amount: 2019-01-01: 0.13 threshold: - 2019-01-01: 124_800 + 2019-01-01: 124_801 - amount: 2019-01-01: 0.11 threshold: - 2019-01-01: 128_400 + 2019-01-01: 128_401 - amount: 2019-01-01: 0.09 threshold: - 2019-01-01: 132_000 + 2019-01-01: 132_001 - amount: 2019-01-01: 0.07 threshold: - 2019-01-01: 135_600 + 2019-01-01: 135_601 - amount: 2019-01-01: 0.05 threshold: - 2019-01-01: 139_200 + 2019-01-01: 139_201 - amount: 2019-01-01: 0.03 threshold: - 2019-01-01: 142_800 + 2019-01-01: 142_801 - amount: 2019-01-01: 0.01 threshold: - 2019-01-01: 146_400 + 2019-01-01: 146_401 - amount: 2019-01-01: 0 threshold: - 2019-01-01: 150_000 + 2019-01-01: 150_001 metadata: type: single_amount @@ -201,7 +201,7 @@ metadata: amount_unit: /1 label: Ontario CARE credit rate reference: - - title: Ontario Taxation Act, 2007, s. 103.0.3(7) + - 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 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 index 92bd1650f..647b726df 100644 --- 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 @@ -134,12 +134,38 @@ members: [adult1, adult2, child] output: # Per-child cap: min($10,000 expenses, $8,000 under-7 limit) = $8,000 - # 2/3 family earned income: ($80,000 + $30,000) * 0.6667 = $73,337 (not binding) + # 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) @@ -250,3 +276,54 @@ # 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/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 index 0f6b7bca9..b51aa1c03 100644 --- 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 @@ -171,3 +171,51 @@ # 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 index 9c2e0ad66..311bb2753 100644 --- 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 @@ -152,3 +152,76 @@ 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 index a7e2ebc26..d573846fd 100644 --- 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 @@ -5,7 +5,7 @@ child_care_expense_deduction: 8_000 province_code: ONT output: - # adjusted_income = 10,000 + 8,000 = 18,000 -> rate 0.75 (2024 bracket 0-20,000) + # 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) @@ -15,7 +15,7 @@ child_care_expense_deduction: 8_000 province_code: ONT output: - # adjusted_income = 14,000 + 8,000 = 22,000 -> rate 0.73 (bracket 20,000-22,500) + # 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) @@ -25,29 +25,52 @@ child_care_expense_deduction: 8_000 province_code: ONT output: - # adjusted_income = 15,000 + 8,000 = 23,000 -> rate 0.71 (bracket 22,500-25,000) + # 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: Income in 53% bracket (adjusted $50,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.53 (2024 bracket 50,000-55,000) - on_child_care_tax_credit: 2_650 # 0.53 * 5,000 + # 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: Income just at limit boundary +- 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.00 (bracket >= 150,000) - # eligible because adjusted_income <= 150,000, but rate is 0 - on_child_care_tax_credit: 0 # 0.00 * 8,000 + # 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 @@ -66,7 +89,7 @@ child_care_expense_deduction: 8_000 province_code: ONT output: - # adjusted_income = 140,000 + 8,000 = 148,000 -> rate 0.01 (bracket 146,400-150,000) + # 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 @@ -85,7 +108,7 @@ child_care_expense_deduction: 5_000 province_code: ONT output: - # adjusted_income = 60,000 + 5,000 = 65,000 -> rate 0.47 (2024 bracket 63,600-67,200) + # 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 @@ -96,7 +119,7 @@ province_code: ONT output: # adjusted_income = 141,999 + 8,000 = 149,999 -> eligible (<= 150,000) - # rate = 0.01 (bracket 146,400-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 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 index 94a58a8e8..e667a4ddb 100644 --- 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 @@ -25,15 +25,24 @@ def formula(household, period, parameters): total_household_expenses = household.sum(capped_expenses) # Step 2: Apply 2/3 earned income limit per ITA s. 63(1)(e) - # "Earned income" per ITA s. 63(3) includes employment income - # and net self-employment income (plus scholarships, CPP/QPP - # disability, and training allowances not yet modelled). - family_earned_income = household.sum( - person("employment_income", period) - + person("self_employment_income", period) - ) + # "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 - earned_income_limit = family_earned_income * p.earned_income_fraction + + 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). 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 index 55cd1d27c..64033d020 100644 --- 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 @@ -16,26 +16,5 @@ class child_care_expense_deduction_person(Variable): def formula(person, period, parameters): household = person.household household_deduction = household("child_care_expense_deduction", period) - - # Per ITA s. 63(2), the lower net income supporting person claims. - # We use total_individual_pre_tax_income as a proxy for net income - # to avoid a circular dependency (individual_net_income depends on - # this deduction via deductions_from_total_to_net_income). - 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) - ) - is_claimant = is_lowest_earner & (person_idx == min_idx_among_lowest) - + 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/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 index 7629f5d29..5d0b8131f 100644 --- 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 @@ -29,7 +29,6 @@ def formula(household, period, parameters): person = household.members age = person("age", period) - is_child = person("is_child", period) # Age boundaries per ACCB rate schedule toddler_age = p.age.toddler @@ -55,20 +54,16 @@ def formula(household, period, parameters): # 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 - - (adjusted_income - max_benefit_threshold) - / (p.income_limit - max_benefit_threshold), - ), + max_(0, 1 - phase_out_fraction), ) - annual_benefit_per_child = ( - monthly_benefit * 12 * benefit_rate * is_child - ) + 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 index 29dc26e3c..6a450e0d3 100644 --- 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 @@ -20,6 +20,7 @@ def formula(household, period, parameters): person = household.members age = person("age", period) + is_family = person("is_family_child_care", period) is_eligible = age <= p.max_age @@ -30,19 +31,47 @@ def formula(household, period, parameters): is_infant_toddler = age < preschool_age is_preschool = (age >= preschool_age) & (age < kindergarten_age) - is_kindergarten = (age >= kindergarten_age) & (age < school_age_start) + is_kindergarten = ( + (age >= kindergarten_age) & (age < school_age_start) + ) is_school_age = (age >= school_age_start) & is_eligible - monthly_reduction = select( - [is_infant_toddler, is_preschool, is_kindergarten, is_school_age], + # Group care rates (default) + group_reduction = select( + [ + is_infant_toddler, + is_preschool, + is_kindergarten, + is_school_age, + ], [ - p.max_reduction.infant_toddler, - p.max_reduction.preschool, - p.max_reduction.kindergarten, - p.max_reduction.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, ) - annual_reduction_per_child = monthly_reduction * 12 * is_eligible + # 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" From e1f7465f594fd941c6de4dc591d9e79e38417965 Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Thu, 5 Mar 2026 17:18:21 +0100 Subject: [PATCH 10/10] Format bc_child_care_fee_reduction.py Co-Authored-By: Claude Opus 4.6 --- .../bc/benefits/child_care/bc_child_care_fee_reduction.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) 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 index 6a450e0d3..715608d26 100644 --- 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 @@ -31,9 +31,7 @@ def formula(household, period, parameters): is_infant_toddler = age < preschool_age is_preschool = (age >= preschool_age) & (age < kindergarten_age) - is_kindergarten = ( - (age >= kindergarten_age) & (age < school_age_start) - ) + is_kindergarten = (age >= kindergarten_age) & (age < school_age_start) is_school_age = (age >= school_age_start) & is_eligible # Group care rates (default) @@ -70,8 +68,6 @@ def formula(household, period, parameters): default=0, ) - monthly_reduction = where( - is_family, family_reduction, group_reduction - ) + monthly_reduction = where(is_family, family_reduction, group_reduction) annual_reduction_per_child = monthly_reduction * 12 return household.sum(annual_reduction_per_child)