International investment position

Data - OECD

Info

source dataset Title .html .rData
oecd IIP International investment position 2026-02-22 2026-03-09

Last

obsTime Nobs
2025-Q4 280

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) 177997
A Assets (or net acquisition of assets) 177107
L Liabilities (or net incurrence of liabilities) 166454

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 474334
K7B Revaluations due to other price changes 11876
K7A Revaluations due to exchange rate changes 11792
K Changes in positions other than transactions 11790
KA Other changes in the volume of Assets/Liabilities 11766

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 415477
A Annual 106081

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 77696
FA_D_F Direct investment 30294
FA_O_F Other investment 30234
FA_P_F Portfolio investment 30016
FA_P_F3 Portfolio investment; debt securities 29828
FA_P_F5 Portfolio investment; equity and investment fund shares/units 29828
FA_O_F4 Other investment; loans 28875
FA_D_F5 Direct investment; equity and investment fund shares/units 28800
FA_D_FL Direct investment; debt instruments (FDI) 28800
FA_O_F2 Other investment; currency and deposits 28732
FA_O_F81 Other investment; trade credits and advances 27337
FA_F_F7 Financial derivatives 27164
FA_O_F89 Other investment; other accounts receivable/payable, excluding trade credits and advances 26520
FA_O_F12 Other investment; SDRs 26205
FA_O_F519 Other investment; other equity 24139
FA_O_F6 Other investment; insurance, pension and standardised guarantee schemes 23415
FA_R_F_S121 Reserve assets 20016
FA_O_F4_S122 Other investment; loans; deposit taking corporations, except the central bank 3659

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