# Who pays and who receives: sources

Every input of `data/dna.ml` (the "Who pays" Sankey on the public money page)
is a file in `raw/`, read through a typed `nox-csv` codec. Eurostat extracts
keep the JSON-stat answer they were flattened from (`jq`, one row per cell, a
column per dimension of size above one, then the flag and the value).
Retrieved 14 October 2026 unless stated.

## Insee

- `IA118.xlsx`: Insee Analyses n° 118, "Revenus des ménages élargis à
  l'ensemble de l'économie en 2023", workbook of the figures,
  <https://www.insee.fr/fr/statistiques/fichier/8974371/IA118.xlsx>. Sheets
  "Tableau complémentaire" (twentieths of living standard), "Figure 2b"
  (tenths, a cross-check) and "Figure 1e" (household age). `build/ia118.exe`
  extracts the cells into `dna_2023.csv`, among them the three rows of
  capital income of "Tableau complémentaire" (net financial income, rents
  actual and imputed, profits kept in companies), shown beside the diagram
  by tenth and by share of income and used to key the CSG on capital
  income.
- `reve-niv-vie-decile-individu.xlsx`: Insee, "Distribution des niveaux de
  vie, données annuelles de 1996 à 2024",
  <https://www.insee.fr/fr/statistiques/fichier/2416808/reve-niv-vie-decile-individu.xlsx>;
  `build/living_standards.exe` extracts `living_standards.csv`.

## Eurostat (dissemination API, statistics/1.0)

- Inheritance and gift duties (gov_10a_taxag, D91A, S13_S212, updated
  2026-07-21): 20,815 M€ for 2023 and 20,819 M€ for 2024, from
  `data/capital/dmtg_series.csv` (`Capital.duties` for 2024); drawn apart
  from other revenue in every view.
- `eurostat_gov_10a_main_FR_totals.{json,csv}`: gov_10a_main, FR, S13,
  MIO_EUR, na_item TR, TE, B9, D2REC, D5REC, D61REC, D41PAY, 2022 on
  (updated 2026-07-21).
  <https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/gov_10a_main?geo=FR&unit=MIO_EUR&sector=S13&na_item=TR&na_item=TE&na_item=B9&na_item=D2REC&na_item=D5REC&na_item=D61REC&na_item=D41PAY&sinceTimePeriod=2022>
- `eurostat_gov_10a_exp_FR.{json,csv}`: gov_10a_exp, FR, S13, TE, COFOG
  TOTAL, GF01, GF0107, GF02 to GF10, 2022 on (updated 2026-09-16; 2023 and
  2024 provisional).
  <https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/gov_10a_exp?geo=FR&unit=MIO_EUR&sector=S13&na_item=TE&cofog99=TOTAL&cofog99=GF01&cofog99=GF0107&cofog99=GF02&cofog99=GF03&cofog99=GF04&cofog99=GF05&cofog99=GF06&cofog99=GF07&cofog99=GF08&cofog99=GF09&cofog99=GF10&sinceTimePeriod=2022>
- `eurostat_nasa_10_f_bs_FR_F51.{json,csv}`: nasa_10_f_bs, FR, MIO_EUR,
  non-consolidated, listed and unlisted shares (F51), sectors S1, S11, S12,
  S13, S14_S15, S2, assets and liabilities, 2021 on (updated 2026-10-14).
  <https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/nasa_10_f_bs?geo=FR&unit=MIO_EUR&co_nco=NCO&na_item=F51&sector=S2&sector=S11&sector=S12&sector=S13&sector=S14_S15&sector=S1&finpos=ASS&finpos=LIAB&sinceTimePeriod=2021>
- `eurostat_gov_10dd_ggd_FR.{json,csv}`: gov_10dd_ggd, general government
  gross debt at face value by holder sector (updated 2026-06-05).
- `eurostat_nama_10_fcs_FR.{json,csv}`: nama_10_fcs, household consumption,
  domestic (P31_S14_DC) and national concepts, P33, P34 (updated
  2026-10-13).
- `eurostat_gov_10a_main_FR_abroad.{json,csv}` and
  `eurostat_gov_10a_main_FR_abroad_d9.json`: gov_10a_main, transfers between
  general government and the rest of the world (updated 2026-07-21).

## Banque de France

- `bdf_bulletin_255-5_cac40.pdf`: Hodeau and Renouard, "La détention des
  actions des sociétés françaises du CAC 40 par les non-résidents est restée
  stable en 2023", Bulletin 255/5, December 2024, p. 1: 49.5% at the end of
  2023. <https://www.banque-france.fr/system/files/2024-12/BDF255-5_CAC-40.pdf>
- `bdf_bulletin_261-3_cac40.pdf`: Renouard, "... a augmenté très
  légèrement en 2024", Bulletin 261/3, December 2025, p. 1: 50% at the end
  of 2024.
  <https://www.banque-france.fr/system/files/2025-12/BDF261-3_CAC-40_web.pdf>
- `bdf_blog_abq_pertes_2025.pdf` and `bdf_comptes_2024.html`: what the
  Banque de France paid the State for 2023 and 2024.

## European Central Bank

- `ecb_app.html`: the asset purchase programme's history; "no ... reinvestments under the APP as of July 2023".
  <https://www.ecb.europa.eu/mopo/implement/app/html/index.en.html>
- `ecb_pepp.html`: "Reinvestments under the PEPP were fully discontinued at
  the end of 2024".
  <https://www.ecb.europa.eu/mopo/implement/pepp/html/index.en.html>

## Cross-checks, not inputs to any group

- `wid_FR_top_shares.csv`: WID bulk data (`wid_all_data.zip`, last modified
  9 September 2026), France, sptincj992 and tptincj992. Checks the shape of
  the top of Insee's curve and bounds the most concentrated alternative tail.
- `ipp_note92.pdf`: IPP Note 92 (tax rates by g-percentile, 2016). Gives
  the IPP alternative for how personal taxes, contributions and corporate
  tax vary inside the top 5%.
- `BGGGP2020.pdf`: Bozio, Garbinti, Goupille-Lebret, Guillot and Piketty,
  WID Working Paper 2020/22.

## Methods

- Interpolation: Blanchet, Fournier and Piketty (2022), "Generalized Pareto
  Curves: Theory and Applications", Review of Income and Wealth 68(1),
  implemented in `lib/gpinter.ml` and tested in `test/test_gpinter.ml`.

## By person's age (National Transfer Accounts)

`data/nta.ml` builds one age profile per item; `build/nta.exe` extracts the
workbook cells into `nta_profiles.csv` (rows found by label, columns by
header text). Method: United Nations, "National Transfer Accounts Manual"
(2013); for France, d'Albis, Bonnet, Navaux, Pelletan and Wolff, Économie et
Statistique 2017. Retrieved 14 October 2026. The result is a synthetic
allocation: the view shows the central case and eight alternatives
(`Nta.cases`), one convention changed at a time. `build/allocation.exe` writes
`nta_allocation.csv`, every profile of every case at every single age, 2023
and 2024: population, the share of the item at that age (`weight`) and the
amount per person relative to the mean (`per_person`); a group's share of an
item is the sum of `weight` over its ages, and a test checks the file is
current.

- `eurostat_demo_pjan_FR.{json,csv}`: demo_pjan, FR, single ages, 1 January
  2023 to 2025 (updated 2026-09-25).
  <https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/demo_pjan?geo=FR&sex=T&unit=NR&sinceTimePeriod=2023>
- `eurostat_educ_uoe_enra02_FR.{json,csv}`: pupils and students by age and
  ISCED level, 2021 to 2024 (updated 2026-10-06).
  <https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/educ_uoe_enra02?geo=FR&sex=T&sinceTimePeriod=2021>
- `eurostat_educ_uoe_fini04_FR.{json,csv}`: expenditure per pupil by level,
  2020 to 2023 (updated 2026-09-15); the profile uses EUR, TOT_SEC, 2023.
  <https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/educ_uoe_fini04?geo=FR&sinceTimePeriod=2020>
- `drees_depenses_sante_rac_2023.csv`: DREES, "Dépenses de santé et restes
  à charge" (data.drees, modified 2026-04-13), export for Année 2023, Poste
  _Total, Sexe, ALD and C2S _Ensemble, Échantillon _Total; the profile reads
  "Montant moyen - remboursement par l'assurance maladie obligatoire" by
  ten-year band.
  <https://data.drees.solidarites-sante.gouv.fr/explore/dataset/depenses-de-sante-et-restes-a-charge/>
- `drees_retraites_fin2022.xlsx`: DREES, "Les effectifs de retraités,
  montants des pensions et âges de départ à la retraite, fin 2022" (dataset
  1393, Panorama 2024 data): tables 1.2-d, 2.1-h (direct pensions by single
  age), 1.4-a, 2.4-a, graphique 1.4-c (survivors).
  <https://data.drees.solidarites-sante.gouv.fr/api/explore/v2.1/catalog/datasets/1393_les-effectifs-et-montants-de-pension-des-retraites/attachments/les_effectifs_de_retraites_montants_des_pensions_et_ages_de_depart_a_la_retraite_fin_2022_xlsx>
- `cnaf_s_age_1_nat_2023_2024.csv`: CNAF, s_age_1_nat (modified
  2026-10-09), monthly amounts by benefit and age of the claimant, January
  2023 to December 2024.
  <https://data.caf.fr/api/explore/v2.1/catalog/datasets/s_age_1_nat/exports/csv>
- `cnaf_vfdas_nat.csv`: CNAF, vfdas_nat, social-action spending (masfb1to,
  early childhood), 2017 to 2025 (modified 2026-07-22).
  <https://data.caf.fr/api/explore/v2.1/catalog/datasets/vfdas_nat/exports/csv?delimiter=%3B>
- `drees_depenses_aide_sociale_1999_2024.xlsx`: DREES, departmental social
  spending, long series (dataset 376, modified 2026-04-17), "Données
  nationales", Tableau A, gross spending 2023 and 2024.
- `drees_pa_age_2023.xlsx`, `drees_pa_age_2024.xlsx`: DREES, beneficiaries of
  help to the elderly by age, December 2023 and 2024, sheet "nat-Aides PA
  par sexe et âge" (dataset modified 2025-12-19).
- `drees_ph_age_2023.xlsx`, `drees_ph_age_2024.xlsx`: DREES, beneficiaries of
  help to the disabled by age, end of 2023 and 2024, sheet "NAT-âge-sexe".
  <https://data.drees.solidarites-sante.gouv.fr/explore/dataset/les-caracteristiques-des-beneficiaires-de-l-aide-sociale-departementale-aux-pers/>
- `drees_ase_2024.xlsx`: DREES, "Les bénéficiaires de l'aide sociale à
  l'enfance en 2024", Tableau E, children placed by single age (modified
  2026-09-03).
- `francetravail_teleindemalloc.xlsx`, `francetravail_teleindemmoy.xlsx`:
  France Travail, recipients paid by sex and age (all schemes) and the mean
  monthly entitlement of unemployment insurance by sex and age; December
  2023 and December 2024 rows.
  <https://statistiques.francetravail.org/indem/static/donnees>
- `insee_eec_pemp01_2023.xlsx`, `insee_eec_css08_2023.xlsx`: Insee, Enquête
  emploi 2023, people in employment by five-year band (PEMP01) and employees
  by broad band, 15 to 24, 25 to 49, 50 to 64 and 65 and over (CSS08, row
  Total). <https://www.insee.fr/fr/statistiques/8217921>
- `insee_ecrt2026_f30.xlsx`: Insee, Emploi, chômage, revenus du travail
  2026, fiche "Revenu salarial", Figure 1, by age: mean revenu salarial, mean
  full-time-equivalent salary and mean volume of work in full-time-equivalent
  years, 2023 (published 2 July 2026). <https://www.insee.fr/fr/statistiques/8733097>
  Used by the alternative pay scenarios only.
- `bts_pay_2023.csv` (in `data/income/`, not `raw/`): Insee, "Description
  des emplois salariés en 2023, fichier détail" (24 March 2026), salariés
  file `FD_SALAAN_2023.parquet` (base Tous salariés, super-anonymised, one
  row per employee with a weight, private and public employers, 35 MB, not
  committed), <https://www.insee.fr/fr/statistiques/fichier/8730395/FD_SALAAN_2023.parquet>,
  page <https://www.insee.fr/fr/statistiques/8730395>, fetched 15 October
  2026. `build/bts.exe` sums POND by single AGE, band of total annual net pay
  (TRNNETO) and public (DOMEMPL_EM 1 to 3) or private employer. The pay mass
  by age counts each band at its midpoint and the open band (50,000 euros and
  over) at the mean of a Pareto tail fitted on the employees above 40,000 and
  50,000 euros (coefficient 2.785, mean 78,018 euros). Check against Insee's
  revenu salarial by age (F30): 10,347 against 10,170 euros under 25,
  23,934 against 23,480 at 25 to 39, 29,582 against 29,110 at 40 to 49,
  30,842 against 31,010 at 50 to 54, 28,531 against 28,730 at 55 and over;
  24,735 against 24,960 overall, the scopes differing (the file includes
  apprentices, farm employees and household employers). Total: 29.7 million
  employees, €734bn of net pay, 21.9% from the civil services. These sums
  are on the file's weights and are not volumes: the file is a sample of
  1/12 with a weight of 12 for everyone, and since the 2013 vintage it
  over-represents employees born in an even year (Insee's warning on the
  page), so single ages alternate (about 360,000 weighted employees at even
  ages against 950,000 at odd ages near 30). Only the shape across ages is
  used: ages are taken in pairs, one born in an even year and one in an odd
  one, and the pay per person is smoothed within each pair, keeping its mean
  (`Nta.bts_pairs`). This is the central earnings profile. Variants: the
  open band fitted by age group (about 62,300 euros at 14 to 29, 72,600 at
  30 to 39, 79,300 at 40 to 49, 81,300 at 50 to 59, 96,100 at 60 and over,
  against 78,000 pooled), and the closed bands at their lower or upper
  bounds. The extract is published next to the site as
  `income/bts_pay_2023.csv`; the evidence derives each age group's pay
  mass and each tail mean from its counts by band. Also looked at: Insee's "Salaires dans le
  secteur privé selon le sexe, l'âge et la CSP" (2021266, mean salaries
  only, no headcounts), "Salaires dans le secteur privé / la fonction
  publique : caractéristiques des individus" (8733089, 8733093: mean
  full-time-equivalent salaries by age, no volumes) and Insee Première
  n° 2020 (headcounts by occupation and sex, not age).
- `insee_hvp2024_mtpatbrut_composante.xlsx`,
  `insee_hvp2024_profil_menages.xlsx`: Insee, "Patrimoine et endettement des
  ménages en 2024" (26 February 2026), sheet AGE: mean gross wealth and its
  composition, and households, by age of the reference person, start of
  2024. <https://www.insee.fr/fr/statistiques/8736842>
- `insee_ip1749.pdf`: Insee Première n° 1749 (17 April 2019), Figure 1:
  consumption per consumption unit by age of the reference person, Budget de
  famille 2017, recalibrated on the national accounts (+2%, +3%, −7%
  around 22,220 euros), read by hand into `Nta.uc_gaps`.
  <https://www.insee.fr/fr/statistiques/4127596>
- `insee_erfs2023_t03.xlsx`: Insee, "Revenu, niveau de vie et pauvreté en
  2023" (17 February 2026), T03, composition of disposable income by age of
  the reference person. <https://www.insee.fr/fr/statistiques/8731688>
  Rows read: activity income, salaries (unemployment benefits included),
  self-employment income, pensions, property income and direct taxes.
- `insee_erfs2023_trd04.xlsx`: Insee, ERFS 2023 detailed tables, TRD04, mean
  disposable income of households by age of the reference person, constant
  2023 euros, column 2023; `irsocerfs2023_TRD04.xlsx` from
  <https://www.insee.fr/fr/statistiques/fichier/8731524/irsocerfs2023_dd0_excel.zip>
  (fetched 14 October 2026). Its sheet declares A1:AF1048576 and a formatted
  empty row at r=1048576; the mono xlsx reader reads it since "ocaml-xlsx:
  size a sheet by the cells it holds". TRD04 holds disposable income only, no
  taxes: with T03's shares and households by age (HVP 2024) it gives
  households' direct taxes and self-employment income by age of the
  reference person.
- `ccss_juin_2025.pdf`: Commission des comptes de la Sécurité sociale, June
  2025, fiche 1.3, Tableau 1 (p. 47), CSG by base, 2023 and 2024, read by
  hand into `Nta.csg_bases`. The CSG on capital income splits into income from
  property (7,167 and 6,899 M€) and from investments (9,444 and 10,728 M€),
  read by hand into `Dna.ccss_capital_bases`: they key the CSG on capital
  income by tenth and by share of income.

## Searched and not found

- Capital income by household age or by person's age on the concept of
  Insee's distributional accounts: IA118's Figure 1e gives extended primary
  income only, not its capital part; the Histoire de vie et Patrimoine 2024
  tables (`insee_hvp2024_*`) give wealth, not income, by age of the
  reference person. Insee's presentation to the COR on distributional
  accounts by age (November 2023,
  <https://www.cor-retraites.fr/sites/default/files/2023-11/4.Redistribution%20%C3%A9largie_COR_0.pdf>)
  returned a server error on 14 October 2026. Those two views show no
  capital income.
- A national total and a key by living standard for the property wealth
  tax (IFI) and the taxe foncière inside Insee's rows "Autres impôts sur les
  revenus et le patrimoine (TH, ISF/IFI, CRDS, etc.)" and "Taxes sur la
  production (taxes patronales, TF, etc.)": they stay inside those rows.
- A table crossing the number or age of children with the age of the
  household's adults or reference person: the 2021 census detailed tables
  (Couples-Familles FAM1 to FAM9, <https://www.insee.fr/fr/statistiques/8205229>;
  Population POP1 to POP6, <https://www.insee.fr/fr/statistiques/8202264>),
  the 2022 key figures (<https://www.insee.fr/fr/statistiques/8569208>) and
  the 2021 long series (<https://www.insee.fr/fr/statistiques/8385775>) cross
  them with family type, nationality and occupation only; MEN4 (2016) crosses
  household size, not children, with the reference person's age. The by-age
  view therefore stays by household age.
- Government debt transactions or interest by holder: not in Eurostat's
  tables; the ECB's who-to-whom sector accounts (QSA) could not be queried
  for France from here. Changes in holdings at face value and average
  holdings stand in for them.
- Insee top shares within its distributional accounts above the twentieth:
  none published for 2023; the top 5% is interpolated.
- Income tax by age of the declarant: DGFiP's statistics (impots.gouv.fr,
  DGFiP Statistiques n° 32 and 41, DGFiP Analyses n° 8 and 10,
  data.economie.gouv.fr) are by decile, rate band, commune or income kind;
  DGFiP Analyses n° 10 (July 2026) counts tax households by age without
  amounts; ERFS TRD04 gives disposable income by age, no tax, and T03 gives
  income tax, CSG, CRDS and residence tax together. The income-tax profile is
  therefore an allocation scenario: the CSG base weighted by T03's ratio of
  direct taxes to income by age, with two alternatives, T03 × TRD04 per
  household of each age and the CSG base alone.
- Self-employed income by age of the person, invalidity pensions by age, the
  old-age minimum (ASPA) by age, households' composition by age of the
  reference person: not found in a public table; each item's caveat names its
  proxy. Self-employment income is taken by age of the household's reference
  person (T03 × TRD04). Budget de famille 2017's `cad01_fe.xlsx`
  (<https://www.insee.fr/fr/statistiques/4648335>, fetched 14 October 2026)
  counts households by age of the reference person and, separately, by
  region, occupation, commune, household type and tenth (only tenure is
  crossed, with the fifth of living standard), never age with household
  type, and holds no consumption: it allows neither the NTA consumption
  regression nor a composition-based equivalence, so children stay at the
  consumption level of the 35 to 64. It is not used.
- DREES's Panorama 2025 workbooks (data to end 2023) on
  drees.solidarites-sante.gouv.fr refuse scripted downloads; the end-2022
  open-data release is used.
