Data audit (P1)
Raw output of the audit script: audit_raw.txt (file | sha256 prefix | matches README | rows | cols | date range | NA count | duplicate dates | month gaps).
text
data/RSAFS_current.csv|627d8bb386ac|readme_match=True|rows=417|cols=2|1992-01-01..2026-09-01|NA=0|dupdates=0|gaps=0
data/UMCSENT.csv|3076277f9f21|readme_match=True|rows=887|cols=2|1952-11-01..2026-09-01|NA=210|dupdates=0|gaps=0
data/first_release.csv|1d1ae8b3cacf|readme_match=True|rows=28|cols=5|2024-06-01..2026-09-01|NA=0|dupdates=0|gaps=0
data/vintages/PAYEMS_vintage_2025-10-31.csv|d4b4c909ed32|readme_match=True|rows=1040|cols=2|1939-01-01..2025-08-01|NA=0|dupdates=0|gaps=0
data/vintages/PAYEMS_vintage_2025-11-30.csv|a05ef7fc50cf|readme_match=True|rows=1041|cols=2|1939-01-01..2025-09-01|NA=0|dupdates=0|gaps=0
data/vintages/PAYEMS_vintage_2025-12-31.csv|829dae087af6|readme_match=True|rows=1043|cols=2|1939-01-01..2025-11-01|NA=0|dupdates=0|gaps=0
data/vintages/PAYEMS_vintage_2026-01-31.csv|8fd01c5d2740|readme_match=True|rows=1044|cols=2|1939-01-01..2025-12-01|NA=0|dupdates=0|gaps=0
data/vintages/PAYEMS_vintage_2026-02-28.csv|4a913e67ac5f|readme_match=True|rows=1045|cols=2|1939-01-01..2026-01-01|NA=0|dupdates=0|gaps=0
data/vintages/PAYEMS_vintage_2026-03-31.csv|919de86b07be|readme_match=True|rows=1046|cols=2|1939-01-01..2026-02-01|NA=0|dupdates=0|gaps=0
data/vintages/PAYEMS_vintage_2026-04-30.csv|06a8d663d9aa|readme_match=True|rows=1047|cols=2|1939-01-01..2026-03-01|NA=0|dupdates=0|gaps=0
data/vintages/PAYEMS_vintage_2026-05-31.csv|e2a152e87413|readme_match=True|rows=1048|cols=2|1939-01-01..2026-04-01|NA=0|dupdates=0|gaps=0
data/vintages/PAYEMS_vintage_2026-06-30.csv|19fbc6cd3547|readme_match=True|rows=1049|cols=2|1939-01-01..2026-05-01|NA=0|dupdates=0|gaps=0
data/vintages/PAYEMS_vintage_2026-07-31.csv|3a3a6603fcc3|readme_match=True|rows=1050|cols=2|1939-01-01..2026-06-01|NA=0|dupdates=0|gaps=0
data/vintages/RSAFS_vintage_2025-10-31.csv|3ecb0832a391|readme_match=True|rows=404|cols=2|1992-01-01..2025-08-01|NA=0|dupdates=0|gaps=0
data/vintages/RSAFS_vintage_2025-11-30.csv|4a683d853746|readme_match=True|rows=405|cols=2|1992-01-01..2025-09-01|NA=0|dupdates=0|gaps=0
data/vintages/RSAFS_vintage_2025-12-31.csv|436df4b5509b|readme_match=True|rows=406|cols=2|1992-01-01..2025-10-01|NA=0|dupdates=0|gaps=0
data/vintages/RSAFS_vintage_2026-01-31.csv|b92ab6a5c1db|readme_match=True|rows=407|cols=2|1992-01-01..2025-11-01|NA=0|dupdates=0|gaps=0
data/vintages/RSAFS_vintage_2026-02-28.csv|2af0a3aaeeba|readme_match=True|rows=408|cols=2|1992-01-01..2025-12-01|NA=0|dupdates=0|gaps=0
data/vintages/RSAFS_vintage_2026-03-31.csv|0316fdf238d5|readme_match=True|rows=409|cols=2|1992-01-01..2026-01-01|NA=0|dupdates=0|gaps=0
data/vintages/RSAFS_vintage_2026-04-30.csv|02dcc697a1db|readme_match=True|rows=411|cols=2|1992-01-01..2026-03-01|NA=0|dupdates=0|gaps=0
data/vintages/RSAFS_vintage_2026-05-31.csv|8c3fe3530213|readme_match=True|rows=412|cols=2|1992-01-01..2026-04-01|NA=0|dupdates=0|gaps=0
data/vintages/RSAFS_vintage_2026-06-30.csv|2f103157f4a9|readme_match=True|rows=413|cols=2|1992-01-01..2026-05-01|NA=0|dupdates=0|gaps=0
data/vintages/RSAFS_vintage_2026-07-31.csv|52c04a8fce2e|readme_match=True|rows=414|cols=2|1992-01-01..2026-06-01|NA=0|dupdates=0|gaps=0
UMCSENT NA after 1978: 0
RSAFS_vintage_2025-11-30.csv n_changed 4 max|rev|% 0.043 first changed 2024-08-01 00:00:00
RSAFS_vintage_2025-12-31.csv n_changed 4 max|rev|% 0.111 first changed 2024-09-01 00:00:00
RSAFS_vintage_2026-01-31.csv n_changed 4 max|rev|% 0.167 first changed 2024-10-01 00:00:00
RSAFS_vintage_2026-02-28.csv n_changed 4 max|rev|% 0.111 first changed 2024-11-01 00:00:00
RSAFS_vintage_2026-03-31.csv n_changed 4 max|rev|% 0.051 first changed 2024-12-01 00:00:00
RSAFS_vintage_2026-04-30.csv n_changed 5 max|rev|% 0.132 first changed 2025-01-01 00:00:00
RSAFS_vintage_2026-05-31.csv n_changed 4 max|rev|% 0.204 first changed 2025-03-01 00:00:00
RSAFS_vintage_2026-06-30.csv n_changed 4 max|rev|% 0.214 first changed 2025-04-01 00:00:00
RSAFS_vintage_2026-07-31.csv n_changed 4 max|rev|% 0.415 first changed 2025-05-01 00:00:00
current vs 2026-07-31 n_changed 138 max 4.639237632277804 2015-01-01 00:00:00
observation_date
2025-06-01 691883
2025-07-01 698280
2025-08-01 700407
2025-09-01 700948
2025-10-01 700790
2025-11-01 705453
2025-12-01 706264
2026-01-01 701860
2026-02-01 707959
2026-03-01 719700
2026-04-01 723921
2026-05-01 731415
2026-06-01 732898
2026-07-01 729915
2026-08-01 739322
2026-09-01 745021
Name: RSAFS, dtype: int64Findings
- All 23 input files: SHA-256 matches
data/README.md; row counts match README; no duplicate dates, no gaps in the monthly index; dates are first-of-month. - Units: RSAFS millions USD SA; PAYEMS thousands of persons SA; UMCSENT index 1966Q1=100.
- Missing values: only UMCSENT (210 empty fields, all before 1978). No missing values in RSAFS/PAYEMS vintages, RSAFS_current, first_release.
- Publication timing (RSAFS): last(V) = 2025-08, 2025-09, 2025-10, 2025-11, 2025-12, 2026-01 for origins 2025-10-31 … 2026-03-31 (two-month delay), then 2026-03, 2026-04, 2026-05, 2026-06 for 2026-04-30 … 2026-07-31 (one-month delay; 2026-04-30 adds two months at once).
- PAYEMS: vintage 2025-10-31 ends 2025-08; 2025-12-31 jumps from 2025-09 to 2025-11; benchmark revision visible in 2026-02-28 vintage (≈ −1 million).
- Revisions: consecutive RSAFS vintages revise ~4 past months each (max 0.4% in level). RSAFS_current differs from the 2026-07-31 vintage on 138 months since 2015-01 (max 4.6% in level) — an annual/benchmark revision. first_release.csv levels for 2026-08/2026-09 are post-benchmark (prior-year level ≈700k vs ≈730k before).
- first_release.csv: for every row whose first_release_vintage is one of the 10 shipped vintages, level and prior-year level match the vintage exactly, the month is the last row, and yoy = 100·ln(ratio) to 1e-5 (verify.py C4).
Availability-rule handling
- RSAFS_current: used only for estimand (d) (in analysis.py it is read and used only in the revision block).
- first_release.csv: used only as evaluation actuals.
- UMCSENT current vintage: not used by any forecast (model uses RSAFS vintage V only). PAYEMS: not used.
- No input violates the rules as used.