International investment position

Data - OECD

Info

source dataset Title .html .rData
oecd IIP International investment position 2026-03-23 2026-04-04

Last

obsTime Nobs
2025-Q4 1421

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) 178866
A Assets (or net acquisition of assets) 177886
L Liabilities (or net incurrence of liabilities) 167123

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 476621
K7B Revaluations due to other price changes 11878
K Changes in positions other than transactions 11834
K7A Revaluations due to exchange rate changes 11794
KA Other changes in the volume of Assets/Liabilities 11748

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 416794
A Annual 107081

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 77882
FA_D_F Direct investment 30450
FA_O_F Other investment 30390
FA_P_F Portfolio investment 30172
FA_P_F3 Portfolio investment; debt securities 29984
FA_P_F5 Portfolio investment; equity and investment fund shares/units 29984
FA_O_F4 Other investment; loans 29010
FA_D_F5 Direct investment; equity and investment fund shares/units 28938
FA_D_FL Direct investment; debt instruments (FDI) 28938
FA_O_F2 Other investment; currency and deposits 28867
FA_O_F81 Other investment; trade credits and advances 27460
FA_F_F7 Financial derivatives 27296
FA_O_F89 Other investment; other accounts receivable/payable, excluding trade credits and advances 26638
FA_O_F12 Other investment; SDRs 26306
FA_O_F519 Other investment; other equity 24236
FA_O_F6 Other investment; insurance, pension and standardised guarantee schemes 23497
FA_R_F_S121 Reserve assets 20120
FA_O_F4_S122 Other investment; loans; deposit taking corporations, except the central bank 3707

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")