Net International Investment Position (With Fund Record), US Dollars - IFR_BP6_USD

Data - IMF - BOP

Info

source dataset .html .RData
imf IFR_BP6_USD 2025-02-27 2025-02-27

LAST_COMPILE

LAST_COMPILE
2025-02-27

Last

TIME_PERIOD Nobs
2024-Q3 98

FREQ

Code
IFR_BP6_USD %>%
  group_by(FREQ) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
FREQ Nobs
Q 9358
A 4139

REF_AREA

Code
IFR_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/round/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

IIPs (USD)

Largest Negative IIP in USD

Code
IFR_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/round/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Largest Positive IIP in USD

Javascript

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

png

Code
i_g("bib/imf/IFR_BP6_USD_ex1.png")

All IIP in USD

Code
IFR_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) %>%
  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/round/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Germany, France, Italy, Spain

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("DE", "FR", "IT", "ES")) %>%
  year_to_date2 %>%
  select(date, OBS_VALUE, REF_AREA) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  mutate(OBS_VALUE = OBS_VALUE/1000,
         Counterpart_area = Ref_area) %>%
  ggplot(.) + theme_minimal() +
  geom_line(aes(x = date, y = OBS_VALUE, color = Counterpart_area)) + 
  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")) +
  add_4flags +
  scale_color_manual(values = c("#002395", "#000000", "#009246", "#C60B1E")) +
  scale_y_continuous(breaks = seq(-20000, 400000, 500),
                     labels = dollar_format(accuracy = 1, suffix = " Bn", prefix = "$")) + 
  xlab("") + ylab("Net International Investment Positions")

Germany, France, United States

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("DE", "FR", "US")) %>%
  year_to_date2 %>%
  select(date, OBS_VALUE, REF_AREA) %>%
  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("#002395", "#000000", "#B22234")) +
  geom_image(data = . %>%
               filter(date == as.Date("2020-01-01")) %>%
               mutate(date = as.Date("2020-01-01"),
                      image = paste0("../../icon/flag/round/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = OBS_VALUE/1000, image = image), asp = 1.5) +
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.4)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-20000, 400000, 1000),
                     labels = dollar_format(accuracy = 1, suffix = " Bn", prefix = "$")) + 
  xlab("") + ylab("Net International Investment Positions")

IIPs (% of GDP) - Nice Looking

All IIP in % of GDP

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         TIME_PERIOD == "2019") %>%
  select(REF_AREA, OBS_VALUE) %>%
  left_join(NY.GDP.MKTP.CD %>% 
              filter(year == 2019) %>%
              select(REF_AREA = iso2c, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA")) %>%
  mutate(`IIP (% of GDP)` = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  select(REF_AREA, Ref_area, `IIP (% of GDP)`) %>%
  arrange(`IIP (% of GDP)`) %>%
  mutate(`IIP (% of GDP)` = round(100*`IIP (% of GDP)`)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Ref_area))),
         Flag = paste0('<img src="../../icon/flag/round/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

30 Largest Negative IIP

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         TIME_PERIOD == "2019") %>%
  select(REF_AREA, OBS_VALUE) %>%
  left_join(NY.GDP.MKTP.CD %>% 
              filter(year == 2019) %>%
              select(REF_AREA = iso2c, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA")) %>%
  mutate(`IIP (% of GDP)` = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  select(REF_AREA, Ref_area, `IIP (% of GDP)`) %>%
  arrange(`IIP (% of GDP)`) %>%
  mutate(`IIP (% of GDP)` = round(100*`IIP (% of GDP)`)) %>%
  head(30) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Ref_area))),
         Flag = paste0('<img src="../../icon/flag/round/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

30 Largest Positive IIP

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         TIME_PERIOD == "2019") %>%
  select(REF_AREA, OBS_VALUE) %>%
  left_join(NY.GDP.MKTP.CD %>% 
              filter(year == 2019) %>%
              select(REF_AREA = iso2c, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA")) %>%
  mutate(`IIP (% of GDP)` = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  select(REF_AREA, Ref_area, `IIP (% of GDP)`) %>%
  arrange(-`IIP (% of GDP)`) %>%
  mutate(`IIP (% of GDP)` = round(100*`IIP (% of GDP)`)) %>%
  head(30) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Ref_area))),
         Flag = paste0('<img src="../../icon/flag/round/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Philippines, Singapore, Indonesia

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("PH", "TH", "ID")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + scale_color_identity() +
  geom_line(aes(x = date, y = value, color = color)) + 
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.85)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(image = paste0("../../icon/flag/round/", str_to_lower(Ref_area), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

United States, Spain, Italy, Germany, France, Greece

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("US", "ES", "DE", "FR", "GR", "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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(Counterpart_area = Ref_area,
         OBS_VALUE = value) %>%
  ggplot(.) + theme_minimal() + scale_color_identity() +
  geom_line(aes(x = date, y = OBS_VALUE, color = color)) + 
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.85)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  add_6flags +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 20),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position\n% of GDP") +
  geom_hline(yintercept = 0, linetype = "dashed")

Argentina, Chile, Uruguay, Peru

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("AR", "UY", "CL", "PE")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + scale_color_identity() +
  geom_line(aes(x = date, y = value, color = color)) + 
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.85)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(image = paste0("../../icon/flag/round/", str_to_lower(Ref_area), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

Austria, Germany, Netherlands, Sweden

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("SE", "AT", "NL", "DE")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = c("#ED2939", "#000000", "#21468B","#FECC00")) +
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.85)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(date = as.Date("2019-01-01"),
                      image = paste0("../../icon/flag/round/", str_to_lower(Ref_area), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

France, Germany, Portugal, Spain, Italy

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("FR", "ES", "PT", "IT", "DE")) %>%
  year_to_date2 %>%
  filter(date >= as.Date("1980-01-01")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  ggplot(.) + theme_minimal() + 
  geom_line(aes(x = date, y = value, color = color)) + 
  theme(legend.position = "none") + scale_color_identity() +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(image = paste0("../../icon/flag/round/", str_to_lower(Ref_area), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey")

France, Greece, Portugal, Spain

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("FR", "GR", "ES", "PT")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = c("#002395", "#0D5EAF", "#006600","#C60B1E")) +
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme(legend.position = "none") +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(image = paste0("../../icon/flag/round/", str_to_lower(Ref_area), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey")

G7

All

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("FR", "CA", "US", "DE", "IT", "JP", "GB")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  na.omit %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = c("#FF0000", "#002395", "#000000", "#009246", "#BC002D","#CF142B","#B22234")) +
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme(legend.position = "none") +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(date = as.Date("2019-01-01"),
                      image = paste0("../../icon/flag/round/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey")

1980-

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("FR", "CA", "US", "DE", "IT", "JP", "GB")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(date >= as.Date("1980-01-01")) %>%
  na.omit %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = c("#FF0000", "#002395", "#000000", "#009246", "#BC002D","#CF142B","#B22234")) +
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme(legend.position = "none") +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(date = as.Date("2019-01-01"),
                      image = paste0("../../icon/flag/round/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey")

2000-

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("FR", "CA", "US", "DE", "IT", "JP", "GB")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  filter(date >= as.Date("2000-01-01")) %>%
  na.omit %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = c("#FF0000", "#002395", "#000000", "#009246", "#BC002D","#CF142B","#B22234")) +
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme(legend.position = "none") +
  scale_x_date(breaks = seq(1950, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(date = as.Date("2019-01-01"),
                      image = paste0("../../icon/flag/round/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey")

France, Greece, Portugal, Spain, United States

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("FR", "GR", "ES", "PT", "US")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = c("#002395", "#0D5EAF", "#006600","#C60B1E", "#3C3B6E")) +
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme(legend.position = "none") +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2017-01-01")) %>%
               mutate(date = as.Date("2017-01-01"),
                      image = paste0("../../icon/flag/round/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey")

France, Germany, Greece, Netherlands, Portugal, Spain, Unted Kingdom, United States

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("FR", "DE", "GR", "ES", "PT", "US", "GB", "NL")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = c("#002395", "#000000", "#0D5EAF", "#AE1C28", "#006600","#C60B1E","#CF142B", "#3C3B6E")) +
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme(legend.position = "none") +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2019-01-01")) %>%
               mutate(date = as.Date("2019-01-01"),
                      image = paste0("../../icon/flag/round/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey")

Australia, New Zealand, United Kingdom, United States

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("US", "GB", "AU", "NZ")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = c("#FF0101", "#00247D", "#CF142B","#3C3B6E")) +
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme(legend.position = "none") +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2014-01-01")) %>%
               mutate(date = as.Date("2014-01-01"),
                      image = paste0("../../icon/flag/round/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

Australia, New Zealand, United Kingdom, United States, France

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("US", "GB", "AU", "NZ", "FR")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = c("#FF0101", "#002395", "#00247D", "#CF142B","#3C3B6E")) +
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme(legend.position = "none") +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2014-01-01")) %>%
               mutate(date = as.Date("2014-01-01"),
                      image = paste0("../../icon/flag/round/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey")

Europe, United States, Japan

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("U2", "US", "JP")) %>%
  mutate(OBS_VALUE = OBS_VALUE*(10^(UNIT_MULT))) %>%
  year_to_date2 %>%
  filter(date >= as.Date("1995-01-01")) %>%
  select(date, INDICATOR, OBS_VALUE, REF_AREA) %>%
  mutate(REF_AREA = ifelse(REF_AREA == "U2", "XC", REF_AREA)) %>%
  # Match U2 = Euro area (Member States and Institutions of the Euro Area) changing composition with XC in WDI
  left_join(NY.GDP.MKTP.CD %>% 
              mutate(date = as.Date(paste0(year, "-01-01"))) %>%
              select(REF_AREA = iso2c, date, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  mutate(Ref_area = case_when(REF_AREA == "XC" ~ "Europe",
                              T ~ Ref_area)) %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = c("#FFCC00", "#BC002D", "#3C3B6E")) +
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme(legend.position = "none") +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2014-01-01")) %>%
               mutate(date = as.Date("2014-01-01"),
                      image = paste0("../../icon/flag/round/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 5),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey")

Europe, United States

All

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("U2", "US")) %>%
  mutate(OBS_VALUE = OBS_VALUE*(10^(UNIT_MULT))) %>%
  year_to_date2 %>%
  filter(date >= as.Date("1995-01-01")) %>%
  select(date, INDICATOR, OBS_VALUE, REF_AREA) %>%
  mutate(REF_AREA = ifelse(REF_AREA == "U2", "XC", REF_AREA)) %>%
  # Match U2 = Euro area (Member States and Institutions of the Euro Area) changing composition with XC in WDI
  left_join(NY.GDP.MKTP.CD %>% 
              mutate(date = as.Date(paste0(year, "-01-01"))) %>%
              select(REF_AREA = iso2c, date, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  mutate(Ref_area = case_when(REF_AREA == "XC" ~ "Europe",
                              T ~ Ref_area)) %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = c("#003399", "#BC002D")) +
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme(legend.position = "none") +
  scale_x_date(breaks = seq(1950, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2014-01-01")) %>%
               mutate(date = as.Date("2014-01-01"),
                      image = paste0("../../icon/flag/round/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 5),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "grey")

All

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("U2", "US")) %>%
  mutate(OBS_VALUE = OBS_VALUE*(10^(UNIT_MULT))) %>%
  year_to_date2 %>%
  filter(date >= as.Date("1999-01-01")) %>%
  select(date, INDICATOR, OBS_VALUE, REF_AREA) %>%
  mutate(REF_AREA = ifelse(REF_AREA == "U2", "XC", REF_AREA)) %>%
  # Match U2 = Euro area (Member States and Institutions of the Euro Area) changing composition with XC in WDI
  left_join(NY.GDP.MKTP.CD %>% 
              mutate(date = as.Date(paste0(year, "-01-01"))) %>%
              select(REF_AREA = iso2c, date, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  mutate(Ref_area = case_when(REF_AREA == "XC" ~ "Europe",
                              T ~ Ref_area)) %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = c("#003399", "#BC002D")) +
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme(legend.position = "none") +
  scale_x_date(breaks = seq(1950, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2014-01-01")) %>%
               mutate(date = as.Date("2014-01-01"),
                      image = paste0("../../icon/flag/round/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 5),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)") +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

Europe, United States

Code
IFR_BP6_USD %>%
  bind_rows(NGDP_USD) %>%
  filter(FREQ == "A",
         REF_AREA %in% c("U2", "US")) %>%
  mutate(OBS_VALUE = OBS_VALUE*(10^(UNIT_MULT))) %>%
  year_to_date2 %>%
  filter(date >= as.Date("1995-01-01")) %>%
  select(date, INDICATOR, OBS_VALUE, REF_AREA) %>%
  spread(INDICATOR, OBS_VALUE) %>%
  mutate(value = IFR_BP6_USD/NGDP_USD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  mutate(Ref_area = case_when(REF_AREA == "U2" ~ "Europe",
                              T ~ Ref_area)) %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = c("#003399", "#BC002D", "#3C3B6E")) +
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme(legend.position = "none") +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2014-01-01")) %>%
               mutate(date = as.Date("2014-01-01"),
                      image = paste0("../../icon/flag/round/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 5),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

China, Europe, United States

Code
IFR_BP6_USD %>%
  bind_rows(NGDP_USD) %>%
  filter(FREQ == "A",
         REF_AREA %in% c("U2", "US", "CN")) %>%
  mutate(OBS_VALUE = OBS_VALUE*(10^(UNIT_MULT))) %>%
  year_to_date2 %>%
  filter(date >= as.Date("1995-01-01")) %>%
  select(date, INDICATOR, OBS_VALUE, REF_AREA) %>%
  spread(INDICATOR, OBS_VALUE) %>%
  mutate(value = IFR_BP6_USD/NGDP_USD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  mutate(Ref_area = case_when(REF_AREA == "CN" ~ "China",
                              REF_AREA == "U2" ~ "Europe",
                              T ~ Ref_area)) %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = c("#DE2910", "#003399", "#BC002D")) +
  geom_line(aes(x = date, y = value, color = Ref_area)) + 
  theme(legend.position = "none") +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_image(data = . %>%
               filter(date == as.Date("2014-01-01")) %>%
               mutate(date = as.Date("2014-01-01"),
                      image = paste0("../../icon/flag/round/", str_to_lower(gsub(" ", "-", Ref_area)), ".png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 5),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

IIPs (% of GDP)

Austria, Netherlands, Denmark, Sweden

Code
IFR_BP6_USD %>%
  filter(FREQ == "A",
         REF_AREA %in% c("SE", "AT", "NL", "DK")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + scale_color_manual(values = viridis(5)[1:4]) +
  geom_line(aes(x = date, y = value, color = Ref_area, linetype = Ref_area)) + 
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.85)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-300, 60, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

Lebanon, Greece, Argentina

Code
IFR_BP6_USD %>%
  filter(`FREQ` == "A",
         `REF_AREA` %in% c("LB", "GR", "AR")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + scale_color_manual(values = viridis(4)[1:3]) +
  geom_line(aes(x = date, y = value, color = Ref_area, linetype = Ref_area)) + 
  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 = 0.01*seq(-60, 60, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

Germany, France, Italy

Code
IFR_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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + 
  scale_color_manual(values = viridis(4)[1:3]) +
  geom_line(aes(x = date, y = value, color = Ref_area, linetype = Ref_area)) + 
  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 = 0.01*seq(-60, 60, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

Greece, Spain, Portugal

Code
IFR_BP6_USD %>%
  filter(`FREQ` == "A",
         `REF_AREA` %in% c("GR", "ES", "PT")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + scale_color_manual(values = viridis(4)[1:3]) +
  geom_line(aes(x = date, y = value, color = Ref_area, linetype = Ref_area)) + 
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.2)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-300, 60, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

Germany, Japan, Netherlands

Code
IFR_BP6_USD %>%
  filter(`FREQ` == "A",
         `REF_AREA` %in% c("DE", "JP", "NL")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + scale_color_manual(values = viridis(4)[1:3]) +
  geom_line(aes(x = date, y = value, color = Ref_area, linetype = Ref_area)) + 
  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 = 0.01*seq(-100, 100, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

Norway, Denmark, Switzerland

Code
IFR_BP6_USD %>%
  filter(`FREQ` == "A",
         `REF_AREA` %in% c("CH", "NO", "DK")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + scale_color_manual(values = viridis(4)[1:3]) +
  geom_line(aes(x = date, y = value, color = Ref_area, linetype = Ref_area)) + 
  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 = 0.01*seq(-100, 300, 20),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

Bahrain, Kuwait, Saudi Arabia

Code
IFR_BP6_USD %>%
  filter(`FREQ` == "A",
         `REF_AREA` %in% c("BH", "KW", "SA")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + scale_color_manual(values = viridis(4)[1:3]) +
  geom_line(aes(x = date, y = value, color = Ref_area, linetype = Ref_area)) + 
  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 = 0.01*seq(-100, 300, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

Australia, Hungary, Mexico

Code
IFR_BP6_USD %>%
  filter(`FREQ` == "A",
         `REF_AREA` %in% c("HU", "MX", "AU")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + scale_color_manual(values = viridis(4)[1:3]) +
  geom_line(aes(x = date, y = value, color = Ref_area, linetype = Ref_area)) + 
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.2)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-200, 300, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

Argentina, Finland, Sweden

Code
IFR_BP6_USD %>%
  filter(`FREQ` == "A",
         `REF_AREA` %in% c("FI", "SE", "AR")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + scale_color_manual(values = viridis(4)[1:3]) +
  geom_line(aes(x = date, y = value, color = Ref_area, linetype = Ref_area)) + 
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.2)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-600, 300, 20),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

Korea, Indonesia, Thailand

Code
IFR_BP6_USD %>%
  filter(`FREQ` == "A",
         `REF_AREA` %in% c("KR", "ID", "TH")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + scale_color_manual(values = viridis(4)[1:3]) +
  geom_line(aes(x = date, y = value, color = Ref_area, linetype = Ref_area)) + 
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.85)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-600, 300, 20),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

Philippines, Singapore, Malaysia

Code
IFR_BP6_USD %>%
  filter(`FREQ` == "A",
         `REF_AREA` %in% c("PH", "SG", "MY")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + scale_color_manual(values = viridis(4)[1:3]) +
  geom_line(aes(x = date, y = value, color = Ref_area, linetype = Ref_area)) + 
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.85)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-600, 300, 20),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")

Chile, Uruguay, Turkey

Code
IFR_BP6_USD %>%
  filter(`FREQ` == "A",
         `REF_AREA` %in% c("CL", "UY", "TR")) %>%
  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, NY.GDP.MKTP.CD = value), 
            by = c("REF_AREA", "date")) %>%
  mutate(value = (10^6)*OBS_VALUE/NY.GDP.MKTP.CD) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  ggplot(.) + theme_minimal() + scale_color_manual(values = viridis(4)[1:3]) +
  geom_line(aes(x = date, y = value, color = Ref_area, linetype = Ref_area)) + 
  theme(legend.title = element_blank(),
        legend.position = c(0.2, 0.85)) +
  scale_x_date(breaks = seq(1950, 2100, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = 0.01*seq(-600, 300, 10),
                     labels = scales::percent_format(accuracy = 1)) +
  xlab("") + ylab("Net International Investment Position (% of GDP)")