diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb..46a9ff36a 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Nova Scotia age amount supplement. diff --git a/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/age/supplement/base.yaml b/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/age/supplement/base.yaml new file mode 100644 index 000000000..c33c31e5a --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/age/supplement/base.yaml @@ -0,0 +1,14 @@ +description: Nova Scotia provides this supplement amount credit base amount. +values: + 2022-01-01: 1_465 +metadata: + unit: currency-CAD + period: year + label: Nova Scotia age amount supplement base + reference: + - title: 2022 Nova Scotia Personal Tax Credits Return + href: https://hr.acadiau.ca/files/sites/hr/Payroll/Pensions%20&%20Benefits/NS_TD1_2022.pdf#page=1 + - title: Worksheet for the 2023 Nova Scotia TD1NS-WS Personal Tax Credits Return -- Age Amount Supplement + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ns-ws/td1ns-ws-23e.pdf#page=1 + - title: Nova Scotia income tax act - subdivision c - Deduction for employment out of Canada - 10G + href: https://nslegislature.ca/sites/default/files/legc/statutes/income%20tax.pdf#page=28 diff --git a/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/age/supplement/reduction.yaml b/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/age/supplement/reduction.yaml new file mode 100644 index 000000000..7bbaed423 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/age/supplement/reduction.yaml @@ -0,0 +1,25 @@ +description: Nova Scotia phases its age amount supplement out at this rate, based on taxable income. +brackets: + - threshold: + 2022-01-01: 0 + rate: + 2022-01-01: 0 + - threshold: + 2022-01-01: 25_000 + rate: + 2022-01-01: 0.0293 + +metadata: + type: marginal_rate + rate_unit: /1 + threshold_unit: currency-CAD + period: year + label: Nova Scotia age amount supplement phase out rate + reference: + - title: 2022 Nova Scotia Personal Tax Credits Return + href: https://hr.acadiau.ca/files/sites/hr/Payroll/Pensions%20&%20Benefits/NS_TD1_2022.pdf#page=1 + - title: Worksheet for the 2023 Nova Scotia TD1NS-WS Personal Tax Credits Return -- Age Amount Supplement + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ns-ws/td1ns-ws-23e.pdf#page=1 + - title: Nova Scotia income tax act - subdivision c - Deduction for employment out of Canada + href: https://nslegislature.ca/sites/default/files/legc/statutes/income%20tax.pdf#page=28 + diff --git a/policyengine_canada/tests/gov/provinces/ns/tax/income/credits/age/ns_age_amount_supplement.yaml b/policyengine_canada/tests/gov/provinces/ns/tax/income/credits/age/ns_age_amount_supplement.yaml new file mode 100644 index 000000000..3e2525887 --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/ns/tax/income/credits/age/ns_age_amount_supplement.yaml @@ -0,0 +1,39 @@ +- name: Nova Scotia Age amonut supplement; eligible age with eligible taxable income below 25_000 + period: 2023 + input: + ns_taxable_income: 24_999 + ns_age_amount_eligible: true + output: + ns_age_amount_supplement: 1_465 + +- name: Nova Scotia Age amonut supplement; eligible age with eligible taxable income between 25_000 and 75_000 + period: 2023 + input: + ns_taxable_income: 65_000 + ns_age_amount_eligible: true + output: + ns_age_amount_supplement: 293 + +- name: Nova Scotia Age tax credit; eligible age with ineligible taxable income more than 75_000 + period: 2023 + input: + ns_taxable_income: 75_001 + ns_age_amount_eligible: true + output: + ns_age_amount_supplement: 0 + +- name: Nova Scotia Age tax credit; ineligible age with eligible taxable income + period: 2023 + input: + ns_taxable_income: 24_999 + ns_age_amount_eligible: false + output: + ns_age_amount_supplement: 0 + +- name: Nova Scotia Age tax credit; ineligible age with ineligible taxable income + period: 2023 + input: + ns_taxable_income: 75_001 + ns_age_amount_eligible: false + output: + ns_age_amount_supplement: 0 diff --git a/policyengine_canada/tests/gov/provinces/ns/tax/income/credits/age/ns_age_amount_supplement_eligible.yaml b/policyengine_canada/tests/gov/provinces/ns/tax/income/credits/age/ns_age_amount_supplement_eligible.yaml new file mode 100644 index 000000000..6cb218658 --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/ns/tax/income/credits/age/ns_age_amount_supplement_eligible.yaml @@ -0,0 +1,40 @@ +- name: Nova Scotia Age amount supplement; 65 is eligible age + period: 2023 + input: + province_code: NS + age: 65 + output: + ns_age_amount_eligible: true + + +- name: Nova Scotia Age amonut supplement; lower than 65 is not an eligible age + period: 2023 + input: + province_code: NS + age: 64 + output: + ns_age_amount_eligible: false + +- name: Nova Scotia Age amonut supplement; lower than 65 is not an eligible age + period: 2023 + input: + province_code: NS + age: 50 + output: + ns_age_amount_eligible: false + +- name: Nova Scotia Age amonut supplement; higher than 65 is eligible age + period: 2023 + input: + province_code: NS + age: 67 + output: + ns_age_amount_eligible: true + +- name: Nova Scotia Age amonut supplement; higher than 65 is eligible age + period: 2023 + input: + province_code: NS + age: 70 + output: + ns_age_amount_eligible: true diff --git a/policyengine_canada/variables/gov/provinces/ns/tax/income/credits/age/ns_age_amount_supplement.py b/policyengine_canada/variables/gov/provinces/ns/tax/income/credits/age/ns_age_amount_supplement.py new file mode 100644 index 000000000..a68b21c6a --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/ns/tax/income/credits/age/ns_age_amount_supplement.py @@ -0,0 +1,26 @@ +from policyengine_canada.model_api import * + + +class ns_age_amount_supplement(Variable): + value_type = float + entity = Person + label = "Nova Scotia age amount supplement" + unit = CAD + definition_period = YEAR + defined_for = "ns_age_amount_eligible" + reference = ( + "https://hr.acadiau.ca/files/sites/hr/Payroll/Pensions%20&%20Benefits/NS_TD1_2022.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ns-ws/td1ns-ws-23e.pdf#page=1", + "https://nslegislature.ca/sites/default/files/legc/statutes/income%20tax.pdf#page=28", + ) + + def formula(person, period, parameters): + p = parameters( + period + ).gov.provinces.ns.tax.income.credits.age.supplement + taxable_income = person("ns_taxable_income", period) + + # Calculate additional amount added to base amount + reduction = p.reduction.calc(taxable_income) + + return max_(p.base - reduction, 0) diff --git a/policyengine_canada/variables/gov/provinces/ns/tax/income/credits/age/ns_age_amount_supplement_eligible.py b/policyengine_canada/variables/gov/provinces/ns/tax/income/credits/age/ns_age_amount_supplement_eligible.py new file mode 100644 index 000000000..05b4e4330 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/ns/tax/income/credits/age/ns_age_amount_supplement_eligible.py @@ -0,0 +1,21 @@ +from policyengine_canada.model_api import * + + +class ns_age_amount_eligible(Variable): + value_type = bool + entity = Person + label = "Eligible for the Nova Scotia age amount and age amount supplement" + definition_period = YEAR + defined_for = ProvinceCode.NS + reference = ( + "https://hr.acadiau.ca/files/sites/hr/Payroll/Pensions%20&%20Benefits/NS_TD1_2022.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ns-ws/td1ns-ws-23e.pdf#page=1", + "https://nslegislature.ca/sites/default/files/legc/statutes/income%20tax.pdf#page=28", + ) + + def formula(person, period, parameters): + p = parameters(period).gov.provinces.ns.tax.income.credits.age + age = person("age", period) + + # is eligible for age amount supplement + return age >= p.age_eligibility diff --git a/policyengine_canada/variables/gov/provinces/ns/tax/income/credits/age/ns_age_tax_credit.py b/policyengine_canada/variables/gov/provinces/ns/tax/income/credits/age/ns_age_tax_credit.py index c189bc687..ff7c0dcf2 100644 --- a/policyengine_canada/variables/gov/provinces/ns/tax/income/credits/age/ns_age_tax_credit.py +++ b/policyengine_canada/variables/gov/provinces/ns/tax/income/credits/age/ns_age_tax_credit.py @@ -6,14 +6,17 @@ class ns_age_tax_credit(Variable): entity = Person label = "Nova Scotia Age tax credit" definition_period = YEAR - defined_for = ProvinceCode.NS + defined_for = "ns_age_amount_eligible" + reference = ( + "https://hr.acadiau.ca/files/sites/hr/Payroll/Pensions%20&%20Benefits/NS_TD1_2022.pdf#page=1", + "https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/td1ns-ws/td1ns-ws-23e.pdf#page=1", + "https://nslegislature.ca/sites/default/files/legc/statutes/income%20tax.pdf#page=28", + ) def formula(person, period, parameters): age = person("age", period) income = person("ns_taxable_income", period) p = parameters(period).gov.provinces.ns.tax.income.credits.age - eligibility = (age >= p.age_eligibility) & ( - income < p.income_eligibility - ) + eligibility = income < p.income_eligibility return eligibility * p.amount