#delimit; set more 1; drop _all; set mem 400m; * RAMEY IDENTIFYING GOVERNMENT SPENDING SHOCKS: IT'S ALL IN THE TIMING; * VARSPF.DO: FILE THAT RUNS THE SURVEY OF PROFESSIONAL FORECASTER RESULTS; log using varspf.log, replace; insheet using govdat3908.csv; drop if quarter<1947; *set scheme s1color; gen t = _n; gen t2 = t^2; gen t3 = t^3; gen qdate = q(1947q1) + _n-1; format qdate %tq; tsset qdate, quarterly; gen rwbus = nwbus/pbus; local varlist = "rgdp rcons rcnd rcsv rcdur rcndsv rinv rinvfx rnri rres tothours rgov rfed rdef"; foreach var of local varlist {; gen l`var' = log(`var'/totpop); }; local varlist = "totpop rwbus cpi pgdp"; foreach var of local varlist {; gen l`var' = log(`var'); }; /* TIMING OF THE SPF FORECASTS; spf_xlag is the previous quarter's known value of x spf_x0 is forecasters' forecast of x in the current quarter spf_x1 is forecasters' forecast of x next quarter spf_x2 is forecasters' forecast of x 2 quarters hence spf_x3 is forecasters' forecast of x 3 quarters hence spf_x4 is forecasters' forecast of x 4 quarters hence */ gen rint = baa - 400*log(cpi/L.cpi); * IMPLIED GROWTH FORECASTS FROM SPF; gen fdlrdef1 = log(spf_ndef1/spf_pgdp1) - log(spf_ndef0/spf_pgdp0); gen fdlrdef4 = log(spf_ndef4/spf_pgdp4) - log(spf_ndef0/spf_pgdp0); gen fdlrfed1 = log(spf_rfed1/spf_rfed0); gen fdlrfed4 = log(spf_rfed4/spf_rfed0); * FORECAST ERRORS; gen spfrdefshock1 = log(rdef/L.rdef) - L.fdlrdef1; gen spfrdefshock4 = log(rdef/L4.rdef) - L4.fdlrdef1; gen spfrfedshock1 = log(rfed/L.rfed) - L.fdlrfed1; gen spfrfedshock4 = log(rfed/L4.rfed) - L4.fdlrfed1; gen spfshock1 = spfrdefshock1; replace spfshock1 = spfrfedshock1 if spfrdefshock1==.; gen spfshock4 = spfrdefshock4; replace spfshock4 = spfrfedshock4 if spfrdefshock4==.; gen dlrdef1 = log(rdef/L1.rdef); gen dlrdef4 = log(rdef/L4.rdef); gen dlrfed1 = log(rfed/L1.rfed); gen dlrfed4 = log(rfed/L4.rfed); reg dlrdef1 L.fdlrdef1; reg dlrfed1 L.fdlrfed1; reg dlrfed1 spfshock1 L.lrfed L2.lrfed L3.lrfed L4.lrfed L.lrgdp L2.lrgdp L3.lrgdp L4.lrgdp L.tb3 L2.tb3 L3.tb3 L4.tb3 L.amtbr L2.amtbr L3.amtbr L4.amtbr L.ltothours L2.ltothours L3.ltothours L4.ltothours; gen rintbaa = baa - 400*log(cpi/L.cpi); var spfshock1 lrgov lrgdp tb3 amtbr ltothours, lags(1/4) exog(t t2) ; varirf create irfltothours, step(20) bs rep(500) set(irfltothours, replace); varirf table oirf, impulse(spfshock1) response(lrgov lrgdp tb3 amtbr ltothours) std ; varirf graph oirf, impulse(spfshock1) response(lrgov lrgdp ltothours) individual iname(irfa, replace); local varlist = "lrcnd lrcsv lrcdur lrinvfx lrnri lrres lrwbus rintbaa"; foreach var of local varlist {; var spfshock1 lrgov lrgdp tb3 amtbr `var', lags(1/4) exog(t t2) ; varirf create irf`var', step(20) bs rep(500) set(irf`var', replace); varirf table oirf, impulse(spfshock1) response(`var') std; }; log close;