diff --git a/changelog_entry.yaml b/changelog_entry.yaml index e69de29b..beaa438c 100644 --- a/changelog_entry.yaml +++ b/changelog_entry.yaml @@ -0,0 +1,6 @@ +- bump: minor + changes: + added: + - Add ACA Premium Tax Credit (PTC) targets from IRS SOI CD-level data (N85530/A85530) + at national, state, and congressional district levels + date: 2026-02-06 12:00:00 diff --git a/policyengine_us_data/datasets/cps/local_area_calibration/fit_calibration_weights.py b/policyengine_us_data/datasets/cps/local_area_calibration/fit_calibration_weights.py index b22b8eb4..995a52ab 100644 --- a/policyengine_us_data/datasets/cps/local_area_calibration/fit_calibration_weights.py +++ b/policyengine_us_data/datasets/cps/local_area_calibration/fit_calibration_weights.py @@ -110,6 +110,7 @@ "health_insurance_premiums_without_medicare_part_b", "snap", "state_income_tax", # Census STC state income tax collections + "aca_ptc", # ACA Premium Tax Credit from IRS SOI ], }, ) diff --git a/policyengine_us_data/db/DATABASE_GUIDE.md b/policyengine_us_data/db/DATABASE_GUIDE.md index ac038cb7..a9f8f398 100644 --- a/policyengine_us_data/db/DATABASE_GUIDE.md +++ b/policyengine_us_data/db/DATABASE_GUIDE.md @@ -110,7 +110,7 @@ The `stratum_group_id` field categorizes strata: | 5 | Medicaid | Medicaid enrollment strata | | 6 | EITC | EITC recipients by qualifying children | | 7 | State Income Tax | State-level income tax collections (Census STC) | -| 100-118 | IRS Conditional | Each IRS variable paired with conditional count constraints | +| 100-119 | IRS Conditional | Each IRS variable paired with conditional count constraints (includes ACA PTC at 119) | ### Conditional Strata (IRS SOI) diff --git a/policyengine_us_data/db/etl_irs_soi.py b/policyengine_us_data/db/etl_irs_soi.py index ed4da4e5..cc718994 100644 --- a/policyengine_us_data/db/etl_irs_soi.py +++ b/policyengine_us_data/db/etl_irs_soi.py @@ -281,6 +281,7 @@ def transform_soi_data(raw_df): dict(code="18425", name="salt", breakdown=None), dict(code="06500", name="income_tax", breakdown=None), dict(code="05800", name="income_tax_before_credits", breakdown=None), + dict(code="85530", name="aca_ptc", breakdown=None), ] # National --------------- @@ -566,6 +567,28 @@ def load_soi_data(long_dfs, year): units="dollars", ) + # ACA Premium Tax Credit + ptc_group = get_or_create_variable_group( + session, + name="aca_ptc_recipients", + category="tax", + is_histogram=False, + is_exclusive=False, + aggregation_method="sum", + display_order=9, + description="ACA Premium Tax Credit recipients and amounts", + ) + + get_or_create_variable_metadata( + session, + variable="aca_ptc", + group=ptc_group, + display_name="Premium Tax Credit", + display_order=1, + units="dollars", + notes="ACA Premium Tax Credit amount from IRS SOI", + ) + # Fetch existing geographic strata geo_strata = get_geographic_strata(session)