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?