Die Schnelllebigkeit der COVID19-Epidemie hat die Relevanz von Echtzeit-Indikatoren zur wirtschaftlichen Lage aufgezeigt. Ein Beispiel ist der LKW-Maut-Fahrleistungsindex, den ich hier vorgestellt habe. Einen weiteren Index, den ich kennengelernt habe, ist der "Economic Policy Uncertainty" (EPU)-Indikator. Sein Ziel ist es "the intensity of policy-related economic uncertainty" zu messen. Hintergrund ist, dass eine hohe Unsicherheit das wirtschaftliche Wachstum nachweislich bremst.
Der Index wurde 2013 für die USA entwickelt. Er basiert auf der Häufigkeit von Zeitungsartikeln mit der Wörterkombination "economic/ economy" und "uncertain/ uncertainty" und "congress/ deficit/ Federal Reserve/ legislation/ regulation/ White House"; im Verhältnis zur gesamten Anzahl an Artikeln. Mit einer automatisierten Textanalyse wird in 1000 Zeitungen gesucht. Diese Vorgehensweise erlaubt es auch für den EPU-Index einen tagesbasierten Wert herauszugeben.
Der Index wird für den Zeitraum seit 1985 ausgegeben; hier der Abschnitt ab 2019. Wir sehen, dass die Unsicherheit ist mit Corona rapide gestiegen und seitdem noch nicht auf Normalniveau zurück ist.
Der eigentliche Index ist jedoch auf monatlicher Basis und neben einem Newsindex gibt es noch einen composite index. Er besteht aus den folgenden Komponenten:
- dem Newsindex basierend auf den 10 größten Zeitungen (mit der Suche nach den gleichen Wörterkombinationen
- der Unstimmigkeit von Experten zur künftigen Beschaffung von Gütern und Dienstleistungen von lokalen, staatlichen und Bundeseinrichtungen als auch zum Preisindex (CPI) zu finden im Federal Reserve Bank of Philadelphia´s Survey of Professional Forecasters.
- der Anzahl an temporären Steuerregelungen. Da diese vom Congress meist in letzter Minute verlängert werden, sind sie eine Quelle von Unsicherheit für Unternehmen.
Bei diesem zusammengesetzten Index ("Three Component Index") ist gut sichtbar, wie die Volatilität weniger stark ausgeprägt ist als beim Newsindex. Gut sichtbar wird der bei beiden Anstieg der Unsicherheit zur und nach der Finanzkrise 2009. Ferner wird auch der Anstieg mit Corona sichtbar. Dieser wird aber fast ausschließlich durch den Newsindex getrieben. Anbei der gesamte Zeitraum:
Man könnte meinen, dass es mit Trumps Amtsantritt 2017 keine wirkliche Veränderung im Index gibt. Um dies besser abschätzen zu können, hilft die Decomposition aus dem Forecasting-Package von Hyndman. Mit der Funktion wird der originale Verlauf (oberster Plot) aufgeteilt in die erkannten saisonellen Schwankungen, schließlich der identifizierte Trend und zuletzt die "Restwerte", um dennoch beim originalen Verlauf zu landen. Interessant ist hier der Trend, welcher nicht erst seit der Corona-Epidemie sondern auch schon seit Trumps Amtsantritt nach oben zeigt. Schon vor Corona wurde das Umfeld in den USA also unsicherer.
Den originalen Verlauf auf simple (!) Weise zu prognostizieren, kann erschrecken:
Ein weiterer Index für die USA ist der kategorische EPU durch die Kombination mit weiteren Kategorien. Dafür werden Artikel von 2.000 US-amerikanischen Tageszeitungen auf Basis der bekannten Wörter in Kombination mit Begriffen der spezifischen Kategorie indexiert. Mit Corona ging das Risiko in fast jeder Kategorie hoch (Achtung, unterschiedliche Skalen):
Diese Methodik wird mittlerweile für mehrere Länder angewendet; für Deutschland basiert der Index z.B. auf Artikeln im Handelsblatt und in der Frankfurter Allgemeinen Zeitung. In Europa wird z.B. die gestiegene Unsicherheit für Großbritannien durch den Brexit sichtbar.
Die Fülle an Informationen, der große Zeitraum als auch die Nachvollziehbarkeit der Berechnung machen den Index zu einem attraktiven Indikator für mich. Es gibt sogar noch einige weitere Indizes:
- der Index Migration Fears and EPU u.a. auch für Deutschland
- die Monetary Policy Uncertainty Indices für die USA
- einen kategorischen EPU-Index für Griechenland
- einen kategorischen EPU-Index für Japan
Die einzelnen Methodiken wurden hier entwickelt und vorgestellt
- Australia, Brazil, Canada, France, Germany, India, Italy, Mexico, South Korea, Russia, United Kingdom, United States: Baker, Bloom and Davis (2016).
- Chile: Cerda, Silva and Valente (2016).
- China: Baker, Bloom, Davis and Wang (2013).
- Colombia: Gil and Silva (2018)
- Global: Davis (2016).
- Greece: Hardouvelis, Karalas, Karanastasis and Samartzis (2018).
- Ireland: Zalla (2016).
- Japan: Arbatli, Davis, Ito and Miake (2019).
- The Netherlands: Kroese, Kok and Parlevliet (2015)
- Singapore: Davis (2016).
- Spain: Ghirelli, Perez, and Urtasun (2019).
- Sweden: Armelius, Hull, and Köhler (2017).
References:
- Arbatli, E., S.J. Davis, A. Ito, and N. Miake, 2019. "Policy Uncertainty in Japan," NBER Working Paper 23411. Revised, August 2019. Forthcoming in The Economic Challenges of Japan's Aging and Shrinking Population, International Monetary Fund, edited by Paul Cashin and Todd Schneider.
- Armelius, H., I. Hull, and H.S. Köhler, 2017. "The Timing of Uncertainty Shocks in a Small Open Economy," Economics Letters, 155 (June), 31-34.
- Baker, S.R., N. Bloom, S.J. Davis and Xiaoxi Wang, 2013. "Economic Policy Uncertainty in China," unpublished paper, University of Chicago.
- Baker, S. R., N. Bloom, and S. J. Davis, 2016. "Measuring Economic Policy Uncertainty," Quarterly Journal of Economics, 131, no. 4 (November), 1593-1636.
- Cerda, R., A. Silva and J. T. Valente, 2016. "Economic Policy Uncertainty Indices for Chile," working paper.
- Davis, S. J., 2016. "An Index of Global Economic Policy Uncertainty." Macroeconomic Review, October. Also available as NBER Working Paper No. 22740.
- Davis, S. J., Dingquian Liu and Xuguang Simon Sheng, 2019. "Economic Policy Uncertainty in China Since 1946: The View from Mainland Newspapers," working paper, August.
- Ghirelli, C., J.J. Perez, and A. Urtasun, 2019. "A New Economic Policy Uncertainty Index for Spain," Bank of Spain, WorkingPaper No., 1906.
- Gil, M. and D. Silva, 2018. "Economic Policy Uncertainty Indices for Colombia," working paper.
- Hardouvelis, G. A., G. I. Karalas, D. I. Karanastasis and P. K. Samartzis, 2018. "Economic Policy Uncertainty, Political Uncertainty and the Greek Economic Crisis," working paper, May.
- Kroese, L., S. Kok and J. Parlevliet, 2015. "Beleidsonzekerheid in Nederland," Economisch Statistische Berichten, No. 4715, pp. 464-467.
- Zalla, R., 2016. "Economic Policy Uncertainty in Ireland," working paper, 20 September.
Und hier noch der Code in RStudio
library(rio)
library(ggplot2)
library(fpp2)
library(dplyr)
library(zoo)
library(openxlsx)
library(reshape)
library(dplyr)
library(readr)
library(Hmisc)
# Plot 1 - US daily figures
data_US_EPUdaily = import("http://policyuncertainty.com/media/All_Daily_Policy_Data.csv") %>%
mutate(Date = as.Date(paste(.$year, .$month, .$day), "%Y %m %d"))
data_US_EPUdaily %>%
filter(year >= 2019) %>%
ggplot(aes(x=Date, y=daily_policy_index, group=1)) +
geom_line(colour="#48D1CC") +
geom_smooth(span=0.1, colour="#00CED1") +
theme_minimal()+
theme(axis.title.x=element_blank(), axis.title.y=element_blank()) +
labs(
title = paste("US Daily News Index"),
subtitle = "tägliche Werte",
caption = "Plot 1")
#Plot 2 - US Monthly figures // components
data_US_EPUmonthly2 = import("http://policyuncertainty.com/media/US_Policy_Uncertainty_Data.xlsx", which=2) %>% #second worksheet
mutate(Date = as.yearmon(paste(.$Year, .$Month), "%Y %m"))
data_US_EUPmonthly3 <- left_join(data_US_EPUmonthly, data_US_EPUmonthly2) %>%
select(Date, Three_Component_Index, News_Based_Policy_Uncert_Index, FedStateLocal_Ex_disagreement, CPI_disagreement, Tax_expiration) %>%
`colnames<-`(c("Date", "Three Component Index", "News Based Index", "Public Spending disagreement", "CPI disagreement", "Tax espiration"))
data_US_EUPmonthly3 %>%
melt(., id.vars=c("Date")) %>%
ggplot(aes(x=Date, y=value, col=variable)) +
geom_line() +
geom_smooth(span=0.3) +
scale_colour_manual("",
values = c("#2F4F4F", "#48D1CC", "#7FFFD4", "#B0E0E6", "#87CEEB"),
labels=c("Three Component Index", "News Based Index", "Public Spending disagreement", "CPI disagreement", "Tax espiration")) +
facet_grid(variable~., scales="free") +
theme_minimal() +
theme(legend.position = "none",
strip.text.x = element_text(size=10, angle=0),
strip.text.y = element_text(size=8, face="bold", angle=0),
strip.background = element_rect(fill="#E0E0E0")) +
labs(
x=NULL, y=NULL,
title = paste("US Monthly Index"),
subtitle = "monatliche Werte der Komponenten",
caption = "Plot 2")
# Plot 3 - EPU US monthly decomposition
data_US_EPUmonthly_2000 <- data_US_EPUmonthly %>%
filter(Year >= 2000)
data_US_EPUmonthly_ts <- ts(data_US_EPUmonthly_2000$Three_Component_Index, start=c(2000,1), end=c(2020,6), frequency=12)
data_US_EPUmonthly_ts %>%
decompose(type="additive") %>%
autoplot() +
labs(
title = paste("US Monthly Three Component Index - decomposed"),
subtitle = "monatliche Werte",
caption = "Plot 3")
# Plot 4 - EPU US monthly forecasting
fc_simple_1 <- rwf(data_US_EPUmonthly_ts, drift=TRUE, lambda=0, h=50, level=80)
fc_simple_2 <- rwf(data_US_EPUmonthly_ts, drift=TRUE, lambda=0, h=50, level=80, biasadj=TRUE)
autoplot(data_US_EPUmonthly_ts) +
autolayer(fc_simple_1, series="Simple back transformation", PI=FALSE) + #blue line = forecast medians
autolayer(fc_simple_2, series="Bias adjusted", PI=FALSE) + #red line = forecast means
theme_minimal() +
labs(
x=NULL, y=NULL,
title = paste("US Monthly Three Component Index - forecasting"),
subtitle = "monatliche Werte",
caption = "Plot 4")
#Plot 5 - US categorigal figures
data_US_EPUcategorical = import("http://policyuncertainty.com/media/Categorical_EPU_Data.xlsx") %>%
mutate(Date = convertToDate(Date)) %>%
`colnames<-`(c("Date", "Economic", "Monetary", "Fiscal Policy", "Taxes", "Govt. spending", "Health Care", "National Security", "Entitlement programs", "Regulation", "Financial Regulation", "Trade policy", "Currency"))
data_US_EPUcategorical %>%
filter(Date >= "2019-01-01") %>%
melt(., id.vars=c("Date")) %>%
ggplot(aes(x=Date, y=value, col=variable)) +
geom_line() +
theme_minimal() +
theme(legend.position = "none") +
#facet_wrap(~variable) +
facet_grid(variable~., scales="free") +
theme_minimal() +
theme(legend.position = "none",
strip.text.y = element_text(size=8, face="bold", angle=0),
strip.background = element_rect(fill="#E0E0E0")) +
labs(
x=NULL, y=NULL,
title = paste("US Categorical Index"),
subtitle = "die kategorischen Indizes",
caption = "Plot 5")
# Plot 6 - all countries
data_worldwide_EPUmonthly = import("http://policyuncertainty.com/media/All_Country_Data.xlsx") %>%
mutate(Date = as.yearmon(paste(.$Year, .$Month), "%Y %m")) %>%
mutate(Year = NULL) %>%
mutate(Month = NULL)
data_worldwide_EPUmonthly %>%
melt(., id.vars=c("Date")) %>%
mutate(continent = ifelse(variable %in% c("Australia", "China", "India", "Japan", "Korea", "Singapore", "SCMP China", "Mainland China"), 'Asia',
ifelse(variable %in% c("Brazil", "Canada", "Chile", "Colombia", "Mexico", "US"), 'Americas',
ifelse(variable %in% c("France", "Germany", "Greece", "Ireland", "Italy", "Netherlands", "Russia", "Spain", "UK", "Sweden"), 'Europe', 'Global')))) %>%
ggplot(aes(x=Date, y=value, col=variable)) +
geom_line(size=0.5) +
theme_minimal() +
facet_grid(continent~.) +
theme_minimal() +
theme(legend.position = "bottom",
strip.text.y = element_text(size=8, face="bold", angle=0),
strip.background = element_rect(fill="#E0E0E0"),
legend.key.size = unit(0.5,"line")) +
guides(colour = guide_legend(override.aes = list(size=5))) +
labs(color = "countries",
x=NULL, y=NULL,
title = paste("World Monthly Index"),
subtitle = "monatliche Werte",
caption = "Plot 6")
# ------------ Backup ------------
# Plot x - US monthly figures
data_US_EPUmonthly = import("http://policyuncertainty.com/media/US_Policy_Uncertainty_Data.xlsx", which=1) %>% #first worksheet
mutate(Date = as.yearmon(paste(.$Year, .$Month), "%Y %m"))
data_US_EPUmonthly %>%
mutate("Year" = NULL) %>%
mutate("Month" = NULL) %>%
melt(., id.vars=c("Date")) %>%
ggplot(aes(x=Date, y=value, col=variable)) +
geom_line() +
geom_smooth(span=0.15) +
scale_colour_manual("",
values = c("#2F4F4F", "#48D1CC"),
labels=c("Three Component Index", "News Based Index")) +
facet_grid(variable~.) +
theme_minimal() +
theme(
legend.position = "bottom",
strip.text.y = element_blank()
)+
labs(
x=NULL, y=NULL,
title = paste("US Monthly Index"),
subtitle = "monatliche Werte",
caption = "Plot 2")
# Plot x - Deutschland
data_DE_LKW <- read.csv("~/Documents/Blog/15_Economic Uncertainty Index/LKW Mautindex.csv") %>%
`colnames<-`(unlist(.[6,])) %>%
setNames(c("Year", "Month", names(.)[3:length(names(.))])) %>%
.[-c(1:6), ] %>%
mutate(Date = paste(.$Month, .$Year)) %>%
mutate(Date = parse_date(.$Date, "%B %Y", locale = locale("de"))) %>%
mutate(Date = as.yearmon(.$Date, "%Y %m"))
data_Germany <- left_join(data_DE_LKW, data_worldwide_EPUmonthly, by=c("Date"="Date")) %>%
mutate(EPU = as.numeric(Germany)) %>%
mutate(Mautindex = as.numeric(`BV4.1 kalender- und saisonbereinigt`)) %>%
select(Date, EPU, Mautindex) %>%
filter(Date <= "May 2020")
Korr <- cor.test(data_Germany$EPU, data_Germany$Mautindex, use="complete.obs") # Korrelation
data_Germany %>%
melt(., id.vars=c("Date")) %>%
ggplot(aes(x=Date, y=value, col=variable)) +
geom_line() +
theme_minimal() +
theme(legend.position = "none") +
#facet_wrap(~variable) +
facet_grid(variable~., scales="free") +
theme_minimal() +
theme(legend.position = "none",
strip.text.y = element_text(size=8, face="bold", angle=0),
strip.background = element_rect(fill="#E0E0E0")) +
labs(
x=NULL, y=NULL,
title = paste("EPU & Maut-Index Deutschland"),
subtitle = paste("Korrelation:", round(Korr$estimate,4), " & p-Value:", format.pval(Korr$p.value, digits = 4, nsmall = 3, eps = 0.001)),
caption = "Plot 7")
->->->->->->->->->->