International investment position - quarterly data - ei_bpm6iip_q

Data - Eurostat

Info

Last observation: Quarterly: 2026Q1 (N = 728)

First observation: Quarterly: 1992Q4 (N = 5)

Last data update: 11 aoû 2026, 20:13. Last compile: 11 aoû 2026, 23:35

Structure

France, Germany, Spain, Italy

Net International Investment Position (% of GDP)

Code
ei_bpm6iip_q |>
  filter(geo %in% c("FR", "DE", "ES", "IT"),
         bop_item == "FA",
         stk_flow == "N_LE",
         unit == "PC_GDP",
         partner == "WRL_REST") |>
  quarter_to_date() |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values/100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal() + scale_color_identity() + add_flags +
  scale_x_date(breaks = as.Date(paste0(seq(1990, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Net international investment position (% of GDP)") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

France: Financial Account by Instrument (% of GDP)

Code
ei_bpm6iip_q |>
  filter(geo == "FR",
         stk_flow == "N_LE",
         unit == "PC_GDP",
         partner == "WRL_REST",
         bop_item %in% c("FA__D__F", "FA__P__F", "FA__O__F")) |>
  quarter_to_date() |>
  mutate(values = values/100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = Bop_item)) +
  theme_minimal() +
  theme(legend.position = c(0.3, 0.8),
        legend.title = element_blank()) +
  scale_x_date(breaks = as.Date(paste0(seq(1990, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Net position (% of GDP)") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

Latest Quarter, Net IIP by Country

Code
latest_q <- ei_bpm6iip_q |>
  filter(bop_item == "FA",
         stk_flow == "N_LE",
         unit == "PC_GDP",
         partner == "WRL_REST",
         nchar(geo) == 2,
         !is.na(values)) |>
  summarise(m = max(time)) |>
  pull(m)

ei_bpm6iip_q |>
  filter(bop_item == "FA",
         stk_flow == "N_LE",
         unit == "PC_GDP",
         partner == "WRL_REST",
         nchar(geo) == 2,
         time == latest_q) |>
  mutate(values = round(values, 1)) |>
  select(Geo, values) |>
  arrange(-values) |>
  print_table_conditional()