Distributional Wealth Accounts

Data - ECB

Info

source dataset .html .RData
ecb DWA 2025-08-28 2024-04-02

Data on saving

source dataset .html .RData
bdf CFT 2025-08-28 2025-03-09
bea T50100 2025-08-25 2025-02-12
fred saving 2025-08-28 2025-08-28
oecd NAAG 2024-04-16 2025-05-12
wdi NY.GDS.TOTL.ZS 2022-09-27 2025-08-24
wdi NY.GNS.ICTR.ZS 2022-09-27 2025-08-24

LAST_COMPILE

LAST_COMPILE
2025-08-29

Last

Code
DWA %>%
  group_by(TIME_PERIOD) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(TIME_PERIOD)) %>%
  head(2) %>%
  print_table_conditional()
TIME_PERIOD Nobs
2023-Q3 10810
2023-Q2 11373

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) 82068
NWA Adjusted wealth (net) 47082
F2M Deposits 41034
F3 Debt securities 41034
F4B Loans for house purchasing 41034
F4X Loans other than for house purchasing 41034
F62 Life insurance and annuity entitlements 41034
NUN Housing wealth (net) 41034
F511 Listed shares 40224
F51M Unlisted shares and other equity 40224
F52 Investment fund shares/units 40224
NUB Non-financial business wealth 40224
ADA Adjusted debt to asset ratio 11088

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 32654
GR Greece 32091
FI Finland 31528
FR France 31528
BE Belgium 29839
CY Cyprus 29839
SK Slovakia 29839
IT Italy 29276
SI Slovenia 29276
AT Austria 28713
DE Germany 28713
LU Luxembourg 27248
MT Malta 27248
ES Spain 27024
IE Ireland 23646
PT Portugal 22950
EE Estonia 22008
HU Hungary 20831
LT Lithuania 15764
LV Latvia 14075
NL Netherlands 13248

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 43344
B50 Bottom 50% based on net wealth concept 40320
D10 Decile 10 based on net wealth concept 40320
D6 Decile 6 based on net wealth concept 40320
D7 Decile 7 based on net wealth concept 40320
D8 Decile 8 based on net wealth concept 40320
D9 Decile 9 based on net wealth concept 40320
WSE Working status - Employee 37260
WSR Working status - Retired 37260
WSS Working status - Self-employed 37260
WSX Working status-Undefined and other 37260
HSO Housing status - Owner/partial owner 37206
HST Housing status - Tenant/Free use 37206
WSU Working status - Unemployed 31566
D1 Decile 1 based on net wealth concept 1008
D2 Decile 2 based on net wealth concept 1008
D3 Decile 3 based on net wealth concept 1008
D4 Decile 4 based on net wealth concept 1008
D5 Decile 5 based on net wealth concept 1008
T10 Top 10% based on net wealth concept 1008
T5 Top 5% based on net wealth concept 1008

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 532218
_Z Not applicable 15120

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) 366066
L Liabilities (Net Incurrence of) 123102
N Net (Assets minus Liabilities) 43050
_Z Not applicable 15120

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 176734
EUR_R_NH Euro; ratio to number of households 176734
EUR_R_POP Euro; ratio to total population 176734
PT Percent 14112
EUR_MD Euro; median 1008
EUR_MN Euro; mean 1008
GI GINI coefficient 1008

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
Bottom 50% based on net wealth concept _Z _Z NA NA NA NA NA NA 5.05
Bottom 50% based on net wealth concept N LE 708364.3 NA NA 44.98 21.87 NA NA
Decile 10 based on net wealth concept N LE 7621832.8 NA NA 2421.40 1019.96 NA NA
Decile 6 based on net wealth concept N LE 733098.5 NA NA 231.88 107.67 NA NA
Decile 7 based on net wealth concept N LE 1078919.7 NA NA 342.12 158.53 NA NA
Decile 8 based on net wealth concept N LE 1549989.2 NA NA 491.51 211.65 NA NA
Decile 9 based on net wealth concept N LE 2380999.1 NA NA 755.07 323.60 NA NA
Housing status - Owner/partial owner N LE 13012213.0 NA NA 718.10 309.96 NA NA
Housing status - Tenant/Free use N LE 1060990.7 NA NA 79.20 40.54 NA NA
Not applicable _Z _Z NA NA NA NA NA 70.68 NA
Not applicable N LE 14073203.7 446533.2 186328.7 446.53 206.49 NA NA
Top 10% based on net wealth concept _Z _Z NA NA NA NA NA NA 54.19
Top 5% based on net wealth concept _Z _Z NA NA NA NA NA NA 40.61
Working status - Employee N LE 4399155.0 NA NA 308.73 117.07 NA NA
Working status - Retired N LE 5870365.7 NA NA 511.40 330.52 NA NA
Working status - Self-employed N LE 2615134.6 NA NA 1044.81 408.11 NA NA
Working status - Unemployed N LE 177898.0 NA NA 115.44 50.92 NA NA
Working status-Undefined and other N LE 1010650.4 NA NA 579.44 346.70 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 817405.3 51.91 25.24
Decile 10 based on net wealth concept 3592709.0 1141.38 480.78
Decile 6 based on net wealth concept 746327.7 236.06 109.62
Decile 7 based on net wealth concept 957183.3 303.52 140.64
Decile 8 based on net wealth concept 1275657.0 404.52 174.19
Decile 9 based on net wealth concept 1783507.2 565.59 242.40
Housing status - Owner/partial owner 8829242.8 487.26 210.32
Housing status - Tenant/Free use 343546.9 25.64 13.13
Not applicable 9172789.7 291.05 134.59
Working status - Employee 3924202.9 275.40 104.43
Working status - Retired 3662919.8 319.10 206.24
Working status - Self-employed 1317584.5 526.41 205.62
Working status - Unemployed 130411.6 84.63 37.33
Working status-Undefined and other 137670.9 78.93 47.23

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 -434030.36 -27.56 -13.40
Decile 10 based on net wealth concept -306642.41 -97.42 -41.03
Decile 6 based on net wealth concept -210873.02 -66.70 -30.97
Decile 7 based on net wealth concept -163434.17 -51.82 -24.01
Decile 8 based on net wealth concept -158721.90 -50.33 -21.67
Decile 9 based on net wealth concept -167167.01 -53.01 -22.72
Housing status - Owner/partial owner -1370316.42 -75.62 -32.64
Housing status - Tenant/Free use -70552.44 -5.27 -2.70
Not applicable -1440868.86 -45.72 -21.14
Working status - Employee -1088590.87 -76.40 -28.97
Working status - Retired -58834.09 -5.13 -3.31
Working status - Self-employed -245041.13 -97.90 -38.24
Working status - Unemployed -16076.37 -10.43 -4.60
Working status-Undefined and other -32326.40 -18.53 -11.09

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 322176.39 20.46 9.95
Decile 10 based on net wealth concept 639225.40 203.08 85.54
Decile 6 based on net wealth concept 132603.58 41.94 19.48
Decile 7 based on net wealth concept 170841.46 54.17 25.10
Decile 8 based on net wealth concept 249584.91 79.14 34.08
Decile 9 based on net wealth concept 336605.26 106.75 45.75
Housing status - Owner/partial owner 1437152.29 79.31 34.23
Housing status - Tenant/Free use 413884.71 30.90 15.81
Not applicable 1851037.00 58.73 27.16
Working status - Employee 727453.54 51.05 19.36
Working status - Retired 765450.36 66.68 43.10
Working status - Self-employed 242095.57 96.72 37.78
Working status - Unemployed 39887.37 25.88 11.42
Working status-Undefined and other 76150.16 43.66 26.12

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 30.95 0.00 0.00
Decile 10 based on net wealth concept 35592.03 11.31 4.76
Decile 6 based on net wealth concept 1.36 0.00 0.00
Decile 7 based on net wealth concept 4.26 0.00 0.00
Decile 8 based on net wealth concept 277.59 0.09 0.04
Decile 9 based on net wealth concept 741.81 0.24 0.10
Housing status - Owner/partial owner 36593.56 2.02 0.87
Housing status - Tenant/Free use 54.44 0.00 0.00
Not applicable 36648.00 1.16 0.54
Working status - Employee 1574.11 0.11 0.04
Working status - Retired 9725.14 0.85 0.55
Working status - Self-employed 951.34 0.38 0.15
Working status - Unemployed 8.55 0.01 0.00
Working status-Undefined and other 24388.86 13.98 8.37

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 4005.03 0.25 0.12
Decile 10 based on net wealth concept 317924.06 101.00 42.54
Decile 6 based on net wealth concept 4525.21 1.43 0.66
Decile 7 based on net wealth concept 5270.30 1.67 0.77
Decile 8 based on net wealth concept 7279.41 2.31 0.99
Decile 9 based on net wealth concept 28916.99 9.17 3.93
Housing status - Owner/partial owner 349672.11 19.30 8.33
Housing status - Tenant/Free use 18248.89 1.36 0.70
Not applicable 367921.00 11.67 5.40
Working status - Employee 75697.68 5.31 2.01
Working status - Retired 134801.19 11.74 7.59
Working status - Self-employed 28224.68 11.28 4.40
Working status - Unemployed 1160.41 0.75 0.33
Working status-Undefined and other 128037.04 73.41 43.92