Balance of payments by country - annual data (BPM6)

Data - Eurostat

Info

source dataset .html .RData
eurostat bop_c6_a 2025-02-01 2025-05-18

DOWNLOAD_TIME

Code
tibble(DOWNLOAD_TIME = as.Date(file.info("~/iCloud/website/data/eurostat/bop_c6_a.RData")$mtime)) %>%
  print_table_conditional()
DOWNLOAD_TIME
2025-05-18

Last

Code
bop_c6_a %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(1) %>%
  print_table_conditional()
time Nobs
2024 671652

bop_item

Code
bop_c6_a %>%
  left_join(bop_item, by = "bop_item") %>%
  group_by(bop_item, Bop_item) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()

sector10

Code
bop_c6_a %>%
  left_join(sector10, by = "sector10") %>%
  group_by(sector10, Sector10) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
sector10 Sector10 Nobs
S1 Total economy 8986589
S13 General Government 2074854
S1P Other sectors than MFIs and general government 1334933
S123 Money market funds 1143761
S121 Central Bank 1142024
S122 Deposit-taking corporations except the central bank 1106975
S12T Monetary Financial Institutions (MFI) other than central bank 1097631
S12M Financial corporations other than MFIs 1036071
S1V Non-financial corporations, households and non-profit institutions serving households 1033825
S1W Other sectors than General Government 973261
S1Z Sectors other than deposit-taking corporations and general government 21218
S12R Other financial corporations 17308
S1X Monetary authorities 15918

sectpart

Code
bop_c6_a %>%
  left_join(sectpart, by = "sectpart") %>%
  group_by(sectpart, Sectpart) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
sectpart Sectpart Nobs
S1 Total economy 19224816
S12M Financial corporations other than MFIs 104186
S123 Money market funds 101550
S12T Monetary Financial Institutions (MFI) other than central bank 88514
S1P Other sectors than MFIs and general government 87970
S121 Central Bank 84954
S122 Deposit-taking corporations except the central bank 83797
S13 General Government 81116
S1V Non-financial corporations, households and non-profit institutions serving households 79548
S1N Not sectorised 45010
S12K Monetary financial institutions (MFI) 2847
S1Z Sectors other than deposit-taking corporations and general government 60

stk_flow

Code
bop_c6_a %>%
  left_join(stk_flow, by = "stk_flow") %>%
  group_by(stk_flow, Stk_flow) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
stk_flow Stk_flow Nobs
ASS Assets 4357817
CRE Credit 4029299
DEB Debit 2943170
NET Net 2924464
BAL Balance 2901311
LIAB Liabilities 2825899
NI Net FDI inward 604
NO Net FDI outward 604
II Net income on inward FDI 600
IO Net income on outward FDI 600

partner

Code
bop_c6_a %>%
  left_join(partner, by = "partner") %>%
  group_by(partner, Partner) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()

geo

Code
bop_c6_a %>%
  left_join(geo, by = "geo") %>%
  group_by(geo, Geo) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

time

Code
bop_c6_a %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  print_table_conditional()

Denmark

Goods and Services

Code
bop_c6_a %>%
  filter(geo == "DK",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST"),
         bop_item %in% c("GS")) %>%
  left_join(partner, by = "partner") %>%
  left_join(B1GQ, by = c("geo", "time")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  year_to_date %>%
  ggplot + geom_line(aes(x = date, y = values, color = Partner)) +
 
  theme_minimal()  + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

Netherlands

Goods and Services

Code
bop_c6_a %>%
  filter(geo == "NL",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST"),
         bop_item %in% c("GS")) %>%
  left_join(partner, by = "partner") %>%
  left_join(B1GQ, by = c("geo", "time")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  year_to_date %>%
  ggplot + geom_line(aes(x = date, y = values, color = Partner)) +
 
  theme_minimal()  + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

France

Goods and Services

Code
bop_c6_a %>%
  filter(geo == "FR",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST"),
         bop_item %in% c("GS")) %>%
  left_join(partner, by = "partner") %>%
  left_join(B1GQ, by = c("geo", "time")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  year_to_date %>%
  ggplot + geom_line(aes(x = date, y = values, color = Partner)) +
 
  theme_minimal()  + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

WRL_REST

Code
bop_c6_a %>%
  filter(geo == "FR",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("WRL_REST"),
         bop_item %in% c("CA", "GS", "G")) %>%
  left_join(bop_item, by = "bop_item") %>%
  left_join(B1GQ, by = c("geo", "time")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  year_to_date %>%
  ggplot + geom_line(aes(x = date, y = values, color = Bop_item)) +
 
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

EA19

Code
bop_c6_a %>%
  filter(geo == "FR",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EA19"),
         bop_item %in% c("CA", "GS", "G")) %>%
  left_join(bop_item, by = "bop_item") %>%
  left_join(B1GQ, by = c("geo", "time")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  year_to_date %>%
  ggplot + geom_line(aes(x = date, y = values, color = Bop_item)) +
 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 0.5),
                labels = percent_format(a = .1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

EXT_EA19

Code
bop_c6_a %>%
  filter(geo == "FR",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EXT_EA19"),
         bop_item %in% c("CA", "GS", "G")) %>%
  left_join(bop_item, by = "bop_item") %>%
  left_join(B1GQ, by = c("geo", "time")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  year_to_date %>%
  ggplot + geom_line(aes(x = date, y = values, color = Bop_item)) +
 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, .5),
                labels = percent_format(a = .1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

Germany

Goods and Services

Code
bop_c6_a %>%
  filter(geo == "DE",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST"),
         bop_item %in% c("GS")) %>%
  left_join(partner, by = "partner") %>%
  left_join(B1GQ, by = c("geo", "time")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  year_to_date %>%
  ggplot + geom_line(aes(x = date, y = values, color = Partner)) +
 
  theme_minimal()  + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

WRL_REST

Code
bop_c6_a %>%
  filter(geo == "DE",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("WRL_REST"),
         bop_item %in% c("CA", "GS", "G")) %>%
  left_join(bop_item, by = "bop_item") %>%
  left_join(B1GQ, by = c("geo", "time")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  year_to_date %>%
  ggplot + geom_line(aes(x = date, y = values, color = Bop_item)) +
 
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 2),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

EA19

Code
bop_c6_a %>%
  filter(geo == "DE",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EA19"),
         bop_item %in% c("CA", "GS", "G")) %>%
  left_join(bop_item, by = "bop_item") %>%
  left_join(B1GQ, by = c("geo", "time")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  year_to_date %>%
  ggplot + geom_line(aes(x = date, y = values, color = Bop_item)) +
 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

EXT_EA19

Code
bop_c6_a %>%
  filter(geo == "DE",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EXT_EA19"),
         bop_item %in% c("CA", "GS", "G")) %>%
  left_join(bop_item, by = "bop_item") %>%
  left_join(B1GQ, by = c("geo", "time")) %>%
  mutate(values = values / B1GQ) %>%
  select(-B1GQ) %>%
  year_to_date %>%
  ggplot + geom_line(aes(x = date, y = values, color = Bop_item)) +
 
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")