Accrued-to-date pension entitlements in social insurance - nasa_10_pens1

Data - Eurostat

Info

Last observation: Annual: 2024 (N = 313)

First observation: Annual: 2012 (N = 1,409)

Last data update: 23 jul 2026, 23:07. Last compile: 24 jul 2026, 03:06

Structure

D62_P, S1P

Code
nasa_10_pens1 %>%
  filter(geo %in% c("FR", "DE", "IT"),
         # D62_P: Social insurance pension benefits
         na_item == "D62_P",
         # S1P: Pension schemes (core and not core accounts)
         penscheme == "S1P",
         unit == "MIO_EUR") %>%
  year_to_date %>%
  ggplot + geom_line(aes(x = date, y = values/1000, color = geo)) +
  scale_color_manual(values = viridis(4)[1:3]) +
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("") +
  scale_y_log10(breaks = seq(0, 1000, 100),
                labels = dollar_format(suffix = " Bn€", prefix = "", accuracy = 1))

Pension Entitlements (Stock)

France, Germany, Italy, Spain

Code
nasa_10_pens1 %>%
  filter(geo %in% c("FR", "DE", "IT", "ES"),
         # F63_LE: Pension entitlements in closing balance sheet
         na_item == "F63_LE",
         penscheme == "S1P",
         unit == "PC_GDP") %>%
  year_to_date %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/100) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  geom_point(aes(x = date, y = values, color = color)) +
  theme_minimal() + scale_color_identity() + add_4flags +
  scale_x_date(breaks = as.Date(paste0(seq(2010, 2100, 3), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Pension entitlements, % of GDP") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1))

France: Contributions vs. Benefits

Code
nasa_10_pens1 %>%
  filter(geo == "FR",
         # D61_P: Net pension contributions; D62_P: Social insurance pension benefits
         na_item %in% c("D61_P", "D62_P"),
         penscheme == "S1P",
         unit == "MIO_EUR") %>%
  year_to_date %>%
  mutate(values = values/1000) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Na_item)) +
  geom_point(aes(x = date, y = values, color = Na_item)) +
  theme_minimal() +
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank()) +
  scale_x_date(breaks = as.Date(paste0(seq(2010, 2100, 3), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Bn€")

Latest Year by Country

Code
latest_y <- nasa_10_pens1 %>%
  filter(na_item == "F63_LE", penscheme == "S1P", unit == "PC_GDP", !is.na(values)) %>%
  summarise(m = max(time)) %>%
  pull(m)

nasa_10_pens1 %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL", "SE", "FI", "CZ"),
         na_item == "F63_LE",
         penscheme == "S1P",
         unit == "PC_GDP",
         time == latest_y) %>%
  select(Geo, values) %>%
  arrange(-values) %>%
  print_table_conditional()
Geo values
Czechia 280