tidyMacro tidyMacro
  • Home
  • Replications
    • Bloom (2009) — Uncertainty Shocks
    • Galí (1999) — Technology Shocks
    • Beaudry & Portier (2014) — News Shocks
    • Kaenzig (2021) — Oil Supply News
    • Forni, Gambetti & Ricco (2022) — Non-Invertible Shocks

On this page

  • 1 Overview
  • 2 Setup
  • 3 Data
  • 4 VAR Estimation
  • 5 News Shock Identification
  • 6 Bootstrap Confidence Bands
  • 7 Compare the result to Barsky and Sims (2012)

Replication: Beaudry and Portier (2014)

News-Driven Business Cycles: Insights and Challenges

Author
Affiliation

Muhsin Ciftci

Goethe University Frankfurt

Published

April 26, 2026

1 Overview

This document replicates the news shock identification of Beaudry and Portier (2014) . A news shock is identified as the shock that has no contemporaneous effect on TFP but maximizes the long-run response of TFP at a 40-quarter horizon. The approach follows the mixed restriction strategy combining a zero impact restriction with a long-run maximization criterion.

2 Setup

library(tidyverse)
library(tictoc)
library(tidyMacro)

set_theme(ftheme_tidyMacro())

3 Data

data("BeaudryPortier2014")

y        <- BeaudryPortier2014 |> as.matrix()
T_obs    <- nrow(y)
N        <- ncol(y)
varnames <- colnames(y)

4 VAR Estimation

p <- 2
c <- 1

var_result <- fVAR(y, p = p, c = c)
Sigma <- var_result$sigma

5 News Shock Identification

horizon <- 40

# Wold IRFs by inverting (I - A(L))
wold <- fwoldIRF(var_result, horizon = horizon)

# Lower Cholesky factor of Sigma
S <- t(chol(Sigma))

# LR-Max point estimate
struct_irf <- fmaxIRF(wold, S, var_idx = 1L)

6 Bootstrap Confidence Bands

tic()
boot_max <- fbootstrapMaxCorrected(
  y          = y,
  var_result = var_result,
  nboot1     = 1000,
  nboot2     = 2000,
  horizon    = horizon,
  var_idx    = 1,          # maximise long-run effect on TFP (variable 1)
  cumulate   = integer(0), # no cumulation (levels data)
  prc        = 68          # Match original paper
)
toc()
#> 0.283 sec elapsed
fplotirfLR(
  point       = struct_irf,
  boot_result = boot_max,
  varnames    = varnames,
  facet_ncol  = 2
) + labs(y  = NULL)
Figure 1: IRF to Tech. news shock — LR-Max bootstrap (68% and 90% confidence bands)

7 Compare the result to Barsky and Sims (2012)

Now we can compare the results to that of Barsky and Sims (2012) and plot IRF results.

struct_irf_uhlig <- fuhligIRF(wold, S, idx = 1L)

tic()
boot_uhlig <- fbootstrapUhligCorrected(
  y          = y,
  var_result = var_result,
  nboot1     = 1000,
  nboot2     = 2000,
  horizon    = horizon,
  idx        = 1L,        # maximise FEV share of TFP (variable 1)
  cumulate   = integer(0),
  prc        = 68         # Match original study
)
toc()
#> 0.271 sec elapsed
fplotirfLR(
  point       = struct_irf_uhlig,
  boot_result = boot_uhlig,
  varnames    = varnames,
  facet_ncol  = 2
) + labs(y  = NULL)
Figure 2: IRF to news shock — Uhlig max-share bootstrap (68% and 90% confidence bands)
Back to top

References

Barsky, Robert B., and Eric R. Sims. 2012. “Information, Animal Spirits, and the Meaning of Innovations in Consumer Confidence.” American Economic Review 102 (4): 1343–77. https://doi.org/10.1257/aer.102.4.1343.
Beaudry, Paul, and Franck Portier. 2014. “News-Driven Business Cycles: Insights and Challenges.” Journal of Economic Literature 52 (4): 993–1074. https://doi.org/10.1257/jel.52.4.993.

Built with Quarto

© 2025 Muhsin Ciftci · Goethe University Frankfurt

tidyMacro