Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions changelog_entry.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- bump: minor
changes:
fixed:
- New York empire state child credit.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
description: New York provides this base amount for the child tax credit per child.
values:
2018-01-01: 1_000
metadata:
unit: currency-USD
period: year
label: New York CTC base amount
reference:
- title: Instructions for Form IT-213 Claim for Empire State Child Credit
href: https://www.tax.ny.gov/pdf/2021/inc/it213i_2021.pdf#page=2
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
description: New York shares this fraction of adjusted federal amount for the child tax credit.
values:
2018-01-01: 0.05
metadata:
unit: /1
period: year
label: New York CTC share of federal adjusted credit
reference:
- title: Instructions for Form IT-213 Claim for Empire State Child Credit
href: https://www.tax.ny.gov/pdf/2021/inc/it213i_2021.pdf#page=2 #5%
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
description: Minimum amount for New York's Empire State Child Credit per child
description: New York limits the child tax credit per child to this amount.
values:
2018-01-01: 100
metadata:
unit: currency-USD
period: year
label: NY CTC minimum amount
label: New York CTC minimum amount
reference:
- title: Section 606 Credits against tax (c-1)
href: https://www.nysenate.gov/legislation/laws/TAX/606
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
description: New York's Empire State Child Credit share of federal credit
description: New York shares this fraction of federal credit for the child tax credit.
values:
2018-01-01: 0.33
metadata:
unit: /1
label: NY CTC share of federal credit
period: year
label: New York CTC share of federal credit
reference:
- title: Section 606 Credits against tax (c-1)
href: https://www.nysenate.gov/legislation/laws/TAX/606
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
description: Minimum age to qualify for New York's Empire State Child Credit
description: New York limits the child tax credit for child equal or above this age.
values:
2018-01-01: 4
metadata:
unit: year
label: NY CTC minimum age
label: New York CTC minimum age
reference:
- title: Section 606 Credits against tax (c-1)
href: https://www.nysenate.gov/legislation/laws/TAX/606
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
- name: NY base credit is over reduced tax
period: 2021
input:
income_tax: 1_000
ny_ctc_federal_credits: 800
ny_ctc_pre_reduction_base_credit: 500
state_code: NY
output:
ny_ctc_base_credit: 200 #min(1_000 - 800,500)

- name: NY base credit is below reduced tax
period: 2021
input:
income_tax: 1_000
ny_ctc_federal_credits: 500
ny_ctc_pre_reduction_base_credit: 300
state_code: NY
output:
ny_ctc_base_credit: 300 #min(1_000 - 500,300)

- name: reduced tax capped at 0
period: 2021
input:
income_tax: 1_000
ny_ctc_federal_credits: 1_200
ny_ctc_pre_reduction_base_credit: 300
state_code: NY
output:
ny_ctc_base_credit: 0 #min(max(0,1_000 - 1200),300)
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
- name: Filer is eligible for NY CTC additional credit
period: 2021
input:
residential_clean_energy_credit: 500
state_code: NY
output:
ny_ctc_claimed_additional_credits: True

- name: Filer is not eligible for NY CTC additional credit
period: 2021
input:
residential_clean_energy_credit: 0
state_code: NY
output:
ny_ctc_claimed_additional_credits: False
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
- name: NY Worksheet A/B for Form IT-213 federal credit computation
period: 2021
input:
foreign_tax_credit: 300
cdcc: 0
education_tax_credits: 400
savers_credit: 200
elderly_disabled_credit: 100
state_code: NY
output:
ny_ctc_federal_credits: 1_000
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
- name: NY CTC pre reduction base credit if claimed additional credit and no deduction
period: 2021
input:
ctc_qualifying_children: 3
adjusted_gross_income: 100_000
ny_ctc_claimed_additional_credits: 1_000
# >0 then agi_with_exclusion_amount = 100_700 < threshold = 200_000
foreign_earned_income_exclusion: 500
puerto_rico_income: 200
filing_status: SINGLE
state_code: NY
output:
ny_ctc_pre_reduction_base_credit: 3_000
# base = 3 * 1_000 = 3_000

- name: NY CTC pre reduction base credit if claimed additional credit with deduction, cappted at 0
period: 2021
input:
ctc_qualifying_children: 3
adjusted_gross_income: 300_000
ny_ctc_claimed_additional_credits: 1_000
# >0 then agi_with_exclusion_amount = 300_700 > threshold = 200_000
foreign_earned_income_exclusion: 500
puerto_rico_income: 200
filing_status: SINGLE
state_code: NY
output:
ny_ctc_pre_reduction_base_credit: 0
# base = 3 * 1_000 = 3_000
# rounded_reduced_agi_multiple = (300700-200000)/1000 = 100
# rounded_reduced_agi_amount = 100*1000 = 100,000
# subtraction_amount = 100,000 * 0.05 = 5000

- name: NY CTC pre reduction base credit if claimed additional credit with deduction
period: 2021
input:
ctc_qualifying_children: 3
adjusted_gross_income: 210_000
ny_ctc_claimed_additional_credits: 1_000
# >0 then agi_with_exclusion_amount = 210_700 > threshold = 200_000
foreign_earned_income_exclusion: 500
puerto_rico_income: 200
filing_status: SINGLE
state_code: NY
output:
ny_ctc_pre_reduction_base_credit: 2_450
# base = 3 * 1_000 = 3_000
# rounded_reduced_agi_multiple = 210700-200000/1000 = 11
# rounded_reduced_agi_amount = 11*1000 = 11,000
# subtraction_amount = 11,000 * 0.05 = 550

- name: NY CTC pre reduction base credit if not claimed additional credit and no reduction
period: 2021
input:
ctc_qualifying_children: 3
adjusted_gross_income: 100_000
ny_ctc_claimed_additional_credits: 0
foreign_earned_income_exclusion: 500
puerto_rico_income: 200
filing_status: SINGLE
state_code: NY
output:
ny_ctc_pre_reduction_base_credit: 3_000
# base = 3 * 1_000 = 3_000
# agi_with_exclusion_amount = fagi = 100000

- name: NY CTC pre reduction base credit if not claimed additional credit with reduction
period: 2021
input:
ctc_qualifying_children: 3
adjusted_gross_income: 250_000
ny_ctc_claimed_additional_credits: 0
foreign_earned_income_exclusion: 500
puerto_rico_income: 200
filing_status: SINGLE
state_code: NY
output:
ny_ctc_pre_reduction_base_credit: 500
# base = 3 * 1_000 = 3_000
# agi_with_exclusion_amount = fagi = 250000
# rounded_reduced_agi_multiple = 50

- name: NY CTC pre reduction base credit if claimed additional credit for other filing status
period: 2021
input:
ctc_qualifying_children: 3
adjusted_gross_income: 300_000
ny_ctc_claimed_additional_credits: 1_000
# >0 then agi_with_exclusion_amount = 300_700 < threshold = 400_000
foreign_earned_income_exclusion: 500
puerto_rico_income: 200
filing_status: JOINT
state_code: NY
output:
ny_ctc_pre_reduction_base_credit: 3000
# base = 3 * 1_000 = 3_000
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
from policyengine_us.model_api import *


class ny_ctc_additional_credit(Variable):
value_type = float
entity = TaxUnit
label = "New York CTC additional credit"
documentation = "New York's Empire State Child Credit Worksheet C"
unit = USD
definition_period = YEAR
reference = "https://www.tax.ny.gov/pdf/2021/inc/it213i_2021.pdf#page=5"
defined_for = "ny_ctc_additional_credit_eligible"

def formula(tax_unit, period, parameters):
pre_reduction_base_credit = tax_unit(
"ny_ctc_pre_reduction_base_credit", period
)
base_credit = tax_unit("ny_ctc_base_credit", period)
# Line 3
reduced_base_credit = pre_reduction_base_credit - base_credit
# Line 4
earned_income = tax_unit("tax_unit_earned_income", period)
if period.start.year >= 2018:
instant_str = f"2017-01-01"
else:
instant_str = period
p_gov = parameters(instant_str).gov.irs.credits.ctc.refundable.phase_in
earned_income_over_threshold = earned_income > p_gov.threshold
# Line 5
reduced_earned_income = where(
earned_income_over_threshold, earned_income - p_gov.threshold, 0
)
# Line 6
earned_income_fraction = reduced_earned_income * p.match
# Line 7
qualifying_children = tax_unit("ctc_qualifying_children", period)
children_over_threshold = (
qualifying_children > p_gov.min_children_for_ss_taxes_minus_eitc
)
smaller_of_earned_income_or_reduced_base = min_(
reduced_base_credit, earned_income_fraction
)
# Calculation from federal schedule 8812 line 25
SS_ADD_VARIABLES = [
# Person:
"employee_social_security_tax",
"employee_medicare_tax",
"unreported_payroll_tax",
# Tax unit:
"self_employment_tax_ald",
"additional_medicare_tax",
]
SS_SUBTRACT_VARIABLES = ["excess_payroll_tax_withheld"]
social_security_tax = add(tax_unit, period, SS_ADD_VARIABLES) - add(
tax_unit, period, SS_SUBTRACT_VARIABLES
)
eitc = tax_unit("eitc", period)
social_security_excess = max_(0, social_security_tax - eitc)
# Line 8
larger_of_ss_excess_or_earned_income = max_(
social_security_excess, earned_income_fraction
)
# Line 9
smaller_of_base_credit_or_larger_of_ss_excess_or_earned_income = min_(
reduced_base_credit, larger_of_ss_excess_or_earned_income
)
base_credit_over_earned_income_fraction = (
reduced_base_credit > earned_income_fraction
)
equal_or_more_than_three_children_calc = where(
base_credit_over_earned_income_fraction,
smaller_of_base_credit_or_larger_of_ss_excess_or_earned_income,
reduced_base_credit,
)
return where(
children_over_threshold,
equal_or_more_than_three_children_calc,
smaller_of_earned_income_or_reduced_base,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from policyengine_us.model_api import *


class ny_ctc_additional_credit_eligible(Variable):
value_type = bool
entity = TaxUnit
label = "Eligible for the NY CTC additional credit"
definition_period = YEAR
reference = "https://www.tax.ny.gov/pdf/2021/inc/it213i_2021.pdf#page=5"
defined_for = StateCode.NY

def formula(tax_unit, period, parameters):
pre_reduction_base_credit = tax_unit(
"ny_ctc_pre_reduction_base_credit", period
)
base_credit = tax_unit("ny_ctc_base_credit", period)
return pre_reduction_base_credit > base_credit
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from policyengine_us.model_api import *


class ny_ctc_base_credit(Variable):
value_type = float
entity = TaxUnit
label = "The base NY CTC credit before reduction"
documentation = (
"New York's Empire State Child Credit Worksheet A / B Part 2"
)
unit = USD
definition_period = YEAR
reference = "https://www.tax.ny.gov/pdf/2021/inc/it213i_2021.pdf"
defined_for = StateCode.NY

def formula(tax_unit, period, parameters):
income_tax = tax_unit("income_tax", period)
# Line 19 and 19a from Form IT-201 - these are the same in our model
selected_credit_amount = tax_unit("ny_ctc_federal_credits", period)
# If the filer claimed additional credit, the base credit is reduced by the amount of the selected credits
# We currently skip this caluclation as we only compute the residential energy credit
reduced_tax = max_(0, income_tax - selected_credit_amount)
pre_reduction_base_credit = tax_unit(
"ny_ctc_pre_reduction_base_credit", period
)
base_credit_over_reduced_tax = pre_reduction_base_credit > reduced_tax
return where(
base_credit_over_reduced_tax,
reduced_tax,
pre_reduction_base_credit,
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from policyengine_us.model_api import *


class ny_ctc_claimed_additional_credits(Variable):
value_type = bool
entity = TaxUnit
label = "Claimed additional credits applicable for the NY CTC Worksheet B"
definition_period = YEAR
documentation = "Filers in New York are requirede to file the Worksheet B for Form IT-213, Line 6 if they claimed any of the following federal tax credits: adoption credit, mortgage interest credit, carryforward of District of Columbia firsttime homebuyer credit, or residential energy efficient property credit; or excluded income from Puerto Rico; or filed federal Form 2555 or Form 4563."
reference = "https://www.tax.ny.gov/pdf/2021/inc/it213i_2021.pdf#page=3"
defined_for = StateCode.NY

def formula(tax_unit, period, parameters):
# We currently do not include the adoption credit, mortgage interest credit,
# carryforward of District of Columbia first time homebuyer credit
applicable_credits = tax_unit(
"residential_clean_energy_credit", period
)
return applicable_credits > 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from policyengine_us.model_api import *


class ny_ctc_federal_credits(Variable):
value_type = float
entity = TaxUnit
label = "NY Worksheet A/B for Form IT-213 federal credit computation"
documentation = "New York's Empire State Child Credit Worksheet A and B"
unit = USD
definition_period = YEAR
reference = "https://www.tax.ny.gov/pdf/2021/inc/it213i_2021.pdf#page=2"
defined_for = StateCode.NY

# Line 8 of Worksheet A, Line 10 of worksheet B
adds = [
# a: Form 1040, Schedule 3, line 1, Foreign tax credit
"foreign_tax_credit",
# b: Form 1040, Schedule 3, line 2, Credit for child and dependent care expenses
"cdcc",
# c Form 1040, Schedule 3, line 3, Education credits
"education_tax_credits",
# d Form 1040, Schedule 3, line 4, Retirement savings contributions credit
"savers_credit",
# e Form 1040, Schedule 3, line 6l, Total increase/decrease to reporting year tax
# f Form 8910, Alternative Motor Vehicle Credit
# g Form 8936, Qualified Plug-in Electric Drive Motor Vehicle Credit, line 23
# h Schedule R, Credit for the Elderly or the Disabled, line 22
"elderly_disabled_credit",
]
Loading