From 61e26f68ac08175bced588de9ca090a2d3a702a7 Mon Sep 17 00:00:00 2001 From: PavelMakarchuk Date: Wed, 25 Sep 2024 14:50:42 +0200 Subject: [PATCH] Apply the TCJA mortgage interest deduction limits Fixes #5128 --- changelog_entry.yaml | 4 ++++ .../itemized/interest/mortgage/cap.yaml | 24 ++++++++++++++----- .../household/expense/interest_expense.yaml | 19 +++++++++++++++ .../expense/person/interest_expense.py | 10 +++++++- 4 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 policyengine_us/tests/policy/baseline/household/expense/interest_expense.yaml diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..f80a269810f 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Apply the TCJA mortgage interest deduction limits. diff --git a/policyengine_us/parameters/gov/irs/deductions/itemized/interest/mortgage/cap.yaml b/policyengine_us/parameters/gov/irs/deductions/itemized/interest/mortgage/cap.yaml index 2f371e152fd..3701a2d6501 100644 --- a/policyengine_us/parameters/gov/irs/deductions/itemized/interest/mortgage/cap.yaml +++ b/policyengine_us/parameters/gov/irs/deductions/itemized/interest/mortgage/cap.yaml @@ -1,21 +1,33 @@ description: IRS limits the total home mortgage interest deduction to this amount, based on filing status. SINGLE: - 2018-01-01: 1_000_000 + 2017-01-01: 1_000_000 + 2018-01-01: 750_000 + 2026-01-01: 1_000_000 JOINT: - 2018-01-01: 1_000_000 + 2017-01-01: 1_000_000 + 2018-01-01: 750_000 + 2026-01-01: 1_000_000 SEPARATE: - 2018-01-01: 500_000 + 2017-01-01: 500_000 + 2018-01-01: 375_000 + 2026-01-01: 500_000 HEAD_OF_HOUSEHOLD: - 2018-01-01: 1_000_000 + 2017-01-01: 1_000_000 + 2018-01-01: 750_000 + 2026-01-01: 1_000_000 SURVIVING_SPOUSE: - 2018-01-01: 1_000_000 + 2017-01-01: 1_000_000 + 2018-01-01: 750_000 + 2026-01-01: 1_000_000 metadata: breakdown: filing_status unit: currency-USD + period: year label: IRS home mortgage interest deduction amount cap reference: # Hawaii applies this AGI threshold in the state itemized deductions computation - title: Hawaii Income Tax Law, Chapter 235, Section 235-2.4, (j)(3) href: https://files.hawaii.gov/tax/legal/hrs/hrs_235.pdf#page=10 - - title: 26 U.S. Code § 163 - Interest, (h)(3)(F) + # TCJA adjustemnts described in (h)(3)(F)(i)(II) + - title: 26 U.S. Code § 163 - Interest, (h)(3)(b)(ii) href: https://www.law.cornell.edu/uscode/text/26/163 diff --git a/policyengine_us/tests/policy/baseline/household/expense/interest_expense.yaml b/policyengine_us/tests/policy/baseline/household/expense/interest_expense.yaml new file mode 100644 index 00000000000..3ed419d6417 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/household/expense/interest_expense.yaml @@ -0,0 +1,19 @@ +- name: Capped mortageg interest, joint + absolute_error_margin: 0.01 + period: 2021 + input: + mortgage_interest: 1_200_000 + filing_status: JOINT + non_mortgage_interest: 0 + output: + interest_expense: 750_000 + +- name: Uncapped mortageg interest, joint + absolute_error_margin: 0.01 + period: 2021 + input: + mortgage_interest: 700_000 + filing_status: JOINT + non_mortgage_interest: 100_000 + output: + interest_expense: 800_000 diff --git a/policyengine_us/variables/household/expense/person/interest_expense.py b/policyengine_us/variables/household/expense/person/interest_expense.py index f7426a9f881..d4ae880a19b 100644 --- a/policyengine_us/variables/household/expense/person/interest_expense.py +++ b/policyengine_us/variables/household/expense/person/interest_expense.py @@ -7,4 +7,12 @@ class interest_expense(Variable): label = "Interest paid on all loans" unit = USD definition_period = YEAR - adds = ["mortgage_interest", "non_mortgage_interest"] + + def formula(person, period, parameters): + p = parameters(period).gov.irs.deductions.itemized.interest.mortgage + mortgage_interest = person("mortgage_interest", period) + filing_status = person.tax_unit("filing_status", period) + cap = p.cap[filing_status] + capped_mortgage_interest = min_(mortgage_interest, cap) + non_mortgage_interest = person("non_mortgage_interest", period) + return capped_mortgage_interest + non_mortgage_interest