From 4af81c0eca2b4fc30947b9343737441b80a47622 Mon Sep 17 00:00:00 2001 From: Anthony Volk Date: Wed, 9 Oct 2024 22:35:28 +0200 Subject: [PATCH 01/29] chore: Update policyengine-core version --- changelog_entry.yaml | 4 ++++ setup.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..c7a1b728f84 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: patch + changes: + changed: + - Updated required version of policyengine-core \ No newline at end of file diff --git a/setup.py b/setup.py index ca0a82459c6..a884d41bfb9 100644 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ ), ], install_requires=[ - "policyengine-core>=3.8.1", + "policyengine-core>=3.9.0", "policyengine-us-data==1.11.0", "microdf-python", "tqdm", From 89d19298c591e00617a062dbb63ac34000f43700 Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Mon, 14 Oct 2024 19:38:10 +0700 Subject: [PATCH 02/29] Various 2024 Kansas tax model updates Fixes #5207 Fixes #5209 Fixes #5206 Fixes #5205 --- changelog_entry.yaml | 4 +++ .../agi/subtractions/oasdi/agi_limit.yaml | 4 ++- .../ks/tax/income/credits/cdcc_fraction.yaml | 2 +- .../deductions/standard/base_amount.yaml | 7 ++++ .../ks/tax/income/exemptions/amount.yaml | 15 --------- .../exemptions/by_filing_status/amount.yaml | 32 +++++++++++++++++++ .../by_filing_status/dependent.yaml | 16 ++++++++++ .../by_filing_status/in_effect.yaml | 16 ++++++++++ .../exemptions/consolidated/amount.yaml | 22 +++++++++++++ .../gov/states/ks/tax/income/rates/joint.yaml | 7 ++++ .../gov/states/ks/tax/income/rates/other.yaml | 7 ++++ .../states/ks/tax/income/ks_exemptions.yaml | 18 +++++++++++ .../ks/tax/income/exemptions/ks_exemptions.py | 10 ++++-- 13 files changed, 141 insertions(+), 19 deletions(-) delete mode 100644 policyengine_us/parameters/gov/states/ks/tax/income/exemptions/amount.yaml create mode 100644 policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/amount.yaml create mode 100644 policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/dependent.yaml create mode 100644 policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/in_effect.yaml create mode 100644 policyengine_us/parameters/gov/states/ks/tax/income/exemptions/consolidated/amount.yaml diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..1e3e00b8503 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - 2024 tax rate, cdcc match, standard deduction and personal exemption amount in Kansas. diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/agi/subtractions/oasdi/agi_limit.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/agi/subtractions/oasdi/agi_limit.yaml index 3140a35496d..15d541f392e 100644 --- a/policyengine_us/parameters/gov/states/ks/tax/income/agi/subtractions/oasdi/agi_limit.yaml +++ b/policyengine_us/parameters/gov/states/ks/tax/income/agi/subtractions/oasdi/agi_limit.yaml @@ -1,6 +1,7 @@ description: Kansas limits its taxable OASDI subtraction to filers with AGI at or below this amount. values: 2021-01-01: 75_000 + 2024-01-01: .inf metadata: period: year @@ -15,4 +16,5 @@ metadata: href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=11 - title: Kansas 2022 Statute | Article 32 | §79-32,271(c)(xviii) href: http://www.kslegislature.org/li/b2023_24/statute/079_000_0000_chapter/079_032_0000_article/079_032_0117_section/079_032_0117_k/ - + - title: Kansas Notice 24-08 Changes to individual income tax + href: https://www.ksrevenue.gov/taxnotices/notice24-08.pdf#page=2 diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/credits/cdcc_fraction.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/credits/cdcc_fraction.yaml index 3344bcdfc2a..8703145aca1 100644 --- a/policyengine_us/parameters/gov/states/ks/tax/income/credits/cdcc_fraction.yaml +++ b/policyengine_us/parameters/gov/states/ks/tax/income/credits/cdcc_fraction.yaml @@ -3,6 +3,7 @@ values: 2018-01-01: 0.125 2019-01-01: 0.1875 2020-01-01: 0.25 + 2024-01-01: 0.5 metadata: period: year @@ -17,4 +18,3 @@ metadata: href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=8 - title: Kansas 2022 Statute | Article 32 | §79-32,111c. href: http://www.kslegislature.org/li/b2023_24/statute/079_000_0000_chapter/079_032_0000_article/079_032_0111c_section/079_032_0111c_k/ - diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/deductions/standard/base_amount.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/deductions/standard/base_amount.yaml index 5be582586b9..8ec751e178e 100644 --- a/policyengine_us/parameters/gov/states/ks/tax/income/deductions/standard/base_amount.yaml +++ b/policyengine_us/parameters/gov/states/ks/tax/income/deductions/standard/base_amount.yaml @@ -12,21 +12,28 @@ metadata: href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=6 - title: Kansas 2022 Statute Article 32 §79-32,119(c) href: http://www.kslegislature.org/li/b2023_24/statute/079_000_0000_chapter/079_032_0000_article/079_032_0119_section/079_032_0119_k/ + - title: Kansas Notice 24-08 Changes to individual income tax + href: https://www.ksrevenue.gov/taxnotices/notice24-08.pdf#page=2 JOINT: 2013-01-01: 7_500 2021-01-01: 8_000 + 2024-01-01: 8_240 HEAD_OF_HOUSEHOLD: 2013-01-01: 5_500 2021-01-01: 6_000 + 2024-01-01: 6_180 SURVIVING_SPOUSE: 2013-01-01: 7_500 2021-01-01: 8_000 + 2024-01-01: 8_240 SINGLE: 2013-01-01: 3_000 2021-01-01: 3_500 + 2024-01-01: 3_605 SEPARATE: # The legal code doesn't specify the value for separate, but # recent tax forms show that it is half the joint value. 2013-01-01: 3_750 2021-01-01: 4_000 + 2024-01-01: 4_120 diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/amount.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/amount.yaml deleted file mode 100644 index 0a7f26674e2..00000000000 --- a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/amount.yaml +++ /dev/null @@ -1,15 +0,0 @@ -description: Kansas provides this exemption for each person in a filing unit. -values: - 2021-01-01: 2_250 - -metadata: - period: year - unit: currency-USD - label: Kansas personal exemption - reference: - - title: 2021 Form K-40 instructions - href: https://www.ksrevenue.gov/pdf/ip21.pdf - - title: 2022 Form K-40 instructions - href: https://www.ksrevenue.gov/pdf/ip22.pdf - - title: 2023 Form K-40 instructions - href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=2 diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/amount.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/amount.yaml new file mode 100644 index 00000000000..be8bc577203 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/amount.yaml @@ -0,0 +1,32 @@ +description: Kansas provides this personal exemption amount, based on filing status, post 2024. + + +JOINT: + 2021-01-01: 2_250 + 2024-01-01: 18_320 +HEAD_OF_HOUSEHOLD: + 2021-01-01: 2_250 + 2024-01-01: 9_160 +SURVIVING_SPOUSE: + 2021-01-01: 2_250 + 2024-01-01: 9_160 +SINGLE: + 2021-01-01: 2_250 + 2024-01-01: 9_160 +SEPARATE: + 2021-01-01: 2_250 + 2024-01-01: 9_160 + + +metadata: + period: year + unit: currency-USD + label: Kansas personal exemption by filing status amount + reference: + - title: 2023 Form K-40 instructions + href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=2 + # Structure is applied in 2024 + - title: Kansas Notice 24-08 Changes to individual income tax + href: https://www.ksrevenue.gov/taxnotices/notice24-08.pdf#page=2 + - title: Kan. Stat. § 79-32,121 (a) + href: https://casetext.com/statute/kansas-statutes/chapter-79-taxation/article-32-income-tax/section-79-32121-kansas-exemption-for-an-individual diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/dependent.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/dependent.yaml new file mode 100644 index 00000000000..f4e273e0129 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/dependent.yaml @@ -0,0 +1,16 @@ +description: Kansas provides this exemption for each dependent in a filing unit post 2024. +values: + 2021-01-01: 2_320 + +metadata: + period: year + unit: currency-USD + label: Kansas personal exemption by filing status dependent amount + reference: + - title: 2023 Form K-40 instructions + href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=2 + # Structure is applied in 2024 + - title: Kansas Notice 24-08 Changes to individual income tax + href: https://www.ksrevenue.gov/taxnotices/notice24-08.pdf#page=2 + - title: Kan. Stat. § 79-32,121 (a) + href: https://casetext.com/statute/kansas-statutes/chapter-79-taxation/article-32-income-tax/section-79-32121-kansas-exemption-for-an-individual diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/in_effect.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/in_effect.yaml new file mode 100644 index 00000000000..beefc47dfa1 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/in_effect.yaml @@ -0,0 +1,16 @@ +description: Kansas provides an updated personal exemptions structure by filing status as well as a separate dpedent exemption if this is true. +values: + 0000-01-01: false + 2024-01-01: true +metadata: + period: year + unit: bool + label: Kansas person exemptions by filing status in effect + reference: + - title: 2023 Form K-40 instructions + href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=2 + # Structure changed in 2024 - this parameter is discontinued + - title: Kansas Notice 24-08 Changes to individual income tax + href: https://www.ksrevenue.gov/taxnotices/notice24-08.pdf#page=2 + - title: Kan. Stat. § 79-32,121 (a) + href: https://casetext.com/statute/kansas-statutes/chapter-79-taxation/article-32-income-tax/section-79-32121-kansas-exemption-for-an-individual diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/consolidated/amount.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/consolidated/amount.yaml new file mode 100644 index 00000000000..e78d5d09038 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/consolidated/amount.yaml @@ -0,0 +1,22 @@ +description: Kansas provides this exemption for each person in a filing unit. +values: + 2021-01-01: 2_250 + +metadata: + period: year + unit: currency-USD + label: Kansas personal exemption conolidated amount + reference: + + - title: 2021 Form K-40 instructions + href: https://www.ksrevenue.gov/pdf/ip21.pdf + - title: 2022 Form K-40 instructions + href: https://www.ksrevenue.gov/pdf/ip22.pdf + - title: 2023 Form K-40 instructions + href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=2 + # Structure changed in 2024 - this parameter is discontinued + - title: Kansas Notice 24-08 Changes to individual income tax + href: https://www.ksrevenue.gov/taxnotices/notice24-08.pdf#page=2 + # Legal code represents post 2024 structure + - title: Kan. Stat. § 79-32,121 (a) + href: https://casetext.com/statute/kansas-statutes/chapter-79-taxation/article-32-income-tax/section-79-32121-kansas-exemption-for-an-individual diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/rates/joint.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/rates/joint.yaml index 23e8aa3f621..9d2da51008d 100644 --- a/policyengine_us/parameters/gov/states/ks/tax/income/rates/joint.yaml +++ b/policyengine_us/parameters/gov/states/ks/tax/income/rates/joint.yaml @@ -4,14 +4,19 @@ brackets: 2018-01-01: 0 rate: 2018-01-01: 0.031 + 2024-01-01: 0.052 - threshold: 2018-01-01: 30_000 + 2024-01-01: 46_000 rate: 2018-01-01: 0.0525 + 2024-01-01: 0.058 - threshold: 2018-01-01: 60_000 + 2024-01-01: .inf rate: 2018-01-01: 0.057 + 2024-01-01: 0.058 metadata: threshold_unit: currency_USD @@ -26,3 +31,5 @@ metadata: href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=32 - title: Kansas 2022 Statute Article 32 §79-32,110_k href: http://www.kslegislature.org/li/b2023_24/statute/079_000_0000_chapter/079_032_0000_article/079_032_0110_section/079_032_0110_k/ + - title: Kansas Notice 24-08 Changes to individual income tax + href: https://www.ksrevenue.gov/taxnotices/notice24-08.pdf#page=2 diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/rates/other.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/rates/other.yaml index 95736f13490..3435754ac5f 100644 --- a/policyengine_us/parameters/gov/states/ks/tax/income/rates/other.yaml +++ b/policyengine_us/parameters/gov/states/ks/tax/income/rates/other.yaml @@ -4,14 +4,19 @@ brackets: 2018-01-01: 0 rate: 2018-01-01: 0.031 + 2024-01-01: 0.052 - threshold: 2018-01-01: 15_000 + 2024-01-01: 24_000 rate: 2018-01-01: 0.0525 + 2024-01-01: 0.058 - threshold: 2018-01-01: 30_000 + 2024-01-01: .inf rate: 2018-01-01: 0.057 + 2024-01-01: 0.058 metadata: threshold_unit: currency_USD @@ -26,3 +31,5 @@ metadata: href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=32 - title: Kansas 2022 Statute Article 32 §79-32,110_k href: http://www.kslegislature.org/li/b2023_24/statute/079_000_0000_chapter/079_032_0000_article/079_032_0110_section/079_032_0110_k/ + - title: Kansas Notice 24-08 Changes to individual income tax + href: https://www.ksrevenue.gov/taxnotices/notice24-08.pdf#page=2 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_exemptions.yaml b/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_exemptions.yaml index e026e153944..eac3331050a 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_exemptions.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_exemptions.yaml @@ -13,3 +13,21 @@ state_code: KS output: ks_exemptions: 2_250 * 2 + +- name: Post 2024, the exemption amount is dependent on filing sttaus and number of dependents + period: 2024 + input: + filing_status: JOINT + tax_unit_dependents: 2 + state_code: KS + output: + ks_exemptions: 22_960 + +- name: Post 2024, single no dependents + period: 2024 + input: + filing_status: SINGLE + tax_unit_dependents: 0 + state_code: KS + output: + ks_exemptions: 9_160 diff --git a/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_exemptions.py b/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_exemptions.py index 544e16f0dfb..e80c1d02631 100644 --- a/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_exemptions.py +++ b/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_exemptions.py @@ -14,6 +14,12 @@ class ks_exemptions(Variable): defined_for = StateCode.KS def formula(tax_unit, period, parameters): - exemptions_count = tax_unit("ks_count_exemptions", period) p = parameters(period).gov.states.ks.tax.income.exemptions - return exemptions_count * p.amount + if p.by_filing_status.in_effect: + filing_status = tax_unit("filing_status", period) + base_amount = p.by_filing_status.amount[filing_status] + dependents = tax_unit("tax_unit_dependents", period) + dependent_amount = p.by_filing_status.dependent * dependents + return base_amount + dependent_amount + exemptions_count = tax_unit("ks_count_exemptions", period) + return exemptions_count * p.consolidated.amount From fb3cb7aab2d5b4511864f919e175eee1e3e951f5 Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Mon, 14 Oct 2024 19:41:08 +0700 Subject: [PATCH 03/29] format --- .../gov/states/ks/tax/income/credits/cdcc_fraction.yaml | 2 ++ .../ks/tax/income/exemptions/by_filing_status/dependent.yaml | 2 +- .../ks/tax/income/exemptions/by_filing_status/in_effect.yaml | 2 +- .../states/ks/tax/income/exemptions/consolidated/amount.yaml | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/credits/cdcc_fraction.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/credits/cdcc_fraction.yaml index 8703145aca1..25a25023a91 100644 --- a/policyengine_us/parameters/gov/states/ks/tax/income/credits/cdcc_fraction.yaml +++ b/policyengine_us/parameters/gov/states/ks/tax/income/credits/cdcc_fraction.yaml @@ -18,3 +18,5 @@ metadata: href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=8 - title: Kansas 2022 Statute | Article 32 | §79-32,111c. href: http://www.kslegislature.org/li/b2023_24/statute/079_000_0000_chapter/079_032_0000_article/079_032_0111c_section/079_032_0111c_k/ + - title: Kansas Notice 24-09 Child and dependent care expenses credit + href: https://www.ksrevenue.gov/taxnotices/notice24-09.pdf diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/dependent.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/dependent.yaml index f4e273e0129..b7304b140eb 100644 --- a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/dependent.yaml +++ b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/dependent.yaml @@ -1,4 +1,4 @@ -description: Kansas provides this exemption for each dependent in a filing unit post 2024. +description: Kansas provides this exemption amount for each dependent in a filing unit post 2024. values: 2021-01-01: 2_320 diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/in_effect.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/in_effect.yaml index beefc47dfa1..58951351852 100644 --- a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/in_effect.yaml +++ b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/by_filing_status/in_effect.yaml @@ -1,4 +1,4 @@ -description: Kansas provides an updated personal exemptions structure by filing status as well as a separate dpedent exemption if this is true. +description: Kansas provides an updated personal exemption structure by filing status as well as a separate dependent exemption amount if this is true. values: 0000-01-01: false 2024-01-01: true diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/consolidated/amount.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/consolidated/amount.yaml index e78d5d09038..bdfbacd5864 100644 --- a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/consolidated/amount.yaml +++ b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/consolidated/amount.yaml @@ -1,11 +1,11 @@ -description: Kansas provides this exemption for each person in a filing unit. +description: Kansas provides this exemption for each person in a filing unit, pre 2024. values: 2021-01-01: 2_250 metadata: period: year unit: currency-USD - label: Kansas personal exemption conolidated amount + label: Kansas personal exemption consolidated amount reference: - title: 2021 Form K-40 instructions From 70c6ca4e28974537ebe5227633adadf8b11c8c8a Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Mon, 14 Oct 2024 20:35:44 +0700 Subject: [PATCH 04/29] Idaho Income Tax Rate 2024 Fixes #5193 --- changelog_entry.yaml | 4 ++++ .../gov/states/id/tax/income/main/head_of_household.yaml | 7 ++++++- .../parameters/gov/states/id/tax/income/main/joint.yaml | 7 ++++++- .../parameters/gov/states/id/tax/income/main/separate.yaml | 7 +++++++ .../parameters/gov/states/id/tax/income/main/single.yaml | 6 ++++++ .../parameters/gov/states/id/tax/income/main/widow.yaml | 6 ++++++ 6 files changed, 35 insertions(+), 2 deletions(-) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..7998721978a 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Idaho 2024 income tax rate and brackets. diff --git a/policyengine_us/parameters/gov/states/id/tax/income/main/head_of_household.yaml b/policyengine_us/parameters/gov/states/id/tax/income/main/head_of_household.yaml index 848a3ddc6ca..8ca4bf10bf7 100644 --- a/policyengine_us/parameters/gov/states/id/tax/income/main/head_of_household.yaml +++ b/policyengine_us/parameters/gov/states/id/tax/income/main/head_of_household.yaml @@ -19,6 +19,10 @@ metadata: # The Head of household filing status is treated as married - title: IDAHO STATUTES, TITLE 63, CHAPTER 30, SECTION 63-3024(2)(b) href: https://legislature.idaho.gov/statutesrules/idstat/title63/t63ch30/sect63-3024/#:~:text=(b)%20For%20taxpayers%20filing%20a,five%20thousand%20dollars%20(%245%2C000) + # Bill to udpate the structure post 2024 + - title: HOUSE BILL NO. 521 63-3024 (2) + href: https://tax.idaho.gov/taxes/income-tax/individual-income/individual-income-tax-rate-schedule/ + brackets: - threshold: 2021-01-01: 0 @@ -29,10 +33,12 @@ brackets: 2021-01-01: 3_176 2022-01-01: 3_324 2023-01-01: 8_979 + 2024-01-01: 2_500 rate: 2021-01-01: 0.031 2022-01-01: 0.03 2023-01-01: 0.058 + 2024-01-01: 0.05695 - threshold: 2021-01-01: 9_526 2022-01-01: 9_974 @@ -49,6 +55,5 @@ brackets: - threshold: 2021-01-01: 15_878 2022-01-01: .inf - 2023-01-01: .inf rate: 2021-01-01: 0.065 diff --git a/policyengine_us/parameters/gov/states/id/tax/income/main/joint.yaml b/policyengine_us/parameters/gov/states/id/tax/income/main/joint.yaml index 66a35befb0a..aee156fe487 100644 --- a/policyengine_us/parameters/gov/states/id/tax/income/main/joint.yaml +++ b/policyengine_us/parameters/gov/states/id/tax/income/main/joint.yaml @@ -11,6 +11,10 @@ metadata: href: https://casetext.com/regulation/idaho-administrative-code/title-idapa-35-tax-commission-state/rule-350101-income-tax-administrative-rules/section-350101075-tax-on-individuals-estates-and-trusts - title: IDAHO STATUTES, TITLE 63, CHAPTER 30, SECTION 63-3024 (2)(a) href: https://legislature.idaho.gov/statutesrules/idstat/title63/t63ch30/sect63-3024/ + # Bill to udpate the structure post 2024 + - title: HOUSE BILL NO. 521 63-3024 (2) + href: https://tax.idaho.gov/taxes/income-tax/individual-income/individual-income-tax-rate-schedule/ + brackets: - threshold: 2021-01-01: 0 @@ -21,10 +25,12 @@ brackets: 2021-01-01: 3_176 2022-01-01: 3_324 2023-01-01: 8_979 + 2024-01-01: 5_000 rate: 2021-01-01: 0.031 2022-01-01: 0.03 2023-01-01: 0.058 + 2024-01-01: 0.05695 - threshold: 2021-01-01: 9_526 2022-01-01: 9_974 @@ -41,6 +47,5 @@ brackets: - threshold: 2021-01-01: 15_878 2022-01-01: .inf - 2023-01-01: .inf rate: 2021-01-01: 0.065 diff --git a/policyengine_us/parameters/gov/states/id/tax/income/main/separate.yaml b/policyengine_us/parameters/gov/states/id/tax/income/main/separate.yaml index e64b1350899..afcdb1dc40a 100644 --- a/policyengine_us/parameters/gov/states/id/tax/income/main/separate.yaml +++ b/policyengine_us/parameters/gov/states/id/tax/income/main/separate.yaml @@ -11,6 +11,11 @@ metadata: href: https://casetext.com/regulation/idaho-administrative-code/title-idapa-35-tax-commission-state/rule-350101-income-tax-administrative-rules/section-350101075-tax-on-individuals-estates-and-trusts - title: IDAHO STATUTES, TITLE 63, CHAPTER 30, SECTION 63-3024 (2)(a) href: https://legislature.idaho.gov/statutesrules/idstat/title63/t63ch30/sect63-3024/ + # Bill to udpate the structure post 2024 + - title: HOUSE BILL NO. 521 63-3024 (2) + href: https://tax.idaho.gov/taxes/income-tax/individual-income/individual-income-tax-rate-schedule/ + + brackets: - threshold: 2021-01-01: 0 @@ -21,10 +26,12 @@ brackets: 2021-01-01: 1_588 2022-01-01: 1_662 2023-01-01: 4_490 + 2024-01-01: 2_500 rate: 2021-01-01: 0.031 2022-01-01: 0.03 2023-01-01: 0.058 + 2024-01-01: 0.05695 - threshold: 2021-01-01: 4_763 2022-01-01: 4_987 diff --git a/policyengine_us/parameters/gov/states/id/tax/income/main/single.yaml b/policyengine_us/parameters/gov/states/id/tax/income/main/single.yaml index aca6706e635..312dcb09513 100644 --- a/policyengine_us/parameters/gov/states/id/tax/income/main/single.yaml +++ b/policyengine_us/parameters/gov/states/id/tax/income/main/single.yaml @@ -11,6 +11,10 @@ metadata: href: https://casetext.com/regulation/idaho-administrative-code/title-idapa-35-tax-commission-state/rule-350101-income-tax-administrative-rules/section-350101075-tax-on-individuals-estates-and-trusts - title: IDAHO STATUTES, TITLE 63, CHAPTER 30, SECTION 63-3024 (2)(a) href: https://legislature.idaho.gov/statutesrules/idstat/title63/t63ch30/sect63-3024/ + # Bill to udpate the structure post 2024 + - title: HOUSE BILL NO. 521 63-3024 (2) + href: https://tax.idaho.gov/taxes/income-tax/individual-income/individual-income-tax-rate-schedule/ + brackets: - threshold: 2021-01-01: 0 @@ -21,10 +25,12 @@ brackets: 2021-01-01: 1_588 2022-01-01: 1_662 2023-01-01: 4_490 + 2024-01-01: 2_500 rate: 2021-01-01: 0.031 2022-01-01: 0.03 2023-01-01: 0.058 + 2024-01-01: 0.05695 - threshold: 2021-01-01: 4_763 2022-01-01: 4_987 diff --git a/policyengine_us/parameters/gov/states/id/tax/income/main/widow.yaml b/policyengine_us/parameters/gov/states/id/tax/income/main/widow.yaml index 7698ebc8682..43cb1967911 100644 --- a/policyengine_us/parameters/gov/states/id/tax/income/main/widow.yaml +++ b/policyengine_us/parameters/gov/states/id/tax/income/main/widow.yaml @@ -14,6 +14,10 @@ metadata: # The Widow filing status is treated as married - title: IDAHO STATUTES, TITLE 63, CHAPTER 30, SECTION 63-3024(2)(b) href: https://legislature.idaho.gov/statutesrules/idstat/title63/t63ch30/sect63-3024/#:~:text=(b)%20For%20taxpayers%20filing%20a,five%20thousand%20dollars%20(%245%2C000) + # Bill to udpate the structure post 2024 + - title: HOUSE BILL NO. 521 63-3024 (2) + href: https://tax.idaho.gov/taxes/income-tax/individual-income/individual-income-tax-rate-schedule/ + brackets: - threshold: 2021-01-01: 0 @@ -24,10 +28,12 @@ brackets: 2021-01-01: 3_176 2022-01-01: 3_324 2023-01-01: 8_979 + 2024-01-01: 5_000 rate: 2021-01-01: 0.031 2022-01-01: 0.03 2023-01-01: 0.058 + 2024-01-01: 0.05695 - threshold: 2021-01-01: 9_526 2022-01-01: 9_974 From ff56fe9bbfd122c01a473517dd435831a4f0077e Mon Sep 17 00:00:00 2001 From: Pavel Makarchuk <110687043+PavelMakarchuk@users.noreply.github.com> Date: Tue, 15 Oct 2024 02:07:33 +0700 Subject: [PATCH 05/29] Missouri Income Tax Rates 2024 (#5212) Fixes #5204 --- changelog_entry.yaml | 4 ++++ .../states/mo/tax/income/minimum_taxable_income.yaml | 3 +++ .../parameters/gov/states/mo/tax/income/rates.yaml | 12 +++++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..ea80949c197 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Missouri 2024 income tax rate and brackets. diff --git a/policyengine_us/parameters/gov/states/mo/tax/income/minimum_taxable_income.yaml b/policyengine_us/parameters/gov/states/mo/tax/income/minimum_taxable_income.yaml index 2c967ca9a3f..4bb9c57b743 100644 --- a/policyengine_us/parameters/gov/states/mo/tax/income/minimum_taxable_income.yaml +++ b/policyengine_us/parameters/gov/states/mo/tax/income/minimum_taxable_income.yaml @@ -7,6 +7,7 @@ values: 2021-01-01: 108 2022-01-01: 111 2023-01-01: 1_207 + 2024-01-01: 1_273 metadata: reference: - title: Missouri Legal Code | 143.021. Tax determined by rates in section 143.011 — no tax on taxable income, when. @@ -25,6 +26,8 @@ metadata: href: https://dor.mo.gov/forms/MO-1040%20Instructions_2018.pdf#page=20 - title: 2017 Individual Income Tax Long Form MO-1040 Instructions href: https://dor.mo.gov/forms/MO-1040%20Instructions_2017.pdf#page=20 + - title: 2024 Missouri Withholding Tax Formula + href: https://dor.mo.gov/forms/Withholding%20Formula_2024.pdf#page=2 label: Missouri minimum taxable income unit: currency-USD period: year diff --git a/policyengine_us/parameters/gov/states/mo/tax/income/rates.yaml b/policyengine_us/parameters/gov/states/mo/tax/income/rates.yaml index 692a9cc4d1e..b928d9a59d5 100644 --- a/policyengine_us/parameters/gov/states/mo/tax/income/rates.yaml +++ b/policyengine_us/parameters/gov/states/mo/tax/income/rates.yaml @@ -8,7 +8,7 @@ brackets: uprating: gov.irs.uprating rate: 2019-01-01: 0.015 - 2023-01-01: 0.00 + 2023-01-01: 0 - threshold: values: 2019-01-01: 1_053 @@ -16,6 +16,7 @@ brackets: 2021-01-01: 1_088 2022-01-01: 1_121 2023-01-01: 1_207 + 2024-01-01: 1_273 metadata: uprating: gov.irs.uprating rate: @@ -27,6 +28,7 @@ brackets: 2021-01-01: 2_176 2022-01-01: 2_242 2023-01-01: 2_414 + 2024-01-01: 2_546 metadata: uprating: gov.irs.uprating rate: @@ -38,6 +40,7 @@ brackets: 2021-01-01: 3_264 2022-01-01: 3_363 2023-01-01: 3_621 + 2024-01-01: 3_819 metadata: uprating: gov.irs.uprating rate: @@ -49,6 +52,7 @@ brackets: 2021-01-01: 4_352 2022-01-01: 4_484 2023-01-01: 4_828 + 2024-01-01: 5_092 metadata: uprating: gov.irs.uprating rate: @@ -60,6 +64,7 @@ brackets: 2021-01-01: 5_440 2022-01-01: 5_605 2023-01-01: 6_035 + 2024-01-01: 6_365 metadata: uprating: gov.irs.uprating rate: @@ -71,6 +76,7 @@ brackets: 2021-01-01: 6_528 2022-01-01: 6_726 2023-01-01: 7_242 + 2024-01-01: 7_638 metadata: uprating: gov.irs.uprating rate: @@ -82,6 +88,7 @@ brackets: 2021-01-01: 7_616 2022-01-01: 7_847 2023-01-01: 8_449 + 2024-01-01: 8_911 metadata: uprating: gov.irs.uprating rate: @@ -100,6 +107,7 @@ brackets: 2019-01-01: 0.054 2022-01-01: 0.053 2023-01-01: 0.0495 + 2024-01-01: 0.048 metadata: reference: @@ -113,6 +121,8 @@ metadata: href: https://dor.mo.gov/forms/MO-1040%20Instructions_2022.pdf#page=26 - title: Missouri Legal Code, Chapter 143.011. Resident individuals — tax rates — rate reductions, when. href: https://revisor.mo.gov/main/OneSection.aspx?section=143.011&bid=51511&hl= + - title: 2024 Missouri Withholding Tax Formula + href: https://dor.mo.gov/forms/Withholding%20Formula_2024.pdf#page=2 label: Missouri resident individual tax rates type: marginal_rate threshold_unit: currency-USD From fd68cb64e1ee2cfc3cb3c83941f2f4813025ed9b Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Mon, 14 Oct 2024 19:11:29 +0000 Subject: [PATCH 06/29] Update PolicyEngine US --- CHANGELOG.md | 7 +++++++ changelog.yaml | 5 +++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68b18bfc4dc..290f226d484 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.116.0] - 2024-10-14 19:08:02 + +### Added + +- Missouri 2024 income tax rate and brackets. + ## [1.115.0] - 2024-10-09 15:10:16 ## [1.114.0] - 2024-10-09 11:09:17 @@ -9951,6 +9957,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[1.116.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.115.0...1.116.0 [1.115.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.114.0...1.115.0 [1.114.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.113.0...1.114.0 [1.113.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.112.0...1.113.0 diff --git a/changelog.yaml b/changelog.yaml index 56abe6288ec..5bd1895d2dd 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -8436,3 +8436,8 @@ changes: - Updated to PolicyEngine US Data v1.11. date: 2024-10-09 15:10:16 +- bump: minor + changes: + added: + - Missouri 2024 income tax rate and brackets. + date: 2024-10-14 19:08:02 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index ea80949c197..e69de29bb2d 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: minor - changes: - added: - - Missouri 2024 income tax rate and brackets. diff --git a/setup.py b/setup.py index ca0a82459c6..0404ba6ea2d 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup( name="policyengine-us", - version="1.115.0", + version="1.116.0", author="PolicyEngine", author_email="hello@policyengine.org", long_description=readme, From 8d3a50234fdf9bc48da7852e938621f11117a7a1 Mon Sep 17 00:00:00 2001 From: Pavel Makarchuk <110687043+PavelMakarchuk@users.noreply.github.com> Date: Tue, 15 Oct 2024 02:22:17 +0700 Subject: [PATCH 07/29] Harris capital gains tax reform (#5222) * Harris capital gains tax reform Fixes #5203 * format * Update policyengine_us/parameters/gov/contrib/harris/capital_gains/in_effect.yaml * Update policyengine_us/parameters/gov/contrib/harris/capital_gains/in_effect.yaml * Update policyengine_us/parameters/gov/contrib/harris/capital_gains/in_effect.yaml * Update policyengine_us/parameters/gov/contrib/harris/capital_gains/in_effect.yaml --------- Co-authored-by: Max Ghenis --- changelog_entry.yaml | 4 + .../harris/capital_gains/brackets.yaml | 194 ++++++++++++++++++ .../harris/capital_gains/in_effect.yaml | 11 + .../reforms/harris/capital_gains/__init__.py | 3 + .../capital_gains/harris_capital_gains.py | 144 +++++++++++++ policyengine_us/reforms/reforms.py | 7 + .../capital_gains/harris_capital_gains.yaml | 87 ++++++++ 7 files changed, 450 insertions(+) create mode 100644 policyengine_us/parameters/gov/contrib/harris/capital_gains/brackets.yaml create mode 100644 policyengine_us/parameters/gov/contrib/harris/capital_gains/in_effect.yaml create mode 100644 policyengine_us/reforms/harris/capital_gains/__init__.py create mode 100644 policyengine_us/reforms/harris/capital_gains/harris_capital_gains.py create mode 100644 policyengine_us/tests/policy/contrib/harris/capital_gains/harris_capital_gains.yaml diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..4b115d24fbb 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Harris capital gains tax reform. diff --git a/policyengine_us/parameters/gov/contrib/harris/capital_gains/brackets.yaml b/policyengine_us/parameters/gov/contrib/harris/capital_gains/brackets.yaml new file mode 100644 index 00000000000..de6853ab8c4 --- /dev/null +++ b/policyengine_us/parameters/gov/contrib/harris/capital_gains/brackets.yaml @@ -0,0 +1,194 @@ +description: Harris proposed to tax capital gains at the following rates. +rates: + description: Long term capital gain and qualified dividends (regular/non-AMT) rate + 1: + 2013-01-01: 0 + 2: + 2013-01-01: 0.15 + 3: + 2013-01-01: 0.2 + 4: + 2013-01-01: 0.28 + metadata: + unit: /1 +thresholds: + description: Top thresholds of long-term capital gains and qualified dividends (regular/non-AMT) tax brackets + metadata: + unit: currency-USD + period: year + reference: + - title: 2024 IRS data release + href: https://www.irs.gov/pub/irs-drop/rp-23-34.pdf#page=8 + - title: 2023 IRS data release + href: https://www.irs.gov/pub/irs-drop/rp-22-38.pdf#page=8 + - title: 2022 IRS data release + href: https://www.irs.gov/pub/irs-drop/rp-21-45.pdf#page=8 + - title: 2021 IRS data release + href: https://www.irs.gov/pub/irs-drop/rp-20-45.pdf#page=8 + - title: 2020 IRS data release + href: https://www.irs.gov/pub/irs-drop/rp-19-44.pdf#page=8 + - title: 2019 IRS data release + href: https://www.irs.gov/pub/irs-drop/rp-18-57.pdf#page=8 + - title: Internal Revenue Code §1(j)(5)(B) + # IRC defines amounts as of 2018. + # Defines COLA with rounded up to the nearest multiple of $50. + href: https://www.law.cornell.edu/uscode/text/26/1#j_5_B + 1: + HEAD_OF_HOUSEHOLD: + values: + 2013-01-01: 48_600 + 2014-01-01: 49_400 + 2015-01-01: 50_200 + 2016-01-01: 50_400 + 2017-01-01: 50_800 + 2018-01-01: 51_700 + 2019-01-01: 52_750 + 2020-01-01: 53_600 + 2021-01-01: 54_100 + 2022-01-01: 55_800 + 2023-01-01: 59_750 + 2024-01-01: 63_000 + JOINT: + values: + 2013-01-01: 72_500 + 2014-01-01: 73_800 + 2015-01-01: 74_900 + 2016-01-01: 75_300 + 2017-01-01: 75_900 + 2018-01-01: 77_200 + 2019-01-01: 78_750 + 2020-01-01: 80_000 + 2021-01-01: 80_800 + 2022-01-01: 83_350 + 2023-01-01: 89_250 + 2024-01-01: 94_050 + SEPARATE: + values: + 2013-01-01: 36_250 + 2014-01-01: 36_900 + 2015-01-01: 37_450 + 2016-01-01: 37_650 + 2017-01-01: 37_950 + 2018-01-01: 38_600 + 2019-01-01: 39_375 + 2020-01-01: 40_000 + 2021-01-01: 40_400 + 2022-01-01: 41_675 + 2023-01-01: 44_625 + 2024-01-01: 47_025 + SINGLE: + values: + 2013-01-01: 36_250 + 2014-01-01: 36_900 + 2015-01-01: 37_450 + 2016-01-01: 37_650 + 2017-01-01: 37_950 + 2018-01-01: 38_600 + 2019-01-01: 39_375 + 2020-01-01: 40_000 + 2021-01-01: 40_400 + 2022-01-01: 41_675 + 2023-01-01: 44_625 + 2024-01-01: 47_025 + SURVIVING_SPOUSE: + values: + 2013-01-01: 72_500 + 2014-01-01: 73_800 + 2015-01-01: 74_900 + 2016-01-01: 75_300 + 2017-01-01: 75_900 + 2018-01-01: 77_200 + 2019-01-01: 78_750 + 2020-01-01: 80_000 + 2021-01-01: 80_800 + 2022-01-01: 83_350 + 2023-01-01: 89_250 + 2024-01-01: 94_050 + 2: + HEAD_OF_HOUSEHOLD: + values: + 2013-01-01: 425_000 + 2014-01-01: 432_200 + 2015-01-01: 439_000 + 2016-01-01: 441_000 + 2017-01-01: 444_550 + 2018-01-01: 452_400 + 2019-01-01: 461_700 + 2020-01-01: 469_050 + 2021-01-01: 473_750 + 2022-01-01: 488_500 + 2023-01-01: 523_050 + 2024-01-01: 551_350 + JOINT: + values: + 2013-01-01: 450_000 + 2014-01-01: 457_600 + 2015-01-01: 464_850 + 2016-01-01: 466_950 + 2017-01-01: 470_700 + 2018-01-01: 479_000 + 2019-01-01: 488_850 + 2020-01-01: 496_600 + 2021-01-01: 501_600 + 2022-01-01: 517_200 + 2023-01-01: 553_850 + 2024-01-01: 583_750 + SEPARATE: + values: + 2013-01-01: 225_000 + 2014-01-01: 228_800 + 2015-01-01: 232_425 + 2016-01-01: 233_475 + 2017-01-01: 235_350 + 2018-01-01: 239_500 + 2019-01-01: 244_425 + 2020-01-01: 248_300 + 2021-01-01: 250_800 + 2022-01-01: 258_600 + 2023-01-01: 276_900 + 2024-01-01: 291_850 + SINGLE: + values: + 2013-01-01: 400_000 + 2014-01-01: 406_750 + 2015-01-01: 413_200 + 2016-01-01: 415_050 + 2017-01-01: 418_400 + 2018-01-01: 425_800 + 2019-01-01: 434_550 + 2020-01-01: 441_450 + 2021-01-01: 445_850 + 2022-01-01: 459_750 + 2023-01-01: 492_300 + 2024-01-01: 518_900 + SURVIVING_SPOUSE: + values: + 2013-01-01: 450_000 + 2014-01-01: 457_600 + 2015-01-01: 464_850 + 2016-01-01: 466_950 + 2017-01-01: 470_700 + 2018-01-01: 479_000 + 2019-01-01: 488_850 + 2020-01-01: 496_600 + 2021-01-01: 501_600 + 2022-01-01: 517_200 + 2023-01-01: 553_850 + 2024-01-01: 583_750 + + 3: + HEAD_OF_HOUSEHOLD: + values: + 2013-01-01: 1_000_000 + JOINT: + values: + 2013-01-01: 1_000_000 + SEPARATE: + values: + 2013-01-01: 1_000_000 + SINGLE: + values: + 2013-01-01: 1_000_000 + SURVIVING_SPOUSE: + values: + 2013-01-01: 1_000_000 diff --git a/policyengine_us/parameters/gov/contrib/harris/capital_gains/in_effect.yaml b/policyengine_us/parameters/gov/contrib/harris/capital_gains/in_effect.yaml new file mode 100644 index 00000000000..90069230bd6 --- /dev/null +++ b/policyengine_us/parameters/gov/contrib/harris/capital_gains/in_effect.yaml @@ -0,0 +1,11 @@ +description: Vice President Kamala Harris has proposed to add a top capital gains tax bracket, which comes into effect if this is true. +metadata: + unit: bool + period: year + label: Harris capital gains tax reform in effect + reference: + - title: A New Way Forward for the Middle Class + href: https://kamalaharris.com/wp-content/uploads/2024/09/Policy_Book_Economic-Opportunity.pdf#page=73 + +values: + 0000-01-01: false diff --git a/policyengine_us/reforms/harris/capital_gains/__init__.py b/policyengine_us/reforms/harris/capital_gains/__init__.py new file mode 100644 index 00000000000..268bf91862b --- /dev/null +++ b/policyengine_us/reforms/harris/capital_gains/__init__.py @@ -0,0 +1,3 @@ +from .harris_capital_gains import ( + create_harris_capital_gains_reform, +) diff --git a/policyengine_us/reforms/harris/capital_gains/harris_capital_gains.py b/policyengine_us/reforms/harris/capital_gains/harris_capital_gains.py new file mode 100644 index 00000000000..f97815a599d --- /dev/null +++ b/policyengine_us/reforms/harris/capital_gains/harris_capital_gains.py @@ -0,0 +1,144 @@ +from policyengine_us.model_api import * + + +def create_harris_capital_gains() -> Reform: + class capital_gains_tax(Variable): + value_type = float + entity = TaxUnit + label = "Maximum income tax after capital gains tax" + unit = USD + definition_period = YEAR + + def formula(tax_unit, period, parameters): + net_cg = tax_unit("net_capital_gain", period) + taxable_income = tax_unit("taxable_income", period) + adjusted_net_cg = min_( + tax_unit("adjusted_net_capital_gain", period), + taxable_income, + ) # ANCG is referred to in all cases as ANCG or taxable income if less. + + cg = parameters(period).gov.irs.capital_gains + + p_ref = parameters(period).gov.contrib.harris.capital_gains + + excluded_cg = tax_unit( + "capital_gains_excluded_from_taxable_income", period + ) + non_cg_taxable_income = max_(0, taxable_income - excluded_cg) + income_less_ancg = max_(0, taxable_income - adjusted_net_cg) + + filing_status = tax_unit("filing_status", period) + + first_threshold = p_ref.brackets.thresholds["1"][filing_status] + second_threshold = p_ref.brackets.thresholds["2"][filing_status] + third_threshold = p_ref.brackets.thresholds["3"][filing_status] + + income_ordinarily_under_second_rate = clip( + taxable_income, 0, first_threshold + ) + cg_in_first_bracket = max_( + 0, income_ordinarily_under_second_rate - income_less_ancg + ) + + income_ordinarily_under_third_rate = clip( + taxable_income, 0, second_threshold + ) + cg_in_second_bracket = min_( + max_(0, adjusted_net_cg - cg_in_first_bracket), + max_( + 0, + income_ordinarily_under_third_rate + - (non_cg_taxable_income + cg_in_first_bracket), + ), + ) + income_ordinarily_under_fourth_rate = clip( + taxable_income, 0, third_threshold + ) + + cg_in_third_bracket = min_( + max_( + 0, + adjusted_net_cg + - cg_in_first_bracket + - cg_in_second_bracket, + ), + max_( + 0, + income_ordinarily_under_fourth_rate + - ( + non_cg_taxable_income + + cg_in_first_bracket + + cg_in_second_bracket + ), + ), + ) + + cg_in_fourth_bracket = max_( + adjusted_net_cg + - cg_in_first_bracket + - cg_in_second_bracket + - cg_in_third_bracket, + 0, + ) + + main_cg_tax = ( + cg_in_first_bracket * p_ref.brackets.rates["1"] + + cg_in_second_bracket * p_ref.brackets.rates["2"] + + cg_in_third_bracket * p_ref.brackets.rates["3"] + + cg_in_fourth_bracket * p_ref.brackets.rates["4"] + ) + + unrecaptured_s_1250_gain = tax_unit( + "unrecaptured_section_1250_gain", period + ) + qualified_dividends = add( + tax_unit, period, ["qualified_dividend_income"] + ) + max_taxable_unrecaptured_gain = min_( + unrecaptured_s_1250_gain, + max_(0, net_cg - qualified_dividends), + ) + unrecaptured_gain_deduction = max_( + non_cg_taxable_income + net_cg - taxable_income, + 0, + ) + taxable_unrecaptured_gain = max_( + max_taxable_unrecaptured_gain - unrecaptured_gain_deduction, + 0, + ) + + unrecaptured_gain_tax = ( + cg.unrecaptured_s_1250_rate * taxable_unrecaptured_gain + ) + + remaining_cg_tax = ( + tax_unit("capital_gains_28_percent_rate_gain", period) + * cg.other_cg_rate + ) + + return main_cg_tax + unrecaptured_gain_tax + remaining_cg_tax + + class reform(Reform): + def apply(self): + self.update_variable(capital_gains_tax) + + return reform + + +def create_harris_capital_gains_reform( + parameters, period, bypass: bool = False +): + if bypass: + return create_harris_capital_gains() + + p = parameters(period).gov.contrib.harris.capital_gains + + if p.in_effect: + return create_harris_capital_gains() + else: + return None + + +harris_capital_gains = create_harris_capital_gains_reform( + None, None, bypass=True +) diff --git a/policyengine_us/reforms/reforms.py b/policyengine_us/reforms/reforms.py index 7e392e4080f..890279dd6a7 100644 --- a/policyengine_us/reforms/reforms.py +++ b/policyengine_us/reforms/reforms.py @@ -50,6 +50,9 @@ from .treasury.repeal_dependent_exemptions import ( create_repeal_dependent_exemptions_reform, ) +from .harris.capital_gains import ( + create_harris_capital_gains_reform, +) from policyengine_core.reforms import Reform import warnings @@ -120,6 +123,9 @@ def create_structural_reforms_from_parameters(parameters, period): repeal_dependent_exemptions = create_repeal_dependent_exemptions_reform( parameters, period ) + harris_capital_gains = create_harris_capital_gains_reform( + parameters, period + ) reforms = [ afa_reform, @@ -146,6 +152,7 @@ def create_structural_reforms_from_parameters(parameters, period): family_security_act_2024_ctc, family_security_act_2024_eitc, repeal_dependent_exemptions, + harris_capital_gains, ] reforms = tuple(filter(lambda x: x is not None, reforms)) diff --git a/policyengine_us/tests/policy/contrib/harris/capital_gains/harris_capital_gains.yaml b/policyengine_us/tests/policy/contrib/harris/capital_gains/harris_capital_gains.yaml new file mode 100644 index 00000000000..941c3c742bc --- /dev/null +++ b/policyengine_us/tests/policy/contrib/harris/capital_gains/harris_capital_gains.yaml @@ -0,0 +1,87 @@ +- name: Reform applied and income above new threshold + period: 2024 + reforms: policyengine_us.reforms.harris.capital_gains.harris_capital_gains.harris_capital_gains + input: + gov.contrib.harris.capital_gains.in_effect: true + people: + head: + age: 36 + qualified_dividend_income: 0 + long_term_capital_gains: 80_000 + spouse: + age: 36 + qualified_dividend_income: 120_000 + long_term_capital_gains: 0 + tax_units: + tax_unit: + members: [head, spouse] + taxable_income: 1_100_000 + filing_status: JOINT + output: + capital_gains_tax: 48_000 + +- name: Reform not applied + period: 2024 + input: + # Household. + people: + head: + age: 36 + qualified_dividend_income: 0 + long_term_capital_gains: 80_000 + spouse: + age: 36 + qualified_dividend_income: 120_000 + long_term_capital_gains: 0 + tax_units: + tax_unit: + members: [head, spouse] + taxable_income: 1_100_000 + filing_status: JOINT + output: + # 200,000 taxed at 20% + capital_gains_tax: 40_000 + +- name: Reform applied but income below new threshold + period: 2024 + reforms: policyengine_us.reforms.harris.capital_gains.harris_capital_gains.harris_capital_gains + input: + gov.contrib.harris.capital_gains.in_effect: true + people: + head: + age: 36 + qualified_dividend_income: 0 + long_term_capital_gains: 80_000 + spouse: + age: 36 + qualified_dividend_income: 120_000 + long_term_capital_gains: 0 + tax_units: + tax_unit: + members: [head, spouse] + taxable_income: 100_000 + filing_status: JOINT + output: + capital_gains_tax: 892.5 + +- name: Reform not applied but income below new threshold + period: 2024 + reforms: policyengine_us.reforms.harris.capital_gains.harris_capital_gains.harris_capital_gains + input: + gov.contrib.harris.capital_gains.in_effect: true + people: + head: + age: 36 + qualified_dividend_income: 0 + long_term_capital_gains: 80_000 + spouse: + age: 36 + qualified_dividend_income: 120_000 + long_term_capital_gains: 0 + tax_units: + tax_unit: + members: [head, spouse] + taxable_income: 100_000 + filing_status: JOINT + output: + capital_gains_tax: 892.5 From 7517198a960c0b34495437867ab6559cdf9208ff Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Mon, 14 Oct 2024 19:26:04 +0000 Subject: [PATCH 08/29] Update PolicyEngine US --- CHANGELOG.md | 7 +++++++ changelog.yaml | 5 +++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 290f226d484..1d7f7cf87c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.117.0] - 2024-10-14 19:22:35 + +### Added + +- Harris capital gains tax reform. + ## [1.116.0] - 2024-10-14 19:08:02 ### Added @@ -9957,6 +9963,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[1.117.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.116.0...1.117.0 [1.116.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.115.0...1.116.0 [1.115.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.114.0...1.115.0 [1.114.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.113.0...1.114.0 diff --git a/changelog.yaml b/changelog.yaml index 5bd1895d2dd..62e4ff86983 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -8441,3 +8441,8 @@ added: - Missouri 2024 income tax rate and brackets. date: 2024-10-14 19:08:02 +- bump: minor + changes: + added: + - Harris capital gains tax reform. + date: 2024-10-14 19:22:35 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 4b115d24fbb..e69de29bb2d 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: minor - changes: - added: - - Harris capital gains tax reform. diff --git a/setup.py b/setup.py index 0404ba6ea2d..2c7f60b6d98 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup( name="policyengine-us", - version="1.116.0", + version="1.117.0", author="PolicyEngine", author_email="hello@policyengine.org", long_description=readme, From a11346cd2f44095baccc4e796b91e34d2caac10c Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Mon, 14 Oct 2024 16:30:06 -0400 Subject: [PATCH 09/29] Kentucky Standard Deduction 2024 & 2025 ($3,160 -> $3,270) (#5227) Fixes #5214 --- changelog_entry.yaml | 4 ++++ .../gov/states/ky/tax/income/deductions/standard.yaml | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..6c85246f1b6 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Kentucky Standard Deduction 2024 & 2025. diff --git a/policyengine_us/parameters/gov/states/ky/tax/income/deductions/standard.yaml b/policyengine_us/parameters/gov/states/ky/tax/income/deductions/standard.yaml index 9f96df11fa6..f1a2a2ebba5 100644 --- a/policyengine_us/parameters/gov/states/ky/tax/income/deductions/standard.yaml +++ b/policyengine_us/parameters/gov/states/ky/tax/income/deductions/standard.yaml @@ -3,6 +3,8 @@ values: 2021-01-01: 2_690 2022-01-01: 2_770 2023-01-01: 2_980 + 2024-01-01: 3_160 + 2025-01-01: 3_270 metadata: uprating: gov.irs.uprating # legal code does not include any rounding language label: Kentucky standard deduction amount @@ -18,3 +20,7 @@ metadata: href: https://revenue.ky.gov/Forms/Form%20740%205-9-23.pdf - title: 2021 KENTUCKY Form 740 href: https://www.taxformfinder.org/forms/2021/2021-kentucky-form-740.pdf + - title: 2024 KENTUCKY Standard Deduction Press Release + href: https://revenue.ky.gov/News/Pages/DOR-Announces-Updates-to-Individual-Income-Tax-for-2024-Tax-Year.aspx + - title: 2025 KENTUCKY Standard Deduction Press Release + href: https://revenue.ky.gov/News/Pages/Kentucky-DOR-Announces-2025-Standard-Deduction.aspx From 94fc0cc67831f7d2312d86333162b47382edcc7d Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Mon, 14 Oct 2024 20:33:51 +0000 Subject: [PATCH 10/29] Update PolicyEngine US --- CHANGELOG.md | 7 +++++++ changelog.yaml | 5 +++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d7f7cf87c8..6f23c0040f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.118.0] - 2024-10-14 20:30:24 + +### Added + +- Kentucky Standard Deduction 2024 & 2025. + ## [1.117.0] - 2024-10-14 19:22:35 ### Added @@ -9963,6 +9969,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[1.118.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.117.0...1.118.0 [1.117.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.116.0...1.117.0 [1.116.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.115.0...1.116.0 [1.115.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.114.0...1.115.0 diff --git a/changelog.yaml b/changelog.yaml index 62e4ff86983..8a2717047de 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -8446,3 +8446,8 @@ added: - Harris capital gains tax reform. date: 2024-10-14 19:22:35 +- bump: minor + changes: + added: + - Kentucky Standard Deduction 2024 & 2025. + date: 2024-10-14 20:30:24 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 6c85246f1b6..e69de29bb2d 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: minor - changes: - added: - - Kentucky Standard Deduction 2024 & 2025. diff --git a/setup.py b/setup.py index 2c7f60b6d98..a8be0e37de9 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup( name="policyengine-us", - version="1.117.0", + version="1.118.0", author="PolicyEngine", author_email="hello@policyengine.org", long_description=readme, From 147cc0562145945484f582c5750027a401a3ec42 Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Mon, 14 Oct 2024 16:54:55 -0400 Subject: [PATCH 11/29] Fixes #5215 (#5228) Fixes #5216 Fixes #5217 --- changelog_entry.yaml | 4 ++++ .../states/ca/tax/income/credits/renter/income_cap.yaml | 7 +++++++ .../states/ca/tax/income/deductions/standard/amount.yaml | 7 +++++++ .../gov/states/ca/tax/income/exemptions/amount.yaml | 3 +++ .../states/ca/tax/income/exemptions/dependent_amount.yaml | 3 +++ 5 files changed, 24 insertions(+) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..c46fcd55df0 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - California Standard Deduction, Personal/Dependent Exemption Credits and Renter AGI Cap 2024. diff --git a/policyengine_us/parameters/gov/states/ca/tax/income/credits/renter/income_cap.yaml b/policyengine_us/parameters/gov/states/ca/tax/income/credits/renter/income_cap.yaml index f2ef1938d37..b4eb60c749e 100644 --- a/policyengine_us/parameters/gov/states/ca/tax/income/credits/renter/income_cap.yaml +++ b/policyengine_us/parameters/gov/states/ca/tax/income/credits/renter/income_cap.yaml @@ -3,22 +3,27 @@ SINGLE: 2021-01-01: 45_448 2022-01-01: 49_220 2023-01-01: 50_746 + 2024-01-01: 52_421 SEPARATE: 2021-01-01: 45_448 2022-01-01: 49_220 2023-01-01: 50_746 + 2024-01-01: 52_421 SURVIVING_SPOUSE: 2021-01-01: 90_896 2022-01-01: 98_440 2023-01-01: 101_492 + 2024-01-01: 104_842 JOINT: 2021-01-01: 90_896 2022-01-01: 98_440 2023-01-01: 101_492 + 2024-01-01: 104_842 HEAD_OF_HOUSEHOLD: 2021-01-01: 90_896 2022-01-01: 98_440 2023-01-01: 101_492 + 2024-01-01: 104_842 metadata: period: year @@ -38,4 +43,6 @@ metadata: href: https://www.ftb.ca.gov/forms/2022/2022-540-booklet.html - title: 2023 California Form 540 instructions href: https://www.ftb.ca.gov/forms/2023/2023-540-booklet.html + - title: 2024 California Indexing Form + href: https://www.ftb.ca.gov/about-ftb/newsroom/tax-news/index.html#article1 economy: false diff --git a/policyengine_us/parameters/gov/states/ca/tax/income/deductions/standard/amount.yaml b/policyengine_us/parameters/gov/states/ca/tax/income/deductions/standard/amount.yaml index 5d21e4a248e..d686d07c56a 100644 --- a/policyengine_us/parameters/gov/states/ca/tax/income/deductions/standard/amount.yaml +++ b/policyengine_us/parameters/gov/states/ca/tax/income/deductions/standard/amount.yaml @@ -13,6 +13,8 @@ metadata: href: https://www.ftb.ca.gov/forms/2022/2022-540.pdf#page=2 - title: 2023 Form 540 California Resident Income Tax Return href: https://www.ftb.ca.gov/forms/2023/2023-540.pdf#page=2 + - title: 2024 California Indexing Form + href: https://www.ftb.ca.gov/about-ftb/newsroom/tax-news/index.html#article1 # The legal code provides the inflation unadjusted amount - title: Cal. Rev. & Tax. Code § 17073.5 href: https://casetext.com/statute/california-codes/california-revenue-and-taxation-code/division-2-other-taxes/part-10-personal-income-tax/chapter-3-computation-of-taxable-income/article-1-definition-of-gross-income-adjusted-gross-income-taxable-income-etc/section-170735-standard-deduction?searchWithin=true&listingIndexId=california-codes.california-revenue-and-taxation-code.division-2-other-taxes.part-10-personal-income-tax @@ -21,19 +23,24 @@ JOINT: 2021-01-01: 9_606 2022-01-01: 10_404 2023-01-01: 10_726 + 2024-01-01: 11_080 HEAD_OF_HOUSEHOLD: 2021-01-01: 9_606 2022-01-01: 10_404 2023-01-01: 10_726 + 2024-01-01: 11_080 SURVIVING_SPOUSE: 2021-01-01: 9_606 2022-01-01: 10_404 2023-01-01: 10_726 + 2024-01-01: 11_080 SINGLE: 2021-01-01: 4_803 2022-01-01: 5_202 2023-01-01: 5_363 + 2024-01-01: 5_540 SEPARATE: 2021-01-01: 4_803 2022-01-01: 5_202 2023-01-01: 5_363 + 2024-01-01: 5_540 diff --git a/policyengine_us/parameters/gov/states/ca/tax/income/exemptions/amount.yaml b/policyengine_us/parameters/gov/states/ca/tax/income/exemptions/amount.yaml index 649b151153b..c6e43154941 100644 --- a/policyengine_us/parameters/gov/states/ca/tax/income/exemptions/amount.yaml +++ b/policyengine_us/parameters/gov/states/ca/tax/income/exemptions/amount.yaml @@ -4,6 +4,7 @@ values: 2021-01-01: 129 2022-01-01: 140 2023-01-01: 144 + 2024-01-01: 149 metadata: period: year @@ -17,6 +18,8 @@ metadata: href: https://www.ftb.ca.gov/forms/2022/2022-540.pdf#page=1 - title: 2023 Form 540 California Resident Income Tax Return href: https://www.ftb.ca.gov/forms/2023/2023-540.pdf#page=1 + - title: 2024 California Indexing Form + href: https://www.ftb.ca.gov/about-ftb/newsroom/tax-news/index.html#article1 - title: Cal. Rev. & Tax. Code § 17054 href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?sectionNum=17054.&nodeTreePath=3.20.2&lawCode=RTC # Index according to federal tax parameter rules until we add California CPI trend. diff --git a/policyengine_us/parameters/gov/states/ca/tax/income/exemptions/dependent_amount.yaml b/policyengine_us/parameters/gov/states/ca/tax/income/exemptions/dependent_amount.yaml index 614d5704930..37206bc110b 100644 --- a/policyengine_us/parameters/gov/states/ca/tax/income/exemptions/dependent_amount.yaml +++ b/policyengine_us/parameters/gov/states/ca/tax/income/exemptions/dependent_amount.yaml @@ -4,6 +4,7 @@ values: 2021-01-01: 400 2022-01-01: 433 2023-01-01: 446 + 2024-01-01: 461 metadata: period: year @@ -17,6 +18,8 @@ metadata: href: https://www.ftb.ca.gov/forms/2022/2022-540.pdf#page=2 - title: 2023 Form 540 California Resident Income Tax Return href: https://www.ftb.ca.gov/forms/2023/2023-540.pdf#page=2 + - title: 2024 California Indexing Fomr + href: https://www.ftb.ca.gov/about-ftb/newsroom/tax-news/index.html#article1 - title: Cal. Rev. & Tax. Code § 17054 href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?sectionNum=17054.&nodeTreePath=3.20.2&lawCode=RTC # Index according to federal tax parameter rules until we add California CPI trend. From 8d9e92e5496d4ec9f663db4263cb1a78593bc2cb Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Mon, 14 Oct 2024 20:58:39 +0000 Subject: [PATCH 12/29] Update PolicyEngine US --- CHANGELOG.md | 7 +++++++ changelog.yaml | 6 ++++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f23c0040f2..6004feb2484 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.119.0] - 2024-10-14 20:55:12 + +### Added + +- California Standard Deduction, Personal/Dependent Exemption Credits and Renter AGI Cap 2024. + ## [1.118.0] - 2024-10-14 20:30:24 ### Added @@ -9969,6 +9975,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[1.119.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.118.0...1.119.0 [1.118.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.117.0...1.118.0 [1.117.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.116.0...1.117.0 [1.116.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.115.0...1.116.0 diff --git a/changelog.yaml b/changelog.yaml index 8a2717047de..0c6cb8560ba 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -8451,3 +8451,9 @@ added: - Kentucky Standard Deduction 2024 & 2025. date: 2024-10-14 20:30:24 +- bump: minor + changes: + added: + - California Standard Deduction, Personal/Dependent Exemption Credits and Renter + AGI Cap 2024. + date: 2024-10-14 20:55:12 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index c46fcd55df0..e69de29bb2d 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: minor - changes: - added: - - California Standard Deduction, Personal/Dependent Exemption Credits and Renter AGI Cap 2024. diff --git a/setup.py b/setup.py index a8be0e37de9..7b4efcfb8ed 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup( name="policyengine-us", - version="1.118.0", + version="1.119.0", author="PolicyEngine", author_email="hello@policyengine.org", long_description=readme, From ff81772a9dcc35538ae074d2f7e4a556931cda7f Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Mon, 14 Oct 2024 20:22:58 -0400 Subject: [PATCH 13/29] Fixes #5218 (#5229) Fixes #5219 Fixes #5220 --- changelog_entry.yaml | 4 ++++ .../states/ca/tax/income/rates/head_of_household.yaml | 10 ++++++++++ .../gov/states/ca/tax/income/rates/joint.yaml | 10 ++++++++++ .../gov/states/ca/tax/income/rates/separate.yaml | 10 ++++++++++ .../gov/states/ca/tax/income/rates/single.yaml | 10 ++++++++++ .../states/ca/tax/income/rates/surviving_spouse.yaml | 10 ++++++++++ 6 files changed, 54 insertions(+) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..c16dd6d8e11 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - California Income Tax Thresholds 2024. diff --git a/policyengine_us/parameters/gov/states/ca/tax/income/rates/head_of_household.yaml b/policyengine_us/parameters/gov/states/ca/tax/income/rates/head_of_household.yaml index c57c6c92fc3..d529501b5a2 100644 --- a/policyengine_us/parameters/gov/states/ca/tax/income/rates/head_of_household.yaml +++ b/policyengine_us/parameters/gov/states/ca/tax/income/rates/head_of_household.yaml @@ -9,6 +9,7 @@ brackets: 2021-01-01: 18_663 2022-01-01: 20_212 2023-01-01: 20_839 + 2024-01-01: 21_527 metadata: uprating: gov.states.ca.cpi rate: @@ -18,6 +19,7 @@ brackets: 2021-01-01: 44_217 2022-01-01: 47_887 2023-01-01: 49_371 + 2024-01-01: 51_000 metadata: uprating: gov.states.ca.cpi rate: @@ -27,6 +29,7 @@ brackets: 2021-01-01: 56_999 2022-01-01: 61_730 2023-01-01: 63_644 + 2024-01-01: 65_744 metadata: uprating: gov.states.ca.cpi rate: @@ -36,6 +39,7 @@ brackets: 2021-01-01: 70_542 2022-01-01: 76_397 2023-01-01: 78_765 + 2024-01-01: 81_364 metadata: uprating: gov.states.ca.cpi rate: @@ -45,6 +49,7 @@ brackets: 2021-01-01: 83_324 2022-01-01: 90_240 2023-01-01: 93_037 + 2024-01-01: 96_107 metadata: uprating: gov.states.ca.cpi rate: @@ -54,6 +59,7 @@ brackets: 2021-01-01: 425_251 2022-01-01: 460_547 2023-01-01: 474_824 + 2024-01-01: 490_493 metadata: uprating: gov.states.ca.cpi rate: @@ -63,6 +69,7 @@ brackets: 2021-01-01: 510_303 2022-01-01: 552_658 2023-01-01: 569_790 + 2024-01-01: 588_593 metadata: uprating: gov.states.ca.cpi rate: @@ -72,6 +79,7 @@ brackets: 2021-01-01: 850_503 2022-01-01: 921_059 2023-01-01: 949_649 + 2024-01-01: 980_987 metadata: uprating: gov.states.ca.cpi rate: @@ -90,6 +98,8 @@ metadata: href: https://www.ftb.ca.gov/forms/2022/2022-540-tax-rate-schedules.pdf - title: California Income Tax Rate Schedules for 2023 href: https://www.ftb.ca.gov/forms/2023/2023-540-tax-rate-schedules.pdf + - title: 2024 California Indexing Form + href: https://www.ftb.ca.gov/about-ftb/newsroom/tax-news/index.html#article1 - title: Cal. Rev. & Tax. Code § 17041 href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?sectionNum=17041.&lawCode=RTC # Index according to federal tax parameter rules until we add California CPI trend. diff --git a/policyengine_us/parameters/gov/states/ca/tax/income/rates/joint.yaml b/policyengine_us/parameters/gov/states/ca/tax/income/rates/joint.yaml index baa1820907b..0f0eb19a685 100644 --- a/policyengine_us/parameters/gov/states/ca/tax/income/rates/joint.yaml +++ b/policyengine_us/parameters/gov/states/ca/tax/income/rates/joint.yaml @@ -9,6 +9,7 @@ brackets: 2021-01-01: 18_650 2022-01-01: 20_198 2023-01-01: 20_824 + 2024-01-01: 21_512 metadata: uprating: gov.states.ca.cpi rate: @@ -18,6 +19,7 @@ brackets: 2021-01-01: 44_214 2022-01-01: 47_884 2023-01-01: 49_368 + 2024-01-01: 50_998 metadata: uprating: gov.states.ca.cpi rate: @@ -27,6 +29,7 @@ brackets: 2021-01-01: 69_784 2022-01-01: 75_576 2023-01-01: 77_918 + 2024-01-01: 80_490 metadata: uprating: gov.states.ca.cpi rate: @@ -36,6 +39,7 @@ brackets: 2021-01-01: 96_870 2022-01-01: 104_910 2023-01-01: 108_162 + 2024-01-01: 111_732 metadata: uprating: gov.states.ca.cpi rate: @@ -45,6 +49,7 @@ brackets: 2021-01-01: 122_428 2022-01-01: 132_590 2023-01-01: 136_700 + 2024-01-01: 141_212 metadata: uprating: gov.states.ca.cpi rate: @@ -54,6 +59,7 @@ brackets: 2021-01-01: 625_372 2022-01-01: 677_278 2023-01-01: 698_274 + 2024-01-01: 721_318 metadata: uprating: gov.states.ca.cpi rate: @@ -63,6 +69,7 @@ brackets: 2021-01-01: 750_442 2022-01-01: 812_728 2023-01-01: 837_922 + 2024-01-01: 865_574 metadata: uprating: gov.states.ca.cpi rate: @@ -72,6 +79,7 @@ brackets: 2021-01-01: 1_250_738 2022-01-01: 1_354_550 2023-01-01: 1_396_542 + 2024-01-01: 1_442_628 metadata: uprating: gov.states.ca.cpi rate: @@ -90,6 +98,8 @@ metadata: href: https://www.ftb.ca.gov/forms/2022/2022-540-tax-rate-schedules.pdf - title: California Income Tax Rate Schedules for 2023 href: https://www.ftb.ca.gov/forms/2023/2023-540-tax-rate-schedules.pdf + - title: 2024 California Indexing Form + href: https://www.ftb.ca.gov/about-ftb/newsroom/tax-news/index.html#article1 - title: Cal. Rev. & Tax. Code § 17041 href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?sectionNum=17041.&lawCode=RTC # Index according to federal tax parameter rules until we add California CPI trend. diff --git a/policyengine_us/parameters/gov/states/ca/tax/income/rates/separate.yaml b/policyengine_us/parameters/gov/states/ca/tax/income/rates/separate.yaml index 433d4993284..ebb8ce49d2c 100644 --- a/policyengine_us/parameters/gov/states/ca/tax/income/rates/separate.yaml +++ b/policyengine_us/parameters/gov/states/ca/tax/income/rates/separate.yaml @@ -9,6 +9,7 @@ brackets: 2021-01-01: 9_325 2022-01-01: 10_099 2023-01-01: 10_412 + 2024-01-01: 10_756 metadata: uprating: gov.states.ca.cpi rate: @@ -18,6 +19,7 @@ brackets: 2021-01-01: 22_107 2022-01-01: 23_942 2023-01-01: 24_684 + 2024-01-01: 25_499 metadata: uprating: gov.states.ca.cpi rate: @@ -27,6 +29,7 @@ brackets: 2021-01-01: 34_892 2022-01-01: 37_788 2023-01-01: 38_959 + 2024-01-01: 40_245 metadata: uprating: gov.states.ca.cpi rate: @@ -36,6 +39,7 @@ brackets: 2021-01-01: 48_435 2022-01-01: 52_455 2023-01-01: 54_081 + 2024-01-01: 55_866 metadata: uprating: gov.states.ca.cpi rate: @@ -45,6 +49,7 @@ brackets: 2021-01-01: 61_214 2022-01-01: 66_295 2023-01-01: 68_350 + 2024-01-01: 70_606 metadata: uprating: gov.states.ca.cpi rate: @@ -54,6 +59,7 @@ brackets: 2021-01-01: 312_686 2022-01-01: 338_639 2023-01-01: 349_137 + 2024-01-01: 360_659 metadata: uprating: gov.states.ca.cpi rate: @@ -63,6 +69,7 @@ brackets: 2021-01-01: 375_221 2022-01-01: 406_364 2023-01-01: 418_961 + 2024-01-01: 432_787 metadata: uprating: gov.states.ca.cpi rate: @@ -72,6 +79,7 @@ brackets: 2021-01-01: 625_369 2022-01-01: 677_275 2023-01-01: 698_271 + 2024-01-01: 721_314 metadata: uprating: gov.states.ca.cpi rate: @@ -90,6 +98,8 @@ metadata: href: https://www.ftb.ca.gov/forms/2022/2022-540-tax-rate-schedules.pdf - title: California Income Tax Rate Schedules for 2023 href: https://www.ftb.ca.gov/forms/2023/2023-540-tax-rate-schedules.pdf + - title: 2024 California Indexing Form + href: https://www.ftb.ca.gov/about-ftb/newsroom/tax-news/index.html#article1 - title: Cal. Rev. & Tax. Code § 17041 href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?sectionNum=17041.&lawCode=RTC # Index according to federal tax parameter rules until we add California CPI trend. diff --git a/policyengine_us/parameters/gov/states/ca/tax/income/rates/single.yaml b/policyengine_us/parameters/gov/states/ca/tax/income/rates/single.yaml index 87f892678c0..09eb9e4b5c4 100644 --- a/policyengine_us/parameters/gov/states/ca/tax/income/rates/single.yaml +++ b/policyengine_us/parameters/gov/states/ca/tax/income/rates/single.yaml @@ -9,6 +9,7 @@ brackets: 2021-01-01: 9_325 2022-01-01: 10_099 2023-01-01: 10_412 + 2024-01-01: 10_756 metadata: uprating: gov.states.ca.cpi rate: @@ -18,6 +19,7 @@ brackets: 2021-01-01: 22_107 2022-01-01: 23_942 2023-01-01: 24_684 + 2024-01-01: 25_499 metadata: uprating: gov.states.ca.cpi rate: @@ -27,6 +29,7 @@ brackets: 2021-01-01: 34_892 2022-01-01: 37_788 2023-01-01: 38_959 + 2024-01-01: 40_245 metadata: uprating: gov.states.ca.cpi rate: @@ -36,6 +39,7 @@ brackets: 2021-01-01: 48_435 2022-01-01: 52_455 2023-01-01: 54_081 + 2024-01-01: 55_866 metadata: uprating: gov.states.ca.cpi rate: @@ -45,6 +49,7 @@ brackets: 2021-01-01: 61_214 2022-01-01: 66_295 2023-01-01: 68_350 + 2024-01-01: 70_606 metadata: uprating: gov.states.ca.cpi rate: @@ -54,6 +59,7 @@ brackets: 2021-01-01: 312_686 2022-01-01: 338_639 2023-01-01: 349_137 + 2024-01-01: 360_659 metadata: uprating: gov.states.ca.cpi rate: @@ -63,6 +69,7 @@ brackets: 2021-01-01: 375_221 2022-01-01: 406_364 2023-01-01: 418_961 + 2024-01-01: 432_787 metadata: uprating: gov.states.ca.cpi rate: @@ -72,6 +79,7 @@ brackets: 2021-01-01: 625_369 2022-01-01: 677_275 2023-01-01: 698_271 + 2024-01-01: 721_314 metadata: uprating: gov.states.ca.cpi rate: @@ -90,6 +98,8 @@ metadata: href: https://www.ftb.ca.gov/forms/2022/2022-540-tax-rate-schedules.pdf - title: California Income Tax Rate Schedules for 2023 href: https://www.ftb.ca.gov/forms/2023/2023-540-tax-rate-schedules.pdf + - title: 2024 California Indexing Form + href: https://www.ftb.ca.gov/about-ftb/newsroom/tax-news/index.html#article1 - title: Cal. Rev. & Tax. Code § 17041 href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?sectionNum=17041.&lawCode=RTC # Index according to federal tax parameter rules until we add California CPI trend. diff --git a/policyengine_us/parameters/gov/states/ca/tax/income/rates/surviving_spouse.yaml b/policyengine_us/parameters/gov/states/ca/tax/income/rates/surviving_spouse.yaml index 4173ea7673c..64a9e2b9874 100644 --- a/policyengine_us/parameters/gov/states/ca/tax/income/rates/surviving_spouse.yaml +++ b/policyengine_us/parameters/gov/states/ca/tax/income/rates/surviving_spouse.yaml @@ -9,6 +9,7 @@ brackets: 2021-01-01: 18_650 2022-01-01: 20_198 2023-01-01: 20_824 + 2024-01-01: 21_512 metadata: uprating: gov.states.ca.cpi rate: @@ -18,6 +19,7 @@ brackets: 2021-01-01: 44_214 2022-01-01: 47_884 2023-01-01: 49_368 + 2024-01-01: 50_998 metadata: uprating: gov.states.ca.cpi rate: @@ -27,6 +29,7 @@ brackets: 2021-01-01: 69_784 2022-01-01: 75_576 2023-01-01: 77_918 + 2024-01-01: 80_490 metadata: uprating: gov.states.ca.cpi rate: @@ -36,6 +39,7 @@ brackets: 2021-01-01: 96_870 2022-01-01: 104_910 2023-01-01: 108_162 + 2024-01-01: 111_732 metadata: uprating: gov.states.ca.cpi rate: @@ -45,6 +49,7 @@ brackets: 2021-01-01: 122_428 2022-01-01: 132_590 2023-01-01: 136_700 + 2024-01-01: 141_212 metadata: uprating: gov.states.ca.cpi rate: @@ -54,6 +59,7 @@ brackets: 2021-01-01: 625_372 2022-01-01: 677_278 2023-01-01: 698_274 + 2024-01-01: 721_318 metadata: uprating: gov.states.ca.cpi rate: @@ -63,6 +69,7 @@ brackets: 2021-01-01: 750_442 2022-01-01: 812_728 2023-01-01: 837_922 + 2024-01-01: 865_574 metadata: uprating: gov.states.ca.cpi rate: @@ -72,6 +79,7 @@ brackets: 2021-01-01: 1_250_738 2022-01-01: 1_354_550 2023-01-01: 1_396_542 + 2024-01-01: 1_442_628 metadata: uprating: gov.states.ca.cpi rate: @@ -90,6 +98,8 @@ metadata: href: https://www.ftb.ca.gov/forms/2022/2022-540-tax-rate-schedules.pdf - title: California Income Tax Rate Schedules for 2023 href: https://www.ftb.ca.gov/forms/2023/2023-540-tax-rate-schedules.pdf + - title: 2024 California Indexing Form + href: https://www.ftb.ca.gov/about-ftb/newsroom/tax-news/index.html#article1 - title: Cal. Rev. & Tax. Code § 17041 href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?sectionNum=17041.&lawCode=RTC # Index according to federal tax parameter rules until we add California CPI trend. From 2ac0fef8f29962127891f8b50f30c0f92c3995d2 Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Tue, 15 Oct 2024 00:26:51 +0000 Subject: [PATCH 14/29] Update PolicyEngine US --- CHANGELOG.md | 7 +++++++ changelog.yaml | 5 +++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6004feb2484..80ebe9ddf04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.120.0] - 2024-10-15 00:23:23 + +### Added + +- California Income Tax Thresholds 2024. + ## [1.119.0] - 2024-10-14 20:55:12 ### Added @@ -9975,6 +9981,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[1.120.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.119.0...1.120.0 [1.119.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.118.0...1.119.0 [1.118.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.117.0...1.118.0 [1.117.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.116.0...1.117.0 diff --git a/changelog.yaml b/changelog.yaml index 0c6cb8560ba..957b9a4e562 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -8457,3 +8457,8 @@ - California Standard Deduction, Personal/Dependent Exemption Credits and Renter AGI Cap 2024. date: 2024-10-14 20:55:12 +- bump: minor + changes: + added: + - California Income Tax Thresholds 2024. + date: 2024-10-15 00:23:23 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index c16dd6d8e11..e69de29bb2d 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: minor - changes: - added: - - California Income Tax Thresholds 2024. diff --git a/setup.py b/setup.py index 7b4efcfb8ed..de1b186a3c0 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup( name="policyengine-us", - version="1.119.0", + version="1.120.0", author="PolicyEngine", author_email="hello@policyengine.org", long_description=readme, From 96d944051767f4bf8bb6925bd5cfa82be12e606e Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Tue, 15 Oct 2024 09:40:03 +0700 Subject: [PATCH 15/29] reference link --- .../gov/states/id/tax/income/main/head_of_household.yaml | 4 ++-- .../parameters/gov/states/id/tax/income/main/joint.yaml | 4 ++-- .../parameters/gov/states/id/tax/income/main/separate.yaml | 4 ++-- .../parameters/gov/states/id/tax/income/main/single.yaml | 4 ++-- .../parameters/gov/states/id/tax/income/main/widow.yaml | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/policyengine_us/parameters/gov/states/id/tax/income/main/head_of_household.yaml b/policyengine_us/parameters/gov/states/id/tax/income/main/head_of_household.yaml index 8ca4bf10bf7..cc1725ddd23 100644 --- a/policyengine_us/parameters/gov/states/id/tax/income/main/head_of_household.yaml +++ b/policyengine_us/parameters/gov/states/id/tax/income/main/head_of_household.yaml @@ -19,9 +19,9 @@ metadata: # The Head of household filing status is treated as married - title: IDAHO STATUTES, TITLE 63, CHAPTER 30, SECTION 63-3024(2)(b) href: https://legislature.idaho.gov/statutesrules/idstat/title63/t63ch30/sect63-3024/#:~:text=(b)%20For%20taxpayers%20filing%20a,five%20thousand%20dollars%20(%245%2C000) - # Bill to udpate the structure post 2024 + # Bill to update the structure post 2024 - title: HOUSE BILL NO. 521 63-3024 (2) - href: https://tax.idaho.gov/taxes/income-tax/individual-income/individual-income-tax-rate-schedule/ + href: https://legislature.idaho.gov/wp-content/uploads/sessioninfo/2024/legislation/H0521.pdf#page=2 brackets: - threshold: diff --git a/policyengine_us/parameters/gov/states/id/tax/income/main/joint.yaml b/policyengine_us/parameters/gov/states/id/tax/income/main/joint.yaml index aee156fe487..67cc2b62600 100644 --- a/policyengine_us/parameters/gov/states/id/tax/income/main/joint.yaml +++ b/policyengine_us/parameters/gov/states/id/tax/income/main/joint.yaml @@ -11,9 +11,9 @@ metadata: href: https://casetext.com/regulation/idaho-administrative-code/title-idapa-35-tax-commission-state/rule-350101-income-tax-administrative-rules/section-350101075-tax-on-individuals-estates-and-trusts - title: IDAHO STATUTES, TITLE 63, CHAPTER 30, SECTION 63-3024 (2)(a) href: https://legislature.idaho.gov/statutesrules/idstat/title63/t63ch30/sect63-3024/ - # Bill to udpate the structure post 2024 + # Bill to update the structure post 2024 - title: HOUSE BILL NO. 521 63-3024 (2) - href: https://tax.idaho.gov/taxes/income-tax/individual-income/individual-income-tax-rate-schedule/ + href: https://legislature.idaho.gov/wp-content/uploads/sessioninfo/2024/legislation/H0521.pdf#page=2 brackets: - threshold: diff --git a/policyengine_us/parameters/gov/states/id/tax/income/main/separate.yaml b/policyengine_us/parameters/gov/states/id/tax/income/main/separate.yaml index afcdb1dc40a..c230890847e 100644 --- a/policyengine_us/parameters/gov/states/id/tax/income/main/separate.yaml +++ b/policyengine_us/parameters/gov/states/id/tax/income/main/separate.yaml @@ -11,9 +11,9 @@ metadata: href: https://casetext.com/regulation/idaho-administrative-code/title-idapa-35-tax-commission-state/rule-350101-income-tax-administrative-rules/section-350101075-tax-on-individuals-estates-and-trusts - title: IDAHO STATUTES, TITLE 63, CHAPTER 30, SECTION 63-3024 (2)(a) href: https://legislature.idaho.gov/statutesrules/idstat/title63/t63ch30/sect63-3024/ - # Bill to udpate the structure post 2024 + # Bill to update the structure post 2024 - title: HOUSE BILL NO. 521 63-3024 (2) - href: https://tax.idaho.gov/taxes/income-tax/individual-income/individual-income-tax-rate-schedule/ + href: https://legislature.idaho.gov/wp-content/uploads/sessioninfo/2024/legislation/H0521.pdf#page=2 brackets: diff --git a/policyengine_us/parameters/gov/states/id/tax/income/main/single.yaml b/policyengine_us/parameters/gov/states/id/tax/income/main/single.yaml index 312dcb09513..0bc4ae71f34 100644 --- a/policyengine_us/parameters/gov/states/id/tax/income/main/single.yaml +++ b/policyengine_us/parameters/gov/states/id/tax/income/main/single.yaml @@ -11,9 +11,9 @@ metadata: href: https://casetext.com/regulation/idaho-administrative-code/title-idapa-35-tax-commission-state/rule-350101-income-tax-administrative-rules/section-350101075-tax-on-individuals-estates-and-trusts - title: IDAHO STATUTES, TITLE 63, CHAPTER 30, SECTION 63-3024 (2)(a) href: https://legislature.idaho.gov/statutesrules/idstat/title63/t63ch30/sect63-3024/ - # Bill to udpate the structure post 2024 + # Bill to update the structure post 2024 - title: HOUSE BILL NO. 521 63-3024 (2) - href: https://tax.idaho.gov/taxes/income-tax/individual-income/individual-income-tax-rate-schedule/ + href: https://legislature.idaho.gov/wp-content/uploads/sessioninfo/2024/legislation/H0521.pdf#page=2 brackets: - threshold: diff --git a/policyengine_us/parameters/gov/states/id/tax/income/main/widow.yaml b/policyengine_us/parameters/gov/states/id/tax/income/main/widow.yaml index 43cb1967911..905a683753f 100644 --- a/policyengine_us/parameters/gov/states/id/tax/income/main/widow.yaml +++ b/policyengine_us/parameters/gov/states/id/tax/income/main/widow.yaml @@ -14,9 +14,9 @@ metadata: # The Widow filing status is treated as married - title: IDAHO STATUTES, TITLE 63, CHAPTER 30, SECTION 63-3024(2)(b) href: https://legislature.idaho.gov/statutesrules/idstat/title63/t63ch30/sect63-3024/#:~:text=(b)%20For%20taxpayers%20filing%20a,five%20thousand%20dollars%20(%245%2C000) - # Bill to udpate the structure post 2024 + # Bill to update the structure post 2024 - title: HOUSE BILL NO. 521 63-3024 (2) - href: https://tax.idaho.gov/taxes/income-tax/individual-income/individual-income-tax-rate-schedule/ + href: https://legislature.idaho.gov/wp-content/uploads/sessioninfo/2024/legislation/H0521.pdf#page=2 brackets: - threshold: From e893dd3407a1d90dd6c15dbd7f58aebe03554556 Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Tue, 15 Oct 2024 09:44:46 +0700 Subject: [PATCH 16/29] format --- changelog_entry.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 1e3e00b8503..cc444d37afa 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +1,4 @@ - bump: minor changes: added: - - 2024 tax rate, cdcc match, standard deduction and personal exemption amount in Kansas. + - 2024 tax rate, CDCC match, standard deduction and personal exemption amount in Kansas. From 082f3e58cd8b9cbb2c61d857c561900c109a9352 Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Tue, 15 Oct 2024 09:51:34 +0700 Subject: [PATCH 17/29] reference --- .../states/ks/tax/income/agi/subtractions/oasdi/agi_limit.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/agi/subtractions/oasdi/agi_limit.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/agi/subtractions/oasdi/agi_limit.yaml index 15d541f392e..a4c896655e9 100644 --- a/policyengine_us/parameters/gov/states/ks/tax/income/agi/subtractions/oasdi/agi_limit.yaml +++ b/policyengine_us/parameters/gov/states/ks/tax/income/agi/subtractions/oasdi/agi_limit.yaml @@ -15,6 +15,6 @@ metadata: - title: 2023 Form K-40 instructions href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=11 - title: Kansas 2022 Statute | Article 32 | §79-32,271(c)(xviii) - href: http://www.kslegislature.org/li/b2023_24/statute/079_000_0000_chapter/079_032_0000_article/079_032_0117_section/079_032_0117_k/ + href: https://casetext.com/statute/kansas-statutes/chapter-79-taxation/article-32-income-tax/section-79-32117-kansas-adjusted-gross-income-of-an-individual-addition-and-subtraction-modifications - title: Kansas Notice 24-08 Changes to individual income tax href: https://www.ksrevenue.gov/taxnotices/notice24-08.pdf#page=2 From 913242adbd8a79d812178568ac0fabd22ddb250d Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Tue, 15 Oct 2024 03:09:21 +0000 Subject: [PATCH 18/29] Update PolicyEngine US --- CHANGELOG.md | 7 +++++++ changelog.yaml | 5 +++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80ebe9ddf04..386dc1c0a00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.121.0] - 2024-10-15 03:05:54 + +### Added + +- Idaho 2024 income tax rate and brackets. + ## [1.120.0] - 2024-10-15 00:23:23 ### Added @@ -9981,6 +9987,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[1.121.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.120.0...1.121.0 [1.120.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.119.0...1.120.0 [1.119.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.118.0...1.119.0 [1.118.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.117.0...1.118.0 diff --git a/changelog.yaml b/changelog.yaml index 957b9a4e562..e0ab964c575 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -8462,3 +8462,8 @@ added: - California Income Tax Thresholds 2024. date: 2024-10-15 00:23:23 +- bump: minor + changes: + added: + - Idaho 2024 income tax rate and brackets. + date: 2024-10-15 03:05:54 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 7998721978a..e69de29bb2d 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: minor - changes: - added: - - Idaho 2024 income tax rate and brackets. diff --git a/setup.py b/setup.py index de1b186a3c0..c2a9f024115 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup( name="policyengine-us", - version="1.120.0", + version="1.121.0", author="PolicyEngine", author_email="hello@policyengine.org", long_description=readme, From 33caa80f8edb8750ff1259e80aefb0d4a08f9fec Mon Sep 17 00:00:00 2001 From: hua7450 <113824411+hua7450@users.noreply.github.com> Date: Mon, 14 Oct 2024 21:15:01 -0600 Subject: [PATCH 19/29] Kansas Additional Exemption for Disabled Veterans 2023 (#5052) * Kansas Additional Exemption for Disabled Veterans 2023 Fixes #4969 * add test cases, adjust formula * make format * adjust formula. create is_veteran variable. * reorganize parameters * minor change * format * minor change * add formula for is_veteran.py --- changelog_entry.yaml | 4 ++ .../ks/tax/income/exemptions/amount.yaml | 15 ------ .../states/ks/tax/income/exemptions/base.yaml | 19 +++++++ .../exemptions/disabled_veteran/base.yaml | 15 ++++++ .../disabled_veteran/in_effect.yaml | 14 +++++ ...teran_exemptions_eligible_person.yaml.yaml | 35 ++++++++++++ .../tax/income/exemptions/ks_exemptions.yaml | 53 +++++++++++++++++++ .../states/ks/tax/income/ks_exemptions.yaml | 15 ------ .../demographic/person/is_veteran.yaml | 13 +++++ .../ks_disabled_veteran_exemptions_person.py | 20 +++++++ .../ks/tax/income/exemptions/ks_exemptions.py | 19 ++++--- .../demographic/person/is_veteran.py | 13 +++++ 12 files changed, 199 insertions(+), 36 deletions(-) delete mode 100644 policyengine_us/parameters/gov/states/ks/tax/income/exemptions/amount.yaml create mode 100644 policyengine_us/parameters/gov/states/ks/tax/income/exemptions/base.yaml create mode 100644 policyengine_us/parameters/gov/states/ks/tax/income/exemptions/disabled_veteran/base.yaml create mode 100644 policyengine_us/parameters/gov/states/ks/tax/income/exemptions/disabled_veteran/in_effect.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/exemptions/ks_disabled_veteran_exemptions_eligible_person.yaml.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/exemptions/ks_exemptions.yaml delete mode 100644 policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_exemptions.yaml create mode 100644 policyengine_us/tests/policy/baseline/household/demographic/person/is_veteran.yaml create mode 100644 policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_disabled_veteran_exemptions_person.py create mode 100644 policyengine_us/variables/household/demographic/person/is_veteran.py diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..0cef9db1c74 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Kansas disabled veteran exemptions. diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/amount.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/amount.yaml deleted file mode 100644 index 0a7f26674e2..00000000000 --- a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/amount.yaml +++ /dev/null @@ -1,15 +0,0 @@ -description: Kansas provides this exemption for each person in a filing unit. -values: - 2021-01-01: 2_250 - -metadata: - period: year - unit: currency-USD - label: Kansas personal exemption - reference: - - title: 2021 Form K-40 instructions - href: https://www.ksrevenue.gov/pdf/ip21.pdf - - title: 2022 Form K-40 instructions - href: https://www.ksrevenue.gov/pdf/ip22.pdf - - title: 2023 Form K-40 instructions - href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=2 diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/base.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/base.yaml new file mode 100644 index 00000000000..b70f3e60af6 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/base.yaml @@ -0,0 +1,19 @@ +description: Kansas provides the following exemption amount for each person in a filing unit. +values: + 2021-01-01: 2_250 + +metadata: + period: year + unit: currency-USD + label: Kansas personal exemption + reference: + - title: 2021 Form K-40 instructions + href: https://www.ksrevenue.gov/pdf/ip21.pdf#page=6 + - title: 2022 Form K-40 instructions + href: https://www.ksrevenue.gov/pdf/ip22.pdf#page=6 + - title: 2023 Form K-40 instructions + href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=6 + - title: 2023 Form K-40 + href: https://www.ksrevenue.gov/pdf/k-4023.pdf#page=1 + - title: KS Stat § 79-32,121 (2023) (a) + href: https://law.justia.com/codes/kansas/chapter-79/article-32/section-79-32-121/ diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/disabled_veteran/base.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/disabled_veteran/base.yaml new file mode 100644 index 00000000000..06f610b5a39 --- /dev/null +++ b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/disabled_veteran/base.yaml @@ -0,0 +1,15 @@ +description: Kansas provides the following exemption amount for disabled veterans. +values: + 2023-01-01: 2_250 + +metadata: + period: year + unit: currency-USD + label: Kansas disabled veteran exemption amount + reference: + - title: 2023 Form K-40 instructions + href: https://www.ksrevenue.gov/pdf/ip23.pdf#page=6 + - title: 2023 Form K-40 + href: https://www.ksrevenue.gov/pdf/k-4023.pdf#page=2 + - title: KS Stat § 79-32,121 (2023) (b) + href: https://law.justia.com/codes/kansas/chapter-79/article-32/section-79-32-121/ diff --git a/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/disabled_veteran/in_effect.yaml b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/disabled_veteran/in_effect.yaml new file mode 100644 index 00000000000..e15e8aa334c --- /dev/null +++ b/policyengine_us/parameters/gov/states/ks/tax/income/exemptions/disabled_veteran/in_effect.yaml @@ -0,0 +1,14 @@ +description: Kansas provides additional exemptions for disabled veterans if this is true. +metadata: + unit: bool + period: year + label: Kansas additional exemptions for disabled veterans in effect + reference: + - title: KS Stat § 79-32,121 (2023) (b) + href: https://law.justia.com/codes/kansas/chapter-79/article-32/section-79-32-121/ + - title: 2023 Form K-40 + href: https://www.ksrevenue.gov/pdf/k-4023.pdf#page=1 + +values: + 2021-01-01: false + 2023-01-01: true diff --git a/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/exemptions/ks_disabled_veteran_exemptions_eligible_person.yaml.yaml b/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/exemptions/ks_disabled_veteran_exemptions_eligible_person.yaml.yaml new file mode 100644 index 00000000000..8077164b043 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/exemptions/ks_disabled_veteran_exemptions_eligible_person.yaml.yaml @@ -0,0 +1,35 @@ +- name: Case 1, the filer is a disabled veteran, get exemptions. + period: 2023 + input: + is_permanently_and_totally_disabled: true + is_veteran: true + state_code: KS + output: + ks_disabled_veteran_exemptions_eligible_person: true + +- name: Case 2, the filer is a veteran, but not disabled, no exemption. + period: 2023 + input: + is_permanently_and_totally_disabled: false + is_veteran: true + state_code: KS + output: + ks_disabled_veteran_exemptions_eligible_person: false + +- name: Case 3, the filer is a disabled, but not veteran, no exemption. + period: 2023 + input: + is_permanently_and_totally_disabled: false + is_veteran: true + state_code: KS + output: + ks_disabled_veteran_exemptions_eligible_person: false + +- name: Case 4, in 2022, the filer is a disabled veteran. + period: 2022 + input: + is_permanently_and_totally_disabled: true + is_veteran: true + state_code: KS + output: + ks_disabled_veteran_exemptions_eligible_person: false diff --git a/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/exemptions/ks_exemptions.yaml b/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/exemptions/ks_exemptions.yaml new file mode 100644 index 00000000000..7dc4e135fd5 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/exemptions/ks_exemptions.yaml @@ -0,0 +1,53 @@ +- name: Four exemptions in 2021 + period: 2021 + input: + ks_count_exemptions: 4 + state_code: KS + output: + ks_exemptions: 2_250 * 4 + +- name: Two exemptions in 2022 + period: 2022 + input: + ks_count_exemptions: 2 + state_code: KS + output: + ks_exemptions: 2_250 * 2 + +- name: Case 3,two exemptions in 2023, and one disabled veteran exemption. + period: 2023 + input: + people: + person1: + ks_disabled_veteran_exemptions_eligible_person: true + person2: + ks_disabled_veteran_exemptions_eligible_person: false + tax_units: + tax_unit: + members: [person1, person2] + ks_count_exemptions: 2 + households: + household: + members: [person1, person2] + state_code: KS + output: + ks_exemptions: 6_750 + +- name: Case 4,two exemptions in 2023, and two disabled veteran exemption. + period: 2023 + input: + people: + person1: + ks_disabled_veteran_exemptions_eligible_person: true + person2: + ks_disabled_veteran_exemptions_eligible_person: true + tax_units: + tax_unit: + members: [person1, person2] + ks_count_exemptions: 2 + households: + household: + members: [person1, person2] + state_code: KS + output: + ks_exemptions: 9_000 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_exemptions.yaml b/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_exemptions.yaml deleted file mode 100644 index e026e153944..00000000000 --- a/policyengine_us/tests/policy/baseline/gov/states/ks/tax/income/ks_exemptions.yaml +++ /dev/null @@ -1,15 +0,0 @@ -- name: Four exemptions in 2021 - period: 2021 - input: - ks_count_exemptions: 4 - state_code: KS - output: - ks_exemptions: 2_250 * 4 - -- name: Two exemptions in 2022 - period: 2022 - input: - ks_count_exemptions: 2 - state_code: KS - output: - ks_exemptions: 2_250 * 2 diff --git a/policyengine_us/tests/policy/baseline/household/demographic/person/is_veteran.yaml b/policyengine_us/tests/policy/baseline/household/demographic/person/is_veteran.yaml new file mode 100644 index 00000000000..604fbcb61b1 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/household/demographic/person/is_veteran.yaml @@ -0,0 +1,13 @@ +- name: Case 1, veterans_benefits > 0, is a veteran. + period: 2020 + input: + veterans_benefits: 100 + output: + is_veteran: true + +- name: Case 2, veterans_benefits = 0, is not a veteran. + period: 2020 + input: + veterans_benefits: 0 + output: + is_veteran: false diff --git a/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_disabled_veteran_exemptions_person.py b/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_disabled_veteran_exemptions_person.py new file mode 100644 index 00000000000..0058dd9482f --- /dev/null +++ b/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_disabled_veteran_exemptions_person.py @@ -0,0 +1,20 @@ +from policyengine_us.model_api import * + + +class ks_disabled_veteran_exemptions_eligible_person(Variable): + value_type = bool + entity = Person + label = "Eligible person for the Kansas disabled veteran exemption" + unit = USD + definition_period = YEAR + reference = "https://law.justia.com/codes/kansas/chapter-79/article-32/section-79-32-121/" + defined_for = StateCode.KS + + def formula(person, period, parameters): + p = parameters( + period + ).gov.states.ks.tax.income.exemptions.disabled_veteran + disabled = person("is_permanently_and_totally_disabled", period) + is_veteran = person("is_veteran", period) + + return p.in_effect * disabled * is_veteran diff --git a/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_exemptions.py b/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_exemptions.py index 544e16f0dfb..25484208a0f 100644 --- a/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_exemptions.py +++ b/policyengine_us/variables/gov/states/ks/tax/income/exemptions/ks_exemptions.py @@ -7,13 +7,20 @@ class ks_exemptions(Variable): label = "Kansas exemptions amount" unit = USD definition_period = YEAR - reference = ( - "https://www.ksrevenue.gov/pdf/ip21.pdf" - "https://www.ksrevenue.gov/pdf/ip22.pdf" - ) + reference = "https://law.justia.com/codes/kansas/chapter-79/article-32/section-79-32-121/" defined_for = StateCode.KS def formula(tax_unit, period, parameters): - exemptions_count = tax_unit("ks_count_exemptions", period) p = parameters(period).gov.states.ks.tax.income.exemptions - return exemptions_count * p.amount + exemptions_count = tax_unit("ks_count_exemptions", period) + base_exemptions = exemptions_count * p.base + veteran_exemptions_count = add( + tax_unit, + period, + ["ks_disabled_veteran_exemptions_eligible_person"], + ) + additional_exemptions = ( + veteran_exemptions_count * p.disabled_veteran.base + ) + + return base_exemptions + additional_exemptions diff --git a/policyengine_us/variables/household/demographic/person/is_veteran.py b/policyengine_us/variables/household/demographic/person/is_veteran.py new file mode 100644 index 00000000000..8123d0872f8 --- /dev/null +++ b/policyengine_us/variables/household/demographic/person/is_veteran.py @@ -0,0 +1,13 @@ +from policyengine_us.model_api import * + + +class is_veteran(Variable): + value_type = bool + entity = Person + label = "Is veteran" + documentation = "A person who served in the active military, naval, air, or space service, and who was discharged or released therefrom under conditions other than dishonorable." + reference = "https://www.law.cornell.edu/uscode/text/38/101" # (2) + definition_period = YEAR + + def formula(person, period, parameters): + return person("veterans_benefits", period) > 0 From 889051135bf677071e6eef9364b172dbed524a6c Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Tue, 15 Oct 2024 03:18:50 +0000 Subject: [PATCH 20/29] Update PolicyEngine US --- CHANGELOG.md | 7 +++++++ changelog.yaml | 5 +++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 386dc1c0a00..8104dbea5f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.122.0] - 2024-10-15 03:15:23 + +### Added + +- Kansas disabled veteran exemptions. + ## [1.121.0] - 2024-10-15 03:05:54 ### Added @@ -9987,6 +9993,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[1.122.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.121.0...1.122.0 [1.121.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.120.0...1.121.0 [1.120.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.119.0...1.120.0 [1.119.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.118.0...1.119.0 diff --git a/changelog.yaml b/changelog.yaml index e0ab964c575..fff9868f625 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -8467,3 +8467,8 @@ added: - Idaho 2024 income tax rate and brackets. date: 2024-10-15 03:05:54 +- bump: minor + changes: + added: + - Kansas disabled veteran exemptions. + date: 2024-10-15 03:15:23 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 0cef9db1c74..e69de29bb2d 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: minor - changes: - added: - - Kansas disabled veteran exemptions. diff --git a/setup.py b/setup.py index c2a9f024115..9de6646e0a1 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup( name="policyengine-us", - version="1.121.0", + version="1.122.0", author="PolicyEngine", author_email="hello@policyengine.org", long_description=readme, From 187b9e667beb81ba58b7d9ce1a431cea036f87a5 Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Tue, 15 Oct 2024 10:21:12 +0700 Subject: [PATCH 21/29] changelog --- changelog_entry.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..4a825a5fc4d 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - 2024 tax rate, CDCC match, standard deduction and personal exemption amount in Kansas.. From 17630f01127590407bc7f7a67d8c04e8d407e34e Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Tue, 15 Oct 2024 10:22:21 +0000 Subject: [PATCH 22/29] Update PolicyEngine US --- CHANGELOG.md | 7 +++++++ changelog.yaml | 6 ++++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8104dbea5f0..234580d251e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.123.0] - 2024-10-15 10:18:53 + +### Added + +- 2024 tax rate, CDCC match, standard deduction and personal exemption amount in Kansas.. + ## [1.122.0] - 2024-10-15 03:15:23 ### Added @@ -9993,6 +9999,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[1.123.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.122.0...1.123.0 [1.122.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.121.0...1.122.0 [1.121.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.120.0...1.121.0 [1.120.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.119.0...1.120.0 diff --git a/changelog.yaml b/changelog.yaml index fff9868f625..c7507b73a7e 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -8472,3 +8472,9 @@ added: - Kansas disabled veteran exemptions. date: 2024-10-15 03:15:23 +- bump: minor + changes: + added: + - 2024 tax rate, CDCC match, standard deduction and personal exemption amount + in Kansas.. + date: 2024-10-15 10:18:53 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 4a825a5fc4d..e69de29bb2d 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: minor - changes: - added: - - 2024 tax rate, CDCC match, standard deduction and personal exemption amount in Kansas.. diff --git a/setup.py b/setup.py index 9de6646e0a1..462e0910a9e 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup( name="policyengine-us", - version="1.122.0", + version="1.123.0", author="PolicyEngine", author_email="hello@policyengine.org", long_description=readme, From 10cd6d113e0daf2ab97fb7af561ba8c68a20b223 Mon Sep 17 00:00:00 2001 From: Matt Jensen Date: Tue, 15 Oct 2024 12:26:04 -0400 Subject: [PATCH 23/29] IN county tax (#1167) * cleanup * Update openfisca_us/tests/policy/baseline/gov/states/in/tax/income/taxes/in_county_tax.yaml Co-authored-by: Nikhil Woodruff <35577657+nikhilwoodruff@users.noreply.github.com> * Update openfisca_us/tests/policy/baseline/gov/states/in/tax/income/taxes/in_county_tax.yaml Co-authored-by: Nikhil Woodruff <35577657+nikhilwoodruff@users.noreply.github.com> * Update openfisca_us/parameters/gov/states/in/tax/income/taxes/county/rates.yaml Co-authored-by: Nikhil Woodruff <35577657+nikhilwoodruff@users.noreply.github.com> * Update openfisca_us/variables/gov/states/in/tax/income/taxes/in_county_tax.py Co-authored-by: Nikhil Woodruff <35577657+nikhilwoodruff@users.noreply.github.com> * Update openfisca_us/variables/gov/states/in/tax/income/taxes/in_county_tax.py Co-authored-by: Nikhil Woodruff <35577657+nikhilwoodruff@users.noreply.github.com> * cleanup * cleanup * experimenting with tests * experimenting with tests * experimenting with tests * cleanup * experimenting with tests * adjust format and tests * changelog * parameter * format * parameter format * test fix * format --------- Co-authored-by: Nikhil Woodruff <35577657+nikhilwoodruff@users.noreply.github.com> Co-authored-by: PavelMakarchuk --- changelog_entry.yaml | 4 + .../states/in/tax/income/county_rates.yaml | 194 ++++++++++++++++++ .../states/in/tax/income/in_county_tax.yaml | 26 +++ .../gov/states/in/tax/income/in_county_tax.py | 20 ++ 4 files changed, 244 insertions(+) create mode 100644 policyengine_us/parameters/gov/states/in/tax/income/county_rates.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_county_tax.yaml create mode 100644 policyengine_us/variables/gov/states/in/tax/income/in_county_tax.py diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..c68d447db78 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - IN county taxes. diff --git a/policyengine_us/parameters/gov/states/in/tax/income/county_rates.yaml b/policyengine_us/parameters/gov/states/in/tax/income/county_rates.yaml new file mode 100644 index 00000000000..ffaa305a37b --- /dev/null +++ b/policyengine_us/parameters/gov/states/in/tax/income/county_rates.yaml @@ -0,0 +1,194 @@ +description: Indiana taxes adjusted gross income at these county specific tax rates. +metadata: + period: year + unit: /1 + label: Inidiana county tax rates + reference: + - title: IC 6-3.6 ARTICLE 3.6. LOCAL INCOME TAXES + href: http://iga.in.gov/legislative/laws/2021/ic/titles/006#6-3.6 + +ADAMS_COUNTY_IN: + 2021-01-01: 0.01624 +ALLEN_COUNTY_IN: + 2021-01-01: 0.148 +BATHOLOMEW_COUNTY_IN: + 2021-01-01: 0.0175 +BENTON_COUNTY_IN: + 2021-01-01: 0.0179 +BLACKFORD_COUNTY_IN: + 2021-01-01: 0.015 +BOONE_COUNTY_IN: + 2021-01-01: 0.015 +BROWN_COUNTY_IN: + 2021-01-01: 0.025234 +CARROLL_COUNTY_IN: + 2021-01-01: 0.022733 +CASS_COUNTY_IN: + 2021-01-01: 0.027 +CLARK_COUNTY_IN: + 2021-01-01: 0.02 +CLAY_COUNTY_IN: + 2021-01-01: 0.0235 +CLINTON_COUNTY_IN: + 2021-01-01: 0.0245 +CRAWFORD_COUNTY_IN: + 2021-01-01: 0.01 +DAVIESS_COUNTY_IN: + 2021-01-01: 0.015 +DEARBORN_COUNTY_IN: + 2021-01-01: 0.015 +DECATUR_COUNTY_IN: + 2021-01-01: 0.025 +DEKALB_COUNTY_IN: + 2021-01-01: 0.0213 +DELAWARE_COUNTY_IN: + 2021-01-01: 0.015 +DUBOIS_COUNTY_IN: + 2021-01-01: 0.012 +ELKHART_COUNTY_IN: + 2021-01-01: 0.02 +FAYETTE_COUNTY_IN: + 2021-01-01: 0.0257 +FLOYD_COUNTY_IN: + 2021-01-01: 0.0135 +FOUNTAIN_COUNTY_IN: + 2021-01-01: 0.021 +FRANKLIN_COUNTY_IN: + 2021-01-01: 0.015 +FULTON_COUNTY_IN: + 2021-01-01: 0.0268 +GIBSON_COUNTY_IN: + 2021-01-01: 0.009 +GRANT_COUNTY_IN: + 2021-01-01: 0.0255 +GREENE_COUNTY_IN: + 2021-01-01: 0.0195 +HAMILTON_COUNTY_IN: + 2021-01-01: 0.011 +HANCOCK_COUNTY_IN: + 2021-01-01: 0.0194 +HARRISON_COUNTY_IN: + 2021-01-01: 0.01 +HENDRICKS_COUNTY_IN: + 2021-01-01: 0.017 +HENRY_COUNTY_IN: + 2021-01-01: 0.017 +HOWARD_COUNTY_IN: + 2021-01-01: 0.0175 +HUNTINGTON_COUNTY_IN: + 2021-01-01: 0.0195 +JACKSON_COUNTY_IN: + 2021-01-01: 0.021 +JASPER_COUNTY_IN: + 2021-01-01: 0.02864 +JAY_COUNTY_IN: + 2021-01-01: 0.0245 +JEFFERSON_COUNTY_IN: + 2021-01-01: 0.009 +JENNINGS_COUNTY_IN: + 2021-01-01: 0.025 +JOHNSON_COUNTY_IN: + 2021-01-01: 0.012 +KNOX_COUNTY_IN: + 2021-01-01: 0.012 +KOSCIUSKO_COUNTY_IN: + 2021-01-01: 0.01 +LAGRANGE_COUNTY_IN: + 2021-01-01: 0.0165 +LAKE_COUNTY_IN: + 2021-01-01: 0.015 +LAPORTE_COUNTY_IN: + 2021-01-01: 0.0095 +LAWRENCE_COUNTY_IN: + 2021-01-01: 0.0175 +MADISON_COUNTY_IN: + 2021-01-01: 0.0175 +MARION_COUNTY_IN: + 2021-01-01: 0.0202 +MARSHALL_COUNTY_IN: + 2021-01-01: 0.0125 +MARTIN_COUNTY_IN: + 2021-01-01: 0.025 +MIAMI_COUNTY_IN: + 2021-01-01: 0.0254 +MONROE_COUNTY_IN: + 2021-01-01: 0.01345 +MONTGOMERY_COUNTY_IN: + 2021-01-01: 0.023 +MORGAN_COUNTY_IN: + 2021-01-01: 0.0272 +NEWTON_COUNTY_IN: + 2021-01-01: 0.01 +NOBLE_COUNTY_IN: + 2021-01-01: 0.0175 +OHIO_COUNTY_IN: + 2021-01-01: 0.015 +ORANGE_COUNTY_IN: + 2021-01-01: 0.0175 +OWEN_COUNTY_IN: + 2021-01-01: 0.01825 +PARKE_COUNTY_IN: + 2021-01-01: 0.0265 +PERRY_COUNTY_IN: + 2021-01-01: 0.0181 +PIKE_COUNTY_IN: + 2021-01-01: 0.0075 +PORTER_COUNTY_IN: + 2021-01-01: 0.005 +POSEY_COUNTY_IN: + 2021-01-01: 0.0125 +PULASKI_COUNTY_IN: + 2021-01-01: 0.0285 +PUTNAM_COUNTY_IN: + 2021-01-01: 0.021 +RANDOLPH_COUNTY_IN: + 2021-01-01: 0.025 +RIPLEY_COUNTY_IN: + 2021-01-01: 0.0138 +RUSH_COUNTY_IN: + 2021-01-01: 0.021 +ST_JOSEPH_COUNTY_IN: + 2021-01-01: 0.0175 +SCOTT_COUNTY_IN: + 2021-01-01: 0.0216 +SHELBY_COUNTY_IN: + 2021-01-01: 0.016 +SPENCER_COUNTY_IN: + 2021-01-01: 0.008 +STARKE_COUNTY_IN: + 2021-01-01: 0.0171 +STEUBEN_COUNTY_IN: + 2021-01-01: 0.0179 +SULLIVAN_COUNTY_IN: + 2021-01-01: 0.017 +SWITZERLAND_COUNTY_IN: + 2021-01-01: 0.0125 +TIPPECANOE_COUNTY_IN: + 2021-01-01: 0.0128 +TIPTON_COUNTY_IN: + 2021-01-01: 0.026 +UNION_COUNTY_IN: + 2021-01-01: 0.02 +VANDERBURGH_COUNTY_IN: + 2021-01-01: 0.012 +VERMILLION_COUNTY_IN: + 2021-01-01: 0.015 +VIGO_COUNTY_IN: + 2021-01-01: 0.02 +WABASH_COUNTY_IN: + 2021-01-01: 0.029 +WARREN_COUNTY_IN: + 2021-01-01: 0.0212 +WARRICK_COUNTY_IN: + 2021-01-01: 0.00625 +WASHINGTON_COUNTY_IN: + 2021-01-01: 0.02 +WAYNE_COUNTY_IN: + 2021-01-01: 0.0125 +WELLS_COUNTY_IN: + 2021-01-01: 0.021 +WHITE_COUNTY_IN: + 2021-01-01: 0.0232 +WHITLEY_COUNTY_IN: + 2021-01-01: 0.016829 + diff --git a/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_county_tax.yaml b/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_county_tax.yaml new file mode 100644 index 00000000000..5a8d388d9e8 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/in/tax/income/in_county_tax.yaml @@ -0,0 +1,26 @@ +- name: In Indiana + period: 2021 + input: + in_agi: 1_000 + county_str: BOONE_COUNTY_IN + state_code_str: IN + output: + in_county_tax: 15 + +- name: In Indiana, different county + period: 2021 + input: + in_agi: 1_000 + county_str: CLARK_COUNTY_IN + state_code_str: IN + output: + in_county_tax: 20 + +- name: Not in Indiana + period: 2021 + input: + in_agi: 1_000 + county_str: BALTIMORE_CITY_MD + state_code_str: MD + output: + in_county_tax: 0 diff --git a/policyengine_us/variables/gov/states/in/tax/income/in_county_tax.py b/policyengine_us/variables/gov/states/in/tax/income/in_county_tax.py new file mode 100644 index 00000000000..fb24987bc7c --- /dev/null +++ b/policyengine_us/variables/gov/states/in/tax/income/in_county_tax.py @@ -0,0 +1,20 @@ +from policyengine_us.model_api import * + + +class in_county_tax(Variable): + value_type = float + entity = TaxUnit + label = "Indiana county tax" + definition_period = YEAR + unit = USD + reference = "http://iga.in.gov/legislative/laws/2021/ic/titles/006#6-3-2-1" # (a)(3) + defined_for = StateCode.IN + + def formula(tax_unit, period, parameters): + # County calculations are at the person level for each taxpayer in the law + in_in = tax_unit.household("state_code_str", period) == "IN" + county = tax_unit.household("county_str", period) + rate = np.zeros_like(county, dtype=float) + rates = parameters(period).gov.states["in"].tax.income.county_rates + rate[in_in] = rates[county[in_in]] + return rate * tax_unit("in_agi", period) From 7dbe67ab7777f85e794a97829d9b42af5b6a1ae5 Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Tue, 15 Oct 2024 16:29:59 +0000 Subject: [PATCH 24/29] Update PolicyEngine US --- CHANGELOG.md | 7 +++++++ changelog.yaml | 5 +++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 234580d251e..42a0d652d73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.124.0] - 2024-10-15 16:26:25 + +### Added + +- IN county taxes. + ## [1.123.0] - 2024-10-15 10:18:53 ### Added @@ -9999,6 +10005,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[1.124.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.123.0...1.124.0 [1.123.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.122.0...1.123.0 [1.122.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.121.0...1.122.0 [1.121.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.120.0...1.121.0 diff --git a/changelog.yaml b/changelog.yaml index c7507b73a7e..3d5bda193d2 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -8478,3 +8478,8 @@ - 2024 tax rate, CDCC match, standard deduction and personal exemption amount in Kansas.. date: 2024-10-15 10:18:53 +- bump: minor + changes: + added: + - IN county taxes. + date: 2024-10-15 16:26:25 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index c68d447db78..e69de29bb2d 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: minor - changes: - added: - - IN county taxes. diff --git a/setup.py b/setup.py index 462e0910a9e..6cc0a926ce2 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup( name="policyengine-us", - version="1.123.0", + version="1.124.0", author="PolicyEngine", author_email="hello@policyengine.org", long_description=readme, From 3177b65b7c53e95cf659d00f7040ad728dc089bd Mon Sep 17 00:00:00 2001 From: Pavel Makarchuk <110687043+PavelMakarchuk@users.noreply.github.com> Date: Tue, 15 Oct 2024 23:32:14 +0700 Subject: [PATCH 25/29] Exclude students from the SNAP unit with certain exceptions. (#4975) * Various state adjustments Fixes #4968 Fixes #4971 * Exclude students from the SNAP unit with certain exceptions. Fixes #4962 * format and tests * eligibility file * use clip * add 0 threshold * minor chnages * rename var and cap at 0 * test adj --- changelog_entry.yaml | 4 ++ .../gov/usda/snap/max_allotment.yaml | 14 ++++ .../gov/usda/snap/student/age_threshold.yaml | 23 ++++++ .../snap/student/working_hours_threshold.yaml | 12 ++++ .../snap/eligibility/is_snap_eligible.yaml | 72 +++++++++++++++++++ .../student/is_snap_ineligible_student.yaml | 21 ++++++ .../baseline/gov/usda/snap/snap_unit.yaml | 50 +++++++++++++ .../usda/snap/eligibility/is_snap_eligible.py | 8 ++- .../student/is_snap_ineligible_student.py | 28 ++++++++ .../deductions/snap_standard_deduction.py | 3 +- .../gov/usda/snap/income/snap_fpg.py | 2 +- .../gov/usda/snap/snap_max_allotment.py | 4 +- .../gov/usda/snap/snap_min_allotment.py | 2 +- .../variables/gov/usda/snap/snap_unit.py | 15 ++++ .../household/demographic/person/is_father.py | 2 +- .../household/demographic/person/is_mother.py | 2 +- .../household/demographic/person/is_parent.py | 11 +++ 17 files changed, 265 insertions(+), 8 deletions(-) create mode 100644 policyengine_us/parameters/gov/usda/snap/student/age_threshold.yaml create mode 100644 policyengine_us/parameters/gov/usda/snap/student/working_hours_threshold.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_ineligible_student.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/usda/snap/snap_unit.yaml create mode 100644 policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_ineligible_student.py create mode 100644 policyengine_us/variables/gov/usda/snap/snap_unit.py create mode 100644 policyengine_us/variables/household/demographic/person/is_parent.py diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..401c11d8695 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Exclude students from the SNAP unit with certain exceptions. diff --git a/policyengine_us/parameters/gov/usda/snap/max_allotment.yaml b/policyengine_us/parameters/gov/usda/snap/max_allotment.yaml index d5911077dc0..5c8f0ce5720 100644 --- a/policyengine_us/parameters/gov/usda/snap/max_allotment.yaml +++ b/policyengine_us/parameters/gov/usda/snap/max_allotment.yaml @@ -7,6 +7,8 @@ main: - range(1, 9) label: SNAP max allotment CONTIGUOUS_US: + 0: + 2020-10-01: 0 1: 2020-10-01: 204 2021-01-01: 234 @@ -64,6 +66,8 @@ main: 2023-10-01: 1_751 2024-10-01: 1_756 AK_URBAN: + 0: + 2020-10-01: 0 1: 2020-10-01: 251 2021-01-01: 289 @@ -121,6 +125,8 @@ main: 2023-10-01: 2_246 2024-10-01: 2_265 AK_RURAL_1: + 0: + 2020-10-01: 0 1: 2020-10-01: 320 2021-01-01: 368 @@ -178,6 +184,8 @@ main: 2023-10-01: 2_865 2024-10-01: 2_888 AK_RURAL_2: + 0: + 2020-10-01: 0 1: 2020-10-01: 390 2021-01-01: 448 @@ -235,6 +243,8 @@ main: 2023-10-01: 3_487 2024-10-01: 3_516 GU: + 0: + 2020-10-01: 0 1: 2020-10-01: 300 2021-01-01: 345 @@ -292,6 +302,8 @@ main: 2023-10-01: 2_581 2024-10-01: 2_588 HI: + 0: + 2020-10-01: 0 1: 2020-10-01: 375 2021-01-01: 432 @@ -349,6 +361,8 @@ main: 2023-10-01: 3_166 2024-10-01: 3_102 VI: + 0: + 2020-10-01: 0 1: 2020-10-01: 262 2021-01-01: 301 diff --git a/policyengine_us/parameters/gov/usda/snap/student/age_threshold.yaml b/policyengine_us/parameters/gov/usda/snap/student/age_threshold.yaml new file mode 100644 index 00000000000..a6ab4af1377 --- /dev/null +++ b/policyengine_us/parameters/gov/usda/snap/student/age_threshold.yaml @@ -0,0 +1,23 @@ +description: The United States includes students in the Supplemental Nutrition Assistance Program unit if their age falls into the following range. +brackets: + - threshold: + 2018-01-01: 0 + amount: + 2018-01-01: true + - threshold: + 2018-01-01: 18 + amount: + 2018-01-01: false + - threshold: + 2018-01-01: 50 + amount: + 2018-01-01: true + +metadata: + type: single_amount + threshold_unit: year + amount_unit: bool + label: SNAP student age eligibility threshold + reference: + - title: 7 U.S. Code § 2015 - Eligibility disqualifications (e)(1) + href: https://www.law.cornell.edu/uscode/text/7/2015 diff --git a/policyengine_us/parameters/gov/usda/snap/student/working_hours_threshold.yaml b/policyengine_us/parameters/gov/usda/snap/student/working_hours_threshold.yaml new file mode 100644 index 00000000000..d3998056be2 --- /dev/null +++ b/policyengine_us/parameters/gov/usda/snap/student/working_hours_threshold.yaml @@ -0,0 +1,12 @@ +description: The United States includes students who work more than this number of weekly hours in the Supplemental Nutrition Assistance Program unit. + +values: + 2005-01-01: 20 + +metadata: + unit: hours + label: SNAP student working hours threshold + period: week + reference: + - title: 7 U.S. Code § 2015 - Eligibility disqualifications (e)(4) + href: https://www.law.cornell.edu/uscode/text/7/2015 diff --git a/policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/is_snap_eligible.yaml b/policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/is_snap_eligible.yaml index 4db1352a744..6699ea6fb28 100644 --- a/policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/is_snap_eligible.yaml +++ b/policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/is_snap_eligible.yaml @@ -27,3 +27,75 @@ meets_snap_categorical_eligibility: false output: is_snap_eligible: true + +- name: One ineligible student present + period: 2022 + input: + people: + person1: + is_snap_ineligible_student: false + person2: + is_snap_ineligible_student: false + person3: + is_snap_ineligible_student: true + spm_units: + spm_unit1: + members: [person1, person2, person3] + meets_snap_gross_income_test: true + meets_snap_net_income_test: true + meets_snap_asset_test: true + meets_snap_categorical_eligibility: false + output: + is_snap_eligible: true + +- name: Every person ineligible + period: 2022 + input: + people: + person1: + is_snap_ineligible_student: true + person2: + is_snap_ineligible_student: true + person3: + is_snap_ineligible_student: true + spm_units: + spm_unit1: + members: [person1, person2, person3] + meets_snap_gross_income_test: true + meets_snap_net_income_test: true + meets_snap_asset_test: true + meets_snap_categorical_eligibility: false + output: + is_snap_eligible: false + +- name: Single ineligible student + period: 2022 + input: + people: + person1: + is_snap_ineligible_student: true + spm_units: + spm_unit1: + members: [person1] + meets_snap_gross_income_test: true + meets_snap_net_income_test: true + meets_snap_asset_test: true + meets_snap_categorical_eligibility: false + output: + is_snap_eligible: false + +- name: Single eligible person + period: 2022 + input: + people: + person1: + is_snap_ineligible_student: false + spm_units: + spm_unit1: + members: [person1] + meets_snap_gross_income_test: true + meets_snap_net_income_test: true + meets_snap_asset_test: true + meets_snap_categorical_eligibility: false + output: + is_snap_eligible: true diff --git a/policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_ineligible_student.yaml b/policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_ineligible_student.yaml new file mode 100644 index 00000000000..d803d1c2a96 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/usda/snap/eligibility/student/is_snap_ineligible_student.yaml @@ -0,0 +1,21 @@ +- name: Student who does not meet any exemption criteria + period: 2022 + input: + is_full_time_student: true + age: 18 + is_disabled: false + weekly_hours_worked: false + is_parent: false + output: + is_snap_ineligible_student: true + +- name: Student who is under the age limit + period: 2022 + input: + is_full_time_student: true + age: 17 + is_disabled: false + weekly_hours_worked: false + is_parent: false + output: + is_snap_ineligible_student: false diff --git a/policyengine_us/tests/policy/baseline/gov/usda/snap/snap_unit.yaml b/policyengine_us/tests/policy/baseline/gov/usda/snap/snap_unit.yaml new file mode 100644 index 00000000000..d93b2db0c7c --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/usda/snap/snap_unit.yaml @@ -0,0 +1,50 @@ +- name: Household with one ineligible studnet + period: 2022 + input: + people: + person1: + is_snap_ineligible_student: false + person2: + is_snap_ineligible_student: false + person3: + is_snap_ineligible_student: true + spm_units: + spm_unit1: + members: [person1, person2, person3] + spm_unit_size: 3 + output: + snap_unit_size: 2 + +- name: Everybody eligible + period: 2022 + input: + people: + person1: + is_snap_ineligible_student: false + person2: + is_snap_ineligible_student: false + person3: + is_snap_ineligible_student: false + spm_units: + spm_unit1: + members: [person1, person2, person3] + spm_unit_size: 3 + output: + snap_unit_size: 3 + +- name: No eligible people + period: 2022 + input: + people: + person1: + is_snap_ineligible_student: true + person2: + is_snap_ineligible_student: true + person3: + is_snap_ineligible_student: true + spm_units: + spm_unit1: + members: [person1, person2, person3] + spm_unit_size: 3 + output: + snap_unit_size: 0 diff --git a/policyengine_us/variables/gov/usda/snap/eligibility/is_snap_eligible.py b/policyengine_us/variables/gov/usda/snap/eligibility/is_snap_eligible.py index 1ab897fc458..bb526d3b3c0 100644 --- a/policyengine_us/variables/gov/usda/snap/eligibility/is_snap_eligible.py +++ b/policyengine_us/variables/gov/usda/snap/eligibility/is_snap_eligible.py @@ -21,4 +21,10 @@ def formula(spm_unit, period, parameters): categorical_eligibility = spm_unit( "meets_snap_categorical_eligibility", period ) - return normal_eligibility | categorical_eligibility + person = spm_unit.members + eligible_person_present = spm_unit.any( + ~person("is_snap_ineligible_student", period) + ) + return ( + normal_eligibility | categorical_eligibility + ) & eligible_person_present diff --git a/policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_ineligible_student.py b/policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_ineligible_student.py new file mode 100644 index 00000000000..40e6d2db4af --- /dev/null +++ b/policyengine_us/variables/gov/usda/snap/eligibility/student/is_snap_ineligible_student.py @@ -0,0 +1,28 @@ +from policyengine_us.model_api import * + + +class is_snap_ineligible_student(Variable): + value_type = bool + entity = Person + label = "Is an ineligible student for SNAP" + documentation = "Whether this person is an ineligible student for SNAP and can not be counted towards the household size" + definition_period = YEAR + reference = "https://www.law.cornell.edu/uscode/text/7/2015" + + def formula(person, period, parameters): + student = person( + "is_full_time_student", period + ) # part-time students should also count + age = person("age", period) + p = parameters(period).gov.usda.snap.student + age_eligible = p.age_threshold.calc(age) + disabled = person("is_disabled", period) + hours_worked = person("weekly_hours_worked", period) + hours_eligible = hours_worked >= p.working_hours_threshold + # The parental status applies to children under 6 (under 12 + # if no care available) + # Single parents with children under 12 are also eligible + is_parent = person("is_parent", period) + return student & ~( + age_eligible | disabled | hours_eligible | is_parent + ) diff --git a/policyengine_us/variables/gov/usda/snap/income/deductions/snap_standard_deduction.py b/policyengine_us/variables/gov/usda/snap/income/deductions/snap_standard_deduction.py index 30021d9da76..420061a5c73 100644 --- a/policyengine_us/variables/gov/usda/snap/income/deductions/snap_standard_deduction.py +++ b/policyengine_us/variables/gov/usda/snap/income/deductions/snap_standard_deduction.py @@ -15,5 +15,6 @@ def formula(spm_unit, period, parameters): period ).gov.usda.snap.income.deductions.standard state_group = spm_unit.household("state_group_str", period) - capped_household_size = min_(spm_unit("spm_unit_size", period), 6) + unit = spm_unit("snap_unit_size", period) + capped_household_size = clip(unit, 1, 6) return standard_deductions[state_group][capped_household_size] diff --git a/policyengine_us/variables/gov/usda/snap/income/snap_fpg.py b/policyengine_us/variables/gov/usda/snap/income/snap_fpg.py index 2f8905ea20e..ca0144bc512 100644 --- a/policyengine_us/variables/gov/usda/snap/income/snap_fpg.py +++ b/policyengine_us/variables/gov/usda/snap/income/snap_fpg.py @@ -12,7 +12,7 @@ class snap_fpg(Variable): definition_period = MONTH def formula(spm_unit, period, parameters): - n = spm_unit("spm_unit_size", period.this_year) + n = spm_unit("snap_unit_size", period.this_year) state_group = spm_unit.household("state_group_str", period.this_year) year = period.start.year month = period.start.month diff --git a/policyengine_us/variables/gov/usda/snap/snap_max_allotment.py b/policyengine_us/variables/gov/usda/snap/snap_max_allotment.py index c4b5c790153..79f92ce0180 100644 --- a/policyengine_us/variables/gov/usda/snap/snap_max_allotment.py +++ b/policyengine_us/variables/gov/usda/snap/snap_max_allotment.py @@ -14,11 +14,11 @@ def formula(spm_unit, period, parameters): MAX_HOUSEHOLD_SIZE_UNDER_MAIN = 8 snap_region = spm_unit.household("snap_region_str", period) household_size = min_( - spm_unit("spm_unit_size", period), MAX_HOUSEHOLD_SIZE_UNDER_MAIN + spm_unit("snap_unit_size", period), MAX_HOUSEHOLD_SIZE_UNDER_MAIN ) additional_members = max_( 0, - spm_unit("spm_unit_size", period) - MAX_HOUSEHOLD_SIZE_UNDER_MAIN, + spm_unit("snap_unit_size", period) - MAX_HOUSEHOLD_SIZE_UNDER_MAIN, ) main_allotment = max_allotments.main[snap_region][household_size] additional_allotment = ( diff --git a/policyengine_us/variables/gov/usda/snap/snap_min_allotment.py b/policyengine_us/variables/gov/usda/snap/snap_min_allotment.py index 28296918c74..82b9a51c412 100644 --- a/policyengine_us/variables/gov/usda/snap/snap_min_allotment.py +++ b/policyengine_us/variables/gov/usda/snap/snap_min_allotment.py @@ -23,7 +23,7 @@ def formula(spm_unit, period, parameters): ] # Minimum benefits only apply to households up to a certain size. - size = spm_unit("spm_unit_size", period) + size = spm_unit("snap_unit_size", period) eligible = size <= snap.min_allotment.maximum_household_size min_allotment = eligible * min_allotment.rate * relevant_max_allotment diff --git a/policyengine_us/variables/gov/usda/snap/snap_unit.py b/policyengine_us/variables/gov/usda/snap/snap_unit.py new file mode 100644 index 00000000000..0bb83609ba8 --- /dev/null +++ b/policyengine_us/variables/gov/usda/snap/snap_unit.py @@ -0,0 +1,15 @@ +from policyengine_us.model_api import * + + +class snap_unit_size(Variable): + value_type = int + entity = SPMUnit + label = "SNAP unit" + definition_period = YEAR + + def formula(spm_unit, period, parameters): + unit_size = spm_unit("spm_unit_size", period) + person = spm_unit.members + ineligible_student = person("is_snap_ineligible_student", period) + ineligible_students = spm_unit.sum(ineligible_student) + return max_(unit_size - ineligible_students, 0) diff --git a/policyengine_us/variables/household/demographic/person/is_father.py b/policyengine_us/variables/household/demographic/person/is_father.py index d7b8ae421e2..75caa06d1aa 100644 --- a/policyengine_us/variables/household/demographic/person/is_father.py +++ b/policyengine_us/variables/household/demographic/person/is_father.py @@ -12,5 +12,5 @@ def formula(person, period, parameters): # male and has some children in their own household (provided in the # CPS). female = person("is_female", period) - has_children = person("own_children_in_household", period) > 0 + has_children = person("is_parent", period) return ~female & has_children diff --git a/policyengine_us/variables/household/demographic/person/is_mother.py b/policyengine_us/variables/household/demographic/person/is_mother.py index a86ed689129..1394af0eaa8 100644 --- a/policyengine_us/variables/household/demographic/person/is_mother.py +++ b/policyengine_us/variables/household/demographic/person/is_mother.py @@ -14,6 +14,6 @@ def formula(person, period, parameters): # (provided in the CPS). # 2. Breastfeeding (user-input). female = person("is_female", period) - has_children = person("own_children_in_household", period) > 0 + has_children = person("is_parent", period) breastfeeding = person("is_breastfeeding", period) return breastfeeding | (female & has_children) diff --git a/policyengine_us/variables/household/demographic/person/is_parent.py b/policyengine_us/variables/household/demographic/person/is_parent.py new file mode 100644 index 00000000000..fcb5d85dcf8 --- /dev/null +++ b/policyengine_us/variables/household/demographic/person/is_parent.py @@ -0,0 +1,11 @@ +from policyengine_us.model_api import * + + +class is_parent(Variable): + value_type = bool + entity = Person + label = "Is a parent" + definition_period = YEAR + + def formula(person, period, parameters): + return person("own_children_in_household", period) > 0 From 2a4218894bef09439910ffe61d771df942f7269f Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Tue, 15 Oct 2024 16:36:00 +0000 Subject: [PATCH 26/29] Update PolicyEngine US --- CHANGELOG.md | 7 +++++++ changelog.yaml | 5 +++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 42a0d652d73..64a41d0d369 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.125.0] - 2024-10-15 16:32:32 + +### Added + +- Exclude students from the SNAP unit with certain exceptions. + ## [1.124.0] - 2024-10-15 16:26:25 ### Added @@ -10005,6 +10011,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[1.125.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.124.0...1.125.0 [1.124.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.123.0...1.124.0 [1.123.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.122.0...1.123.0 [1.122.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.121.0...1.122.0 diff --git a/changelog.yaml b/changelog.yaml index 3d5bda193d2..4620a6f6317 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -8483,3 +8483,8 @@ added: - IN county taxes. date: 2024-10-15 16:26:25 +- bump: minor + changes: + added: + - Exclude students from the SNAP unit with certain exceptions. + date: 2024-10-15 16:32:32 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index 401c11d8695..e69de29bb2d 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: minor - changes: - added: - - Exclude students from the SNAP unit with certain exceptions. diff --git a/setup.py b/setup.py index 6cc0a926ce2..e429c43fc71 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup( name="policyengine-us", - version="1.124.0", + version="1.125.0", author="PolicyEngine", author_email="hello@policyengine.org", long_description=readme, From 062b26ca74c6b9cf95cf43889a27880c56bad10b Mon Sep 17 00:00:00 2001 From: David Trimmer Date: Tue, 15 Oct 2024 14:56:55 -0400 Subject: [PATCH 27/29] Chained CPI 2035 (#5232) * Fixes #5231 * Fixes #5231 (updated) --- changelog_entry.yaml | 4 ++++ policyengine_us/parameters/gov/bls/cpi/c_cpi_u.yaml | 1 + 2 files changed, 5 insertions(+) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..c68d1bee495 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Chained CPI 2035. diff --git a/policyengine_us/parameters/gov/bls/cpi/c_cpi_u.yaml b/policyengine_us/parameters/gov/bls/cpi/c_cpi_u.yaml index e9400f47450..2a6274bc89b 100644 --- a/policyengine_us/parameters/gov/bls/cpi/c_cpi_u.yaml +++ b/policyengine_us/parameters/gov/bls/cpi/c_cpi_u.yaml @@ -304,6 +304,7 @@ values: 2031-02-01: 199.7 # 2032 value. 2032-02-01: 203.7 # 2033 value. 2033-02-01: 207.8 # 2034 value. + 2034-02-01: 212.0 # 2035 value. (indexed by applying 2034 indexing rate (207.8/203.7) and multiplying it by 207.8) metadata: unit: currency-USD label: Chained CPI-U From 7d10e6dd07f5ad84859cad32fc201e3197bb4e9f Mon Sep 17 00:00:00 2001 From: "Github Actions[bot]" Date: Tue, 15 Oct 2024 19:00:42 +0000 Subject: [PATCH 28/29] Update PolicyEngine US --- CHANGELOG.md | 7 +++++++ changelog.yaml | 5 +++++ changelog_entry.yaml | 4 ---- setup.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64a41d0d369..19e62d6cf94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.126.0] - 2024-10-15 18:57:14 + +### Added + +- Chained CPI 2035. + ## [1.125.0] - 2024-10-15 16:32:32 ### Added @@ -10011,6 +10017,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +[1.126.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.125.0...1.126.0 [1.125.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.124.0...1.125.0 [1.124.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.123.0...1.124.0 [1.123.0]: https://github.com/PolicyEngine/policyengine-us/compare/1.122.0...1.123.0 diff --git a/changelog.yaml b/changelog.yaml index 4620a6f6317..7adcdabe908 100644 --- a/changelog.yaml +++ b/changelog.yaml @@ -8488,3 +8488,8 @@ added: - Exclude students from the SNAP unit with certain exceptions. date: 2024-10-15 16:32:32 +- bump: minor + changes: + added: + - Chained CPI 2035. + date: 2024-10-15 18:57:14 diff --git a/changelog_entry.yaml b/changelog_entry.yaml index c68d1bee495..e69de29bb2d 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +0,0 @@ -- bump: minor - changes: - added: - - Chained CPI 2035. diff --git a/setup.py b/setup.py index e429c43fc71..c6748ad2af9 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup( name="policyengine-us", - version="1.125.0", + version="1.126.0", author="PolicyEngine", author_email="hello@policyengine.org", long_description=readme, From 37f582f9a1db8ef661d6849bd2ac861ed8ced07a Mon Sep 17 00:00:00 2001 From: Anthony Volk Date: Thu, 17 Oct 2024 21:20:53 +0200 Subject: [PATCH 29/29] chore: Update to match newer version of -core --- changelog_entry.yaml | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog_entry.yaml b/changelog_entry.yaml index c7a1b728f84..973da8db0ff 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -1,4 +1,4 @@ - bump: patch changes: changed: - - Updated required version of policyengine-core \ No newline at end of file + - Updated required version of policyengine-core diff --git a/setup.py b/setup.py index 4111da87110..7fcdbeedac7 100644 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ ), ], install_requires=[ - "policyengine-core>=3.9.0", + "policyengine-core>=3.10.0", "policyengine-us-data==1.11.0", "microdf-python", "tqdm",