Skip to content

Build M live default: non_sch_d_capital_gains lands at $74.6B vs its $10.2B SOI target (+635%); Schedule-D CGD route is empty #462

Description

@MaxGhenis

Summary

The live HF-latest release (populace-us-2024-buildm-sparse-rmloss100-98bf731-20260717T075101Z) ships non_sch_d_capital_gains at $74.6B against its own $10.2B SOI target — a +635% relative error recorded in the release's calibration_diagnostics.json — while schedule_d_capital_gain_distributions is empty. The #282 route split (Schedule-D-routed capital gain distributions carved out of long_term_capital_gains, direct route on non_sch_d_capital_gains) is not realized in the shipped artifact, and the build manifest records no CGD-split stage.

Observed (all reproducible from the published release)

From releases/populace-us-2024-buildm-sparse-rmloss100-98bf731-20260717T075101Z/calibration_diagnostics.json:

target (Ledger fact) bound variable target final estimate rel. error
irs_soi.ty2023.table_1_4.all.capital_gain_distributions_amount@2024 (Pub 1304 Table 1.4, concept irs_soi.capital_gain_distributions_1040) non_sch_d_capital_gains (sum) $10,155,465,319 $74,617,447,202 +6.3475
irs_soi.ty2023.table_1_4.all.capital_gain_distributions_returns@2024 non_sch_d_capital_gains (indicator_sum) 3,209,131 3,209,038 −0.0000
irs_soi.ty2023.table_1_4.all.net_capital_gains_amount@2024 capital_gains_gross (sum) $1,270,864,366,489 $945,431,772,792 −0.2561

The returns-count target is hit exactly while the dollar target is 7.3× over — the inflation is per-record amounts, not weights. The TY2022 historic_table_2 state net_capital_gains_amount targets all land within ~0.2%, so the −25.6% national miss is specific to the TY2023 Table 1.4 national row.

Simulated at pe-us 1.775.8, year 2026, on the artifact:

  • live latest: non_sch_d_capital_gains $85.5B across 3.26M tax units; schedule_d_capital_gain_distributions $0.0B; capital_gain_distributions $85.5B; long_term_capital_gains $1,116B; AGI $18,962B.
  • pe-us pinned default (populace_us_2024.h5@populace-us-2024-c86a631-6e1bcd0271a5-20260619T002242Z, 75,112 hh, pre-Split the Schedule D route of capital gain distributions out of long-term gains (US) #282 lineage) for comparison: non_sch_d_capital_gains $13.69B across 4.01M units — consistent with the SOI direct-route concept (Table 1.4 TY2023 $10.2B; PUF E01100 uprated).

The overshoot ($74.6B − $10.2B ≈ $64.5B) is close to the Schedule-D-route CGD magnitude documented on #274 (SOCA TY2015: $68.05B routed via Schedule D line 13), and the national net-capital-gains line is short by a similar order — consistent with Schedule-D-route dollars sitting on the direct-route input rather than inside long_term_capital_gains. That attribution is a hypothesis; the two discriminating checks are below.

build_manifest.json for the release contains no stage touching non_sch_d, schedule_d, capital_gain_distribution*, or split_component* (the only "split" hit is an unrelated mortgage-interest note).

Why it matters

Discriminating checks (for the Build M lane)

  1. Column masses on the Build M dense parent / base-m pool: does it carry schedule_d_capital_gain_distributions with ~$60–70B and non_sch_d_capital_gains at ~$10–14B (split ran, sparse export dropped the memo column — Sparse-57k export drops 94 no-formula input columns from the dense parent (tips, overtime, disability flags, ESI premiums, rent, QBI basis) #361 class, since it is a no-formula input), or non_sch_d at ~$75B with schedule_d absent (split never ran / donor stage mapped total CGD onto the direct-route variable)?
  2. Whether the Split the Schedule D route of capital gain distributions out of long-term gains (US) #282 split_component_by_share stage is invoked anywhere in the Build M release path (the manifest records none).

Repro

from policyengine_us import Microsimulation  # 1.775.8
live = Microsimulation(dataset="hf://datasets/policyengine/populace-us/populace_us_2024.h5")
print(live.calculate("non_sch_d_capital_gains", 2026, map_to="tax_unit").sum() / 1e9)          # 85.5
print(live.calculate("schedule_d_capital_gain_distributions", 2026, map_to="tax_unit").sum())  # 0.0

Relates #274, #282, #361, #393, #457; pe-us PolicyEngine/policyengine-us#8839, PolicyEngine/policyengine-us#8850; Build M PR #455. Found re-verifying GROWTH Act groundwork numbers against current artifacts.

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