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:
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.
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:
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.
The problem with such models is that they are, in essence, supply side. And we know how well supply side works. The driver of recession/depression is demand collapse, trying to predict any aspect and ignore demand side forces is doomed to fail.
ReplyDeleteHi,
ReplyDeleteon the 2nd piece of code I am getting:
> SixMonth <- sign(apply.daily(Lag(P.Rec,1:6), sum))
Error in dimnames(x) <- dn :
length of 'dimnames' [2] not equal to array extent
@Robert Young: I thought employment could be considered a demand measure, but I'd be happy to be proven wrong. What indicators do YOU use in your model? What is the accuracy of that model?
ReplyDelete@Costas: What version of R and xts are you using? Try upgrading to R 2.13.1 and/or running update.packages(ask=FALSE) and see if the problem persists.
ReplyDeleteYou can also break the function sign(apply.daily(Lag(P.Rec,1:6), sum)) up into its components, and see which of them fails, e.g.
x <- Lag(P.Rec,1:6)
x <- apply.daily(x, sum)
SixMonth <- sign(x)