International investment position

Data - OECD

Info

source dataset .html .RData
oecd IIP 2025-09-03 2025-09-27

Last

obsTime Nobs
2025-Q2 973

REF_AREA

Code
IIP %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  group_by(REF_AREA, Ref_area) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()

ACCOUNTING_ENTRY

Code
IIP %>%
  left_join(ACCOUNTING_ENTRY, by = "ACCOUNTING_ENTRY") %>%
  group_by(ACCOUNTING_ENTRY, Accounting_entry) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
ACCOUNTING_ENTRY Accounting_entry Nobs
N Net (assets minus liabilities) 173004
A Assets (or net acquisition of assets) 171942
L Liabilities (or net incurrence of liabilities) 161634

FS_ENTRY

Code
IIP %>%
  left_join(FS_ENTRY, by = "FS_ENTRY") %>%
  group_by(FS_ENTRY, Fs_entry) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
FS_ENTRY Fs_entry Nobs
LE Closing balance sheet/Positions/Stocks 461602
K7B Revaluations due to other price changes 11324
K Changes in positions other than transactions 11228
K7A Revaluations due to exchange rate changes 11225
KA Other changes in the volume of Assets/Liabilities 11201

FREQ

Code
IIP %>%
  left_join(FREQ, by = "FREQ") %>%
  group_by(FREQ, Freq) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
FREQ Freq Nobs
Q Quarterly 402198
A Annual 104382

MEASURE

Code
IIP %>%
  left_join(MEASURE, by = "MEASURE") %>%
  group_by(MEASURE, Measure) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
MEASURE Measure Nobs
FA Financial account 74802
FA_D_F Direct investment 29646
FA_O_F Other investment 29586
FA_P_F Portfolio investment 29368
FA_P_F3 Portfolio investment; debt securities 29180
FA_P_F5 Portfolio investment; equity and investment fund shares/units 29180
FA_O_F4 Other investment; loans 28176
FA_O_F2 Other investment; currency and deposits 28033
FA_D_F5 Direct investment; equity and investment fund shares/units 28002
FA_D_FL Direct investment; debt instruments (FDI) 28002
FA_O_F81 Other investment; trade credits and advances 26644
FA_F_F7 Financial derivatives 26144
FA_O_F89 Other investment; other accounts receivable/payable, excluding trade credits and advances 25674
FA_O_F12 Other investment; SDRs 25434
FA_O_F519 Other investment; other equity 23211
FA_O_F6 Other investment; insurance, pension and standardised guarantee schemes 22592
FA_R_F_S121 Reserve assets 19584
FA_O_F4_S122 Other investment; loans; deposit taking corporations, except the central bank 3322

Euro area

All

Code
IIP %>%
  filter(REF_AREA %in% c("EA19")) %>%
  left_join(MEASURE, by = "MEASURE") %>%
  group_by(MEASURE, Measure) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
MEASURE Measure Nobs
FA Financial account 1512
FA_D_F Direct investment 432
FA_D_F5 Direct investment; equity and investment fund shares/units 432
FA_D_FL Direct investment; debt instruments (FDI) 432
FA_F_F7 Financial derivatives 432
FA_O_F Other investment 432
FA_O_F12 Other investment; SDRs 432
FA_O_F2 Other investment; currency and deposits 432
FA_O_F4 Other investment; loans 432
FA_O_F519 Other investment; other equity 432
FA_O_F6 Other investment; insurance, pension and standardised guarantee schemes 432
FA_O_F81 Other investment; trade credits and advances 432
FA_O_F89 Other investment; other accounts receivable/payable, excluding trade credits and advances 432
FA_P_F Portfolio investment 432
FA_P_F3 Portfolio investment; debt securities 432
FA_P_F5 Portfolio investment; equity and investment fund shares/units 432
FA_R_F_S121 Reserve assets 288

FA

Code
IIP %>%
  filter(REF_AREA %in% c("EA19"),
         MEASURE == "FA") %>%
  left_join(FS_ENTRY, by = "FS_ENTRY") %>%
  group_by(FS_ENTRY, Fs_entry) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
FS_ENTRY Fs_entry Nobs
LE Closing balance sheet/Positions/Stocks 432
K Changes in positions other than transactions 270
K7A Revaluations due to exchange rate changes 270
K7B Revaluations due to other price changes 270
KA Other changes in the volume of Assets/Liabilities 270

FA, LE

Code
IIP %>%
  filter(REF_AREA %in% c("EA19"),
         MEASURE == "FA",
         FS_ENTRY == "LE") %>%
  left_join(FS_ENTRY, by = "FS_ENTRY") %>%
  group_by(FS_ENTRY, Fs_entry) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
FS_ENTRY Fs_entry Nobs
LE Closing balance sheet/Positions/Stocks 432

International investment position

EU vs. US

Code
IIP %>%
  filter(ACCOUNTING_ENTRY == "N",
         REF_AREA %in% c("USA", "EA19"),
         FS_ENTRY == "LE",
         MEASURE == "FA",
         FREQ == "A",
         UNIT_MEASURE == "XDC") %>%
  year_to_date() %>%
  arrange(desc(date)) %>%
  select_if(~ n_distinct(.) > 1) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  arrange(desc(date)) %>%
  mutate(Ref_area = ifelse(REF_AREA == "EA19", "Europe", Ref_area)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(color = ifelse(REF_AREA == "USA", color2, color)) %>%
  #filter(date <= as.Date("2021-01-01")) %>%
  ggplot(.) + geom_line(aes(x = date, y = obsValue, color = color)) + 
  theme_minimal() + xlab("") + ylab("IIP, % of GDP") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

EU vs. US, France, Italy

Code
IIP %>%
  filter(ACCOUNTING_ENTRY == "N",
         REF_AREA %in% c("EA19", "FRA", "ITA", "GRC"),
         FS_ENTRY == "LE",
         MEASURE == "FA",
         FREQ == "A",
         UNIT_MEASURE == "XDC") %>%
  year_to_date() %>%
  arrange(desc(date)) %>%
  select_if(~ n_distinct(.) > 1) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  arrange(desc(date)) %>%
  mutate(Ref_area = ifelse(REF_AREA == "EA19", "Europe", Ref_area)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(color = ifelse(REF_AREA == "USA", color2, color)) %>%
  #filter(date <= as.Date("2021-01-01")) %>%
  ggplot(.) + geom_line(aes(x = date, y = obsValue, color = color)) + 
  theme_minimal() + xlab("") + ylab("IIP, % of GDP") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-10^7, 10^7, 2*10^5),
                     labels = scales::dollar_format(pre = "", su = "")) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

EU vs. US, France, Italy, UK

Code
IIP %>%
  filter(ACCOUNTING_ENTRY == "N",
         REF_AREA %in% c("EA19", "FRA", "ITA", "GRC", "GBR"),
         FS_ENTRY == "LE",
         MEASURE == "FA",
         FREQ == "A",
         UNIT_MEASURE == "XDC") %>%
  year_to_date() %>%
  arrange(desc(date)) %>%
  select_if(~ n_distinct(.) > 1) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  arrange(desc(date)) %>%
  mutate(Ref_area = ifelse(REF_AREA == "EA19", "Europe", Ref_area)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(color = ifelse(REF_AREA == "USA", color2, color)) %>%
  #filter(date <= as.Date("2021-01-01")) %>%
  ggplot(.) + geom_line(aes(x = date, y = obsValue, color = color)) + 
  theme_minimal() + xlab("") + ylab("IIP, % of GDP") +
  scale_color_identity() + add_flags +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(-10^7, 10^7, 2*10^5),
                     labels = scales::dollar_format(pre = "", su = "")) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

EU vs. US, France, Italy, Spain

Code
IIP %>%
  filter(ACCOUNTING_ENTRY == "N",
         REF_AREA %in% c("EA19", "FRA", "ITA", "GRC", "ESP"),
         FS_ENTRY == "LE",
         MEASURE == "FA",
         FREQ == "A",
         UNIT_MEASURE == "XDC") %>%
  year_to_date() %>%
  arrange(desc(date)) %>%
  select_if(~ n_distinct(.) > 1) %>%
  left_join(REF_AREA, by = "REF_AREA") %>%
  arrange(desc(date)) %>%
  mutate(Ref_area = ifelse(REF_AREA == "EA19", "Europe", Ref_area)) %>%
  left_join(colors, by = c("Ref_area" = "country")) %>%
  mutate(color = ifelse(REF_AREA == "USA", color2, color)) %>%
  #filter(date <= as.Date("2021-01-01")) %>%
  ggplot(.) + geom_line(aes(x = date, y = obsValue, color = color)) + 
  theme_minimal() + xlab("") + ylab("IIP, % of GDP") +
  scale_color_identity() + add_flags +
  scale_y_continuous(breaks = seq(-10^7, 10^7, 2*10^5),
                     labels = scales::dollar_format(pre = "", su = "")) +
  scale_x_date(breaks = seq(1920, 2100, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")