diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29bb2d..21cdb81d26e 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: minor + changes: + added: + - Itemized medical deduction take-up. diff --git a/policyengine_us/parameters/gov/irs/deductions/itemized/medical/takeup.yaml b/policyengine_us/parameters/gov/irs/deductions/itemized/medical/takeup.yaml new file mode 100644 index 00000000000..874f616f9cd --- /dev/null +++ b/policyengine_us/parameters/gov/irs/deductions/itemized/medical/takeup.yaml @@ -0,0 +1,10 @@ +description: The share of eligible taxpayers who claim the itemized medical deduction. +values: + 2024-01-01: 0.505 +metadata: + period: year + unit: /1 + label: Itemized medical deduction takeup rate + reference: + - title: Subsidizing Medical Spending Through the Tax Code - Take-Up, Targeting and the Cost of Claiming + href: https://www.nber.org/system/files/working_papers/w33213/w33213.pdf#page=2 diff --git a/policyengine_us/variables/gov/irs/income/taxable_income/deductions/itemizing/medical_expense_deduction.py b/policyengine_us/variables/gov/irs/income/taxable_income/deductions/itemizing/medical_expense_deduction.py index c815eb8be92..9a62a14079a 100644 --- a/policyengine_us/variables/gov/irs/income/taxable_income/deductions/itemizing/medical_expense_deduction.py +++ b/policyengine_us/variables/gov/irs/income/taxable_income/deductions/itemizing/medical_expense_deduction.py @@ -11,7 +11,13 @@ class medical_expense_deduction(Variable): documentation = "Medical expenses deducted from taxable income." def formula(tax_unit, period, parameters): + takes_up_itemized_medical_deduction = tax_unit( + "takes_up_itemized_medical_deduction", period + ) expense = add(tax_unit, period, ["medical_out_of_pocket_expenses"]) medical = parameters(period).gov.irs.deductions.itemized.medical medical_floor = medical.floor * tax_unit("positive_agi", period) - return max_(0, expense - medical_floor) + return ( + max_(0, expense - medical_floor) + * takes_up_itemized_medical_deduction + ) diff --git a/policyengine_us/variables/gov/irs/income/taxable_income/deductions/itemizing/takes_up_itemized_medical_deduction.py b/policyengine_us/variables/gov/irs/income/taxable_income/deductions/itemizing/takes_up_itemized_medical_deduction.py new file mode 100644 index 00000000000..1f19ef12b81 --- /dev/null +++ b/policyengine_us/variables/gov/irs/income/taxable_income/deductions/itemizing/takes_up_itemized_medical_deduction.py @@ -0,0 +1,16 @@ +from policyengine_us.model_api import * + + +class takes_up_itemized_medical_deduction(Variable): + value_type = bool + entity = TaxUnit + label = "Takes up the itemized medical deduction" + definition_period = YEAR + + def formula(tax_unit, period, parameters): + if not hasattr(tax_unit.simulation, "dataset"): + return True + takeup_rate = parameters( + period + ).gov.irs.deductions.itemized.medical.takeup + return random(tax_unit) < takeup_rate