Real effective exchange rate (42 trading partners, based on HICP/CPI) - tipser10

Data - Eurostat

Info

Last observation: Annual: 2025 (N = 138)

First observation: Annual: 1994 (N = 133)

Last data update: 23 jul 2026, 22:39. Last compile: 24 jul 2026, 04:02

Structure

France, Germany, Italy, Spain, Netherlands

Code
tipser10 %>%
  filter(geo %in% c("FR", "DE", "NL", "ES", "IT"),
         unit == "PCH_3Y") %>%
  year_to_date %>%
  
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/100) %>%
  mutate(color = ifelse(geo == "NL", color2, color)) %>%
  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, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Real effective exchange rate") +
  scale_y_continuous(breaks = 0.01*seq(-300, 200, 2),
                     labels = scales::percent_format(accuracy = 1)) +
  geom_hline(yintercept = 0.05, linetype = "dashed") +
  geom_hline(yintercept = -0.05, linetype = "dashed") +
  geom_hline(yintercept = 0.11, linetype = "dashed") +
  geom_hline(yintercept = -0.11, linetype = "dashed")

Index Level (2015=100)

Code
tipser10 %>%
  filter(geo %in% c("FR", "DE", "NL", "ES", "IT"),
         unit == "I15") %>%
  year_to_date %>%

  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(color = ifelse(geo == "NL", color2, color)) %>%
  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, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Real effective exchange rate (Index, 2015=100)") +
  geom_hline(yintercept = 100, linetype = "dashed", color = "black")

Latest Year: 1-Year Change by Country

Code
latest_yr <- tipser10 %>%
  filter(unit == "PCH_1Y", nchar(geo) == 2, !is.na(values)) %>%
  summarise(m = max(time)) %>%
  pull(m)

tipser10 %>%
  filter(unit == "PCH_1Y", nchar(geo) == 2, time == latest_yr) %>%
  select(geo, Geo, `REER, 1-year change (%)` = values) %>%
  arrange(desc(`REER, 1-year change (%)`)) %>%
  print_table_conditional()