Solved – Constructing a naive recession forecast

econometricsforecastingmacroeconomicsr

I am testing a variety of models to produce 1-month ahead predictions of US Recessions. To benchmark these models, I want to build a naive recession model. My first thought was to use the current state of the recession variable to predict the next state of the recession variable:

library(quantmod)
getSymbols('USREC',src='FRED') 
library(caret)
confusionMatrix(Lag(USREC),USREC,positive = '1')

As you can see, this forecast is very accurate. However, recessions tend to be back-dated so the naive model occasionally has information from the future: it knows a recession has started before the NBER has made an official announcement!

One idea I had was to build a simple glm model relating GDP to recessions. This method still uses future information (and the quarterly numbers have to be interpolated to monthly ones):

#Load Data
getSymbols('GDPC1',src='FRED') 
GDPC1 <- diff(log(GDPC1))
Data <- cbind(USREC,GDPC1)

#Fill NA's in GDP
Data$GDPC1 <- ifelse(is.na(Data$GDPC1),Lag(Data$GDPC1,1),Data$GDPC1)
Data$GDPC1 <- ifelse(is.na(Data$GDPC1),Lag(Data$GDPC1,1),Data$GDPC1)
Data <- na.omit(Data)

#Build Model
model <- glm(USREC~GDPC1,family=binomial(link = "logit"),Data)
forecast <- predict(model,Data)
confusionMatrix(ifelse(forecast>.5,1,0),Data$USREC,positive = '1')

On the other hand, this model is a little less accurate, and may be useful as a benchmark, despite it's use of some future information

Are there any other simple recession models I could use as benchmarks?

Best Answer

Use a logistic model predicting the probability of a recession using independent variables such as the slope of the yield curve, trailing stock market returns, short-interest rate, and credit spreads.

Related Question