International investment position - quarterly and annual data (BPM6)

Data - Eurostat

Info

source dataset Title .html .rData
eurostat bop_iip6_q International investment position - quarterly and annual data (BPM6) 2026-01-29 2026-01-28

Data on europe

source dataset Title .html .rData
eurostat bop_gdp6_q Main Balance of Payments and International Investment Position items as share of GDP (BPM6) 2026-01-29 2026-01-29
eurostat nama_10_a10 Gross value added and income by A*10 industry breakdowns 2026-01-29 2026-01-29
eurostat nama_10_a10_e Employment by A*10 industry breakdowns 2026-01-29 2026-01-29
eurostat nama_10_gdp GDP and main components (output, expenditure and income) 2026-01-29 2026-01-29
eurostat nama_10_lp_ulc Labour productivity and unit labour costs 2026-01-29 2026-01-29
eurostat namq_10_a10 Gross value added and income A*10 industry breakdowns 2026-01-29 2026-01-29
eurostat namq_10_a10_e Employment A*10 industry breakdowns 2025-05-24 2026-01-29
eurostat namq_10_gdp GDP and main components (output, expenditure and income) 2025-10-27 2026-01-29
eurostat namq_10_lp_ulc Labour productivity and unit labour costs 2026-01-29 2026-01-29
eurostat namq_10_pc Main GDP aggregates per capita 2026-01-29 2026-01-29
eurostat nasa_10_nf_tr Non-financial transactions 2026-01-29 2026-01-29
eurostat nasq_10_nf_tr Non-financial transactions 2026-01-29 2026-01-29
eurostat tipsii40 Net international investment position - quarterly data, % of GDP 2026-01-29 2026-01-29

Data on macro

source dataset Title .html .rData
eurostat nama_10_a10 Gross value added and income by A*10 industry breakdowns 2026-01-29 2026-01-29
eurostat nama_10_a10_e Employment by A*10 industry breakdowns 2026-01-29 2026-01-29
eurostat nama_10_gdp GDP and main components (output, expenditure and income) 2026-01-29 2026-01-29
eurostat nama_10_lp_ulc Labour productivity and unit labour costs 2026-01-29 2026-01-29
eurostat namq_10_a10 Gross value added and income A*10 industry breakdowns 2026-01-29 2026-01-29
eurostat namq_10_a10_e Employment A*10 industry breakdowns 2025-05-24 2026-01-29
eurostat namq_10_gdp GDP and main components (output, expenditure and income) 2025-10-27 2026-01-29
eurostat namq_10_lp_ulc Labour productivity and unit labour costs 2026-01-29 2026-01-29
eurostat namq_10_pc Main GDP aggregates per capita 2026-01-29 2026-01-29
eurostat nasa_10_nf_tr Non-financial transactions 2026-01-29 2026-01-29
eurostat nasq_10_nf_tr Non-financial transactions 2026-01-29 2026-01-29
fred gdp Gross Domestic Product 2026-01-29 2026-01-29
oecd QNA Quarterly National Accounts 2024-06-06 2025-05-24
oecd SNA_TABLE1 Gross domestic product (GDP) 2026-01-16 2025-05-24
oecd SNA_TABLE14A Non-financial accounts by sectors 2026-01-16 2024-06-30
oecd SNA_TABLE2 Disposable income and net lending - net borrowing 2024-07-01 2024-04-11
oecd SNA_TABLE6A Value added and its components by activity, ISIC rev4 2024-07-01 2024-06-30
wdi NE.RSB.GNFS.ZS External balance on goods and services (% of GDP) 2026-01-29 2026-01-29
wdi NY.GDP.MKTP.CD GDP (current USD) 2026-01-29 2026-01-29
wdi NY.GDP.MKTP.PP.CD GDP, PPP (current international D) 2026-01-29 2026-01-29
wdi NY.GDP.PCAP.CD GDP per capita (current USD) 2026-01-29 2026-01-29
wdi NY.GDP.PCAP.KD GDP per capita (constant 2015 USD) 2026-01-29 2026-01-29
wdi NY.GDP.PCAP.PP.CD GDP per capita, PPP (current international D) 2026-01-29 2026-01-29
wdi NY.GDP.PCAP.PP.KD GDP per capita, PPP (constant 2011 international D) 2026-01-29 2026-01-29

Last

Code
bop_iip6_q %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(3) %>%
  print_table_conditional()
time Nobs
2025Q3 479168
2025Q2 483361
2025Q1 492272

Info

Code
include_graphics("https://ec.europa.eu/eurostat/statistics-explained/images/b/be/Net_international_investment_position%2C_surplus_and_deficit%2C_Top_10_economies%2C_2022_%28€_billion%29.png")

currency

Code
bop_iip6_q %>%
  left_join(currency, by = "currency") %>%
  group_by(currency, Currency) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
currency Currency Nobs
MIO_EUR Million euro 29594769
MIO_NAC Million units of national currency 29489856

bop_item

Code
bop_iip6_q %>%
  left_join(bop_item, by = "bop_item") %>%
  group_by(bop_item, Bop_item) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()

sector10

Code
bop_iip6_q %>%
  left_join(sector10, by = "sector10") %>%
  group_by(sector10, Sector10) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
sector10 Sector10 Nobs
S1 Total economy 15933836
S13 General Government 4648676
S121 Central Bank 4554275
S123 Money market funds 4448122
S122 Deposit-taking corporations except the central bank 4282497
S12T Monetary Financial Institutions (MFI) other than central bank 4077041
S1P Other sectors than MFIs and general government 4037627
S12M Financial corporations other than MFIs 3961371
S1V Non-financial corporations, households and non-profit institutions serving households 3914156
S12O Other financial institutions 1789474
S11 Non-financial corporations 1787864
S12Q Insurance corporations and pension funds 1770574
S1M Households and non-profit institutions serving households 1756608
S124 Non-MMF investment funds 1640982
S1Z Sectors other than deposit-taking corporations and general government 172155
S12R Other financial corporations 134961
S1X Monetary authorities 119552
S12K Monetary financial institutions (MFI) 50984
S1A Affiliates 1290
S1N Not sectorised 1290
S1W Other sectors than General Government 1290

sectpart

Code
bop_iip6_q %>%
  left_join(sectpart, by = "sectpart") %>%
  group_by(sectpart, Sectpart) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
sectpart Sectpart Nobs
S1 Total economy 56064524
S12M Financial corporations other than MFIs 374949
S121 Central Bank 363484
S123 Money market funds 362753
S122 Deposit-taking corporations except the central bank 352186
S13 General Government 334217
S1V Non-financial corporations, households and non-profit institutions serving households 325635
S12T Monetary Financial Institutions (MFI) other than central bank 232391
S12O Other financial institutions 124372
S11 Non-financial corporations 124250
S12Q Insurance corporations and pension funds 122066
S1M Households and non-profit institutions serving households 121840
S124 Non-MMF investment funds 85566
S1N Not sectorised 69057
S12K Monetary financial institutions (MFI) 27333
S1X Monetary authorities 2

stk_flow

Code
bop_iip6_q %>%
  left_join(stk_flow, by = "stk_flow") %>%
  group_by(stk_flow, Stk_flow) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
stk_flow Stk_flow Nobs
A_LE Assets - positions at the end of period 22677091
L_LE Liabilities - positions at the end of period 15079561
N_LE Net positions at the end of period 14858377
A_K7A Assets - revaluations due to exchange rate changes 1035159
A_K7B Assets - revaluations due to other price changes 971011
A_KA Assets - other changes in the volume of Assets/Liabilities 925931
L_K7A Liabilities - revaluations due to exchange rate changes 612119
L_KA Liabilities - other changes in the volume of Assets/Liabilities 584226
N_KA Net other changes in the volume of Assets/Liabilities 560110
L_K7B Liabilities - revaluations due to other price changes 550358
N_K7A Net revaluations due to exchange rate changes 540444
N_K7B Net revaluations due to other price changes 529820
NE_LE Net liabilities (liabilities minus assets) 159662
NI_LE Net FDI inward - positions at the end of period 378
NO_LE Net FDI outward - positions at the end of period 378

partner

Code
bop_iip6_q %>%
  left_join(partner, by = "partner") %>%
  group_by(partner, Partner) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  mutate(Partner = ifelse(partner == "DE", "Germany", Partner)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Partner)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

geo

Code
bop_iip6_q %>%
  left_join(geo, by = "geo") %>%
  group_by(geo, Geo) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Net International Investment Position

Table

Code
bop_iip6_q %>%
  filter(bop_item == "FA__NENDI",
         currency == "MIO_EUR",
         nchar(time) == 6) %>%
  left_join(geo, by = "geo") %>%
  group_by(geo, Geo) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

France, Germany, Spain, Netherlands, Italy

Code
bop_iip6_q %>%
  filter(bop_item == "FA__NENDI",
         currency == "MIO_EUR",
         geo %in% c("FR", "DE", "EA19", "ES", "NL", "IT"),
         nchar(time) == 6) %>%
  quarter_to_date %>%
  mutate(values = values/1000) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) + theme_minimal() +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Net international investment position") +
  scale_y_continuous(breaks = seq(-3000, 3000, 250),
                     labels = dollar_format(suffix = " Bn€", prefix = "", accuracy = 1))

France, Germany, Europe

Code
bop_iip6_q %>%
  filter(bop_item == "FA__NENDI",
         currency == "MIO_EUR",
         geo %in% c("FR", "DE", "EA20"),
         nchar(time) == 6) %>%
  quarter_to_date %>%
  mutate(values = values/1000) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "EA20", "Europe", Geo)) %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) + theme_minimal() +
  scale_color_identity() + add_2flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Net international investment position") +
  scale_y_continuous(breaks = seq(-3000, 3000, 250),
                     labels = dollar_format(suffix = " Bn€", prefix = "", accuracy = 1))

Spain, Netherlands, Italy

Code
bop_iip6_q %>%
  filter(bop_item == "FA__NENDI",
         currency == "MIO_EUR",
         geo %in% c("ES", "NL", "IT"),
         nchar(time) == 6) %>%
  quarter_to_date %>%
  mutate(values = values/1000) %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) + theme_minimal() +
  scale_color_identity() + add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2030, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Net international investment position") +
  scale_y_continuous(breaks = seq(-3000, 3000, 250),
                     labels = dollar_format(suffix = " Bn€", prefix = "", accuracy = 1))