Refine SSI disability training filters and targets#1131
Merged
Conversation
97ee509 to
b60ff1b
Compare
bc791f7 to
c884da6
Compare
c884da6 to
366d8ab
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
2 * FBRtotal-income proxy with an approximate SSI countable-income screen using PE-US SSI exclusionspolicyengine-uspatch release to keep the data build dependency currentssi_federal_fiscal_year_outlaysand train onssidirectlyssiinstead of OACT fiscal-year/payment-date month summingContext
The SIPP SSI disability training frame should avoid treating records that are structurally unlikely to receive SSI under current law as clean non-disabled labels. This tightens the training candidate screen for earnings and income without changing the exported variable schema.
The SSI fiscal-year outlay formula is being removed from PolicyEngine-US. The us-data calibration surfaces now stop referencing that formula variable; explicit fiscal-year/payment-date timing logic belongs in the PE-US helper introduced in PolicyEngine/policyengine-us#8428.
For 2024, SSA has published actual Federal SSI total annual payments in SSI Annual Statistical Report 2024 Table 2. That ASR target allocates payments to the month due, so it aligns with annual
ssiover January-December benefit months. It is not the same thing as OACT payment-date/fiscal accounting, so the calibration matrix remains the annualssicalculation rather than summing a special payment-date month set.The OACT payment-date comparison is useful as a guardrail: OACT Table IV.C1 reports CY2024 all Federal SSI payments of $63.080B and Table IV.C2 reports FY2024 all Federal SSI payments of $57.600B. That OACT CY-to-FY gap is $5.480B, about 8.7% of OACT CY2024, which is consistent with the 11-payment FY2024 issue plus lower benefit levels in the FY2024 months drawn from 2023. The much smaller ASR CY2024-to-OACT FY2024 gap reflects mixed bases: OACT obligations are not reduced for certain recovered overpayments remitted directly to Treasury, while ASR nets those recoveries out.
Related to #1130.
Tests
uv run ruff format policyengine_us_data/datasets/sipp/sipp.py tests/unit/datasets/test_sipp_ssi_disability.pyuv run ruff check policyengine_us_data/datasets/sipp/sipp.py tests/unit/datasets/test_sipp_ssi_disability.pyuv run pytest tests/unit/datasets/test_sipp_ssi_disability.py -quv run pytest tests/unit/calibration/test_loss_targets.py tests/unit/calibration/test_unified_matrix_builder.py tests/unit/calibration/test_target_config.py tests/unit/test_etl_national_targets.py tests/unit/calibration/test_hourly_wage_income_consistency.py tests/unit/calibration/test_compare_calibration_runs.py tests/unit/calibration/test_check_staging_sums.py tests/unit/calibration/test_validate_national_h5.py -quv run ruff check policyengine_us_data/utils/ssi_targets.py policyengine_us_data/utils/loss.py policyengine_us_data/calibration/unified_matrix_builder.py policyengine_us_data/calibration/chunked_matrix_assembler.py tests/unit/calibration/test_loss_targets.py tests/unit/calibration/test_unified_matrix_builder.py tests/unit/test_etl_national_targets.pyuv run ruff format --check policyengine_us_data/utils/ssi_targets.py policyengine_us_data/utils/loss.py policyengine_us_data/calibration/unified_matrix_builder.py policyengine_us_data/calibration/chunked_matrix_assembler.py tests/unit/calibration/test_loss_targets.py tests/unit/calibration/test_unified_matrix_builder.py tests/unit/test_etl_national_targets.pyuv run ruff check policyengine_us_data/utils/ssi_targets.py tests/unit/test_etl_national_targets.pyuv run ruff format --check policyengine_us_data/utils/ssi_targets.py tests/unit/test_etl_national_targets.pyuv run pytest tests/unit/test_etl_national_targets.py::test_extract_national_targets_uses_ssi_ssa_actual_when_available -q