Skip to content

Add a lecture on Social Security trust fund depletion - #1091

Merged
jstac merged 6 commits into
mainfrom
olg_oct
Oct 16, 2026
Merged

jstac merged 6 commits into
mainfrom
olg_oct

Conversation

@jstac

@jstac jstac commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Adds social_security_depletion.md, a lecture by Tom Sargent on the Social Security payable factor as an equilibrium fixed point, following Sargent and Shi (2026). It sits after two_computation in the toc.

Ready to merge and publish, per Tom.

🤖 Generated with Claude Code

thomassargent30 and others added 4 commits October 15, 2026 12:25
Places social_security_depletion immediately after two_computation.

The lecture follows Sargent and Shi (2026). It sets out current law --
the trust fund ledger, the payable factor that clears the program's cash
flow once reserves are gone, and the depletion date -- and treats the
payable path as a fixed point of a decreasing operator, since the
claiming, retirement and saving decisions that determine taxable payroll
and the scheduled benefit bill are themselves made while looking at that
path.

The quantitative model is a stripped-down version of the paper's, built
to run in about a minute rather than 22 hours on a GPU: a life cycle from
20 to 100 with improving mortality, permanent heterogeneity in earnings
ability and in the taste for work, the statutory benefit formula and
actuarial schedule, and retirement and claiming as separate irreversible
choices, with prices fixed and a closed-form consumption plan. It
reproduces the trustees' dates -- last reserves spent in 2032, fund empty
in 2033 -- an early-claiming rush before the cut, later claiming and
later retirement after it, and the long-run identity between the payable
factor and the program's cost rate.

Three exercises with dropdown solutions: the operator is decreasing and
the undamped iteration locks into a two-cycle; raising the full
retirement age to 69; and financing a guarantee of scheduled benefits
with the payroll tax, which every entering cohort dislikes and workers
near retirement in 2026 prefer.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… fourth exercise

Corrections:

* the earnings-test note claimed neutrality without qualification; the
  credit matches the withholding one for one only for a worker who leaves
  work by the full retirement age, and the restriction χ ≥ min(R, 70)
  rules out filing early and working past it
* the two decision ages move together and reverse at the cut, not "in
  opposite directions on either side" of it
* quantify the cut that the behavioral response prevents: the 2031 cost
  rate implies φ = 0.702 against the 0.755 that workers deliver

The worker's problem now states the period utility function, defines the
taste-for-work type, says the wage is normalized to one, explains why
survival discounts the budget constraint under fair annuities, and shows
which terms drop out on the way to the objective.

New figures: the two statutory functions (PIA with its bend points, and
the actuarial factor at full retirement ages 67 and 69); the demography
that drives everything (the dependency ratio against the trustees' two
points, and the age distribution in 2026 against 2085); who rushes (the
retirement and claim ages chosen by each cohort alive in 2026, before the
news and after, which shows irreversibility binding on the old and the
payable-factor headwind pulling young workers' filing forward); and one
worker's life cycle (income, consumption and assets), which also displays
the saving response that general equilibrium would turn into a higher
wage.

Exercise 4 switches off the mortality improvement: holding the birth path
fixed, longer lives account for about a quarter of the long-run benefit
cut (φ_∞ of 0.603 against 0.482) while barely moving the depletion year,
and the long-run claim age falls from 66.6 to 65.0, which tests the
mechanism the lecture asserts for later claiming.

Also adds a symbol table and parameter sources, and drops unused
arguments and return values.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… the text and the code

* the benefit scale the code applies now appears in the benefit formula,
  as ς, and in the symbol table
* state that a worker already alive in 2026 solves the same objective
  from its current age, with truncated sums and its accumulated wealth,
  which is what j0, a0 and plan0 carry in the code
* report the calibration honestly: the entering cohort retires at 64.8
  against the median of 64.5 that the paper targets, the cost rate lands
  within about a tenth of a percentage point, and the untargeted claim
  age is a year and a half later than the paper's, a bias worth carrying
  into the transition
* disclose that the retirement grid binds for the two extreme tastes for
  work, and report the check: widening it to 50-80 moves those two types
  and leaves the depletion year, both mean ages and the payable factor to
  four decimals unchanged
* say in the comparison that the behavioral responses are smaller here,
  not merely centered differently -- retirement rises 0.9 years against
  3.5 and claiming 1.9 against 4.2 -- and why
* answer the question exercise 2 asks: seven years of delay against the
  paper's ten, and about a sixth of the long-run cut undone
* print the payable factor beside the gap along the iteration, so the
  claim in the computation note can be checked from the output
* the trustees' date is when the reserves run out during 2032; fix the
  stale reference to a printed table, the World docstring, the account of
  what the pre-2026 economy supplies, and add the missing symbols

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Caption and name the eight main-text figures (exercise figures stay
  uncaptioned for the PDF build), and cross-reference the benefit
  formula figure with numref
- Precede every code cell with a sentence of prose
- Drop a MyST role from a Python docstring, where it cannot render
- Bib: type accented names in UTF-8, add DOIs, brace proper nouns in titles

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

jstac commented Oct 15, 2026

Copy link
Copy Markdown
Contributor Author

Style pass in 91be48c, kept deliberately light: no changes to content, code or figure sizes.

Changes

  • Captioned and named the eight main-text figures (fig-ssd-*), as the manual requires. Exercise figures stay uncaptioned, because a caption inside an exercise or solution breaks the PDF build.
  • Replaced "the benefit formula figure" in Exercise 2 with {numref}fig-ssd-benefit-rules``.
  • Added a one-line lead-in before the five code cells that directly followed another cell, a note or a solution-start.
  • Typos: removed an {eq} role from the solve_plans docstring (it can't render inside code), and added a missing period.
  • Bib: typed İmrohoroğlu in UTF-8 rather than LaTeX escapes, added DOIs to the six journal articles (checked against Crossref), and braced proper nouns in titles ({Social Security}, {U.S.}, the trustees' report) so they keep their capitals.

Checks

  • The full lecture, exercises included, runs without errors (about 3½ minutes on a laptop CPU).
  • Every hard-coded number in the prose that I checked matches the output: the 2032/2033 dates, φ = 0.755 and 0.482, the 51.8 → 43.2 percent cut under FRA 69, the roughly 13 percent CEV, the mean ages, and the cost rate.

For Tom (not changed)

  • Four new bib entries aren't cited yet: imrohorogluKitao2012, conesaKrueger1999, denardi2004, denardiImrohorogluSargent1999.
  • SargentShi2026 gives "University of Pennsylvania and Wuhan University" as the institution and has no report number. Worth confirming.

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

📖 Netlify Preview Ready!

Preview URL: https://pr-1091--sunny-cactus-210e3e.netlify.app

Commit: 97c5894

📚 Changed Lectures


Build Info

thomassargent30 and others added 2 commits October 16, 2026 10:21
…sh the figure conventions

Disclosures:

* print the replacement rate, which nothing was fitted to: the cohort
  entering in 2026 collects 0.49 of its last year's earnings, against
  0.43 under the statutory formula. The benefit scale that matches the
  program's aggregate cost puts the whole uplift on each worker's own
  benefit, where the program puts it on additional beneficiaries, so the
  incentives to retire and to file are a seventh stronger than the
  statute implies. Also noted in the list of omissions.
* print the claim ages chosen: they pile up on one age and nobody files
  at 62, where the data and the paper have large spikes, because the
  forces behind that spike are the ones this version leaves out
* say that neither the first shortfall year nor the depletion year was
  targeted: the calibration fixes one year's cost rate and takes the
  opening balance from the record

Figures, following the conventions just introduced:

* reference the eight named figures with numref rather than "below" and
  "the right panel", which do not survive a PDF build
* captions now state the finding rather than label the axes
* give the efficiency, flow-age and life-cycle figures their own cells,
  so that a captioned cell produces one figure and nothing else
* replace two identical placeholder sentences

Code: flows returns only what its callers use, income_path can work on a
subset of rows so the life-cycle figure stops building 5,025 of them to
use one, and the tiled type weights in aggregate carry a comment.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…y exercise

Exercise 5 reproduces the paper's unanticipated scenario. The government
says nothing, workers plan against the cut they expect, and in the year
the reserves are spent the guarantee arrives with the tax that pays for
it. The cut they expected never happens. solve_plans gains an at_year
argument so that workers can re-plan in that year from the assets they
have accumulated and the decisions they have already executed; the main
text notes that nothing in its re-planning argument is special to 2026.

Welfare is computed directly this time, by summing utility along each
worker's consumption and work path, and the solution checks that against
exercise 3's closed form before using it: the two agree to the digit.

Everyone with working years left prefers the surprise -- 5.6 percent of
lifetime consumption at age 45, and the age at which the guarantee stops
being a loss falls from 53 to 46 -- because both economies pay every
benefit in full and the surprise collects six fewer years of the higher
tax. Workers in their seventies prefer the announcement, very slightly:
they pay no payroll tax either way and spent six years consuming as
though a cut were coming. The paper finds the same ranking, with a
general equilibrium addition this model cannot produce, since here the
assets accumulated against a cut that never comes do not raise a wage.

Exercise 6 varies the two numbers everything rests on. Five points of the
2085 dependency ratio are worth about five points of the payable factor;
the interest rate moves it by one or two while moving the average
retirement age by six and a half years. The long-run identity explains
it: demography pushes payroll and the benefit bill in opposite
directions, while the interest rate pushes them in the same direction and
by nearly the same proportion, since the career decision that sets what a
worker contributes also sets what the worker is owed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@jstac
jstac merged commit 9ad04de into main Oct 16, 2026
2 checks passed
@jstac
jstac deleted the olg_oct branch October 16, 2026 20:19
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.

2 participants