Current Account, Net, US Dollars - BCA_BP6_USD

Data - IMF - BOP

FREQ

Code
BCA_BP6_USD %>%
  group_by(FREQ) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
FREQ Nobs
Q 18156
A 7729

REF_AREA

Code
BCA_BP6_USD %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  group_by(REF_AREA, Ref_area) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Ref_area))),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

TIME_PERIOD

Code
BCA_BP6_USD %>%
  group_by(TIME_PERIOD) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(TIME_PERIOD)) %>%
  print_table_conditional()

France Example

Annual

Code
BCA_BP6_USD %>%
  bind_rows(BF_BP6_USD) %>%
  bind_rows(BK_BP6_USD) %>%
  filter(FREQ == "A",
         REF_AREA %in% c("FR")) %>%
  year_to_date2 %>%
  select(INDICATOR, date, OBS_VALUE) %>%
  ggplot(.) + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/1000, color = INDICATOR)) + 
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.8)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-20000, 400000, 10),
                     labels = dollar_format(accuracy = 1, suffix = " Bn", prefix = "$ ")) + 
  xlab("") + ylab("Net Current Account")

Quarterly

Code
BCA_BP6_USD %>%
  bind_rows(BF_BP6_USD) %>%
  bind_rows(BK_BP6_USD) %>%
  filter(FREQ == "Q",
         REF_AREA %in% c("FR")) %>%
  quarter_to_date2 %>%
  select(INDICATOR, date, OBS_VALUE) %>%
  ggplot(.) + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/1000, color = INDICATOR)) + 
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.8)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-20000, 400000, 10),
                     labels = dollar_format(accuracy = 1, suffix = " Bn", prefix = "$ ")) + 
  xlab("") + ylab("Net Current Account")

Current Accounts

Largest CA Deficits

Code
BCA_BP6_USD %>%
  filter(FREQ == "A",
         TIME_PERIOD %in% c("2018", "2019", "2020")) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  select(REF_AREA, Ref_area, TIME_PERIOD, OBS_VALUE) %>%
  spread(TIME_PERIOD, OBS_VALUE) %>%
  filter(abs(`2018`) > 10000, `2018` < 0) %>%
  arrange(`2018`) %>%
  mutate_at(vars(-1, -2), funs(round(./1000))) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Ref_area))),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Largest CA Surpluses

Javascript

Code
BCA_BP6_USD %>%
  filter(FREQ == "A",
         TIME_PERIOD %in% c("2018", "2019", "2020")) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  select(REF_AREA, Ref_area, TIME_PERIOD, OBS_VALUE) %>%
  spread(TIME_PERIOD, OBS_VALUE) %>%
  filter(abs(`2018`) > 10000, `2018` > 0) %>%
  arrange(-`2018`) %>%
  mutate_at(vars(-1, -2), funs(round(./1000))) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Ref_area))),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Germany, Europe, China

All

Code
BCA_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("DE", "U2", "CN")) %>%
  year_to_date2 %>%
  select(date, OBS_VALUE, REF_AREA) %>%
  left_join(NY.GDP.MKTP.CD %>% 
              filter(iso2c == "1W") %>%
              mutate(date = as.Date(paste0(year, "-01-01"))) %>%
              select(date, value), 
            by = c("date")) %>%
  mutate(value = (10^6)*OBS_VALUE/value) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  mutate(Ref_area = ifelse(REF_AREA == "U2", "Europe", Ref_area)) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme_minimal() + 
  scale_color_manual(values = c("#DE2910", "#003399", "#000000")) +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.9)) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-60, 60, 0.1),
                     labels = scales::percent_format(accuracy = .1)) +
  xlab("") + ylab("Current Account (% of World GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

1990-

Code
BCA_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("DE", "U2", "CN")) %>%
  year_to_date2 %>%
  select(date, OBS_VALUE, REF_AREA) %>%
  left_join(NY.GDP.MKTP.CD %>% 
              filter(iso2c == "1W") %>%
              mutate(date = as.Date(paste0(year, "-01-01"))) %>%
              select(date, value), 
            by = c("date")) %>%
  mutate(value = (10^6)*OBS_VALUE/value) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(date >= as.Date("1990-01-01")) %>%
  mutate(Ref_area = ifelse(REF_AREA == "U2", "Europe", Ref_area)) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme_minimal() + 
  scale_color_manual(values = c("#DE2910", "#003399", "#000000")) +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.9)) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-60, 60, 0.1),
                     labels = scales::percent_format(accuracy = .1)) +
  xlab("") + ylab("Current Account (% of World GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

All CA

Code
BCA_BP6_USD %>%
  filter(FREQ == "A",
         TIME_PERIOD == "2019") %>%
  select(OBS_VALUE, REF_AREA) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  select(REF_AREA, Ref_area, OBS_VALUE) %>%
  arrange(OBS_VALUE) %>%
  mutate(OBS_VALUE = round(OBS_VALUE/1000)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Ref_area))),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Balance of Payments (Bn$)

Austria, Netherlands, Denmark, Sweden

$

Code
BCA_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("SE", "AT", "NL","DK")) %>%
  year_to_date2 %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = OBS_VALUE/1000, color = Ref_area)) + 
  theme_minimal() + scale_color_manual(values = viridis(5)[1:4]) +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.8)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-20000, 400000, 10),
                     labels = dollar_format(accuracy = 1, suffix = " Bn", prefix = "$ ")) + 
  xlab("") + ylab("Current Account") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

Lebanon, France, Italy

$

Code
BCA_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("LB", "FR", "IT")) %>%
  year_to_date2 %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/1000, color = Ref_area)) + 
  scale_color_manual(values = c("#003399", "#000000", "#ED1C24")) +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.8)) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = OBS_VALUE/1000, image = image), asp = 1.5) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-20000, 400000, 10),
                     labels = dollar_format(accuracy = 1, suffix = " Bn", prefix = "$ ")) +
  xlab("") + ylab("Net Current Account") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

France, Germany, Italy

$

Code
BCA_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("DE", "FR", "IT")) %>%
  year_to_date2 %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE/1000, color = Ref_area)) + 
  scale_color_manual(values = c("#003399", "#000000", "#009246")) +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.8)) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = OBS_VALUE/1000, image = image), asp = 1.5) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-20000, 400000, 50),
                     labels = dollar_format(accuracy = 1, suffix = " Bn", prefix = "$ ")) + 
  xlab("") + ylab("Net Current Account")

% of GDP

Code
BCA_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("DE", "FR", "IT")) %>%
  year_to_date2 %>%
  select(date, OBS_VALUE, REF_AREA) %>%
  left_join(NY.GDP.MKTP.CD %>% 
              mutate(date = as.Date(paste0(year, "-01-01"))) %>%
              select(REF_AREA = iso2c, date, value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/value) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme_minimal() + 
  scale_color_manual(values = c("#003399", "#000000", "#009246")) +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.9)) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-60, 60, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Current Account (% of GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

% of World GDP

Code
BCA_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("DE", "FR", "IT")) %>%
  year_to_date2 %>%
  select(date, OBS_VALUE, REF_AREA) %>%
  left_join(NY.GDP.MKTP.CD %>% 
              filter(iso2c == "1W") %>%
              mutate(date = as.Date(paste0(year, "-01-01"))) %>%
              select(date, value), 
            by = c("date")) %>%
  mutate(value = (10^6)*OBS_VALUE/value) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme_minimal() + 
  scale_color_manual(values = c("#003399", "#000000", "#009246")) +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.9)) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-60, 60, 0.1),
                     labels = scales::percent_format(accuracy = .1)) +
  xlab("") + ylab("Current Account (% of World GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

Saudi Arabia, Norway

$

Code
BCA_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("NO", "SA", "VE")) %>%
  year_to_date2 %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  mutate(Ref_area = ifelse(REF_AREA == "VE", "Venezuela", Ref_area)) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = OBS_VALUE/1000, color = Ref_area)) + 
  theme_minimal() +
  scale_color_manual(values = c("#EF2B2D", "#006C35", "#00247D")) +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.8)) +
  geom_image(data = . %>%
               filter(date == as.Date("2012-01-01")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = OBS_VALUE/1000, image = image), asp = 1.5) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-20000, 400000, 50),
                     labels = dollar_format(accuracy = 1, suffix = " Bn", prefix = "$ ")) + 
  xlab("") + ylab("Net Current Account") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

% of GDP

Code
BCA_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("NO", "SA", "VE")) %>%
  year_to_date2 %>%
  select(date, OBS_VALUE, REF_AREA) %>%
  left_join(NY.GDP.MKTP.CD %>% 
              mutate(date = as.Date(paste0(year, "-01-01"))) %>%
              select(REF_AREA = iso2c, date, value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/value) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  mutate(Ref_area = ifelse(REF_AREA == "VE", "Venezuela", Ref_area)) %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme_minimal() +
  scale_color_manual(values = c("#EF2B2D", "#006C35", "#00247D")) +
  theme(legend.title = element_blank(),
        legend.position = c(0.8, 0.9)) +
  geom_image(data = . %>%
               filter(date == as.Date("2012-01-01")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-60, 60, 5),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Current Account (% of GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

Netherlands, Greece, Spain

$

Code
BCA_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("NL", "ES", "GR")) %>%
  year_to_date2 %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = OBS_VALUE/1000, color = Ref_area)) + 
  theme_minimal() + 
  scale_color_manual(values = c("#0D5EAF", "#AE1C28", "#FFC400")) +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.8)) +
  geom_image(data = . %>%
               filter(date == as.Date("2020-01-01")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = OBS_VALUE/1000, image = image), asp = 1.5) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-20000, 400000, 50),
                     labels = dollar_format(accuracy = 1, suffix = " Bn", prefix = "$ ")) + 
  xlab("") + ylab("Net Current Account")

% of GDP

Code
BCA_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("NL", "ES", "GR")) %>%
  year_to_date2 %>%
  select(date, OBS_VALUE, REF_AREA) %>%
  left_join(NY.GDP.MKTP.CD %>% 
              mutate(date = as.Date(paste0(year, "-01-01"))) %>%
              select(REF_AREA = iso2c, date, value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/value) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + 
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme_minimal() +
  scale_color_manual(values = c("#0D5EAF", "#AE1C28", "#FFC400")) +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.9)) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-60, 60, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Current Account (% of GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")