PolicyEngine / PolicyEngine/chronicle

CD record sets stamp 22incd.csv as ty2023 — a tax-year vintage error; add Table 1.4 taxable-interest facts (populace#489)

Open
#117 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
0
Forks
1
Avg merge
11h 48m
Merged PRs (30d)
45

Description

Filed from the populace#489 target-truth adjudication (full receipts; populace-side fix in populace#518). Three corrections, all with official sourcing:

1. The congressional-district record sets mis-stamp the tax year (vintage error)

The v9.2 consumer feed (61b115c0…) carries irs_soi.ty2023.congressional_district_2022.* facts extracted from 22incd.csv with period: {tax_year: 2023}. That file is tax year 2022 data:

  • IRS's CD data page lists tax year 2022 as the most recent congressional-district publication — there is no TY2023 CD release. "Congressional districts of 2022" is the boundary vintage (118th Congress), not tax-year+1.
  • Arithmetic check against Pub 1304: the file's US taxable interest ($123.791B, A00300) is 92.7% of the Table 1.4 TY2022 actual ($133.597B, 22in14ar.xls) — the normal small-area coverage shortfall — but 39.4% of the TY2023 actual ($313.813B, 23in14ar.xls), impossible as a TY2023 all-returns tabulation. Return counts agree: 48.55M vs TY2022's 49.74M (−2.4%) vs TY2023's 55.26M (−12.1%).

Consequence in populace: the mis-stamp made the CD US aggregate look like the latest national interest fact, so the certified Build N surface rebased 457 state-AGI interest bins onto a TY2022 level it believed was TY2023, then under-aged it by one CBO link. populace#518 stops using CD aggregates as interest controls regardless, but the stamp should be corrected at source — every measure in these record sets is affected, not just interest (dollar measures on other concepts inherit the same one-link aging error wherever they serve as controls or targets).

2. Add Pub 1304 Table 1.4 taxable-interest facts (TY2022 + TY2023)

The feed has no Table 1.4 interest facts — the only Pub 1304 interest total is Table 4.3 (all_returns_excluding_dependents, $313.120B / 54,167,410 returns TY2023, 23in43ts.xls). populace#518 bridges that universe with a declared metadata stamp (dependent sliver: 0.22% of amount / 2.0% of returns at TY2023). Adding the Table 1.4 rows makes the bridge exact and retires it automatically (populace's control lattice prefers the exact all_returns universe):

  • TY2022: taxable interest $133,596,569k / 49,736,855 returns (22in14ar.xls, "All returns, total", cols 19–20)
  • TY2023: taxable interest $313,812,674k / 55,260,238 returns (23in14ar.xls)

These also give the aging model's chained-factor policy an interest actuals segment (_CBO_INCOME_SOURCE_TO_SOI_CHAIN in populace's target_aging.py — interest currently falls back to the CBO AGI default, which applied ×1.1203 over 2022→2024 while the realized TY2022→TY2023 growth was ×2.349; that miss is the root cause of populace#489).

3. Ingest HT2 TY2023 when IRS publishes it

HT2 is a correct photo of its own year (US A00300 vs Table 1.4: −0.36% TY2022, +0.13% TY2021 — verified against 22in55cmcsv.csv / 21in55cmcsv.csv). A TY2023 HT2 restores state-level interest truth, which no current fact provides — until then populace preserves TY2022 state shares under the national realized factor.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the congressional-district record-set mappings and Pub 1304 ingestion entry points in chronicle, then read populace's target_aging.py where interest source chaining is referenced. Correct the CD tax-year metadata, add the TY2022 and TY2023 Table 1.4 taxable-interest facts, and define the HT2 TY2023 ingestion path for when the IRS publishes it; verify the official source values and affected measures.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data-engineering
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.