Part 1: Comprehension

Permanent and Transitory Components of GDP and Stock Prices by John H. Cochrane (1994)

  • What is cointegration? Why should consumption and income be cointegrated? Why should stock prices and dividends be cointegrated?

Cointegration is a statistical trend that occurs when two variables which are not stationary tend to follow a similar path. This would mean that the long-run properties of consumption and GNP are the same at frequency zero. Since consumption is nearly a random walk, its long-run properties are almost the same as its short-run properties, and thus easy to estimate and it is stable over long time periods.

Dividend/ price ratios forecast returns better than lagged returns, while dividends are nearly a random walk. Therefore, price shocks with constant dividends are almost entirely transitory. This would mean that changes in dividends implies greater earning capabilities, so stock prices are tied in that way to reflect the price.

  • What is the point of the paper?

He explains that transitory variation requires long-term forecasting to find strong GDP data. To do this, he uses GDP and consumption growth as his two-variable auto-regressions.

  • What do you make of an increase in stock prices without a corresponding increase in dividends? Is it likely to be permanent or transitory? Why?

Returns revert to their mean, and prices revert too. Thus, a discount rate or expected return shock gives rise to a transitory price shock with no change in dividends, just like the “price” shock in the VAR. No change in dividends means there would be no change in long-term earnings.

  • What do you make of a drop in GDP that is accompanied by a fall in consumption? Is it likely to be a permanent or transitory shock?

Given that consumption is a ‘random walk’, if consumption does not change then we can assume that any change in GDP would be considered transitory.

  • What does Cochrane mean by saying that consumption defines the trend in GDP?

Consumption, which is usually a transitory shock accounts for 70-80% of the variance in GDP growth. As such, it is the main factor and ‘driving force’ for GDP. The consumption/ GNP ratio is a much more potent forecaster of long-horizon GNP growth. Thus, it can imply much larger transitory variation.

Part 2: Application

1. Download packages and prepare the data.

library(dplyr); library(ggplot2); library(vars); library(tsDyn)
CG <- read.csv("HW11.csv")

summary(CG)
##       CONS             GDP        
##  Min.   : 39906   Min.   : 59297  
##  1st Qu.: 74742   1st Qu.:111966  
##  Median :115634   Median :162845  
##  Mean   :131401   Mean   :188128  
##  3rd Qu.:181135   3rd Qu.:263120  
##  Max.   :278333   Max.   :394245

2. Create a new dataset that is the natural log of the old data set.

ln_CG <- log(CG)

summary(ln_CG)
##       CONS            GDP       
##  Min.   :10.59   Min.   :10.99  
##  1st Qu.:11.22   1st Qu.:11.63  
##  Median :11.66   Median :12.00  
##  Mean   :11.64   Mean   :12.01  
##  3rd Qu.:12.11   3rd Qu.:12.48  
##  Max.   :12.54   Max.   :12.88

3. Create another new dataset that is differenced.

lag_CG <- ln_CG %>% 
  mutate(d.GDP = c(NA, diff(GDP)), d.CONS = c(NA, diff(CONS))) %>% 
  filter(!is.na(d.GDP)) %>% 
  dplyr::select(-GDP, -CONS)

4. Fit a vector autoregression to the two series. After fitting the model, run a Akaike Information Criterion test. How many lags should you include?

Var <- VAR(lag_CG, p = 4, type = "const")

summary(Var)
## 
## VAR Estimation Results:
## ========================= 
## Endogenous variables: d.GDP, d.CONS 
## Deterministic variables: const 
## Sample size: 214 
## Log Likelihood: 2062.538 
## Roots of the characteristic polynomial:
## 0.8301 0.8301 0.7506 0.7506 0.7448 0.7448 0.3577 0.3577
## Call:
## VAR(y = lag_CG, p = 4, type = "const")
## 
## 
## Estimation results for equation d.GDP: 
## ====================================== 
## d.GDP = d.GDP.l1 + d.CONS.l1 + d.GDP.l2 + d.CONS.l2 + d.GDP.l3 + d.CONS.l3 + d.GDP.l4 + d.CONS.l4 + const 
## 
##             Estimate Std. Error t value Pr(>|t|)    
## d.GDP.l1   1.7335879  0.0727865  23.817  < 2e-16 ***
## d.CONS.l1  0.0991276  0.0951557   1.042   0.2988    
## d.GDP.l2  -1.5608698  0.1346210 -11.595  < 2e-16 ***
## d.CONS.l2 -0.1334362  0.1617298  -0.825   0.4103    
## d.GDP.l3   0.7312048  0.1346461   5.431 1.58e-07 ***
## d.CONS.l3  0.1835334  0.1616950   1.135   0.2577    
## d.GDP.l4  -0.1375845  0.0731228  -1.882   0.0613 .  
## d.CONS.l4 -0.1366979  0.0936436  -1.460   0.1459    
## const      0.0019146  0.0004813   3.978 9.64e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 0.00235 on 205 degrees of freedom
## Multiple R-Squared: 0.8615,  Adjusted R-squared: 0.8561 
## F-statistic: 159.3 on 8 and 205 DF,  p-value: < 2.2e-16 
## 
## 
## Estimation results for equation d.CONS: 
## ======================================= 
## d.CONS = d.GDP.l1 + d.CONS.l1 + d.GDP.l2 + d.CONS.l2 + d.GDP.l3 + d.CONS.l3 + d.GDP.l4 + d.CONS.l4 + const 
## 
##             Estimate Std. Error t value Pr(>|t|)    
## d.GDP.l1   0.1091701  0.0561798   1.943 0.053358 .  
## d.CONS.l1  1.5481375  0.0734453  21.079  < 2e-16 ***
## d.GDP.l2  -0.0698928  0.1039063  -0.673 0.501926    
## d.CONS.l2 -1.3767311  0.1248301 -11.029  < 2e-16 ***
## d.GDP.l3  -0.0160339  0.1039257  -0.154 0.877539    
## d.CONS.l3  0.7186024  0.1248032   5.758 3.08e-08 ***
## d.GDP.l4   0.0709825  0.0564394   1.258 0.209939    
## d.CONS.l4 -0.1297361  0.0722782  -1.795 0.074134 .  
## const      0.0013219  0.0003715   3.558 0.000464 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 0.001814 on 205 degrees of freedom
## Multiple R-Squared: 0.8328,  Adjusted R-squared: 0.8263 
## F-statistic: 127.7 on 8 and 205 DF,  p-value: < 2.2e-16 
## 
## 
## 
## Covariance matrix of residuals:
##            d.GDP    d.CONS
## d.GDP  5.522e-06 1.512e-06
## d.CONS 1.512e-06 3.290e-06
## 
## Correlation matrix of residuals:
##         d.GDP d.CONS
## d.GDP  1.0000 0.3547
## d.CONS 0.3547 1.0000

Lag order selection procedures improve the accuracy of impulse response estimates. The most common strategy in empirical studies is to select the lag-order by some pre-specified criterion and to condition on this estimate in constructing the impulse response estimates (Ventzislav & Lutz 2005). If the variable in question has a long lasting impact on today’s values, more lags will be necessary. We chose 4 lags because a year seems to be a reasonable estimate of lasting impact.

5. Generate some impulse responses. Interpret the plots.

irfs <- irf(Var)

plot(irfs)

The plot shows us that GDP reaches a peak after 1 standard deviation shock then rapidly decreases reaching a low after 5 quarters. Consumption on the other hand fluctuates up and down as time goes on.

6. Fit a vector error correction model and generate irfs again. Is there any substantial difference?

vecm1 <- VECM(data= lag_CG, lag = 4, r = 1, include = "const", estim = "ML", beta = 0)

irfs2 <- irf(vecm1)

plot(irfs2)

The graphs show little difference between them, if anything there is less of an impact from consumption after fitting the vector error correction model.

7. Generate forecasts for GDP and consumption growth over the next year. Plot these predictions.

CG_pred <- predict(Var, n.ahead = 4)

plot(CG_pred)

References: