Recession Forecasting Ii: Assessing Hussman's Accuracy
Note: This post is NOT financial advice! This is just a fun way to explore some of the capabilities R has for importing and manipulating data.
In my last post on recessions, I implemented John Hussman’s Recession Warning Composite in R. In this post I will examine how well this index performs and discuss how we might improve it. If you would like to follow along at home, be sure to run the code from the last post, before running anything from this post.
First of all, lets evaluate how predictive Hussman’s index is of recessions next month:
set.seed(42)
#Actual Recessions
getSymbols('USREC', src='FRED')
USREC <- USREC["1997-07-01::",] #Start from same period
#Compare recession now to warning last month
OneMonth <- Lag(P.Rec)
compare <- na.omit(merge(OneMonth,USREC))
confusionMatrix(compare[,1],compare[,2],positive = '1')
This code simply compares the current value of USREC (US Recessions) to last month’s value of the recession warning composite. By this measure, the recession warning composite is only 81.55% accurate, with a 95% confidence interval of [75%,87%].
Next, let’s evaluate a warning ANYTIME in the last 6 months to the current value of USREC.
#Compare recession now to warning in last 6 months
SixMonth <- sign(apply.daily(Lag(P.Rec,1:6), sum))
compare <- na.omit(merge(SixMonth,USREC))
confusionMatrix(compare[,1],compare[,2],positive = '1')
By this measure, the forecast is even worse: the accuracy is 73.62% [66%,80%]. Interestingly, this measure has a very high ‘Negative Predictive Value’ (.9896), which indicates if the recession warning composite has been 0 for the past 6 months, you can be reasonable sure there will be no recession this month.
Finally, let’s make a naive recession forecast, and predict that the current value of USREC will be equal to it’s previous value:
getSymbols('USREC',src='FRED')
#> [1] "USREC"
USREC <- USREC["1997-07-01::",] #Start from same period
OneMonth <- Lag(USREC)
compare <- na.omit(merge(OneMonth,USREC))
confusionMatrix(factor(compare[,1]), factor(compare[,2]), positive = '1')
#> Confusion Matrix and Statistics
#>
#> Reference
#> Prediction 0 1
#> 0 294 3
#> 1 3 25
#>
#> Accuracy : 0.9815
#> 95% CI : (0.9603, 0.9932)
#> No Information Rate : 0.9138
#> P-Value [Acc > NIR] : 2.607e-07
#>
#> Kappa : 0.8828
#>
#> Mcnemar's Test P-Value : 1
#>
#> Sensitivity : 0.89286
#> Specificity : 0.98990
#> Pos Pred Value : 0.89286
#> Neg Pred Value : 0.98990
#> Prevalence : 0.08615
#> Detection Rate : 0.07692
#> Detection Prevalence : 0.08615
#> Balanced Accuracy : 0.94138
#>
#> 'Positive' Class : 1
#>
This forecast is 97.62% accurate! [94%,99%]. Therefore, I have to conclude that Hussman’s recession warning composite, while interesting to implement, is not particularly useful for forecasting recessions. However, it may be that Hussman is primarily concerned with forecasting when recessions START and END. Given that the current state of US recessions is highly predictive of the next state of US recessions, this might be a valid approach. Still, I’m struggling to find a useful way of interpreting Hussman’s index.
If you have any ideas for using or improving Hussman’s index, please leave a comment.