Unemployment and NAWRU across AMECO vintages - vintages-labour

Data - AMECO

The NAWRU (non-accelerating wage rate of unemployment) is the Commission’s estimate of structural unemployment; it is re-estimated in every vintage. Black: latest vintage.

NAWRU

Vintage paths, France, Italy, Spain, Greece

Code
vintages |>
  filter(VAR == "ZNAWRU", COU %in% c("FRA", "ITA", "ESP", "GRC")) |>
  mutate(value = value / 100) |>
  plot_vintage_paths("NAWRU", from = 2000)

Unemployment rate vs. NAWRU (latest vs. real time)

Code
u <- vintages |> filter(VAR == "ZUTN", vintage == latest_vintage) |> select(COUNTRY, date, unemployment = value)
nawru_latest <- vintages |> filter(VAR == "ZNAWRU", vintage == latest_vintage) |> select(COUNTRY, date, `NAWRU, latest` = value)
nawru_rt <- vintages |> filter(VAR == "ZNAWRU", season == "autumn", year == vintage_year) |> select(COUNTRY, date, `NAWRU, real time` = value)
u |>
  left_join(nawru_latest, by = c("COUNTRY", "date")) |>
  left_join(nawru_rt, by = c("COUNTRY", "date")) |>
  filter(COUNTRY %in% c("France", "Italy", "Spain", "Germany"), date >= "2000-01-01", date <= "2025-01-01") |>
  pivot_longer(c(unemployment, `NAWRU, latest`, `NAWRU, real time`), names_to = "series") |>
  mutate(series = ifelse(series == "unemployment", "Unemployment rate", series), value = value / 100) |>
  ggplot(aes(x = date, y = value, color = series, linetype = series)) + theme_minimal() +
  geom_line() + facet_wrap(~COUNTRY, scales = "free_y") + xlab("") + ylab("") +
  scale_color_manual(values = c("black", "#2166ac", "#d95f02")) +
  scale_linetype_manual(values = c("solid", "solid", "dashed")) +
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(), labels = date_format("%Y")) +
  scale_y_continuous(labels = percent_format(accuracy = 1)) +
  theme(legend.position = "bottom", legend.title = element_blank())

Unemployment gap (U - NAWRU), real time vs. latest

Code
u_rt <- vintages |> filter(VAR == "ZUTN", season == "autumn", year == vintage_year) |> select(COUNTRY, date, u_rt = value)
nawru_rt |>
  inner_join(u_rt, by = c("COUNTRY", "date")) |>
  inner_join(nawru_latest |> inner_join(u, by = c("COUNTRY", "date")), by = c("COUNTRY", "date")) |>
  transmute(COUNTRY, date,
            `Real time` = (u_rt - `NAWRU, real time`) / 100,
            Latest = (unemployment - `NAWRU, latest`) / 100) |>
  pivot_longer(c(`Real time`, Latest)) |>
  filter(COUNTRY %in% c("France", "Italy", "Spain", "Germany"), date >= "2000-01-01") |>
  ggplot(aes(x = date, y = value, color = name)) + theme_minimal() +
  geom_hline(yintercept = 0, linewidth = 0.3) + geom_line() + facet_wrap(~COUNTRY) + xlab("") +
  ylab("Unemployment gap (U - NAWRU)") +
  scale_color_manual(values = c("black", "#d95f02")) +
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(), labels = date_format("%Y")) +
  scale_y_continuous(labels = percent_format(accuracy = 1)) +
  theme(legend.position = "bottom", legend.title = element_blank())

Unemployment rate forecasts

Target years 2020, 2021, 2024

Code
vintages |>
  filter(VAR == "ZUTN", COU %in% countries_4) |>
  mutate(value = value / 100) |>
  plot_target_year(c(2020, 2021, 2024), "Unemployment rate")