Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reform to remove head of household filing status #3163

Merged
merged 28 commits into from
Dec 18, 2023
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
25cdc49
Reform standard deduction remove head of household filing status
mzx-4real Oct 17, 2023
ff06f10
Fill in __init__.py; Change name of functions
mzx-4real Oct 22, 2023
97a454e
Merge branch 'master' of https://github.com/PolicyEngine/policyengine…
mzx-4real Oct 22, 2023
036e76f
Merge branch 'master' of https://github.com/PolicyEngine/policyengine…
mzx-4real Oct 24, 2023
e7201b3
Add reform to reform lists and add unit test; Hoh formula still incom…
mzx-4real Oct 24, 2023
07e5768
Use fix amount as temp
mzx-4real Oct 24, 2023
1be3104
Small fix
mzx-4real Oct 24, 2023
1d31c8a
Merge upstream master
mzx-4real Nov 1, 2023
5a884ea
Fix
mzx-4real Nov 1, 2023
257aa1f
Merge branch 'master' of https://github.com/PolicyEngine/policyengine…
mzx-4real Nov 2, 2023
722db8d
Fix
mzx-4real Nov 2, 2023
cc23061
debug purpose
mzx-4real Nov 3, 2023
3c301c5
debug
mzx-4real Nov 3, 2023
5b2cc16
Merge branch 'master' of https://github.com/PolicyEngine/policyengine…
mzx-4real Nov 4, 2023
486d461
Fix
mzx-4real Nov 4, 2023
7ced0d4
small fix
mzx-4real Nov 4, 2023
c331f23
Merge branch 'master' of https://github.com/PolicyEngine/policyengine…
mzx-4real Nov 18, 2023
b74f28a
Suggested change
mzx-4real Nov 18, 2023
61c671b
Suggested change
mzx-4real Nov 27, 2023
84cec26
Merge branch 'master' of https://github.com/PolicyEngine/policyengine…
mzx-4real Nov 27, 2023
228101c
Small fix
mzx-4real Nov 27, 2023
fe7e998
Merge branch 'master' of https://github.com/policyengine/policyengine…
MaxGhenis Dec 18, 2023
18bd705
Change to Romney
MaxGhenis Dec 18, 2023
a18d8cf
add readme
MaxGhenis Dec 18, 2023
e389e8f
add FilingStatus enum
MaxGhenis Dec 18, 2023
14abecc
formatting nit
MaxGhenis Dec 18, 2023
bb75ea7
add remove_head_of_household reform to test
MaxGhenis Dec 18, 2023
82c5b25
add to reform
MaxGhenis Dec 18, 2023
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
5 changes: 5 additions & 0 deletions changelog_entry.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- bump: minor
changes:
added:
- Reform for the Tax Foundation growth and opportunity plan.

Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
description: The head of household filing status will be eliminated if this is true and converted to single.
values:
2000-01-01: False
metadata:
unit: bool
label: Tax Foundation growth and opportunity plan remove standard deduction head of household filing status
reference:
- title: Tax Foundation Details and Analysis of a Tax Reform Plan for Growth and Opportunity
href: https://taxfoundation.org/research/all/federal/growth-opportunity-us-tax-reform-plan/#Revenue
9 changes: 9 additions & 0 deletions policyengine_us/reforms/reforms.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@
from .dc_tax_threshold_joint_ratio import (
create_dc_tax_threshold_joint_ratio_reform,
)
from .tax_foundation.growth_and_opportunity import (
create_remove_standard_deduction_head_of_household_reform,
)
from .cbo.payroll import (
create_increase_taxable_earnings_for_social_security_reform,
)
Expand All @@ -20,6 +23,11 @@ def create_structural_reforms_from_parameters(parameters, period):
dc_tax_threshold_joint_ratio_reform = (
create_dc_tax_threshold_joint_ratio_reform(parameters, period)
)
remove_standard_deduction_head_of_household = (
create_remove_standard_deduction_head_of_household_reform(
parameters, period
)
)
increase_taxable_earnings_for_social_security_reform = (
create_increase_taxable_earnings_for_social_security_reform(
parameters, period
Expand All @@ -31,6 +39,7 @@ def create_structural_reforms_from_parameters(parameters, period):
winship_reform,
dc_kccatc_reform,
dc_tax_threshold_joint_ratio_reform,
remove_standard_deduction_head_of_household,
increase_taxable_earnings_for_social_security_reform,
]
reforms = tuple(filter(lambda x: x is not None, reforms))
Expand Down
mzx-4real marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from .remove_standard_deduction_head_of_household import (
create_remove_standard_deduction_head_of_household_reform,
)
mzx-4real marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
from policyengine_us.model_api import *


def create_remove_standard_deduction_head_of_household() -> Reform:
class FilingStatus(Enum):
SINGLE = "Single"
JOINT = "Joint"
SEPARATE = "Separate"
HEAD_OF_HOUSEHOLD = "Head of household"
WIDOW = "Widow(er)"

class filing_status(Variable):
value_type = Enum
entity = TaxUnit
possible_values = FilingStatus
default_value = FilingStatus.SINGLE
definition_period = YEAR
label = "Filing_status (Eliminating HoH)"
documentation = "Eliminating HoH under the tax foundation growth and opportunity plan"

def formula(tax_unit, period, parameters):
has_spouse = add(tax_unit, period, ["is_tax_unit_spouse"]) > 0
has_dependents = tax_unit("tax_unit_dependents", period) > 0
mzx-4real marked this conversation as resolved.
Show resolved Hide resolved
person = tax_unit.members
is_separated = tax_unit.any(person("is_separated", period))
is_widowed = tax_unit.any(person("is_widowed", period))
return select(
[
MaxGhenis marked this conversation as resolved.
Show resolved Hide resolved
has_dependents & ~has_spouse,
has_spouse,
is_separated,
is_widowed,
True,
],
[
FilingStatus.SINGLE,
FilingStatus.JOINT,
FilingStatus.SEPARATE,
FilingStatus.WIDOW,
FilingStatus.SINGLE,
],
)

class reform(Reform):
def apply(self):
self.update_variable(filing_status)

return reform


def create_remove_standard_deduction_head_of_household_reform(
parameters, period, bypass: bool = False
):
if bypass:
return create_remove_standard_deduction_head_of_household()

p = parameters(period).gov.contrib.tax_foundation.growth_and_opportunity

if p.remove_head_of_household is True:
return create_remove_standard_deduction_head_of_household()
else:
return None


remove_standard_deduction_head_of_household = (
create_remove_standard_deduction_head_of_household_reform(
None, None, bypass=True
)
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
- name: Remove standard deduction head of household filing status
period: 2023
reforms: policyengine_us.reforms.tax_foundation.growth_and_opportunity.remove_standard_deduction_head_of_household.remove_standard_deduction_head_of_household
input:
gov.contrib.tax_foundation.growth_and_opportunity.remove_head_of_household : true
# tax unit input
people:
head: {}
child:
is_tax_unit_spouse: false
tax_units:
tax_unit:
members: [head, child]
output:
filing_status: SINGLE