Current account - quarterly data - ei_bpm6ca_q

Data - Eurostat

Info

Last observation: Quarterly: 2026Q1 (N = 3,223)

First observation: Quarterly: 1991Q1 (N = 86)

Last data update: 11 aoû 2026, 21:15. Last compile: 11 aoû 2026, 23:34

Structure

Current Account Balance (% of GDP)

France, Germany, Italy, Spain

Code
ei_bpm6ca_q |>
  filter(geo %in% c("FR", "DE", "IT", "ES"),
         bop_item == "CA",
         stk_flow == "BAL",
         partner == "WRL_REST",
         unit == "PC_GDP") |>
  quarter_to_date() |>

  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values/100) |>
  mutate(color = ifelse(geo == "DE", color2, color)) |>
  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, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Current account balance (% of GDP)") +
  scale_y_continuous(breaks = 0.01*seq(-20, 20, 2),
                     labels = scales::percent_format(accuracy = 1)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

France: Goods, Services, Primary and Secondary Income

Code
ei_bpm6ca_q |>
  filter(geo == "FR",
         bop_item %in% c("GS", "IN1", "IN2"),
         stk_flow == "BAL",
         partner == "WRL_REST",
         unit == "PC_GDP") |>
  quarter_to_date() |>
  mutate(values = values/100) |>
  ggplot() + geom_line(aes(x = date, y = values, color = Bop_item)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1990, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.15),
        legend.title = element_blank()) +
  xlab("") + ylab("Balance vs. Rest of World (% of GDP)") +
  scale_y_continuous(breaks = 0.01*seq(-20, 20, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

Net Exports

Table

Code
ei_bpm6ca_q |>
  filter(partner %in% c("WRL_REST"),
         bop_item == "CA",
         stk_flow == "BAL",
         time %in% c("1991Q3", "2001Q3", "2011Q3", "2021Q3")) %>%
  select_if(~ n_distinct(.) > 1) |>
  mutate(values = round(values, 1)) |>
  
  spread(time, values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}