Skip to content

Congressional-district capital-gains, SALT and PTC targets on the full surface cross IRS concepts #1038

Description

@MaxGhenis

On the default --target-surface full (tools/build_us_fiscal_refresh_release.py), three congressional-district-file (CD-file, 22incd.csv) target families sum past the national target of the same model quantity. Two more CD measures read the wrong IRS column. Build P shipped on national_state, so it is unaffected; every full build on the pinned feed (consumer_facts_us_c5e5bf8) carries these.

Numbers below come from a release-equivalent compile of the pinned feed (target period 2024, aging on, packaged CD crosswalk, Medicaid substitution) on top of #1036.

1. Capital gains: a concept mismatch

net_capital_gains_{returns,amount} compile onto capital_gains_gross. That is the positive part of PE-US capital_gains (Schedule D), whose IRS counterpart is Table 1.4 col 37/38 (#1035).

The CD file's N01000/A01000 is a different concept: Form 1040 line 7, "net capital gain (less loss)" per 22incddocguide.docx. It counts gain returns, loss-limited loss returns and distributions-only returns alike.

#1036 made the Historic Table 2 (HT2) rows shares of the Table 1.4 control. It deliberately left the 976 CD-file rows as line-7 levels:

Family on full CD US row CD states (51) CD districts (436) National Table 1.4 target Ratio
Returns 29,845,710 29,845,710 29,845,710 12,392,020 2.41x
Amount (aged to 2024) $1,522.19B $1,522.19B $1,522.19B $1,270.86B 1.198x

The model has no Schedule D loss returns in the released data, so it cannot represent the N01000 population at any level.

2. SALT: the CD package reads the wrong column

Chronicle's congressional_district_2022 package reads limited_state_local_taxes_{returns,amount} from N18425/A18425. The doc guide defines those as "State and local income taxes" (Schedule A line 5a, before the $10,000 limit). HT2 reads N18460/A18460, "Limited state and local taxes" (line 5e), which is what salt_deduction measures.

  • TY2022 US values: A18425 = $250.4B, against $121.2B for A18460 in the same file.
  • On full, the CD SALT amount rows sum to 1.98x the national HT2 target.

3. Premium tax credit: the CD package reads additional Medicare tax

The same package reads premium_tax_credit_{returns,amount} from N85530/A85530. The doc guide defines those as "Additional Medicare tax" (Form 8959 line 24). HT2 reads N85770/A85770, total premium tax credit.

  • The amount is already dropped, by a hard-coded CD check in fiscal_targets.py.
  • The 488 CD returns specs still compile as assigned_aca_ptc recipients. The US row is 6,848,330, against 7,713,000 for N85770 in the same file.

These are the only CD measures whose column differs from their HT2 twin's; I compared all 56 CD package measures.

Fix (PR to follow, stacked on #1036)

  • CD-file capital-gains rows become shares of their own US row times the Table 1.4 control, like the HT2 rows. The CD US row retires, and CD children keep scaling to their CD state parent.
  • The four mislabeled columns go to a reviewed, receipted source-column exclusion keyed by (measure id, IRS column). A package corrected to read N18460/N85770 then passes untouched.
  • A pinned-feed invariant is added: no CD-file family sums past its national target on full.

Changing published full-surface targets needs a ruling before merge.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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