R7 replication: earnings sharing on real PSID couples vs Favreault–Steuerle (2007) - #84
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Reported-not-gated replication of Favreault-Steuerle (2007) earnings sharing (Urban 311436, DYNASIM3 runid 440v2) on real PSID couples: marriage histories (mh85_23) + family-panel earnings + the statutory 415(a)/(b) chain + the #80 spouse/survivor plumbing, scoring winners and losers by sex x marital status against Table 3. Registration: issue #42 comment 4911171806. Package 1b (no survivor, +4.5% scalar) primary; 1a descriptive; 1c documented as not scorable. All four pre-registered directional expectations hold; every level gap vs the DYNASIM 2049 projection is a named delta. One run, real data only. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
MaxGhenis
force-pushed
the
replication-r7-sharing
branch
from
July 8, 2026 04:41
5fe2308 to
f2a724e
Compare
This was referenced Jul 8, 2026
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.
R7 replication (reported, not gated): earnings sharing on real PSID couples
Does our stack — real PSID marriage histories (
mh85_23) + real earnings (the family panel) + the statutory chain (42 USC 415(a)/(b)) + the #80 spouse/survivor auxiliary-benefit plumbing — reproduce the incidence structure of Social Security earnings sharing: who wins and who loses, by sex × marital status?Anchor: Favreault & Steuerle (2007), Social Security Spouse and Survivor Benefits for the Modern Family (Urban Institute 311436, DYNASIM3 runid 440v2), Table 3. Registration: issue #42 comment 4911171806. Reported, not gated — reads no gate, changes no gate, publishes regardless. Real couples only (no generated component). Package 1b (earnings sharing, no survivor benefit, +4.5% global increase) is primary; 1a is descriptive; 1c is documented as not cleanly implementable.
Three-way table — package 1b (DYNASIM / ours / floor), anchor-weighted %
Floor = 5-seed person-disjoint half-split noise on each share. Cells with
nin the low tens carry large floors (noise-dominated) by design.The flagship, best-populated cell — married women, the big gainers — lands on DYNASIM: gain ≥20% 49 vs 44, gain ≥5% 63 vs 60, lose ≥5% 24 vs 22, each well above its floor.
Registered directional expectations — all four held
Where levels diverge — every gap is a named delta (direction, not level, is the test)
Magnitude within ±10pp on the largest cells (DYNASIM share ≥20%): 4/12 — and all four are the well-populated married/widowed women cells; the misses are the male and thin cells driven by the cohort/selection deltas above.
Package definitions & the modeling judgment on the +4.5% scalar
Package 1b's cited definition (Table 2, printed p.15) includes a +4.5% global benefit increase (a scalar on the PIA formula factors) that makes the package approximately cost-neutral. It is directly visible in the anchor's never-married Table-3 row (97–99% show a "gain <5%" — the uniform bump), so it is treated as part of package 1b. A scalar-off sensitivity is reported alongside; the scalar-off variant moves never-married to 100% "no change" (its fingerprint). The scalar is DYNASIM-calibrated, not re-derived for our sample — in our older cohort the aggregate benefit change under 1b is −4.23% with the scalar (−8.35% without), a named cost-neutrality delta.
Package 1c (self-financed survivor annuity) is transcribed for provenance but not scored — it needs cohort-specific unisex actuarial annuity pricing at 4.6% real that the paper specifies only as "roughly actuarially fair," which would inject an unvalidated mortality model.
Coverage, artifact, tests
runs/replication_r7_sharing_v1.json(reported_not_gated: true; registration pointer; anchor provenance with page-cited package definitions and the full verbatim Table 3 + Table 5; every pooled stat recomputable fromper_seed).tests/test_replication_r7_sharing.py— an always-runnable consistency tier (schema, provenance, floor/verdict recompute, never-married near-zero, pure-helper units) + a skipif-PSID live seed-0 pin.One run.
black -l 79+ruffclean.🤖 Generated with Claude Code