diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb..0fef2db54 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,5 @@ +- bump: minor + changes: + added: + - Saskatchewan caregiver amount. + diff --git a/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/age_threshold/elderly.yaml b/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/age_threshold/elderly.yaml new file mode 100644 index 000000000..d0c177a17 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/age_threshold/elderly.yaml @@ -0,0 +1,17 @@ +description: Saskatchewan qualifies elderly dependants under the Caregiver Tax Credit at this age or older. +values: + 2022-01-01: 65 +metadata: + unit: year + label: Saskatchewan Caregiver Tax Credit elderly dependant age eligibility + reference: + - title: 2023 Sasktachewan Personal Tax Credits Return Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-23e.pdf#page=1 + - title: 2023 Sasktachewan Personal Tax Credits Return Calculation Form Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-23e.pdf#page=1 + - title: 2022 Sasktachewan Personal Tax Credits Return Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-22e.pdf#page=1 + - title: 2022 Sasktachewan Sasktachewan Personal Tax Credits Return Calculation Form Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-lp-22e.pdf#page=5 + - title: Sasktachewan The Income Tax Act, 2000 + href: https://pubsaskdev.blob.core.windows.net/pubsask-prod/806/I2-01.pdf#page=13 #page=14,16,17 diff --git a/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/age_threshold/infirm.yaml b/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/age_threshold/infirm.yaml new file mode 100644 index 000000000..dca75cfbd --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/age_threshold/infirm.yaml @@ -0,0 +1,17 @@ +description: Saskatchewan qualifies infirm dependants under the Caregiver Tax Credit at this age or older. +values: + 2022-01-01: 18 +metadata: + unit: year + label: Saskatchewan Caregiver Tax Credit infirm dependant age eligibility + reference: + - title: 2023 Sasktachewan Personal Tax Credits Return Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-23e.pdf#page=1 + - title: 2023 Sasktachewan Personal Tax Credits Return Calculation Form Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-23e.pdf#page=1 + - title: 2022 Sasktachewan Personal Tax Credits Return Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-22e.pdf#page=1 + - title: 2022 Sasktachewan Sasktachewan Personal Tax Credits Return Calculation Form Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-lp-22e.pdf#page=5 + - title: Sasktachewan The Income Tax Act, 2000 + href: https://pubsaskdev.blob.core.windows.net/pubsask-prod/806/I2-01.pdf#page=13 #page=14,16,17 diff --git a/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/amount.yaml b/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/amount.yaml new file mode 100644 index 000000000..baff7130c --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/amount.yaml @@ -0,0 +1,18 @@ +description: Saskatchewan allows for this maximum caregiver amount. +values: + 2022-01-01: 9_789 + 2023-01-01: 10_405 +metadata: + unit: currency-CAD + label: Saskatchewan Caregiver Tax Credit maximum amount + reference: + - title: 2023 Sasktachewan Personal Tax Credits Return Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-23e.pdf#page=1 + - title: 2023 Sasktachewan Personal Tax Credits Return Calculation Form Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-23e.pdf#page=1 + - title: 2022 Sasktachewan Personal Tax Credits Return Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-22e.pdf#page=1 + - title: 2022 Sasktachewan Sasktachewan Personal Tax Credits Return Calculation Form Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-lp-22e.pdf#page=5 + - title: Sasktachewan The Income Tax Act, 2000 + href: https://pubsaskdev.blob.core.windows.net/pubsask-prod/806/I2-01.pdf#page=13 #page=14,16,17 diff --git a/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/income_threshold/higher.yaml b/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/income_threshold/higher.yaml new file mode 100644 index 000000000..61c3301bc --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/income_threshold/higher.yaml @@ -0,0 +1,19 @@ +description: Saskatchewan reduces the maximum Caregiver Tax Credit amount by the difference of this threshold and the dependants income. + +values: + 2022-01-01: 26_506 + 2023-01-01: 28_175 +metadata: + unit: currency-CAD + label: Saskatchewan Caregiver Tax Credit Higher Income Threshold for the Dependant + reference: + - title: 2023 Sasktachewan Personal Tax Credits Return Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-23e.pdf#page=1 + - title: 2023 Sasktachewan Personal Tax Credits Return Calculation Form Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-23e.pdf#page=1 + - title: 2022 Sasktachewan Personal Tax Credits Return Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-22e.pdf#page=1 + - title: 2022 Sasktachewan Sasktachewan Personal Tax Credits Return Calculation Form Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-lp-22e.pdf#page=5 + - title: Sasktachewan The Income Tax Act, 2000 + href: https://pubsaskdev.blob.core.windows.net/pubsask-prod/806/I2-01.pdf#page=13 #page=14,16,17 diff --git a/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/income_threshold/lower.yaml b/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/income_threshold/lower.yaml new file mode 100644 index 000000000..d6592fc95 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/income_threshold/lower.yaml @@ -0,0 +1,20 @@ +description: Saskatchewan reduces the maximum Caregiver Tax Credit Amount for dependants with net income is above this threshold. + +values: + 2022-01-01: 16_717 + 2023-01-01: 17_770 +metadata: + unit: currency-CAD + label: Saskatchewan Caregiver Tax Credit Lower Income Threshold for the dependant + reference: + - title: 2023 Sasktachewan Personal Tax Credits Return Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-23e.pdf#page=1 + - title: 2023 Sasktachewan Personal Tax Credits Return Calculation Form Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-23e.pdf#page=1 + - title: 2022 Sasktachewan Personal Tax Credits Return Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-22e.pdf#page=1 + - title: 2022 Sasktachewan Sasktachewan Personal Tax Credits Return Calculation Form Line9 Caregiver Amount + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-lp-22e.pdf#page=5 + - title: Sasktachewan The Income Tax Act, 2000 + href: https://pubsaskdev.blob.core.windows.net/pubsask-prod/806/I2-01.pdf#page=13 #page=14,16,17 + diff --git a/policyengine_canada/tests/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/sk_caregiver_amount.yaml b/policyengine_canada/tests/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/sk_caregiver_amount.yaml new file mode 100644 index 000000000..64750a752 --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/sk_caregiver_amount.yaml @@ -0,0 +1,99 @@ +- name: 2023 Do not have eligible dependants + period: 2023 + input: + province_code: SK + sk_caregiver_amount_eligibile_person: false + dependant_income: 10_000 + output: + sk_caregiver_amount: 0 + +- name: 2023 Have eligible dependants with income at lower income threshold + period: 2023 + input: + province_code: SK + sk_caregiver_amount_eligibile_person: true + dependant_income: 17_770 + output: + sk_caregiver_amount: 10_405 + +- name: 2023 Have eligible dependants with income below lower income threshold + period: 2023 + input: + province_code: SK + sk_caregiver_amount_eligibile_person: true + dependant_income: 17_669 + output: + sk_caregiver_amount: 10_405 + +- name: 2023 Have eligible dependants with income between the lower income threshold and the higher income threshold + period: 2023 + input: + province_code: SK + sk_caregiver_amount_eligibile_person: true + dependant_income: 20_000 + output: + sk_caregiver_amount: 8_175 + +- name: 2023 Have eligible dependants with income at higher income threshold + period: 2023 + input: + province_code: SK + sk_caregiver_amount_eligibile_person: true + dependant_income: 28_175 + output: + sk_caregiver_amount: 0 + +- name: 2023 Have eligible dependants with income above higher income threshold + period: 2023 + input: + province_code: SK + sk_caregiver_amount_eligibile_person: false + dependant_income: 28_220 + output: + sk_caregiver_amount: 0 + +- name: 2022 Have eligible dependants with income at lower income threshold + period: 2022 + input: + province_code: SK + sk_caregiver_amount_eligibile_person: true + dependant_income: 16_717 + output: + sk_caregiver_amount: 9789 + +- name: 2022 Have eligible dependants with income below lower income threshold + period: 2022 + input: + province_code: SK + sk_caregiver_amount_eligibile_person: true + dependant_income: 15_669 + output: + sk_caregiver_amount: 9789 + +- name: 2022 Have eligible dependants with income between the lower income threshold and the higher income threshold + period: 2022 + input: + province_code: SK + sk_caregiver_amount_eligibile_person: true + dependant_income: 20_000 + output: + sk_caregiver_amount: 6_506 + +- name: 2022 Have eligible dependants with income at higher income threshold + period: 2022 + input: + province_code: SK + sk_caregiver_amount_eligibile_person: true + dependant_income: 26_506 + output: + sk_caregiver_amount: 0 + +- name: 2022 Have eligible dependants with income above higher income threshold + period: 2022 + input: + province_code: SK + sk_caregiver_amount_eligibile_person: false + dependant_income: 28_220 + output: + sk_caregiver_amount: 0 + diff --git a/policyengine_canada/tests/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/sk_caregiver_amount_eligibile_person.yaml b/policyengine_canada/tests/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/sk_caregiver_amount_eligibile_person.yaml new file mode 100644 index 000000000..073c29416 --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/sk_caregiver_amount_eligibile_person.yaml @@ -0,0 +1,71 @@ +- name: Have eligible infirm dependants + period: 2023 + input: + province_code: SK + age: 19 + dependant_lives_with_filer: true + is_disabled: true + parent_or_grandparent: false + dependant_income: 15_000 + output: + sk_caregiver_amount_eligibile_person: true + +- name: Do not have eligible elderly dependants + period: 2022 + input: + province_code: SK + age: 64 + dependant_lives_with_filer: true + is_disabled: false + parent_or_grandparent: true + dependant_income: 15_000 + output: + sk_caregiver_amount_eligibile_person: false + +- name: Do not have eligible dependants because of dependant's high net income + period: 2022 + input: + province_code: SK + age: 66 + dependant_lives_with_filer: true + is_disabled: false + parent_or_grandparent: true + dependant_income: 26_507 + output: + sk_caregiver_amount_eligibile_person: false + +- name: Do not have eligible dependants because of dependant's high net income + period: 2024 + input: + province_code: SK + age: 66 + dependant_lives_with_filer: true + is_disabled: false + parent_or_grandparent: true + dependant_income: 28_176 + output: + sk_caregiver_amount_eligibile_person: false + +- name: Have eligible elderly dependants + period: 2024 + input: + province_code: SK + age: 66 + dependant_lives_with_filer: true + is_disabled: false + parent_or_grandparent: true + dependant_income: 28_174 + output: + sk_caregiver_amount_eligibile_person: true + +- name: Do not Have eligible infirm dependants + period: 2022 + input: + province_code: SK + age: 15 + dependant_lives_with_filer: true + is_disabled: true + parent_or_grandparent: false + dependant_income: 16_716 + output: + sk_caregiver_amount_eligibile_person: false diff --git a/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/dependant_income.py b/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/dependant_income.py new file mode 100644 index 000000000..a92aa2086 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/dependant_income.py @@ -0,0 +1,22 @@ +from policyengine_canada.model_api import * + + +class dependant_income(Variable): + value_type = float + entity = Person + label = "Dependant Income" + unit = CAD + definition_period = YEAR + reference = ( + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-23e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-23e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-22e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-lp-22e.pdf#page=5", + "https://pubsaskdev.blob.core.windows.net/pubsask-prod/806/I2-01.pdf#page=13", # page=14,16,17 + ) + defined_for = ProvinceCode.SK + + def formula(person, period, parameters): + dependant = person("is_dependant", period) + income = person("individual_net_income", period) + return dependant * income diff --git a/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/dependant_lives_with_filer.py b/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/dependant_lives_with_filer.py new file mode 100644 index 000000000..c4c6d1877 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/dependant_lives_with_filer.py @@ -0,0 +1,16 @@ +from policyengine_canada.model_api import * + + +class dependant_lives_with_filer(Variable): + value_type = bool + entity = Person + label = "Whether a dependant lives with the filer" + definition_period = YEAR + reference = ( + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-23e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-23e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-22e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-lp-22e.pdf#page=5", + "https://pubsaskdev.blob.core.windows.net/pubsask-prod/806/I2-01.pdf#page=13", # page=14,16,17 + ) + defined_for = ProvinceCode.SK diff --git a/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/parent_or_grandparent.py b/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/parent_or_grandparent.py new file mode 100644 index 000000000..6c09f5d27 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/parent_or_grandparent.py @@ -0,0 +1,16 @@ +from policyengine_canada.model_api import * + + +class parent_or_grandparent(Variable): + value_type = bool + entity = Person + label = " Is the filers' parent or grandparent" + definition_period = YEAR + reference = ( + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-23e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-23e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-22e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-lp-22e.pdf#page=5", + "https://pubsaskdev.blob.core.windows.net/pubsask-prod/806/I2-01.pdf#page=13", # page=14,16,17 + ) + defined_for = ProvinceCode.SK diff --git a/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/sk_caregiver_amount.py b/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/sk_caregiver_amount.py new file mode 100644 index 000000000..0a43a65c2 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/sk_caregiver_amount.py @@ -0,0 +1,30 @@ +from policyengine_canada.model_api import * + + +class sk_caregiver_amount(Variable): + value_type = float + entity = Person + label = "Saskatchewan Caregiver Amount" + unit = CAD + definition_period = YEAR + reference = ( + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-23e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-23e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-22e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-lp-22e.pdf#page=5", + "https://pubsaskdev.blob.core.windows.net/pubsask-prod/806/I2-01.pdf#page=13", # page=14,16,17 + ) + defined_for = ProvinceCode.SK + + def formula(person, period, parameters): + p = parameters( + period + ).gov.provinces.sk.tax.income.credits.sk_caregiver_amount + eligible_person = person( + "sk_caregiver_amount_eligibile_person", period + ) + dependant_income = person("dependant_income", period) + + return eligible_person * min( + p.amount, p.income_threshold.higher - dependant_income + ) diff --git a/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/sk_caregiver_amount_eligibile_person.py b/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/sk_caregiver_amount_eligibile_person.py new file mode 100644 index 000000000..f044416e7 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/sk/tax/income/credits/sk_caregiver_amount/sk_caregiver_amount_eligibile_person.py @@ -0,0 +1,40 @@ +from policyengine_canada.model_api import * + + +class sk_caregiver_amount_eligibile_person(Variable): + value_type = bool + entity = Person + label = "Eligible person for the Saskatchewan Caregiver Amount" + definition_period = YEAR + reference = ( + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-23e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-23e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk/td1sk-22e.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1sk-ws/td1sk-ws-lp-22e.pdf#page=5", + "https://pubsaskdev.blob.core.windows.net/pubsask-prod/806/I2-01.pdf#page=13", # page=14,16,17 + ) + defined_for = ProvinceCode.SK + + def formula(person, period, parameters): + p = parameters( + period + ).gov.provinces.sk.tax.income.credits.sk_caregiver_amount + + age = person("age", period) + dependant = person("dependant_lives_with_filer", period) + disabled = person("is_disabled", period) + parent_or_grandparent = person("parent_or_grandparent", period) + + is_infirm_dependant = dependant & disabled + is_elderly_dependant = dependant & parent_or_grandparent + + infirm_age_eligibility = age >= p.age_threshold.infirm + elderly_age_eligibility = age >= p.age_threshold.elderly + + infirm_eligibility = is_infirm_dependant & infirm_age_eligibility + elderly_eligibility = is_elderly_dependant & elderly_age_eligibility + + dependants_income = person("dependant_income", period) + income_eligibility = dependants_income <= p.income_threshold.higher + + return income_eligibility & (infirm_eligibility | elderly_eligibility)