You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
US frame clips PUF Schedule C losses to zero (puf_tax_detail nonnegative_outputs) #1238
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.
Activity