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
9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,15 @@ have their own `data/current/SHA256SUMS`; they do not replace the frozen
forecast or become a new prospective commitment. `data/PROVENANCE.md`
describes both collections and the original implementation pin.

## Pre-committed 2025 poverty-rate prediction
## September 11, 2026 development poverty-rate prediction

**Status as of September 13, 2026:** these development estimates remain
provisional pending a comparison on the final, qualified model and
population release. They are separate from the paper's threshold-method
results.

`data/predictions/2025-spm-poverty-rates-2026-09-11.json` records, before the
Census Bureau's 2026-09-15 release, PolicyEngine's prediction for the 2025 SPM
Census Bureau's 2026-09-15 release, a pre-committed prediction for the 2025 SPM
poverty rate: the Census 2024 rate plus the modeled 2024-to-2025 change under
the rolling CE and ACS threshold method (13.2 percent overall on the corrected
2024 series; 14.3 for children; 14.6 for people 65 and over). Its SHA-256 is in
Expand Down
26 changes: 9 additions & 17 deletions paper/index.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ author:
affiliations:
- name: PolicyEngine
email: max@policyengine.org
date: 2026-09-12
date: 2026-09-13
date-format: long
bibliography: ../bibliography/references.bib
format:
Expand Down Expand Up @@ -715,17 +715,8 @@ also alter growth relationships. The sample and trend sensitivities
identify specific uncertainties but do not provide forecast intervals.

Threshold choice affects modeled poverty through the distribution of
resources near the line, not through threshold growth alone. In a frozen
historical PolicyEngine simulation, projected SPM poverty under the
committed 2025 nowcast was 0.4 percentage points higher than under
CPI-U-adjusted thresholds. That simulation uses the model's CPI-U
parameters, rather than the realized annual-average CPI-U rule evaluated
above. The recorded sensitivity depends on its original population and
model vintage; it is not a result from the current model or a general
conversion between threshold errors and
poverty-rate errors. Its saved receipt lacks immutable model and dataset
identities, so an exact independent replay of this historical sensitivity
has not been established.
resources near the line. A poverty-rate impact estimate therefore requires
a specified population and resource model.

# Appendix A: method versions and forecast commitment {.unnumbered}

Expand Down Expand Up @@ -769,8 +760,8 @@ old timestamp covers the amendment. The repository documents those
identities and checks the retained bytes; this revision does not
independently reverify blockchain attestations.

This paper makes no new forecast commitment or scheduled cutoff. The
previously discussed 2026 CE collection window already closed in 2026Q1.
This paper makes no new threshold forecast commitment or scheduled cutoff.
The previously discussed 2026 CE collection window already closed in 2026Q1.
Any future commitment would require an actual timestamp and a recorded
available-input cutoff before the outcome is published.

Expand Down Expand Up @@ -800,9 +791,10 @@ digest is:
```

Exact source and release identities are recorded alongside the inputs;
`data/PROVENANCE.md` describes the separate collections. The frozen
poverty sensitivity additionally requires its original model and
population dataset to reproduce.
`data/PROVENANCE.md` describes the separate collections. The repository
also preserves a historical poverty sensitivity. Its receipt lacks
immutable model and population dataset identities, so exact replay has
not been established.

To verify the reported tables, clone the paper repository with its full
tag history and check out the manuscript revision being evaluated. Run
Expand Down
4 changes: 2 additions & 2 deletions scripts/check_paper.py
Original file line number Diff line number Diff line change
Expand Up @@ -415,8 +415,8 @@ def count_word(value: int) -> str:
rate = json.loads((DATA / "nowcast_rate_impact.json").read_text())
delta_2025 = rate["2025"]["all"]["delta_pp"]
check(
"poverty sensitivity 0.4pp",
has_number("0.4 percentage points", min_count=1) and abs(delta_2025 - 0.4) < 0.05,
"archived poverty sensitivity rounds to 0.4pp",
abs(delta_2025 - 0.4) < 0.05,
)

backtest = (TABLES / "backtest.md").read_text()
Expand Down
Loading