Skip to content

Track C step 1: real Axiom AIME vs the Python oracle on the Track A PSID cohort - #455

Merged
MaxGhenis merged 4 commits into
masterfrom
dynamics-track-c-aime-20260923
Sep 24, 2026
Merged

MaxGhenis merged 4 commits into
masterfrom
dynamics-track-c-aime-20260923

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

Adds scripts/track_c_aime_agreement.py and its tests. The script runs every Track A 2011-wave person the oracle computes an AIME for (7,486 real PSID careers, cohort rebuilt and checked against the committed Track A artifact) through the real pinned Axiom rules engine via axiom_benefit_bridge (#450). It then compares the engine's AIME with Track A's Python-oracle AIME, person by person. It computes no COLA statistic.

Result

  • Exact match: 7,235 of 7,486 (96.65%), including all 7,164 people with 35 computation years (born 1929–1968). None refused and none failed.
  • The 251 differences are all people born 1917–1928. For them, the Axiom 415(b) candidate uses the statutory computation-year count (elapsed years minus 5, which is under 35 for these cohorts). Track A's oracle always divides by 35. The engine's AIME equals the oracle arithmetic rerun at the statutory count in every case, and the engine is higher by $1–$545 (median $57). This is a disclosed simplification in the Track A oracle, not a Track C defect. It affects benefit levels for the oldest opening-stock cohorts only, which weight Track A's ratio statistic.
  • A strict pass without synthetic pre-1968/post-2010 zero rows refuses 6,699 people. A diagnostic pass at recorded opening entitlement years gives 1,229 of 1,334 exact matches, with the rest explained the same way.
  • PIA: the only accepted-scope candidate covers people born in 1964, so only a formula check was possible (286 people).

The Axiom rule candidates remain unaccepted. Evidence: track-c-aime-agreement-20260923/ in the lane evidence directory, with engine and module hashes.

Review

An independent reviewer recomputed all 7,486 primary and 1,334 diagnostic records with separate exact-fraction code, with zero mismatches. It also re-ran a 54-person sample on the pinned engine, with identical digests. It approved without changes.

🤖 Generated with Claude Code

MaxGhenis and others added 3 commits September 23, 2026 22:53
scripts/track_c_aime_agreement.py builds the real 2011-wave Track A
cohort (load_psid2010_inputs, build_psid2010_cohort,
prepare_track_a_cohort with registered_real provenance), selects every
member whose year of attaining 62 lies in 1979-2030, and for each one
records the oracle AIME exactly as Track A computes it (ss.benefits.aime
with the TR2008-AWI parameters of tr2008_ssa_parameters) next to the AIME
the pinned Axiom rules engine returns through axiom_benefit_bridge.

Every declaration the bridge needs is explicit and recorded: career
amounts limited to the contribution and benefit base and declared USD
creditable earnings, shortest round-trip binary64 encoding, synthetic
zero rows for elapsed-window years before 1968 and after 2010, indexing
year birth + 60, and the entitlement year per pass (primary: max(birth +
62, 2011); diagnostic: Track A's recorded opening entitlement year). A
strict pass without synthetic rows records the bridge's refusals. An
attribution check reruns the oracle's arithmetic with the candidate's
computation-year count. The 2026-cohort PIA is a formula check only.

It writes result.json, RESULTS.md and executions/ and computes no COLA
statistic or age-profile value; the Axiom candidates are labeled
unaccepted. Tests use invented data only (one runs the pinned engine and
skips when it is absent). Unit tier count 2,847 -> 2,861.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The script now checks, before any engine run, that the rebuilt cohort's
diagnostics and source provenance and the parameter revision equal those
recorded in runs/replication_urban2010_cola_v1.json (only those fields
are used), and records the artifact's SHA-256 and the checks.

RESULTS.md gains a result paragraph computed from the summaries, a binned
difference distribution (per-dollar counts stay in result.json), a table
by the candidate's computation-year count, and the rows sent by kind
(observed, gap-imputed, zero-filled, synthetic zeros). Execution files
are capped per pass for unexplained persons and recorded in result.json.
The bend-point wording now says the candidate derives its 2026 bend
points from SSA's published 2024 AWI. Unit tier count 2,861 -> 2,863.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…re used

The not-compared list said the age profile was "not read"; the script
parses the committed artifact and uses only its parameter revision and
2011-wave cohort diagnostics and source provenance, and now says so.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
social-security-model Ready Ready Preview Sep 24, 2026 5:58am UTC

Request Review

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis merged commit a7c7638 into master Sep 24, 2026
12 checks passed
MaxGhenis added a commit that referenced this pull request Sep 24, 2026
…he tier manifest

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis
MaxGhenis deleted the dynamics-track-c-aime-20260923 branch September 25, 2026 14:12

This branch was successfully deployed

1 active deployment
Preview — ac5e9424 Deployed Sep 24, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant