Distributional Wealth Accounts

Data - ECB

Warning in readChar(con, 5L, useBytes = TRUE): impossible d'ouvrir le fichier
compressé '/Users/geerolf/iCloud/website/data/ecb/TITLE.RData', cause probable
: 'No such file or directory'
Error: 12 

Info

source dataset Title .html .rData
ecb DWA Distributional Wealth Accounts 2026-07-23 2026-07-22

LAST_COMPILE

LAST_COMPILE
2026-07-24

Last

Code
DWA %>%
  group_by(TIME_PERIOD) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(TIME_PERIOD)) %>%
  head(2) %>%
  print_table_conditional()
TIME_PERIOD Nobs
2025-Q4 18863
2025-Q3 18863

INSTR_ASSET

Code
DWA %>%
  left_join(INSTR_ASSET ,  by = "INSTR_ASSET") %>%
  group_by(INSTR_ASSET, Instr_asset) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
INSTR_ASSET Instr_asset Nobs
F_NNA Adjusted total assets/liabilities (financial and net non-financial) 137145
NWA Adjusted wealth (net) 85659
F4B Loans for house purchasing 69261
F62 Life insurance and annuity entitlements 69261
NUN Housing wealth (net) 69261
F4X Loans other than for house purchasing 68649
F52 Investment fund shares/units 68316
NUB Non-financial business wealth 68316
F51M Unlisted shares and other equity 68010
F2M Deposits 67884
F3 Debt securities 67884
F5 NA 67590
F51 NA 67590
F511 Listed shares 66939
ADA Adjusted debt to asset ratio 13266

REF_AREA

Code
DWA %>%
  left_join(REF_AREA ,  by = "REF_AREA") %>%
  group_by(REF_AREA, Ref_area) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
REF_AREA Ref_area Nobs
I9 Euro area 20 (fixed composition) as of 1 January 2023 59908
GR Greece 58146
IT Italy 57563
FI Finland 57265
FR France 57265
BE Belgium 54622
CY Cyprus 54622
SK Slovakia 54622
AT Austria 53741
SI Slovenia 53741
DE Germany 52860
LU Luxembourg 50996
MT Malta 50996
ES Spain 50217
PT Portugal 46053
IE Ireland 44931
EE Estonia 42636
HU Hungary 40526
LT Lithuania 32597
HR Croatia 30520
LV Latvia 29954
NL Netherlands 21250

DWA_GRP

Code
DWA %>%
  left_join(DWA_GRP ,  by = "DWA_GRP") %>%
  group_by(DWA_GRP, Dwa_grp) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
DWA_GRP Dwa_grp Nobs
_Z Not applicable 60438
D6 Decile 6 based on net wealth concept 58144
D7 Decile 7 based on net wealth concept 58144
D8 Decile 8 based on net wealth concept 58144
D10 Decile 10 based on net wealth concept 57991
D9 Decile 9 based on net wealth concept 57991
B50 Bottom 50% based on net wealth concept 56820
Q2 Quintile 2 based on net wealth concept 55441
Q3 Quintile 3 based on net wealth concept 55441
Q4 Quintile 4 based on net wealth concept 55441
Q5 Quintile 5 based on net wealth concept 55441
Q1 Quintile 1 based on net wealth concept 54270
WSE Working status - Employee 53022
WSR Working status - Retired 53022
WSS Working status - Self-employed 53022
WSX Working status-Undefined and other 53022
HSO Housing status - Owner/partial owner 52779
HST Housing status - Tenant/Free use 52779
WSU Working status - Unemployed 45237
D1 Decile 1 based on net wealth concept 1206
D2 Decile 2 based on net wealth concept 1206
D3 Decile 3 based on net wealth concept 1206
D4 Decile 4 based on net wealth concept 1206
D5 Decile 5 based on net wealth concept 1206
T10 Top 10% based on net wealth concept 1206
T5 Top 5% based on net wealth concept 1206

STO

Code
DWA %>%
  left_join(STO,  by = "STO") %>%
  group_by(STO, Sto) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
STO Sto Nobs
LE Closing balance sheet/Positions/Stocks 1036941
_Z Not applicable 18090

ACCOUNT_ENTRY

Code
DWA %>%
  left_join(ACCOUNT_ENTRY,  by = "ACCOUNT_ENTRY") %>%
  group_by(ACCOUNT_ENTRY, Account_entry) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
ACCOUNT_ENTRY Account_entry Nobs
A Assets (Net Acquisition of) 750312
L Liabilities (Net Incurrence of) 205794
N Net (Assets minus Liabilities) 80835
_Z Not applicable 18090

UNIT_MEASURE

Code
DWA %>%
  left_join(UNIT_MEASURE,  by = "UNIT_MEASURE") %>%
  group_by(UNIT_MEASURE, Unit_measure) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
UNIT_MEASURE Unit_measure Nobs
EUR Euro 341330
EUR_R_NH Euro; ratio to number of households 341330
EUR_R_POP Euro; ratio to total population 341330
PT Percent 16884
EUR_T NA 10539
EUR_MD Euro; median 1206
EUR_MN Euro; mean 1206
GI GINI coefficient 1206

TIME_PERIOD

Code
DWA %>%
  group_by(TIME_PERIOD) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(TIME_PERIOD)) %>%
  print_table_conditional()

France, 2023-Q2

All

Code
DWA %>%
  filter(TIME_PERIOD == "2023-Q2",
         REF_AREA == "FR") %>%
  select_if(~ n_distinct(.) > 1) %>%
  left_join(INSTR_ASSET,  by = "INSTR_ASSET") %>%
  left_join(DWA_GRP,  by = "DWA_GRP") %>%
  left_join(UNIT_MEASURE,  by = "UNIT_MEASURE") %>%
  left_join(ACCOUNT_ENTRY,  by = "ACCOUNT_ENTRY") %>%
  select(-KEY, -DWA_GRP, -TITLE, -COMMENT_TS) %>%
  select(Instr_asset, Dwa_grp, Unit_measure, Account_entry, OBS_VALUE, everything()) %>%
  arrange(Instr_asset, Dwa_grp, Unit_measure) %>%
  #spread(Unit_measure, OBS_VALUE) %>%
  print_table_conditional

NWA - Adjusted wealth (net)

Code
DWA %>%
  filter(TIME_PERIOD == "2023-Q2",
         REF_AREA == "FR",
         INSTR_ASSET == "NWA") %>%
  select_if(~ n_distinct(.) > 1) %>%
  left_join(DWA_GRP,  by = "DWA_GRP") %>%
  left_join(UNIT_MEASURE,  by = "UNIT_MEASURE") %>%
  select(-KEY, -DWA_GRP, -TITLE, -COMMENT_TS) %>%
  select(Dwa_grp, Unit_measure, OBS_VALUE, everything()) %>%
  select(-UNIT_MULT, -UNIT_MEASURE) %>%
  arrange(Dwa_grp, Unit_measure) %>%
  spread(Unit_measure, OBS_VALUE) %>%
  print_table_conditional
Dwa_grp ACCOUNT_ENTRY STO Euro Euro; mean Euro; median Euro; ratio to number of households Euro; ratio to total population GINI coefficient Percent <NA>
Bottom 50% based on net wealth concept _Z _Z NA NA NA NA NA NA 5.04 NA
Bottom 50% based on net wealth concept N LE 700857.96 NA NA 44.67 21.68 NA NA NA
Decile 10 based on net wealth concept N LE 7513378.19 NA NA 2396.12 1007.21 NA NA 977.20
Decile 6 based on net wealth concept N LE 720151.16 NA NA 230.18 108.00 NA NA 185.21
Decile 7 based on net wealth concept N LE 1061851.26 NA NA 338.63 156.69 NA NA 281.93
Decile 8 based on net wealth concept N LE 1531752.32 NA NA 487.76 210.04 NA NA 404.78
Decile 9 based on net wealth concept N LE 2340654.74 NA NA 746.64 320.62 NA NA 583.44
Housing status - Owner/partial owner N LE 12832207.57 NA NA 711.59 307.15 NA NA NA
Housing status - Tenant/Free use N LE 1036438.07 NA NA 77.74 39.79 NA NA NA
Not applicable _Z _Z NA NA NA NA NA 70.69 NA NA
Not applicable N LE 13868645.64 442168.2 185108.2 442.17 204.47 NA NA NA
Quintile 1 based on net wealth concept N LE -7388.15 NA NA -1.18 -0.60 NA NA NA
Quintile 2 based on net wealth concept N LE 257680.65 NA NA 41.14 19.58 NA NA 10.11
Quintile 3 based on net wealth concept N LE 1170716.63 NA NA 186.73 86.30 NA NA 101.27
Quintile 4 based on net wealth concept N LE 2593603.58 NA NA 413.25 184.35 NA NA 281.93
Quintile 5 based on net wealth concept N LE 9854032.93 NA NA 1571.48 667.62 NA NA 583.44
Top 10% based on net wealth concept _Z _Z NA NA NA NA NA NA 54.18 NA
Top 5% based on net wealth concept _Z _Z NA NA NA NA NA NA 40.66 NA
Working status - Employee N LE 4329335.05 NA NA 305.29 115.77 NA NA NA
Working status - Retired N LE 5727186.52 NA NA 501.33 324.02 NA NA NA
Working status - Self-employed N LE 2623358.23 NA NA 1053.16 411.37 NA NA NA
Working status - Unemployed N LE 175072.49 NA NA 114.16 50.36 NA NA NA
Working status-Undefined and other N LE 1013693.34 NA NA 583.99 349.42 NA NA NA

NUN - Housing Wealth

Code
DWA %>%
  filter(TIME_PERIOD == "2023-Q2",
         REF_AREA == "FR",
         INSTR_ASSET == "NUN") %>%
  select_if(~ n_distinct(.) > 1) %>%
  left_join(DWA_GRP,  by = "DWA_GRP") %>%
  left_join(UNIT_MEASURE,  by = "UNIT_MEASURE") %>%
  select(-KEY, -DWA_GRP, -TITLE, -COMMENT_TS) %>%
  select(Dwa_grp, Unit_measure, OBS_VALUE, everything()) %>%
  select(-UNIT_MULT, -UNIT_MEASURE) %>%
  arrange(Dwa_grp, Unit_measure) %>%
  spread(Unit_measure, OBS_VALUE) %>%
  print_table_conditional
Dwa_grp Euro Euro; ratio to number of households Euro; ratio to total population
Bottom 50% based on net wealth concept 814166.9 51.89 25.18
Decile 10 based on net wealth concept 3574386.6 1139.92 479.17
Decile 6 based on net wealth concept 738004.8 235.89 110.68
Decile 7 based on net wealth concept 943088.1 300.75 139.17
Decile 8 based on net wealth concept 1270660.6 404.62 174.24
Decile 9 based on net wealth concept 1773024.2 565.58 242.87
Housing status - Owner/partial owner 8771990.7 486.44 209.96
Housing status - Tenant/Free use 341340.5 25.60 13.10
Not applicable 9113331.2 290.56 134.36
Quintile 1 based on net wealth concept 34982.8 5.57 2.85
Quintile 2 based on net wealth concept 277728.8 44.34 21.10
Quintile 3 based on net wealth concept 1239460.0 197.70 91.37
Quintile 4 based on net wealth concept 2213748.8 352.72 157.35
Quintile 5 based on net wealth concept 5347410.8 852.78 362.29
Working status - Employee 3899000.4 274.95 104.26
Working status - Retired 3639395.4 318.58 205.90
Working status - Self-employed 1309122.6 525.56 205.29
Working status - Unemployed 129574.1 84.49 37.27
Working status-Undefined and other 136238.7 78.49 46.96

F4B - Loans for house purchasing

Code
DWA %>%
  filter(TIME_PERIOD == "2023-Q2",
         REF_AREA == "FR",
         INSTR_ASSET == "F4B") %>%
  select_if(~ n_distinct(.) > 1) %>%
  left_join(DWA_GRP,  by = "DWA_GRP") %>%
  left_join(UNIT_MEASURE,  by = "UNIT_MEASURE") %>%
  select(-KEY, -DWA_GRP, -TITLE, -COMMENT_TS) %>%
  select(Dwa_grp, Unit_measure, OBS_VALUE, everything()) %>%
  select(-UNIT_MULT, -UNIT_MEASURE) %>%
  arrange(Dwa_grp, Unit_measure) %>%
  spread(Unit_measure, OBS_VALUE) %>%
  print_table_conditional
Dwa_grp Euro Euro; ratio to number of households Euro; ratio to total population
Bottom 50% based on net wealth concept -435137.16 -27.73 -13.46
Decile 10 based on net wealth concept -311688.77 -99.40 -41.78
Decile 6 based on net wealth concept -208077.48 -66.51 -31.21
Decile 7 based on net wealth concept -165873.94 -52.90 -24.48
Decile 8 based on net wealth concept -159075.40 -50.65 -21.81
Decile 9 based on net wealth concept -163977.19 -52.31 -22.46
Housing status - Owner/partial owner -1372975.05 -76.14 -32.86
Housing status - Tenant/Free use -70854.90 -5.31 -2.72
Not applicable -1443829.95 -46.03 -21.29
Quintile 1 based on net wealth concept -33074.72 -5.26 -2.70
Quintile 2 based on net wealth concept -194424.81 -31.04 -14.77
Quintile 3 based on net wealth concept -415715.12 -66.31 -30.64
Quintile 4 based on net wealth concept -324949.35 -51.78 -23.10
Quintile 5 based on net wealth concept -475665.96 -75.86 -32.23
Working status - Employee -1091235.37 -76.95 -29.18
Working status - Retired -58969.93 -5.16 -3.34
Working status - Self-employed -245611.86 -98.60 -38.51
Working status - Unemployed -16113.49 -10.51 -4.63
Working status-Undefined and other -31899.30 -18.38 -11.00

Deposits

Code
DWA %>%
  filter(TIME_PERIOD == "2023-Q2",
         REF_AREA == "FR",
         INSTR_ASSET == "F2M") %>%
  select_if(~ n_distinct(.) > 1) %>%
  left_join(DWA_GRP,  by = "DWA_GRP") %>%
  left_join(UNIT_MEASURE,  by = "UNIT_MEASURE") %>%
  select(-KEY, -DWA_GRP, -TITLE, -COMMENT_TS) %>%
  select(Dwa_grp, Unit_measure, OBS_VALUE, everything()) %>%
  select(-UNIT_MULT, -UNIT_MEASURE) %>%
  arrange(Dwa_grp, Unit_measure) %>%
  spread(Unit_measure, OBS_VALUE) %>%
  print_table_conditional
Dwa_grp Euro Euro; ratio to number of households Euro; ratio to total population
Bottom 50% based on net wealth concept 322202.82 20.54 9.97
Decile 10 based on net wealth concept 638551.66 203.64 85.60
Decile 6 based on net wealth concept 130974.17 41.86 19.64
Decile 7 based on net wealth concept 168884.59 53.86 24.92
Decile 8 based on net wealth concept 252121.08 80.28 34.57
Decile 9 based on net wealth concept 334968.67 106.85 45.88
Housing status - Owner/partial owner 1434598.10 79.55 34.34
Housing status - Tenant/Free use 413104.90 30.99 15.86
Not applicable 1847703.00 58.91 27.24
Quintile 1 based on net wealth concept 28490.53 4.53 2.32
Quintile 2 based on net wealth concept 165600.67 26.44 12.58
Quintile 3 based on net wealth concept 259085.81 41.32 19.10
Quintile 4 based on net wealth concept 421005.67 67.08 29.92
Quintile 5 based on net wealth concept 973520.33 155.25 65.96
Working status - Employee 726082.93 51.20 19.42
Working status - Retired 764008.16 66.88 43.22
Working status - Self-employed 241639.43 97.01 37.89
Working status - Unemployed 39812.22 25.96 11.45
Working status-Undefined and other 76160.27 43.88 26.25

F3 - Debt Securities

Code
DWA %>%
  filter(TIME_PERIOD == "2023-Q2",
         REF_AREA == "FR",
         INSTR_ASSET == "F3") %>%
  select_if(~ n_distinct(.) > 1) %>%
  left_join(DWA_GRP,  by = "DWA_GRP") %>%
  left_join(UNIT_MEASURE,  by = "UNIT_MEASURE") %>%
  select(-KEY, -DWA_GRP, -TITLE, -COMMENT_TS) %>%
  select(Dwa_grp, Unit_measure, OBS_VALUE, everything()) %>%
  select(-UNIT_MULT, -UNIT_MEASURE) %>%
  arrange(Dwa_grp, Unit_measure) %>%
  spread(Unit_measure, OBS_VALUE) %>%
  print_table_conditional
Dwa_grp Euro Euro; ratio to number of households Euro; ratio to total population
Bottom 50% based on net wealth concept 32.60 0.00 0.00
Decile 10 based on net wealth concept 37287.55 11.89 5.00
Decile 6 based on net wealth concept 5.62 0.00 0.00
Decile 7 based on net wealth concept 0.29 0.00 0.00
Decile 8 based on net wealth concept 292.45 0.09 0.04
Decile 9 based on net wealth concept 780.49 0.25 0.11
Housing status - Owner/partial owner 38341.66 2.13 0.92
Housing status - Tenant/Free use 57.34 0.00 0.00
Not applicable 38399.00 1.22 0.57
Quintile 1 based on net wealth concept 0.00 0.00 0.00
Quintile 2 based on net wealth concept 26.67 0.00 0.00
Quintile 3 based on net wealth concept 11.55 0.00 0.00
Quintile 4 based on net wealth concept 292.74 0.05 0.02
Quintile 5 based on net wealth concept 38068.04 6.07 2.58
Working status - Employee 1658.05 0.12 0.04
Working status - Retired 10243.72 0.90 0.58
Working status - Self-employed 1002.07 0.40 0.16
Working status - Unemployed 9.01 0.01 0.00
Working status-Undefined and other 25486.16 14.68 8.79

F511 - Listed Shares

Code
DWA %>%
  filter(TIME_PERIOD == "2023-Q2",
         REF_AREA == "FR",
         INSTR_ASSET == "F511") %>%
  select_if(~ n_distinct(.) > 1) %>%
  left_join(DWA_GRP,  by = "DWA_GRP") %>%
  left_join(UNIT_MEASURE,  by = "UNIT_MEASURE") %>%
  select(-KEY, -DWA_GRP, -TITLE, -COMMENT_TS) %>%
  select(Dwa_grp, Unit_measure, OBS_VALUE, everything()) %>%
  select(-UNIT_MULT, -UNIT_MEASURE) %>%
  arrange(Dwa_grp, Unit_measure) %>%
  spread(Unit_measure, OBS_VALUE) %>%
  print_table_conditional
Dwa_grp Euro Euro; ratio to number of households Euro; ratio to total population
Bottom 50% based on net wealth concept 4722.07 0.30 0.15
Decile 10 based on net wealth concept 280025.07 89.30 37.54
Decile 6 based on net wealth concept 2843.81 0.91 0.43
Decile 7 based on net wealth concept 4654.32 1.48 0.69
Decile 8 based on net wealth concept 6497.71 2.07 0.89
Decile 9 based on net wealth concept 25353.02 8.09 3.47
Housing status - Owner/partial owner 308048.06 17.08 7.37
Housing status - Tenant/Free use 16047.94 1.20 0.62
Not applicable 324096.00 10.33 4.78
Quintile 1 based on net wealth concept 186.78 0.03 0.02
Quintile 2 based on net wealth concept 1503.15 0.24 0.11
Quintile 3 based on net wealth concept 5875.95 0.94 0.43
Quintile 4 based on net wealth concept 11152.03 1.78 0.79
Quintile 5 based on net wealth concept 305378.09 48.70 20.69
Working status - Employee 66567.98 4.69 1.78
Working status - Retired 118543.17 10.38 6.71
Working status - Self-employed 24820.57 9.96 3.89
Working status - Unemployed 1020.46 0.67 0.29
Working status-Undefined and other 113143.82 65.18 39.00