Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions packages/populace-build/src/populace/build/us/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,15 @@
SimpleTaxExpenditureReform,
compile_us_fiscal_target_registry,
)
from populace.build.us.reform_validation import (
REFORM_VALIDATION_SCHEMA_VERSION,
ReformValidationSpec,
in_sample_reform_specs,
load_default_reform_specs,
out_of_sample_reform_specs,
reform_validation_payload,
write_reform_validation,
)
from populace.build.us.source_coverage import (
LEDGER_US_SOURCE_COVERAGE_CONTRACT_COMMIT,
US_SOURCE_COVERAGE,
Expand All @@ -67,6 +76,8 @@
__all__ = [
"BuildConfig",
"SimpleTaxExpenditureReform",
"ReformValidationSpec",
"REFORM_VALIDATION_SCHEMA_VERSION",
"LEDGER_US_SOURCE_COVERAGE_CONTRACT_COMMIT",
"US_DONORS",
"US_FISCAL_MACRO_REALISM_BANDS",
Expand All @@ -92,8 +103,13 @@
"US_STATE_INCOME_TAX_TARGET_REFERENCES",
"compile_us_fiscal_target_registry",
"hard_target_package_aliases",
"in_sample_reform_specs",
"load_default_reform_specs",
"out_of_sample_reform_specs",
"reform_validation_payload",
"source_gap_family_ids",
"us_plan",
"write_reform_validation",
"us_source_coverage_diagnostics",
"us_source_coverage_gate",
"write_us_source_coverage_diagnostics",
Expand Down
54 changes: 54 additions & 0 deletions packages/populace-build/src/populace/build/us/obbba_reforms.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"_comment": "Out-of-sample reform-validation set: provisions of the 2025 One Big Beautiful Bill Act (OBBBA) that policyengine-us models in its baseline. Each reform is encoded as a COUNTERFACTUAL REVERT (the provision is already in the baseline, so we turn it off); the provision's budget effect is therefore baseline - reform (effect_direction='baseline_minus_reform'), which is sign-comparable to the JCT enactment score. We include only genuinely new provisions whose JCT line is NOT bundled with TCJA extension, so the parameter revert captures the whole provision. JCT figures are the per-fiscal-year lines from JCX-35-25 (July 1 2025), conventional/static, in dollars. We compare a single simulated year (period) to JCT's same-year line. Provisions excluded for now: SALT cap (JCT line bundles cap-extension + raise; sign ambiguous), CTC / standard deduction (JCT lines bundle TCJA extension + enhancement; a clean revert isn't isolable), senior bonus deduction (no standalone JCX-35-25 line), Trump accounts (not modeled in policyengine-us), estate exemption (rarely fires in microdata).",
"schema_version": 1,
"jct_document": {
"id": "JCX-35-25",
"title": "Estimated Revenue Effects Relative to the Present Law Baseline of the Tax Provisions in Title VII-Finance of the substitute legislation as passed by the Senate (FY2025 budget reconciliation)",
"published": "2025-07-01",
"url": "https://www.jct.gov/publications/2025/jcx-35-25/"
},
"reforms": [
{
"id": "obbba_no_tax_on_tips",
"name": "OBBBA — No tax on tips (tip income deduction)",
"category": "OBBBA",
"description": "Deduction for qualified tip income (sunsets 12/31/2028). Validated by reverting the tip-income deduction cap to 0 over the provision window and comparing the simulated FY2026 income-tax revenue loss to the JCT FY2026 line.",
"period": 2026,
"budget_measure": "income_tax",
"effect_direction": "baseline_minus_reform",
"parameter_changes": {
"gov.irs.deductions.tip_income.cap": { "2025-01-01.2028-12-31": 0 }
},
"jct": {
"score": -10121000000,
"score_type": "conventional",
"window": "FY2026",
"source": "JCX-35-25, Ch.2 line 1 (FY2026)",
"source_url": "https://www.jct.gov/publications/2025/jcx-35-25/"
}
},
{
"id": "obbba_no_tax_on_overtime",
"name": "OBBBA — No tax on overtime (overtime income deduction)",
"category": "OBBBA",
"description": "Deduction for qualified overtime premium income (sunsets 12/31/2028). Validated by reverting the overtime-income deduction cap to 0 over the provision window and comparing the simulated FY2026 income-tax revenue loss to the JCT FY2026 line.",
"period": 2026,
"budget_measure": "income_tax",
"effect_direction": "baseline_minus_reform",
"parameter_changes": {
"gov.irs.deductions.overtime_income.cap.JOINT": { "2025-01-01.2028-12-31": 0 },
"gov.irs.deductions.overtime_income.cap.SINGLE": { "2025-01-01.2028-12-31": 0 },
"gov.irs.deductions.overtime_income.cap.HEAD_OF_HOUSEHOLD": { "2025-01-01.2028-12-31": 0 },
"gov.irs.deductions.overtime_income.cap.SURVIVING_SPOUSE": { "2025-01-01.2028-12-31": 0 },
"gov.irs.deductions.overtime_income.cap.SEPARATE": { "2025-01-01.2028-12-31": 0 }
},
"jct": {
"score": -32806000000,
"score_type": "conventional",
"window": "FY2026",
"source": "JCX-35-25, Ch.2 line 2 (FY2026)",
"source_url": "https://www.jct.gov/publications/2025/jcx-35-25/"
}
}
]
}
Loading
Loading