International investment position

Data - OECD

Info

source dataset Title .html .rData
oecd IIP International investment position 2026-01-15 2026-01-10

Last

obsTime Nobs
2025-Q3 1253

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) 174488
A Assets (or net acquisition of assets) 173420
L Liabilities (or net incurrence of liabilities) 163021

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 465469
K7B Revaluations due to other price changes 11445
K Changes in positions other than transactions 11349
K7A Revaluations due to exchange rate changes 11346
KA Other changes in the volume of Assets/Liabilities 11320

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 406547
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 75530
FA_D_F Direct investment 29892
FA_O_F Other investment 29832
FA_P_F Portfolio investment 29614
FA_P_F3 Portfolio investment; debt securities 29426
FA_P_F5 Portfolio investment; equity and investment fund shares/units 29426
FA_O_F4 Other investment; loans 28410
FA_O_F2 Other investment; currency and deposits 28267
FA_D_F5 Direct investment; equity and investment fund shares/units 28233
FA_D_FL Direct investment; debt instruments (FDI) 28233
FA_O_F81 Other investment; trade credits and advances 26872
FA_F_F7 Financial derivatives 26366
FA_O_F89 Other investment; other accounts receivable/payable, excluding trade credits and advances 25893
FA_O_F12 Other investment; SDRs 25645
FA_O_F519 Other investment; other equity 23410
FA_O_F6 Other investment; insurance, pension and standardised guarantee schemes 22781
FA_R_F_S121 Reserve assets 19748
FA_O_F4_S122 Other investment; loans; deposit taking corporations, except the central bank 3351

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