Philly publishes both Acct and Actual PSSA cuts. They're byte-identical.
A reproducibility log: the data this analysis touched, the queries it ran, and how a third party would re-run it.
Summary
Self-joined philly_school_year_metrics on (school, year, metric, subgroup) where population_cut='acct' on the left and 'actual' on the right. Computed per-pair delta and summary statistics.
Data sources
- Database tablephilly_school_year_metrics
Long-format facts. PK (school_ulcs, year, metric_key, subgroup, population_cut). Carries comparison_group_percentile + citywide_percentile (direction-adjusted).
- External datasetSDP PSSA & Keystone (OpenDataPhilly CDN)
Steps
Per-pair Acct vs Actual delta.
SELECT a.school_ulcs, a.year, a.metric_key, a.subgroup::text, a.value AS acct, u.value AS actual, (a.value - u.value) AS delta FROM philly_school_year_metrics a JOIN philly_school_year_metrics u ON u.school_ulcs = a.school_ulcs AND u.year = a.year AND u.metric_key = a.metric_key AND u.subgroup = a.subgroup AND u.population_cut = 'actual' WHERE a.population_cut = 'acct' AND a.value IS NOT NULL AND u.value IS NOT NULL;
Caveats
The Δ=0 finding holds for 2024-25 SDP PSSA at the school × subgroup grain. It may not hold at the student level (which we don't have) or in future years. Two explanations canvassed in the story; SDP's research office is the natural contact to confirm which.
Reproduce
Load `sdp_pssa_keystone.ts` (loads both Acct + Actual). Run `python pipeline_philly/verify/reconcile_acct_actual.py` to regenerate `docs/qa_reports/philly/__acct_vs_actual.md`.
The recipe lives at data/cities/philly/stories/recipes.ts in the repo.