Skip to content

Commit

Permalink
Remove the Montana CTC for the enacted policies (#5578)
Browse files Browse the repository at this point in the history
* Remove the Montana CTC for the enacted policies
Fixes #5577

* minor

* remove from state ctcs
  • Loading branch information
PavelMakarchuk authored Feb 12, 2025
1 parent 1ef1d68 commit 6cb1a4b
Show file tree
Hide file tree
Showing 18 changed files with 254 additions and 177 deletions.
4 changes: 4 additions & 0 deletions changelog_entry.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- bump: patch
changes:
fixes:
- Convert the Montana Child Tax Credit to a reform.
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ metadata:
period: year
label: Montana child tax credit base
reference:
# The Montana Child Tax Credit established in the 2023 House Bill No. 268
# not existent before
- title: 2023 Montana Legislature, House Bill No. 268, Section 1.(2) & Section 1.(7)-(c)
href: https://leg.mt.gov/bills/2023/billhtml/HB0268.htm

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
description: The Montana Child Tax Credit is in effect if this is true.

values:
0000-01-01: false

metadata:
unit: bool
period: year
label: Montana Child Tax Credit in effect
reference:
- title: 2023 Montana Legislature, House Bill No. 268, Section 1.(2) & Section 1.(7)-(c)
href: https://leg.mt.gov/bills/2023/billhtml/HB0268.htm

Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,5 @@ metadata:
period: year
label: Montana child tax credit reduction amount
reference:
# The Montana Child Tax Credit established in the 2023 House Bill No. 268
# not existent before
- title: 2023 Montana Legislature, House Bill No. 268, Section 1-(6)
href: https://leg.mt.gov/bills/2023/billhtml/HB0268.htm
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,7 @@ metadata:
reference:
- title: Montana 2022 Form2 Individual Income Tax Instructions
href: https://mtrevenue.gov/wp-content/uploads/dlm_uploads/2022/12/Form-2-2022-Instructions.pdf#page=17
- title: 2023 Montana Legislature, House Bill No. 268, Section 1
href: https://leg.mt.gov/bills/2023/billhtml/HB0268.htm

values:
2021-01-01:
- mt_eitc
2023-01-01:
- mt_ctc
- mt_eitc
6 changes: 6 additions & 0 deletions policyengine_us/reforms/reforms.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,10 @@
create_nyc_school_tax_credit_with_phase_out_reform,
)

from .states.mt.ctc import (
create_mt_ctc_reform,
)

from policyengine_core.reforms import Reform
import warnings

Expand Down Expand Up @@ -188,6 +192,7 @@ def create_structural_reforms_from_parameters(parameters, period):
nyc_school_tax_credit_with_phase_out = (
create_nyc_school_tax_credit_with_phase_out_reform(parameters, period)
)
mt_ctc = create_mt_ctc_reform(parameters, period)

reforms = [
afa_reform,
Expand Down Expand Up @@ -226,6 +231,7 @@ def create_structural_reforms_from_parameters(parameters, period):
ny_2025_inflation_rebates,
limit_salt_deduction_to_property_taxes,
nyc_school_tax_credit_with_phase_out,
mt_ctc,
]
reforms = tuple(filter(lambda x: x is not None, reforms))

Expand Down
3 changes: 3 additions & 0 deletions policyengine_us/reforms/states/mt/ctc/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from .mt_ctc import (
create_mt_ctc_reform,
)
93 changes: 93 additions & 0 deletions policyengine_us/reforms/states/mt/ctc/mt_ctc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
from policyengine_us.model_api import *
from policyengine_core.periods import period as period_
from policyengine_core.periods import instant


def create_mt_ctc() -> Reform:
class mt_ctc(Variable):
value_type = float
entity = TaxUnit
label = "Montana Child Tax Credit"
definition_period = YEAR
unit = USD
reference = "https://leg.mt.gov/bills/2023/billpdf/HB0268.pdf"
defined_for = "mt_ctc_eligible"

def formula(tax_unit, period, parameters):
p = parameters(period).gov.contrib.states.mt.ctc
person = tax_unit.members
age = person("age", period)
credit_amount = tax_unit.sum(p.amount.calc(age))
# Credit gets reduced by an amount for each increment that AGI exceeds a certain threshold
agi = tax_unit("adjusted_gross_income", period)
excess = max_(agi - p.reduction.threshold, 0)
increments = excess // p.reduction.increment
reduction = p.reduction.amount * increments
return max_(credit_amount - reduction, 0)

class mt_ctc_eligible(Variable):
value_type = bool
entity = TaxUnit
label = "Eligible for the Montana Child Tax Credit"
definition_period = YEAR
reference = "https://leg.mt.gov/bills/2023/billpdf/HB0268.pdf"
defined_for = StateCode.MT

def formula(tax_unit, period, parameters):
p = parameters(period).gov.contrib.states.mt.ctc.income_limit
agi = tax_unit("adjusted_gross_income", period)
agi_eligible = agi <= p.agi
# CTC limited to filers with investment income below a certain threshold
investment_income_eligible = (
tax_unit("eitc_relevant_investment_income", period)
< p.investment
)

earned_income = tax_unit("tax_unit_earned_income", period)
receives_earned_income = earned_income > 0

return (
agi_eligible
& investment_income_eligible
& receives_earned_income
)

def modify_parameters(parameters):
parameters.gov.states.mt.tax.income.credits.refundable.update(
start=instant("2023-01-01"),
stop=instant("2031-12-31"),
value=["mt_ctc", "mt_eitc"],
)
return parameters

class reform(Reform):
def apply(self):
self.update_variable(mt_ctc)
self.update_variable(mt_ctc_eligible)
self.modify_parameters(modify_parameters)

return reform


def create_mt_ctc_reform(parameters, period, bypass: bool = False):
if bypass:
return create_mt_ctc()

p = parameters.gov.contrib.states.mt.ctc

reform_active = False
current_period = period_(period)

for i in range(5):
if p(current_period).in_effect:
reform_active = True
break
current_period = current_period.offset(1, "year")

if reform_active:
return create_mt_ctc()
else:
return None


mt_ctc = create_mt_ctc_reform(None, None, bypass=True)

This file was deleted.

This file was deleted.

Loading

0 comments on commit 6cb1a4b

Please sign in to comment.