Skip to content

PUF donor home_mortgage_interest carries the E19200 total-interest concept (+7.6% vs the Table 2.1 mortgage-only leg) #515

Description

@MaxGhenis

Found root-causing #511 (mortgage dollars +29.5% on certified O-1). Second of the two concept gaps behind that row; the first (target-side gross-vs-deducted) has its own PR.

The defect

The donor column home_mortgage_interest in the pinned PUF artifact (irs-soi-puf/1.8.0/puf_2024.h5, consumed at base-o per its summary puf_h5/puf_sha256=7669f5b5…) carries the E19200 lineage — Schedule A "Interest paid deduction, Total" — not the home-mortgage-only concept the SOI Table 2.1 target measures. The repo's own evidence notes document the construction (release_input_coverage_manifest.json investment_interest_expense exclusion; mortgage_conversion stage notes): archived puf.py L654 maps E19200 → interest_deduction, L1548-1550 assigns the identical amount as deductible mortgage interest, and utils/mortgage_interest.py L268-320 derives investment_interest_expense only as the (zero) residual. The artifact has 499,045 all-zero investment_interest_expense values.

At TY2015 (SOI Pub 1304 Table 2.1, all itemized returns):

line amount
Interest paid deduction, total (=E19200) $304.461B
Home mortgage interest (FI + individuals) — the target concept $283.004B
Deductible points $1.274B
Qualified mortgage insurance premiums $6.287B
Investment interest expense $13.895B

So every imputed home_mortgage_interest draw is concept-inflated by ×1.0758 (global; the ratio varies by AGI band — investment interest concentrates at the top).

Receipts on certified O-1 (buildo-sparse-rmloss100-22bd902)

Itemizer-masked masses at final weights vs the $186.31B aged Table 2.1 fact:

step mass rel err
gross home_mortgage_interest (the #511 row as shipped) $241.27B +29.5%
engine-capped deductible_mortgage_interest_tax_unit (target-side PR) $214.20B +15.0%
÷1.0758 donor concept scale (this issue) $199.11B +6.9%

Residual +6.9% (count +2.45%, mean +4.3%) is within normal solve slack — carriers are broad (5,762; top-1 2.6% per diagnose_us_target_support), so no #481-style tail story on this row. Donor realized ETL uprate on the column ex-aggregate-rows: ×1.374 ($304.46B → $418.25B at 2024, measured via puf_tax_unit_donor_from_arrays on the pinned artifact).

Fix shape (#487's variable-specific donor mechanism, applied as a concept carve)

Root fix in the irs-soi-puf ETL: carve E19200 into a mortgage leg and an investment-interest(+points+QMIP) leg using SOI TY2015 Table 2.1 shares — ideally by AGI band — emitting home_mortgage_interest at the A19300-family concept and a real investment_interest_expense column (reversing the SOURCE-UNAVAILABILITY exclusion with the SOI table as the evidence base). Interim populace-side option: scale the donor column (and the first/second_home_mortgage_interest structural legs, which carry the same total) by 283.004/304.461 = 0.9295 at donor load, factor ledgered — the #486 repair precedent.

Interaction note: the JCT deductible_mortgage_interest reform neutralizes interest_deduction; while investment_interest_expense is all-zero that row measures the mortgage-only concept by accident. If the carve un-zeroes investment interest, the reform should neutralize deductible_mortgage_interest instead — otherwise the JCT row re-inflates by the carved leg.

Relates #511, #487 (mechanism class), #486 (repair precedent). Full forensics on #511.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions