From f21c749fce6e7c9f9bcd89da26a295d6dcd7f7d1 Mon Sep 17 00:00:00 2001 From: Ziyu Wang <70183694+zqw5219@users.noreply.github.com> Date: Tue, 10 Oct 2023 23:08:28 +0000 Subject: [PATCH 1/4] fixes #450 --- changelog_entry.yaml | 4 ++++ .../dividend_tax_credit/noneligible_rate.yaml | 13 +++++++++++++ .../dividend_tax_credit/taxable_rate.yaml | 13 +++++++++++++ .../nt_dividend_tax_credit.py | 18 ++++++++++++++++++ .../nt_dividend_tax_credit_eligible.py | 14 ++++++++++++++ 5 files changed, 62 insertions(+) create mode 100644 policyengine_canada/parameters/gov/provinces/nt/tax/income/credits/dividend_tax_credit/noneligible_rate.yaml create mode 100644 policyengine_canada/parameters/gov/provinces/nt/tax/income/credits/dividend_tax_credit/taxable_rate.yaml create mode 100644 policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit.py create mode 100644 policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit_eligible.py diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb..8872fd2fa 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Initial country package contents. \ No newline at end of file diff --git a/policyengine_canada/parameters/gov/provinces/nt/tax/income/credits/dividend_tax_credit/noneligible_rate.yaml b/policyengine_canada/parameters/gov/provinces/nt/tax/income/credits/dividend_tax_credit/noneligible_rate.yaml new file mode 100644 index 000000000..e6ec0c0ae --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/nt/tax/income/credits/dividend_tax_credit/noneligible_rate.yaml @@ -0,0 +1,13 @@ +description: Northwest Territories phases the dividend tax credit for non-eligible dividens at this rate. +values: + 2021-01-01: 0.06 +metadata: + unit: currency-CAD + label: Northwest Territories non-eligible dividend tax credit rate + reference: + - title: Income Tax Act - Section 2.32 Deduction for taxable dividends + href: https://www.justice.gov.nt.ca/en/files/legislation/income-tax/income-tax.a.pdf#page=40 + - title: 2022 Northwest Territories dividend tax credit (Line 61520) + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/5012-d/5012-d-22e.pdf#page=3 + - title: Dividend Tax Credit for 2011-2023 + href: https://www.fin.gov.nt.ca/sites/fin/files/resources/nwt_personal_income_tax_credits_english.pdf#page=2 diff --git a/policyengine_canada/parameters/gov/provinces/nt/tax/income/credits/dividend_tax_credit/taxable_rate.yaml b/policyengine_canada/parameters/gov/provinces/nt/tax/income/credits/dividend_tax_credit/taxable_rate.yaml new file mode 100644 index 000000000..f66165511 --- /dev/null +++ b/policyengine_canada/parameters/gov/provinces/nt/tax/income/credits/dividend_tax_credit/taxable_rate.yaml @@ -0,0 +1,13 @@ +description: Northwest Territories phases the taxable dividend amount for eligible dividens at this rate. +values: + 2021-01-01: 0.115 +metadata: + unit: currency-CAD + label: Northwest Territories taxable dividend amount rate + reference: + - title: Income Tax Act - Section 2.32 Deduction for taxable dividends + href: https://www.justice.gov.nt.ca/en/files/legislation/income-tax/income-tax.a.pdf#page=40 + - title: 2022 Northwest Territories dividend tax credit (Line 61520) + href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/5012-d/5012-d-22e.pdf#page=3 + - title: Dividend Tax Credit for 2011-2023 + href: https://www.fin.gov.nt.ca/sites/fin/files/resources/nwt_personal_income_tax_credits_english.pdf#page=2 \ No newline at end of file diff --git a/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit.py b/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit.py new file mode 100644 index 000000000..d9985dd78 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit.py @@ -0,0 +1,18 @@ +from policyengine_canada.model_api import * + + +class nt_dividend_tax_credit(Variable): + value_type = float + entity = Person + label = "Northwest Territories dividend tax credit" + unit = CAD + definition_period = YEAR + defined_for = "nt_dividend_tax_credit_eligible" + reference = "https://www.justice.gov.nt.ca/en/files/legislation/income-tax/income-tax.a.pdf#page=40" + + def formula(person, period, parameters): + p = parameters(period).gov.provinces.nt.tax.income.credits.dividend_tax_credit + income = person("nt_taxable_income", period) + non_eligible_dividends = B * p.noneligible_rate + eligible_credit = (A - B) * p.taxable_rate + return non_eligible_dividends + eligible_credit \ No newline at end of file diff --git a/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit_eligible.py b/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit_eligible.py new file mode 100644 index 000000000..3c37cb678 --- /dev/null +++ b/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit_eligible.py @@ -0,0 +1,14 @@ +from policyengine_canada.model_api import * + + +class nt_dividend_tax_credit_eligible(Variable): + value_type = bool + entity = Person + label = "Northwest Territories dividend tax credit eligibility" + definition_period = YEAR + defined_for = ProvinceCode.NT + reference = "https://www.justice.gov.nt.ca/en/files/legislation/income-tax/income-tax.a.pdf#page=40" + + def formula(person, period, parameters): + p = parameters(period).gov.provinces.nt.tax.income.credits.dividend_tax_credit + return \ No newline at end of file From 4455a6b36a8b9842f05287b6f7b71c651d72535f Mon Sep 17 00:00:00 2001 From: Ziyu Wang <70183694+zqw5219@users.noreply.github.com> Date: Tue, 10 Oct 2023 23:11:58 +0000 Subject: [PATCH 2/4] fixes #450 --- changelog_entry.yaml | 2 +- .../income/credits/dividend_tax_credit/taxable_rate.yaml | 2 +- .../ab/tax/income/credits/pension/ab_pension_credit.yaml | 2 +- .../credits/dividend_tax_credit/nt_dividend_tax_credit.py | 6 ++++-- .../dividend_tax_credit/nt_dividend_tax_credit_eligible.py | 6 ++++-- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 8872fd2fa..721249788 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +1,4 @@ - bump: minor changes: added: - - Initial country package contents. \ No newline at end of file + - Initial country package contents. diff --git a/policyengine_canada/parameters/gov/provinces/nt/tax/income/credits/dividend_tax_credit/taxable_rate.yaml b/policyengine_canada/parameters/gov/provinces/nt/tax/income/credits/dividend_tax_credit/taxable_rate.yaml index f66165511..8c0064dd3 100644 --- a/policyengine_canada/parameters/gov/provinces/nt/tax/income/credits/dividend_tax_credit/taxable_rate.yaml +++ b/policyengine_canada/parameters/gov/provinces/nt/tax/income/credits/dividend_tax_credit/taxable_rate.yaml @@ -10,4 +10,4 @@ metadata: - title: 2022 Northwest Territories dividend tax credit (Line 61520) href: https://www.canada.ca/content/dam/cra-arc/formspubs/pbg/5012-d/5012-d-22e.pdf#page=3 - title: Dividend Tax Credit for 2011-2023 - href: https://www.fin.gov.nt.ca/sites/fin/files/resources/nwt_personal_income_tax_credits_english.pdf#page=2 \ No newline at end of file + href: https://www.fin.gov.nt.ca/sites/fin/files/resources/nwt_personal_income_tax_credits_english.pdf#page=2 diff --git a/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/pension/ab_pension_credit.yaml b/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/pension/ab_pension_credit.yaml index e3c23fabd..a9faa8c92 100644 --- a/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/pension/ab_pension_credit.yaml +++ b/policyengine_canada/tests/gov/provinces/ab/tax/income/credits/pension/ab_pension_credit.yaml @@ -20,4 +20,4 @@ pension_and_savings_plan_income: 0 province_code: AB output: - ab_pension_credit: 0 \ No newline at end of file + ab_pension_credit: 0 diff --git a/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit.py b/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit.py index d9985dd78..aa1fc7549 100644 --- a/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit.py +++ b/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit.py @@ -11,8 +11,10 @@ class nt_dividend_tax_credit(Variable): reference = "https://www.justice.gov.nt.ca/en/files/legislation/income-tax/income-tax.a.pdf#page=40" def formula(person, period, parameters): - p = parameters(period).gov.provinces.nt.tax.income.credits.dividend_tax_credit + p = parameters( + period + ).gov.provinces.nt.tax.income.credits.dividend_tax_credit income = person("nt_taxable_income", period) non_eligible_dividends = B * p.noneligible_rate eligible_credit = (A - B) * p.taxable_rate - return non_eligible_dividends + eligible_credit \ No newline at end of file + return non_eligible_dividends + eligible_credit diff --git a/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit_eligible.py b/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit_eligible.py index 3c37cb678..85488b6a5 100644 --- a/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit_eligible.py +++ b/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit_eligible.py @@ -10,5 +10,7 @@ class nt_dividend_tax_credit_eligible(Variable): reference = "https://www.justice.gov.nt.ca/en/files/legislation/income-tax/income-tax.a.pdf#page=40" def formula(person, period, parameters): - p = parameters(period).gov.provinces.nt.tax.income.credits.dividend_tax_credit - return \ No newline at end of file + p = parameters( + period + ).gov.provinces.nt.tax.income.credits.dividend_tax_credit + return From 2e962eab429b54a95bd1bcd8f6c1b7980fc9be5f Mon Sep 17 00:00:00 2001 From: Ziyu Wang <70183694+zqw5219@users.noreply.github.com> Date: Tue, 10 Oct 2023 23:14:24 +0000 Subject: [PATCH 3/4] fixes #450 --- changelog_entry.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 721249788..22c0c5b0b 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +1,4 @@ - bump: minor changes: added: - - Initial country package contents. + - Northwest Territories dividend tax credit. From 2756317c06464a537d7af527d9a19f9ed7aa74ff Mon Sep 17 00:00:00 2001 From: Ziyu Wang <70183694+zqw5219@users.noreply.github.com> Date: Thu, 12 Oct 2023 21:03:50 +0000 Subject: [PATCH 4/4] fixes #450 --- .../nt/tax/income/nt_dividend_tax_credit.yaml | 8 ++++++++ .../nt_dividend_tax_credit.py | 16 +++++++++++++--- .../nt_dividend_tax_credit_eligible.py | 16 ---------------- .../household/income/taxable_dividend_income.py | 9 +++++++++ .../income/taxable_other_than_dividend_income.py | 9 +++++++++ 5 files changed, 39 insertions(+), 19 deletions(-) create mode 100644 policyengine_canada/tests/gov/provinces/nt/tax/income/nt_dividend_tax_credit.yaml delete mode 100644 policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit_eligible.py create mode 100644 policyengine_canada/variables/household/income/taxable_dividend_income.py create mode 100644 policyengine_canada/variables/household/income/taxable_other_than_dividend_income.py diff --git a/policyengine_canada/tests/gov/provinces/nt/tax/income/nt_dividend_tax_credit.yaml b/policyengine_canada/tests/gov/provinces/nt/tax/income/nt_dividend_tax_credit.yaml new file mode 100644 index 000000000..d718c19b6 --- /dev/null +++ b/policyengine_canada/tests/gov/provinces/nt/tax/income/nt_dividend_tax_credit.yaml @@ -0,0 +1,8 @@ +- name: Calculation 2022 # (39,000 * 0.06) + ((39,800 - 39,000) * 0.115) = 2,432 + period: 2022 + input: + province_code: NT + taxable_dividend_income: 39_800 + taxable_other_than_dividend_income: 39_000 + output: + nt_dividend_tax_credit: 2_432 diff --git a/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit.py b/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit.py index aa1fc7549..995511f4e 100644 --- a/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit.py +++ b/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit.py @@ -7,7 +7,7 @@ class nt_dividend_tax_credit(Variable): label = "Northwest Territories dividend tax credit" unit = CAD definition_period = YEAR - defined_for = "nt_dividend_tax_credit_eligible" + defined_for = ProvinceCode.NT reference = "https://www.justice.gov.nt.ca/en/files/legislation/income-tax/income-tax.a.pdf#page=40" def formula(person, period, parameters): @@ -15,6 +15,16 @@ def formula(person, period, parameters): period ).gov.provinces.nt.tax.income.credits.dividend_tax_credit income = person("nt_taxable_income", period) - non_eligible_dividends = B * p.noneligible_rate - eligible_credit = (A - B) * p.taxable_rate + taxable_dividend_income = person.household( + "taxable_dividend_income", period + ) + taxable_other_than_dividend_income = person.household( + "taxable_other_than_dividend_income", period + ) + non_eligible_dividends = ( + taxable_other_than_dividend_income * p.noneligible_rate + ) + eligible_credit = ( + taxable_dividend_income - taxable_other_than_dividend_income + ) * p.taxable_rate return non_eligible_dividends + eligible_credit diff --git a/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit_eligible.py b/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit_eligible.py deleted file mode 100644 index 85488b6a5..000000000 --- a/policyengine_canada/variables/gov/provinces/nt/tax/income/credits/dividend_tax_credit/nt_dividend_tax_credit_eligible.py +++ /dev/null @@ -1,16 +0,0 @@ -from policyengine_canada.model_api import * - - -class nt_dividend_tax_credit_eligible(Variable): - value_type = bool - entity = Person - label = "Northwest Territories dividend tax credit eligibility" - definition_period = YEAR - defined_for = ProvinceCode.NT - reference = "https://www.justice.gov.nt.ca/en/files/legislation/income-tax/income-tax.a.pdf#page=40" - - def formula(person, period, parameters): - p = parameters( - period - ).gov.provinces.nt.tax.income.credits.dividend_tax_credit - return diff --git a/policyengine_canada/variables/household/income/taxable_dividend_income.py b/policyengine_canada/variables/household/income/taxable_dividend_income.py new file mode 100644 index 000000000..5ac760822 --- /dev/null +++ b/policyengine_canada/variables/household/income/taxable_dividend_income.py @@ -0,0 +1,9 @@ +from policyengine_canada.model_api import * + + +class taxable_dividend_income(Variable): + value_type = float + entity = Household + label = "dividend income" + unit = CAD + definition_period = YEAR diff --git a/policyengine_canada/variables/household/income/taxable_other_than_dividend_income.py b/policyengine_canada/variables/household/income/taxable_other_than_dividend_income.py new file mode 100644 index 000000000..001d343ac --- /dev/null +++ b/policyengine_canada/variables/household/income/taxable_other_than_dividend_income.py @@ -0,0 +1,9 @@ +from policyengine_canada.model_api import * + + +class taxable_other_than_dividend_income(Variable): + value_type = float + entity = Household + label = "other than dividend income" + unit = CAD + definition_period = YEAR