diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb..718d15f07 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,5 @@ +- bump: minor + changes: + added: + - Nova Scotia basic personal amount. + diff --git a/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/basic_personal_amount/additional_amount/base.yaml b/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/basic_personal_amount/additional_amount/base.yaml new file mode 100644 index 000000000..a888bf5be --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/basic_personal_amount/additional_amount/base.yaml @@ -0,0 +1,14 @@ +description: Nova Scotia adds this additional amount to the basic personal amount. +values: + 2022-01-01: 3_000 +metadata: + unit: currency-CAD + label: Nova Scotia basic personal amount additional 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: 2022 Worksheet NS428 + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/5003-d/5003-d-22e.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=24 + diff --git a/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/basic_personal_amount/additional_amount/phase_out_rate.yaml b/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/basic_personal_amount/additional_amount/phase_out_rate.yaml new file mode 100644 index 000000000..98e815145 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/basic_personal_amount/additional_amount/phase_out_rate.yaml @@ -0,0 +1,24 @@ +description: Nova Scotia phases its additional basic personal amount out at this rate. +brackets: + - threshold: + 2022-01-01: 0 + rate: + 2022-01-01: 0 + - threshold: + 2022-01-01: 25_000 + rate: + 2022-01-01: 0.06 + +metadata: + type: marginal_rate + rate_unit: /1 + threshold_unit: currency-CAD + period: year + label: Nova Scotia basic personal amount 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: 2022 Worksheet NS428 + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/5003-d/5003-d-22e.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=24 diff --git a/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/basic_personal_amount/base.yaml b/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/basic_personal_amount/base.yaml new file mode 100644 index 000000000..8d2a42030 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/ns/tax/income/credits/basic_personal_amount/base.yaml @@ -0,0 +1,13 @@ +description: Nova Scotia provides this base amount under the basic personal amount. +values: + 2022-01-01: 8_481 +metadata: + unit: currency-CAD + label: Nova Scotia basic personal amount 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: 2022 Worksheet NS428 + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/5003-d/5003-d-22e.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=24 diff --git a/policyengine_canada/tests/gov/provinces/ns/tax/income/credits/ns_basic_personal_amount.yaml b/policyengine_canada/tests/gov/provinces/ns/tax/income/credits/ns_basic_personal_amount.yaml new file mode 100644 index 000000000..7227033c9 --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/ns/tax/income/credits/ns_basic_personal_amount.yaml @@ -0,0 +1,31 @@ +- name: Person has taxable income lower than 25_000 + period: 2023 + input: + province_code: NS + total_individual_pre_tax_income: 24_999 + output: + ns_basic_personal_amount: 11_481 + +- name: Person has taxable income between 25_000 and 75_000 + period: 2023 + input: + province_code: NS + total_individual_pre_tax_income: 27_000 + output: + ns_basic_personal_amount: 11_361 + +- name: Person has taxable income between 25_000 and 75_000 + period: 2023 + input: + province_code: NS + total_individual_pre_tax_income: 70_000 + output: + ns_basic_personal_amount: 8_781 + +- name: Person has taxable income higher than 75_000 + period: 2023 + input: + province_code: NS + total_individual_pre_tax_income: 75_001 + output: + ns_basic_personal_amount: 8_481 diff --git a/policyengine_canada/variables/gov/provinces/ns/tax/income/credits/ns_basic_personal_amount.py b/policyengine_canada/variables/gov/provinces/ns/tax/income/credits/ns_basic_personal_amount.py new file mode 100644 index 000000000..1e96c59a7 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/ns/tax/income/credits/ns_basic_personal_amount.py @@ -0,0 +1,31 @@ +from policyengine_canada.model_api import * + + +class ns_basic_personal_amount(Variable): + value_type = float + entity = Person + label = "Nova Scotia Basic Personal Amount" + unit = CAD + 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/5003-d/5003-d-22e.pdf#page=1", + "https://nslegislature.ca/sites/default/files/legc/statutes/income%20tax.pdf#page=24", + ) + + def formula(person, period, parameters): + p = parameters( + period + ).gov.provinces.ns.tax.income.credits.basic_personal_amount + taxable_income = person("total_individual_pre_tax_income", period) + + # Calculate additional amount added to base amount + + reduced_additional_amount = max_( + 0, + p.additional_amount.base + - p.additional_amount.phase_out_rate.calc(taxable_income), + ) + + return p.base + reduced_additional_amount