The selloff on Christmas eve was so bad it looked like a typical bear market capitulation. The following rally merely confirmed it.
As mentioned in the last post, at the time the correction reached 16%, at the close of December 21st, the oversold indicator was not lighted. What followed was the worst Christmas eve selloff ever. The selloff had two achievements. First, it took this bear market to a slightly deeper level than the 1998 bear market, which, based on my previous analysis, was the smallest bear market to date.
The second accomplishment of the selloff was that it looked a lot like a capitulation typical of a bear market bottom or a reversal. Running the capitulation function from the previous post confirms. In other words, the seloff took the three relevant indexes 10% or more away from their 50 day exponential moving average.
capitulation = function(spx=NULL, dji=NULL, nyse=NULL) { require(quantmod) spx = if(is.null(spx)) na.fill(Ad(getSymbols("^GSPC", from="1900-01-01", auto.assign=F)), "extend") else spx dji = if(is.null(dji)) na.fill(Ad(getSymbols("^DJI", from="1900-01-01", auto.assign=F)), "extend") else dji nyse = if(is.null(nyse)) na.fill(Ad(getSymbols("^NYA", from="1900-01-01", auto.assign=F)), "extend") else nyse spx.macd = MACD(spx, nFast=1, nSlow=50, maType=EMA) dji.macd = MACD(dji, nFast=1, nSlow=50, maType=EMA) nyse.macd = MACD(nyse, nFast=1, nSlow=50, maType=EMA) merged = merge(spx.macd[,1], dji.macd[,1], nyse.macd[,1], spx, dji, nyse, all=FALSE) merged = cbind(ifelse(merged[,1] <= -10 & merged[,2] <= -10 & merged[,3] <= -10, 1, 0), merged) colnames(merged) = c("ind", "spx.ind", "dji.ind", "nyse.ind", "spx.close", "dji.close", "nyse.close") capitulation = merged[merged[,1] == 1,2:NCOL(merged)] return(list(capitulation=capitulation, details=merged)) } cap = capitulation() tail(cap$capitulation) # spx.ind dji.ind nyse.ind spx.close dji.close nyse.close # 2009-03-06 -15.84705 -15.21571 -16.07971 683.38 6626.94 4284.49 # 2009-03-09 -16.14169 -15.70102 -16.65649 676.53 6547.05 4226.31 # 2009-03-10 -10.42353 -10.43552 -10.87757 719.60 6926.49 4499.38 # 2011-08-08 -13.47900 -11.42400 -14.88095 1119.46 10809.85 6895.97 # 2011-08-10 -12.61128 -11.47501 -11.57217 1120.76 10719.94 7101.24 # 2018-12-24 -12.01412 -11.68575 -10.95371 2351.10 21792.20 10769.83
What’s next? No one knows. 🙂 It is a bear market until proven otherwise. In the distant pass, the capitulation indicator has been pretty reliable and less frequent. In the 2002 bear market, and especially in the 2008 there were more signals. The indicator gave a few signals way before the pain started to ease. In 2011, the indicator gave signal even without a bear market and was spot on – the bottom came a day later. Today’s rally certainly confirms the oversold theory.
Thanks for the post, really cool analysis. Any advice on best resource to learn performanceanalytics?
Hi, the package vignettes are a good start. There is a lot of information online – the package has been around for quite a while. Good luck!