Skip to content

US frame clips PUF Schedule C losses to zero (puf_tax_detail nonnegative_outputs) #1238

Open

Description

@MaxGhenis

The puf_tax_detail stage lists self_employment_income_before_lsr under nonnegative_outputs (packages/microcosm-build/src/microcosm/build/us/spec/sources.yaml, around line 328). It arrived in f85c248 ("F0 D3: generate complete US spec bundle") with no stated rationale. The donor's self_employment_income is the signed E00900 (policyengine-us-data datasets/puf/puf.py: puf["self_employment_income"] = puf.E00900), and farm operations income on the same stage is already re-derived "without clipping".

Effect on the certified Route A release (populace-us-2024-0fb05b6-4b57d15a287c-20260930T150401Z):

Loss units (weighted tax units with negative Schedule C, SE + SSTB)
Release, before calibration 0.39M
Release, after calibration 0.65M
IRS Table 1.4 TY2022 8,386,569 net-loss returns / −$133.2B

Why it matters. HT2 and district-file N00900 count every return with a Schedule C entry, profit or loss. Since #1228 / #1230 binds them as such, the frame can meet that count only with profit carriers. The #1230 re-solve (experiments/1228-net-income-less-loss/) measures the result: 28.1M profit units against IRS 22.0M, with profits at 0.87×. A positive-part binding gets profits right but overstates the net 1.3×. Only a frame with losses gets both.

What a fix has to check:

  • every consumer that assumes nonnegative Schedule C income: SE tax, the QBI/SSTB split in us_runtime/qbi_inputs.py, the self-employed health insurance attribution, earnings bases in puf_support.py, EITC earned income, and is_self_employed;
  • the weighted loss count and amount against Table 1.4, on a rebuilt stage.

Evidence: ~/PolicyEngine/_reviews/soi-net-income-less-loss-20261012/ (scripts/carriers.py, out/carriers_*.json).

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