Translated from the Spanish original. Where they differ, the Spanish one holds.
- App: Horalis Growth · Reviewed: 14 October 2026 (phase B2)
- Code (in
projects/wealth-lens/):src/lib/validation.ts(DEFAULT_PLAN,DEFAULT_YEARS,STARTING_GROWTH),src/lib/plan.ts(growthChosen),src/lib/examples.ts(fewestRuns),src/lib/safe-rate.ts(RETIREMENT_YEARS),src/i18n/investment-text.ts(isStartingGrowth: a written 5 % is called "the world's long-run average (UBS)")
The question it answers
"Which values does the calculator start with, and why?" Since phase B2, with no growth: the person taps an example or writes their own. What still has a starting value carries a line on screen that says why.
The default values that remain, and why
| Value | To start | Why | Where the page says it |
|---|---|---|---|
| Question | none | The person chooses what they want to know. | — |
| What you have, what you add | empty | They are the person's; the grey is only an example. | The grey example |
| Growth | none | Choosing one for the person would be recommending. Beside each example, its worst year. | "Tap an example or type your own." |
| Years | 20 | A long term that each example with ups and downs still has many times in its data: 16 or more periods of 20 years (the 60/40 mix, with common data from 1988 to 2022); with 30 there would be 6 left. So the historical range beside the result rests on many periods. | Under the field: "20 to start: each example has 16 or more periods like this in its data." |
| Length of the withdrawal | 30 years | A long retirement; the term of Bengen (1994) and of the Trinity study (1998). | Under the rate: "30 years: a long retirement (Bengen, 1994; Trinity study, 1998)." |
| Withdrawal rate | the data's (A4) | The highest that lasted 30 years from any start of that investment (withdrawal rate). | "The most that lasted 30 years…" |
| Country of the prices and currency | those of the browser's language, or the Netherlands and euros | The closest to the person without asking them (currencies). | More options |
| Ups and downs of an own growth | those of US shares | The asset with the longest history (growth). | Under the field |
| A new mix (More options) | the 60/40 template | The classic mix of shares and bonds, a starting point the person changes (mixes). | The weights, in view |
The 5 % of before
Until phase B2 the calculator started with an own growth of 5 % a year after the rise in prices, which moved like US shares. It was the 5.2 % a year that world shares grew from 1900 to 2024 according to UBS's 2025 yearbook, rounded down. Since B2 it is no longer preselected: whoever writes 5 sees that it is "the world's long-run average (UBS)". A data file from before version 14 keeps its result (parsePlan: an own growth with no figure grew like the average of US shares, and is read so).
Assumptions (of the reference figure)
- An average over 125 years is a better reference than any particular decade.
- "World shares" is the most neutral reference.
Sources (dated)
Checked for this sheet (3 October 2026):
- UBS Global Investment Returns Yearbook 2025 (Dimson, Marsh and Staunton), published on 4 March 2025: world shares returned 5.2 % real a year from 1900 to 2024 (against 1.7 % for bonds and 0.5 % for bills). It is the figure the app uses.
- Quotation of the figures (the one How it works links to): Cambridge Judge Business School, "Report: stocks have far outperformed over the past 125 years" (7 March 2025): https://www.jbs.cam.ac.uk/2025/report-stocks-have-far-outperformed-over-the-past-125-years/
- UBS's press release (confirms the edition and the date, but does not publish the 5.2 %, the 1.7 % or the 0.5 %): https://www.ubs.com/global/en/media/display-page-ndp/en-20250304-global-investment-returns-yearbook-2025.html
- UBS Global Investment Returns Yearbook 2026, published on 3 March 2026: it gives 6.6 % real a year for US shares from 1900 to 2025, and its public summary does not publish a real figure for world shares. So the app keeps using the 2025 edition's world 5.2 % until there is a more recent real world figure.
- The swing: US shares (Shiller's S&P 500), 1988–2022 (see growth). Until phase A2, MSCI World, withdrawn because its terms do not allow publishing its data.
From the environment where this sheet was written, ubs.com could not be opened (network blocked); the figures were checked against the Cambridge Judge note and financial press quoting the yearbook. Marek must open the two UBS documents and confirm them by hand.
Validation (tests)
src/lib/examples.test.ts("step 3's starting value"): the empty plan has no growth chosen; any written figure chooses it; "why step 4 starts at 20 years": at least 16 periods of 20 years, 6 of 30.src/lib/plan.test.ts: without a growth chosen there is no result.src/lib/validation.test.ts: a file from before version 14 keeps its result.src/lib/investment.test.ts("Custom growth"): an own growth moves with the swing of US shares.src/lib/success-table.test.ts: the precalculated withdrawal rates of an own 5 % (normal:0.050000:0.163877), which is still calculated in advance.src/lib/findings.test.ts: the starting 5 % is named "the world's long-run average (UBS)", not "your growth".- The How it works page quotes the source, its edition and its figure.
Limits
- It is an average of the past, not a promise (the app says so under the chart).
- It is the average of a world index measured in dollars and deflated with US inflation: it is not exactly what someone saving in euros would see.
What is debatable
- A 125-year world average, a 35-year US swing. The 5 % comes from world shares in 1900–2024 and the swing (16.39 %), from US shares in 1988–2022: it mixes two periods and two markets. For Dimson, Marsh and Staunton's world index, the long-run standard deviation is around 17 %, so the figure is similar. Cost: phase B2 removes the preselected growth.
- The yearbook itself expects less. Dimson, Marsh and Staunton have for years estimated a future risk premium lower than the historical one. Starting from the past without lowering it may be optimistic. Cost: decide whether the starting value is "the past" (as now) or "an expectation", and say so.
- Survival and country. The world index of 1900 includes markets that collapsed (Russia, China), which is a virtue compared with using only the US (6.6 %); even so, the 5.2 % is in dollars. Cost: none now; it is the best public figure available.
- A figure that is not from an official body. The 5.2 % is from a private yearbook (UBS), quoted by a university. It is the only figure of Horalis Growth that does not come from an official body or from a closed series with an open licence. Cost: phase B2 resolves it (no preselected growth).
History
- 2026-10-03: first sheet. What the 2025 and 2026 editions of the yearbook say is recorded; the app does not change.
- 2026-10-08: the sources checked. The 5.2 % (and 1.7 % and 0.5 %) is in the Cambridge Judge note, not in UBS's press release: How it works now links to Cambridge Judge's. The US 6.6 % and the absence of a real world figure in the 2026 public summary are confirmed. The figure and the calculation do not change.
- 2026-10-09 (phase A2): own growth moves like US shares (world shares were withdrawn: their data are not open). The precalculated rates of the starting plan change: at 4 % it lasts in 81.8 of every 100 (before, 79.5). The "World" chip disappears.
- 2026-10-09 (independent review of A2): a file of versions 9 and 10 with own growth and no written swing keeps the swing it had, world shares' (0.178217, stored as a number:
WORLD_CUSTOM_VOLATILITYinsrc/lib/validation.ts), so its result does not change. Test:data-file.test.ts. - 2026-10-14 (phase B2): no preselected growth. Step 3 starts empty; each example shows its worst year; the 20 years and the withdrawal rate's 30 say why on screen; beside the result, the historical range (worst, typical and best period). Data file v14. Points 1 and 4 of "What is debatable" are resolved: the 5.2 % is no longer a starting value, only a reference that is named.