# Net Worth Percentile — Data Sources

Each country file in this directory follows the schema validated by
`frontend/src/components/net-worth-percentile/types.ts`. The
`countryData.test.ts` meta-test (Task 3) loads every file listed in
`index.json` and asserts schema + invariants.

---

## us.json — United States

- **Source**: Federal Reserve Survey of Consumer Finances 2022
- **Bulletin**: "Changes in U.S. Family Finances from 2019 to 2022", Federal Reserve Bulletin (October 2023)
- **Bulletin URL**: https://www.federalreserve.gov/publications/files/scf23.pdf
- **Bulletin HTML**: https://www.federalreserve.gov/publications/october-2023-changes-in-us-family-finances-from-2019-to-2022.htm
- **SCF homepage**: https://www.federalreserve.gov/econres/scfindex.htm
- **Retrieved**: 2026-05-20
- **License**: Public domain
- **Next update expected**: 2026 (SCF 2025 wave, typically released ~6 months after fieldwork closes).

### Medians and Means

All six age-bracket medians and means come **directly from Bulletin Table 2** ("Changes in U.S. Family Finances from 2019 to 2022", Federal Reserve Bulletin, October 2023, HTML version). The Bulletin reports values in thousands of 2022 dollars; these were multiplied by 1000 to produce whole-dollar amounts stored in `us.json`.

| Age bracket | Median (Bulletin Table 2) | Mean (Bulletin Table 2) |
|-------------|--------------------------|------------------------|
| Under 35    | $39,000                  | $183,500               |
| 35–44       | $135,600                 | $549,600               |
| 45–54       | $247,200                 | $975,800               |
| 55–64       | $364,500                 | $1,566,900             |
| 65–74       | $409,900                 | $1,794,600             |
| 75+         | $335,600                 | $1,624,100             |

### Percentile Breakpoints (p25, p50, p75, p90, p99)

The SCF Bulletin Table 2 does not publish per-age-bracket percentile breakpoints beyond the median. The source for p25/p50/p75/p90/p99 is **DQYDJ's computed SCF 2022 microdata tables** at https://dqydj.com/net-worth-by-age-calculator-united-states/ (retrieved 2026-05-20). DQYDJ uses the SCF 2022 public-use microdata file (PUF) released in October 2023. They report these percentiles in 5-year age bands (18–24, 25–29, 30–34, 35–39, 40–44, 45–49, 50–54, 55–59, 60–64, 65–69, 70–74, 75–79, 80+).

To align with the required 10-year brackets, each pair of adjacent 5-year bands was averaged:
- Under 35: simple average of 18–24, 25–29, 30–34
- 35–44: average of 35–39, 40–44
- 45–54: average of 45–49, 50–54
- 55–64: average of 55–59, 60–64
- 65–74: average of 65–69, 70–74
- 75+: average of 75–79, 80+

After aggregation, all percentile values (p25, p75, p90, p99) were scaled by the ratio `official_median / dqydj_p50` to ensure that p50 matches exactly the official SCF Bulletin median. Scale factors ranged from 0.90 (under-35 bracket) to 1.03 (45–54 bracket), reflecting close agreement between DQYDJ's computed medians and the official Bulletin values.

**p50 is set to the official Bulletin median exactly** (median = p50 in all brackets).

### p10 Derivation

The p10 (10th percentile) breakpoint is **not published** in the SCF Bulletin, the DQYDJ tables, or any other public SCF summary table found during research. It was derived using **log-linear extrapolation** from p25 and p50:

```
p10 = p25 * (p25 / p50)^(15/25)
```

This formula assumes a log-linear wealth distribution between the 10th and 50th percentile, consistent with the `"interpolation": "log-linear"` field in the file. For all brackets, p10 > 0, reflecting that more than 10% of families in every age group hold positive net worth.

### Exclusions and Caveats

- **Defined-benefit pension wealth and Social Security wealth are excluded** from the SCF net worth definition (as published).
- The under-35 median ($39,000) is notably low due to student debt and early career wealth accumulation dynamics. The p10 for this bracket ($1,212) reflects the substantial share of young families with near-zero wealth.
- The p99 values for older brackets ($16–20M range) reflect the fat upper tail of the U.S. wealth distribution captured in the SCF. These are plausible given the SCF oversamples high-wealth households.
- DQYDJ does not publish standard errors or confidence intervals; the SCF PUF values have implicit sampling error, particularly in extreme quantiles.

### Verification

The user should verify these values against the official SCF 2022 data before relying on them in production. Primary verification paths:
1. Check medians and means against Bulletin Table 2 (HTML version linked above).
2. For percentile breakpoints, run quantile regression directly on the SCF PUF files available at https://www.federalreserve.gov/econres/scfindex.htm (SAS/Stata/CSV formats).

---

## gb.json — United Kingdom

- **Source**: ONS Wealth and Assets Survey (WAS) **Round 8**, April 2020 – March 2022
- **Bulletin URL**: https://www.ons.gov.uk/peoplepopulationandcommunity/personalandhouseholdfinances/incomeandwealth/bulletins/totalwealthingreatbritain/april2020tomarch2022 (released 24 January 2025; still "the latest release" on 2026-09-10, "Next release: To be announced")
- **Primary data file (medians and means by age)**: ONS user-requested data **2813**, "Mean, median, aggregate, and percentage of wealth by wealth component and age of household reference person (HRP) in Great Britain, April 2020 to March 2022", published **16 May 2025**. Page: https://www.ons.gov.uk/peoplepopulationandcommunity/personalandhouseholdfinances/incomeandwealth/adhocs/2813meanmedianaggregateandpercentageofwealthbywealthcomponentandageofhouseholdreferencepersonhrpingreatbritainapril2020tomarch2022 — xlsx `meanmedianaggregateandpercentageofwealthbywealthcomponentandageofhouseholdreferenceperson.xlsx`, sheet **`Table_1`** (HTTP 200, 27,980 bytes).
- **Overall percentile ladder**: ONS user-requested data **3134**, "Distribution of aggregate household wealth and wealth components, by percentiles: Wealth in Great Britain, April 2020 to March 2022". Page: https://www.ons.gov.uk/peoplepopulationandcommunity/personalandhouseholdfinances/incomeandwealth/adhocs/3134distributionofaggregatehouseholdwealthandwealthcomponentsbypercentileswealthingreatbritainapril2020tomarch2022 — xlsx `householdaggregatepercentilewealthround8.xlsx`, sheet **`Table 1`** (HTTP 200, 66,448 bytes). Carries **every percentile from the 1st to the 99th**.
- **Cross-check dataset**: Table 2.4 of "Total wealth: Wealth in Great Britain" (Round 8 workbook `totalwealthtables.xlsx`) — https://www.ons.gov.uk/peoplepopulationandcommunity/personalandhouseholdfinances/incomeandwealth/datasets/totalwealthwealthingreatbritain
- **Retrieved**: 2026-09-10
- **License**: Open Government Licence v3.0 (Crown copyright; https://www.ons.gov.uk/help/termsandconditions)
- **Next update expected**: deliberately **omitted** from `gb.json`. ONS gives Round 9 (approximately April 2022 – March 2024) only a *provisional* 2026 date and the bulletin's own "Next release" reads "To be announced"; the dataset footnote renders `next_update_expected` untranslated, so an un-anchored English string is worse than no field. Same precedent as `pl.json`.

### Two blocking caveats that the methodology notes must carry

1. **Method break — not comparable with earlier rounds.** From April 2020 ONS changed how it estimates defined-benefit private pension wealth (a "superannuation contributions adjusted for past experience" basis). Verbatim from the ad-hoc 2813 workbook, note 1: *"This change means that April 2020 to March 2022 estimates of pension wealth and total wealth where pensions wealth is included are not comparable with estimates from previous rounds/waves."* Method article: https://www.ons.gov.uk/peoplepopulationandcommunity/personalandhouseholdfinances/incomeandwealth/articles/estimatingdefinedbenefitpensionwealthingreatbritain/december2024 — Round 8 therefore **replaces** Round 7 here rather than extending it; the two vintages are not a time series.
2. **Accreditation suspended.** ONS notice of **13 June 2025**: *"Accreditation of the Wealth and Assets Survey has been suspended from Round 8, covering the period 2020-2022 onwards while we undertake further work to improve quality"*, citing concerns about the quality of estimates at a granular level and falling response rates. Letter to the OSR: https://www.ons.gov.uk/news/statementsandletters/onslettertotheosrontheaccreditationofhouseholdtotalwealthingreatbritain — Round 8 is the newest and best UK data available and is fit to ship, but it is **no longer accredited official statistics**.

Two further data-quality flags: Round 8 fieldwork was **telephone-based** during COVID-19 (ONS advises treating results "with a degree of uncertainty and caution due to the context and the mode change"; weights are calibrated on tenure to correct under-representation of renters and over-representation of outright owners), and the **16–24 bracket rests on 81 unweighted households**.

### Medians and Means (published)

Taken **directly** from ad-hoc 2813, sheet `Table_1`, the **"Total wealth"** block: **column Q = Mean (£)**, **column R = Median (£)**, column U = unweighted frequency, column V = weighted frequency. Rows 5–11 are the seven age bands, row 12 is "All households". Values are published in whole pounds to the nearest £100 and are reproduced here exactly as printed.

**Round 8 publishes SEVEN age bands, not six** — the old open-ended `65+` is split into `65–74` and `75+`, and the split is load-bearing: the median *peaks* at 65–74 and falls by roughly a quarter after 75. ONS publishes no merged 65+ row for Round 8, so `gb.json` now carries seven brackets. `75+` is open-ended.

| Age bracket | Median (GBP) | Mean (GBP) | Cells (2813 `Table_1`) | Unweighted n |
|-------------|-------------|-----------|------------------------|--------------|
| 16–24 | £15,200 | £49,900 | R5 / Q5 | 81 |
| 25–34 | £109,800 | £171,200 | R6 / Q6 | 833 |
| 35–44 | £209,600 | £322,600 | R7 / Q7 | 1,595 |
| 45–54 | £301,900 | £483,400 | R8 / Q8 | 2,378 |
| 55–64 | £496,500 | £729,100 | R9 / Q9 | 3,186 |
| 65–74 | £502,500 | £722,400 | R10 / Q10 | 3,845 |
| 75+ | £373,100 | £538,800 | R11 / Q11 | 3,212 |
| *All households* | *£293,700* | *£502,700* | *R12 / Q12* | *15,130* |

**Important household-level caveat**: these are **household** total wealth figures assigned to the age of the Household Reference Person (the sole or joint householder responsible for household affairs; where joint, the higher earner). They are not per-adult or per-capita figures and cannot be compared with per-adult datasets such as the U.S. SCF without adjusting for household size.

**Wealth definition (broader than SCF)**: total wealth = net property wealth + net financial wealth + physical wealth + **private pension wealth** (defined-contribution *and* defined-benefit, at actuarial present value, on the post-April-2020 method). DB pension wealth is excluded from the SCF net worth definition, so UK figures sit systematically higher than comparable US household age bands.

### Overall Population Percentiles (published — all five anchors)

Taken **directly** from ad-hoc 3134, sheet `Table 1`, **column F = "Total household wealth (£)"**, one row per percentile (row 5 = 1st … row 103 = 99th):

| Percentile | Value | Cell |
|---|---|---|
| p10 | £16,500 | F14 |
| p25 | £70,500 | F29 |
| p50 | £293,700 | F54 |
| p75 | £662,100 | F79 |
| p90 | £1,200,500 | F94 |
| p99 | £3,121,500 | F103 |

`F54` (£293,700) equals the bulletin headline median and the "All households" median in ad-hoc 2813 — asserted in the build script. This is a genuine improvement on the Round 7 file, which had to reconstruct p90 from a banded table (Table 2.5, "scaled by the p75 scale factor of 0.899") and extrapolate p10 log-linearly from p25/p50. **For Round 8, every overall anchor used is a published value; none is interpolated.**

Table 2.4 of the Round 8 `totalwealthtables.xlsx` independently reports p25 £70,500, p50 £293,700 and p75 £662,100 for "Total wealth including private pension wealth" — consistent with ad-hoc 3134.

### Age-Bracket Percentile Breakpoints (Derived)

ONS publishes no per-age-bracket percentile breakpoints for Round 8, so p10 / p25 / p75 / p90 are derived by the **ratio-shape** method used by every dataset in this directory:

```
bracket_pX = bracket_median × (overall_pX / overall_p50)
```

Ratio factors (from the published ladder above): **p10 = 0.056180**, **p25 = 0.240041**, **p75 = 2.254341**, **p90 = 4.087504**.

p99 per bracket comes from the same **log-normal** model every dataset here uses, fitted to that bracket's published mean and median:

```
sigma = sqrt(2 × ln(mean / median))
p99   = exp(ln(median) + 2.326 × sigma)
```

**Precision**: published values (median, mean, and therefore p50) are reproduced exactly as printed, to the nearest **£100**; every modelled value is rounded to the nearest **£1,000**. Monotonicity (p10 ≤ p25 ≤ p50 ≤ p75 ≤ p90 ≤ p99) is asserted per bracket after rounding.

| Age bracket | sigma | p10 | p25 | p50 | p75 | p90 | p99 |
|-------------|-------|-----|-----|-----|-----|-----|-----|
| 16–24 | 1.5419 | £1,000 | £4,000 | £15,200 | £34,000 | £62,000 | £549,000 |
| 25–34 | 0.9425 | £6,000 | £26,000 | £109,800 | £248,000 | £449,000 | £983,000 |
| 35–44 | 0.9287 | £12,000 | £50,000 | £209,600 | £473,000 | £857,000 | £1,818,000 |
| 45–54 | 0.9703 | £17,000 | £72,000 | £301,900 | £681,000 | £1,234,000 | £2,884,000 |
| 55–64 | 0.8766 | £28,000 | £119,000 | £496,500 | £1,119,000 | £2,029,000 | £3,815,000 |
| 65–74 | 0.8520 | £28,000 | £121,000 | £502,500 | £1,133,000 | £2,054,000 | £3,646,000 |
| 75+ | 0.8573 | £21,000 | £90,000 | £373,100 | £841,000 | £1,525,000 | £2,741,000 |

### Reconciliation — the p99 model against a published p99

Round 8 is the first vintage in this directory whose source publishes a measured overall p99, so the log-normal model can be scored directly. Applied to the **whole population** (median £293,700, mean £502,700):

```
sigma = sqrt(2 × ln(502,700 / 293,700)) = 1.03676
p99   = exp(ln(293,700) + 2.326 × 1.03676) = £3,275,000
```

against ONS's published **£3,121,500** (ad-hoc 3134 note 4: *"the richest 1 % of households (99th percentile) have a Total Wealth of more than £3.1 million"*) — the model runs **+4.9 % HIGH** for the United Kingdom. The same model runs **−12.5 % LOW** for Poland (see `pl.json`).

**The model has deliberately NOT been calibrated to the published figure.** Method parity across countries beats per-country accuracy, because cross-country comparison is the whole point of the tool: a GB p99 that is measured while CZ / DE / PL / CA / US are modelled would put one country's p99 above another's for reasons of method rather than wealth. Read every p99 in this directory as an indication, not a threshold. (That the bias is *positive* here and *negative* in Poland is itself part of the argument — the log-normal tail is not uniformly wrong in one direction, so a single global fudge factor would not fix it either.)

### Verification — two independent extractions

Every figure above was extracted **twice, by mutually independent code paths**, and the two results were asserted equal cell-for-cell before `gb.json` was written:

1. **`openpyxl` cell walk** — `load_workbook(..., data_only=True)`, addressing cells by (row, column) index on sheets `Table_1` and `Table 1`.
2. **Raw OOXML read** — `zipfile` + `xml.etree.ElementTree` over `xl/workbook.xml`, `xl/_rels/workbook.xml.rels`, `xl/sharedStrings.xml` and the sheet XML, addressing cells by their `r=` reference. **`openpyxl` is not imported by this path**, so it shares no parsing code with (1).

Result: **32 of 32 cells identical** in ad-hoc 2813 (7 age bands + "All households" × mean, median, unweighted and weighted frequency) and **99 of 99 percentile rows identical** in ad-hoc 3134. Both paths additionally assert the column headers they rely on (`Q3 == "Total wealth"`, `Q4 == "Mean (£)"`, `R4 == "Median (£)"`, `F4` starting with `"Total household wealth (£)"`) and the row labels, so a re-issued workbook with shifted columns fails loudly instead of silently importing the wrong wealth component.

To re-verify by hand: download both xlsx files from the URLs above; in 2813 `Table_1` read columns **Q** (mean) and **R** (median), rows 5–12; in 3134 `Table 1` read column **F**, rows 5–103.

### Note on Table 2.11 incompatibility

The Round 8 workbook also carries Table 2.11 ("Individuals by age, by household total wealth"), giving banded wealth distributions by *individual* age. It is **not** used, for the same reason Round 7 rejected it: it classifies individuals by their own age regardless of HRP status, so a 20-year-old living in a wealthy household lands in the high-wealth band — systematically inconsistent with the HRP-based medians and means in ad-hoc 2813. The bulletin's Figure 2 chart data was also checked: it reproduces the seven medians exactly but publishes **no means**, so ad-hoc 2813 supersedes it.

### Prior vintage: Round 7 (April 2018 – March 2020) figures

Kept for the record only. **These are not comparable with the Round 8 figures above** — the DB pension method changed from April 2020 (see caveat 1). `gb.json` shipped these from 2026-05-20 until 2026-09-10.

- Bulletin: https://www.ons.gov.uk/peoplepopulationandcommunity/personalandhouseholdfinances/incomeandwealth/bulletins/totalwealthingreatbritain/april2018tomarch2020
- Medians and means: ONS user-requested data **14240**, "Mean and median wealth by component and age of household reference person (HRP): Great Britain, April 2018 to March 2020" (corrected 16 May 2025), xlsx `meanandmedianwealthbycomponentandageofhouseholdreferencepersonhrpcorrection.xlsx`, Table 1 — https://www.ons.gov.uk/peoplepopulationandcommunity/personalandhouseholdfinances/incomeandwealth/adhocs/14240meanandmedianwealthbycomponentandageofhouseholdreferencepersonhrpgreatbritainapril2018tomarch2020
- Overall percentiles: Table 2.4 of the April 2014 – March 2020 workbook — p25 £71,000, p50 £302,500, p75 £733,800; the p90 ratio of 5.617 was reconstructed from the banded Table 2.5 (scaled by the p75 scale factor of 0.899) and each bracket's p10 was extrapolated as `p25 × (p25/p50)^(15/25)`. All derived values were rounded to the nearest £100.
- Six age bands, with an open-ended 65+:

| Age bracket | Median (GBP) | Mean (GBP) |
|-------------|-------------|-----------|
| 16–24 | £22,300 | £58,600 |
| 25–34 | £76,800 | £151,500 |
| 35–44 | £198,100 | £349,900 |
| 45–54 | £366,600 | £582,000 |
| 55–64 | £556,100 | £872,200 |
| 65+ | £467,700 | £730,900 |

Round 8's nominal p75 (£662,100) is *lower* than Round 7's (£733,800) while the p25 barely moves (£70,500 vs £71,000). That is the pension-method change plus COVID-era non-response, **not** two years of British households getting poorer at the top — another reason the two vintages must not be plotted as a series.

---

## ca.json — Canada

- **Source**: Statistics Canada Survey of Financial Security 2023
- **Release URL**: https://www150.statcan.gc.ca/n1/daily-quotidien/241029/dq241029a-eng.htm
- **Table 1 (Daily release)**: "Total and median net worth by age of main income earner and family type" — https://www150.statcan.gc.ca/n1/daily-quotidien/241029/t001a-eng.htm
- **Table 11-10-0049-01**: Assets and debts by net worth quintile, Canada, provinces and selected census metropolitan areas — https://www150.statcan.gc.ca/t1/tbl1/en/tv.action?pid=1110004901
- **Retrieved**: 2026-05-21
- **License**: Statistics Canada Open Licence
- **Notes**: The SFS uses the "economic family and persons not in economic family" unit, assigned by age of the major income recipient. Net worth includes the principal residence and the actuarial present value of defined-benefit employer pension entitlements — making the SFS definition broader than the U.S. SCF (which excludes DB pension entitlements and Social Security wealth). The five age brackets (under 35, 35–44, 45–54, 55–64, 65+) follow the SFS publication exactly; 65+ is a single open-ended bracket with no separate 65–74 / 75+ split published. **Medians** (under 35: $159,100; 35–44: $409,300; 45–54: $675,800; 55–64: $873,400; 65+: $738,900) come **directly** from Statistics Canada Table 1 of the SFS 2023 Daily release (October 29, 2024), constant 2023 CAD. **Mean values and p10/p25/p75/p90** were sourced from WealthNorth.ca (https://wealthnorth.ca/personal-finance/net-worth-by-age/), which cites SFS 2023 and whose medians match the official Statistics Canada Table 1 values exactly — confirming it references the same survey and vintage. WealthNorth.ca does not publish its full methodology for deriving percentile breakpoints; these values are rounded estimates (to the nearest $5,000 or $25,000), not percentile breakpoints directly published by Statistics Canada in the standard release. Statistics Canada does not publish per-age-bracket percentile breakpoints (other than the median) in the SFS Daily release or the standard CANSIM tables. **p99** for each bracket was derived using a log-normal model fitted to each bracket's published mean and median: `sigma = sqrt(2 × ln(mean/median))`, `p99 = exp(ln(median) + 2.326 × sigma)`, rounded to the nearest $1,000. The under-35 p10 is negative (-$15,000), reflecting the substantial share of young families carrying net negative wealth (student debt exceeding assets).
- **Next update expected**: 2027 (SFS runs every ~3 years).

---

## cz.json — Czechia

- **Source**: ECB Household Finance and Consumption Survey (HFCS), Wave 4, fieldwork 2021 — Statistical Tables (July 2023), CZ country column
- **ECB URL**: https://www.ecb.europa.eu/stats/ecb_surveys/hfcs/html/index.en.html
- **Statistical Tables PDF**: https://www.ecb.europa.eu/home/pdf/research/hfcn/HFCS_Statistical_Tables_Wave_2021_July2023.pdf
- **Results Paper (SPS46)**: https://www.ecb.europa.eu/pub/pdf/scpsps/ecb.sps46~3563bc9f03.en.pdf
- **ČNB URL**: https://www.cnb.cz/en/financial-stability/topics-financial-stability/hfcs/
- **Czech Statistical Office HFCS landing**: https://csu.gov.cz/csu/vykazy/the-sample-survey-household-finance-and-consumption-survey-hfcs
- **Retrieved**: 2026-05-21
- **License**: ECB public statistical data — reproduction for educational and non-commercial purposes is permitted provided that the source is acknowledged.
- **Notes**: All age-bracket medians come **directly** from HFCS Statistical Tables Wave 2021 (July 2023), **Table A3** (net wealth medians by age of reference person), CZ column, EUR thousands. All age-bracket means come **directly** from **Table A4** (net wealth means by age), CZ column, EUR thousands. The overall net wealth decile distribution (p10 through p90) used to derive bracket percentiles comes **directly** from **Table J3** (net wealth per household — distribution), CZ column. All source values were published in EUR and converted to CZK using the **ECB annual average reference exchange rate for 2021 of 25.64 CZK/EUR** (ECB SDW series EXR.A.CZK.EUR.SP00.A; explicitly cited in HFCS Wave 4 results paper footnote 7: "For the Czech Republic, average over 2021"). This rate is consistent with the Czech fieldwork period (February 2020 – February 2022), centred on 2021. **HFCS net wealth EXCLUDES public and occupational defined-benefit pension entitlements** — unlike the UK ONS WAS and Statistics Canada SFS which include DB pension wealth at actuarial present value. This means Czech figures are not directly comparable with the GB and CA datasets in this directory. Per-age-bracket percentile breakpoints p25 and p75 are not published by HFCS; they were linearly interpolated between the adjacent published deciles (p25 from p20/p30; p75 from p70/p80). All per-age-bracket percentile breakpoints other than the median and mean were derived using the ratio-shape method: bracket_pX = bracket_median × (overall_pX / overall_p50). p99 for each bracket was derived using a log-normal model: sigma = sqrt(2 × ln(mean/median)), p99 = exp(ln(median) + 2.326 × sigma). All CZK values rounded to the nearest 1,000 CZK. The unit is the household, assigned by age of the household reference person (highest income earner in the household). Czechia participated in HFCS for the first time in Wave 4; no earlier HFCS waves are available for comparison. The HFCS Statistical Tables (July 2023) are based on HFCS data version 4.0.
- **Next update expected**: 2027 (HFCS Wave 5).

## de.json — Germany

- **Source**: Deutsche Bundesbank Panel on Household Finances (PHF) 2021 / ECB HFCS Wave 4
- **Bundesbank URL**: https://www.bundesbank.de/en/bundesbank/research/panel-on-household-finances
- **HFCS Statistical Tables**: https://www.ecb.europa.eu/home/pdf/research/hfcn/HFCS_Statistical_Tables_Wave_2021_July2023.pdf (DE column in Tables A3, A4, J3)
- **Retrieved**: 2026-05-21
- **License**: ECB public statistical data — reproduction for educational and non-commercial purposes is permitted provided that the source is acknowledged
- **Notes**: Age-bracket medians come directly from HFCS Statistical Tables Wave 2021 (July 2023) Table A3 (DE column, EUR thousands): 16–34: 16.3k, 35–44: 65.7k, 45–54: 155.2k, 55–64: 230.3k, 65–74: 232.1k, 75+: 129.9k. Age-bracket means come directly from Table A4 (DE column, EUR thousands): 16–34: 94.7k, 35–44: 213.3k, 45–54: 441.2k, 55–64: 420.1k, 65–74: 372.0k, 75+: 343.6k. Overall decile distribution comes from Table J3 (DE column). p25 and p75 overall were derived by linear interpolation between adjacent published deciles (p25 = 12.9k EUR, p75 = 364.1k EUR). Per-household measure. Includes private and voluntary pension wealth, excludes statutory state pension (GRV). Germany has one of the most unequal wealth distributions in the eurozone (~49% homeownership rate in 2021); overall p10 is only 0.9k EUR vs median 106.7k EUR. Per-bracket percentile breakpoints derived via ratio-shape method. p99 derived via log-normal model. All values in EUR, rounded to nearest 100 EUR.
- **Next update expected**: 2027 (HFCS Wave 5).

## pl.json — Poland

- **Source**: Narodowy Bank Polski, "Household Wealth and Debt in Poland. Report of 2016 survey" (Badanie Zasobności Gospodarstw Domowych, BZGD) — Poland's own component of the ECB HFCS — plus ECB HFCS Statistical Tables Wave 2017 (wave 3), PL column, for the distribution shape
- **NBP report PDF**: https://nbp.pl/wp-content/uploads/2022/11/bzgd_2016_en.pdf
- **NBP methodological report**: https://nbp.pl/wp-content/uploads/2022/11/bzgd_2016_metodology_en.pdf
- **HFCS Statistical Tables (Wave 2017, July 2023)**: https://www.ecb.europa.eu/home/pdf/research/hfcn/HFCS_Statistical_Tables_Wave_2017_July2023.pdf (PL column in Tables A3, A4, J3)
- **ECB HFCS landing**: https://www.ecb.europa.eu/stats/ecb_surveys/hfcs/html/index.en.html
- **FX cross-check series**: ECB `EXR.A.PLN.EUR.SP00.A` via https://data-api.ecb.europa.eu/service/data/EXR/A.PLN.EUR.SP00.A
- **Retrieved**: 2026-09-02
- **License**: NBP and ECB public statistical data — reproduction for educational and non-commercial purposes is permitted provided that the source is acknowledged.
- **Notes**: **Poland did NOT participate in HFCS Wave 4 (2021)** — that wave covered the 19 euro area countries plus Croatia, Czechia and Hungary only. The most recent Polish household wealth survey is therefore the **2016 BZGD**, whose fieldwork ran **September–November 2016** with assets and liabilities recorded at time of interview (HFCS Wave 2017 "Reference periods" table, Poland row). This dataset is consequently the **oldest** in this directory; Polish house prices and wages have risen substantially since 2016, so the figures understate present-day nominal net worth. Age-bracket medians and means come **directly** from the NBP report's **Table 1.1**, "Age of the reference person" block, published in **PLN thousands to one decimal** — reproduced here to the nearest 100 PLN, i.e. exactly as published, rather than the nearest 1,000 used for CZ (whose source was EUR thousands, a coarser grid than 1,000 CZK). Because NBP is the primary source, **no exchange rate enters any published value in `pl.json`**. Poland uses **five** age brackets (16–34, 35–44, 45–54, 55–64, 65+), not six, because that is NBP's own breakdown; the bracket household shares sum to 100.0 (13.5 + 19.0 + 18.2 + 23.7 + 25.6), so they partition the population and 65+ is open-ended — the same shape as `ca.json`. The **percentile shape** comes from **HFCS Table J3** (net wealth per household — distribution), PL column: p10 1.8, p20 17.3, p30 32.6, p40 46.0, p50 60.5, p60 79.4, p70 102.4, p80 133.5, p90 194.2 (EUR thousands). p25 and p75 are not published and were linearly interpolated between adjacent deciles (p25 = 24.95, p75 = 117.95 EUR thousands). Per-bracket breakpoints then use the same **ratio-shape** method as CZ/DE: `bracket_pX = bracket_median × (overall_pX / overall_p50)`. Only the **ratio** is used, so Table J3's euro unit cancels out exactly and the shape is currency-free. p99 per bracket uses the same **log-normal** model: `sigma = sqrt(2 × ln(mean/median))`, `p99 = exp(ln(median) + 2.326 × sigma)`; all modelled breakpoints are rounded to the nearest 1,000 PLN. **The p99 model is a known under-estimate for Poland and the size is measured**: applied to the whole population (median 263.6k, mean 417.3k) it returns **PLN 2.45 million** against the **PLN 2.8 million** NBP publishes for the top 1% (−12.5 %) — real wealth tails are fatter than log-normal, so read p99 as a conservative indication, not a threshold. **The two publications were reconciled** at the ECB annual average reference rate for 2016 of **4.3632 PLN/EUR** (`EXR.A.PLN.EUR.SP00.A` = 4.3632073929961; 2016 is the reference year for Polish asset values): HFCS's EUR 60.5k median → PLN 264.0k vs NBP's published PLN 263.6k (**+0.14 %**), and HFCS's EUR 95.5k mean → PLN 416.7k vs NBP's PLN 417.3k (**−0.15 %**). Both agree to within the rounding of the published EUR figures, confirming the age table and the distribution shape describe the same survey. HFCS Table A3/A4 PL medians and means were extracted twice by independent methods (coordinate-aware `pdfplumber` column matching and a positional `pdftotext -layout` read) and agree; the J3 decile ladder additionally reconciles against Table A3's own net-wealth-quintile rows (Bottom 20 % = 1.8 = p10, 20–40 % = 32.6 = p30, 40–60 % = 60.5 = p50, 60–80 % = 102.4 = p70). Like CZ and DE, **HFCS/BZGD net wealth EXCLUDES public and occupational defined-benefit pension entitlements** — unlike the UK ONS WAS and Statistics Canada SFS, so PL is not directly comparable with `gb.json` or `ca.json`. Unit of measurement is the household, assigned by age of the reference person. Overall median net wealth for Poland: **PLN 263.6 thousand**; overall mean: **PLN 417.3 thousand**; homeownership of the main residence 79.2 %, which is why Poland's low percentiles (p20 = EUR 17.3k) sit above several richer euro area countries.
- **Next update expected**: unscheduled — Poland skipped HFCS Wave 4 and NBP has not announced a further BZGD wave. `pl.json` therefore OMITS the optional `source.next_update_expected` field rather than carrying a placeholder: the footnote renders that value inside `netWorthPercentile.nextUpdate` ("next update {year}"), so an English clause there would sit untranslated in the Czech and German footnotes. Its absence is the fact. `methodology_notes` is likewise `en`-only — nothing in `src/` renders it (the Zod schema is its only reader) and no other dataset ships a translation.
