The Library

sources & method
Back to the game
Sources

Where every number came from.

And, more usefully, which ones we made up.

A game that teaches with numbers has one obligation above the others: to be clear about which figures are recorded history and which are ours. Mixing them is how a teaching game quietly becomes a confident-sounding lie.

Every figure in The Library belongs to exactly one of three classes:

The rule we hold ourselves to: a number is never promoted to a class it has not earned. tools/check.ts asserts it directly — every series below is required to declare a class, a source, and a URL if it claims to be [A], and nothing describing itself as “shaped” or “representative” in its own note is allowed to carry the [A] letter.

The market

Rendered from allSeries() in src/lib/returns.ts — the same function tools/check.ts walks, so this page cannot drift out of date with the numbers the simulation actually runs.

The lost decade — 2000–2014

[A] RECORDEDEquity

S&P 500 annual total return, dividends reinvested · S&P 500 annual total returns, standard published series

Transcribed to two decimals. This is the one series in the game that is a record rather than an assumption, which is why it is the only one carrying [A].

[R] REPRESENTATIVEBonds

Investment-grade bond index, period-representative annual return · Representative of US aggregate bond returns over 2000–2014, a period of falling yields in which bonds did their job twice

Shaped, not transcribed. The two facts it has to carry are that bonds made money through both equity crashes and averaged around five percent over the window. Both are true of the period; the individual years are ours.

[R] REPRESENTATIVECash

Cash / savings, period-representative annual return · Representative of US short-term rates over 2000–2014

Six percent at the start, zero after 2008. The shape is the point.

[R] REPRESENTATIVEInflation

CPI inflation, period-representative · Representative of US CPI over 2000–2014

The long run — 2010–2024

[A] RECORDEDEquity

S&P 500 annual total return, dividends reinvested · S&P 500 annual total returns, standard published series

Transcribed to two decimals. This is the one series in the game that is a record rather than an assumption, which is why it is the only one carrying [A].

[R] REPRESENTATIVEBonds

Investment-grade bond index, period-representative annual return · Representative of US aggregate bond returns over 2010–2024

Shaped, not transcribed. Must carry the fact that 2022 was the worst bond year in modern record and that bonds paid almost nothing for a decade before it — the two things that made the 60/40 argument feel broken.

[R] REPRESENTATIVECash

Cash / savings, period-representative annual return · Representative of US short-term rates over 2010–2024

A decade of nothing, then five percent arriving all at once in 2023.

[R] REPRESENTATIVEInflation

CPI inflation, period-representative · Representative of US CPI over 2010–2024

The one nobody plans for — 1973–1987

[A] RECORDEDEquity

S&P 500 annual total return, dividends reinvested · S&P 500 annual total returns, standard published series

Transcribed to two decimals. This is the one series in the game that is a record rather than an assumption, which is why it is the only one carrying [A].

[R] REPRESENTATIVEBonds

Long Treasury / investment-grade, period-representative annual return · Representative of US bond returns over 1973–1987

Shaped, not transcribed, and the least certain series in the game — which is why it says so here rather than in a footnote. It has to carry two true things: bonds lost money in nominal terms in several of these years, and the 1982–86 rally was one of the great bond markets of the century.

[R] REPRESENTATIVECash

Cash / savings, period-representative annual return · Representative of US short-term rates over 1973–1987

The one era where cash paid double digits — and still lost to the shopping bill in 1974 and 1979. See Kitchen Table's Regulation Q note for why a household could not reach most of it.

[R] REPRESENTATIVEInflation

CPI inflation, period-representative · Representative of US CPI over 1973–1987

The sleeves

Fees, turnover and income-yield assumptions per sleeve are [R] — representative of what each kind of fund actually charges and churns, not a quote from a named product. No sleeve is ever given a worse gross market return than another: everything separating a total-market index fund from an actively managed one below is a cost or a tax, which is Bogle’s actual argument and the reason it has to be modelled as one.

SleeveFee, a yearTurnoverIncome yield
Cash / high-yield savings0.00%0%100.0%
Bond index0.05%0%100.0%
Total market index fund0.04%3%1.8%
Active / “smart” funds1.10%65%1.8%
Individual names / concentrated bets0.20%40%1.2%

Individual names also carry a deterministic spread and a median drag — MEDIAN_DRAG in src/lib/sim.ts — because concentrated stock returns are right-skewed (Bessembinder): a lower median, not a lower expectation. [R]

The households

[B] AUTHORED — every one. That matters more in this game than in Kitchen Table: a player with $7,500 a month spare may recognise themselves, and the disclaimer that nobody here is a real person is not decoration, it is the reason the game is legal.

The bands

The five bands — Blown, Held, Grown, The Index Purist, The Steward — are not authored content at all. Each is a policy: a rule for deciding, run through the same sim.run the player’s own allocation runs through, over the same market, the same household and the same bills. Nothing about a band is hand-tuned to make a lesson land — see the header of src/lib/bands.ts.

The shaded range on the chart is not a percentile or a confidence interval — it is order statistics over fifteen overlapping rotations of the same transcribed window (rotate in src/lib/sim.ts), which is how a range is shown without a random number generator anywhere in the engine.

Back to the game