On Dec 27, 2021, the Wall Street Journal article mentioned that the “last five trading days of the year and the first two trading days of the new year comprise the ‘Santa Claus Rally’ in trading lore, as detailed in the Stock Trader’s Almanac. It’s not a big rally, on average adding about 1.3%, but it’s consistent, showing up about 80% of the time.”
In the following, we will evaluate how persistent this rally using returns on the S&P 500 index. The time series dates back to 1928.
library(quantmod)
library(lubridate)
getSymbols("^GSPC",from = "1900-01-01")
[1] "^GSPC"
P <- GSPC$GSPC.Adjusted
R <- na.omit(P/lag(P)) - 1
plot(cumsum(R))

Consistent with the article, let us consider the last five trading days of the year as well as the first two trading days of the following year. In order to extract these days, I use the following trick
last_five <- apply.yearly(R,function(x) (prod(tail(x,5)+1)))
first_two <- apply.yearly(R,function(x) (prod(head(x,2)+1)))
Given the annual data, I merge them based on the year in the following way
ds1 <- data.frame(Year = year(last_five), R5 = as.numeric(last_five))
ds2 <- data.frame(Year = year(first_two), R2 = as.numeric(first_two))
ds2$Year <- ds2$Year - 1
ds <- merge(ds1,ds2)
ds$Rally <- ds$R5*ds$R2 - 1
Let us consider some summary statistics. On average, we observe that this rally is about 1.67%, a little bit higher than the number reported by the journal
[1] 0.01673603
At the same time, there seems a lot variability over time
boxplot(ds$Rally, pch = 20,
cex = 0.5, col = "gray")
grid(10)

Nonetheless, we also note that this rally is positive 78% of the time, which is close to the 80% statistic reported by the journal
round(mean(ds$Rally > 0),2)
[1] 0.78
Finally, let us consider how this rally has changed over time. To do so, we consider a 20 years rolling window. For each window, we compute the proportion of years for which the rally is positive.
prop_ts <- rollapply(ds$Rally,20,function(x) mean(x > 0)
,align = "right",fill = NA)
years_xts <- ceiling_date(ymd(ds$Year*10000 + 101),"y") - 1
names(prop_ts) <- years_xts
prop_ts <- as.xts(prop_ts)
prop_ts <- na.omit(prop_ts)
plot(prop_ts,main = "20 Years Rolling Window")

Interestingly, we observe that the rally were highest during the mid-1970s, whereas its lowest level reaches 65% during the mid-1990s, followed by an upward trend over the last three decades.
In terms of downside risk, let us consider the value-at-risk (VaR) of pursuing this strategy over the whole period.
1%
6
We note that the 99% VaR is roughly 6%. This result implies that for 1 out of 100 years, there is a chance losing more than 6% if one were to pursue the Santa Claus Rally.
Note
The above analysis is backward-looking and does not guarantee whether these results will necessarily hold true moving forward. While the rally seems to be persistent over time with an average of 1.67% return over the seven days period, it also exhibits large variability and could result in more than 6% loss if the downside risk materializes. Of course, as long as one is trading without leverage, 6% seems as a small drop once every hundred years. Otherwise, a 6% drop can trigger large liquidity shocks, leading to greater losses and uncertainty in the market.
LS0tCnRpdGxlOiAiU2FudGEgQ2xhdXMgUmFsbHkiCiNvdXRwdXQ6IHJtYXJrZG93bjo6Z2l0aHViX2RvY3VtZW50Cm91dHB1dDoKICBodG1sX25vdGVib29rOiBkZWZhdWx0CiAgcGRmX2RvY3VtZW50OiBkZWZhdWx0CmF1dGhvcjogTWFqZWVkIFNpbWFhbgpkYXRlOiBEZWMgMjcsIDIwMjEKZmlnX3dpZHRoOiA1MAotLS0KCk9uIERlYyAyNywgMjAyMSwgdGhlIFdhbGwgU3RyZWV0IEpvdXJuYWwgW2FydGljbGVdKGh0dHBzOi8vd3d3Lndzai5jb20vYXJ0aWNsZXMvZ2xvYmFsLXN0b2NrLW1hcmtldHMtZG93LXVwZGF0ZS0xMi0yNy0yMDIxLTExNjQwNTk1MjM5P21vZD1tYXJrZXRzX2xlYWRfcG9zMSkgbWVudGlvbmVkICB0aGF0IHRoZSAibGFzdCBmaXZlIHRyYWRpbmcgZGF5cyBvZiB0aGUgeWVhciBhbmQgdGhlIGZpcnN0IHR3byB0cmFkaW5nIGRheXMgb2YgdGhlIG5ldyB5ZWFyIGNvbXByaXNlIHRoZSAnU2FudGEgQ2xhdXMgUmFsbHknIGluIHRyYWRpbmcgbG9yZSwgYXMgZGV0YWlsZWQgaW4gdGhlIFN0b2NrIFRyYWRlcidzIEFsbWFuYWMuIEl04oCZcyBub3QgYSBiaWcgcmFsbHksIG9uIGF2ZXJhZ2UgYWRkaW5nIGFib3V0IDEuMyUsIGJ1dCBpdCdzIGNvbnNpc3RlbnQsIHNob3dpbmcgdXAgYWJvdXQgODAlIG9mIHRoZSB0aW1lLiIKCkluIHRoZSBmb2xsb3dpbmcsIHdlIHdpbGwgZXZhbHVhdGUgaG93IHBlcnNpc3RlbnQgdGhpcyByYWxseSB1c2luZyByZXR1cm5zIG9uIHRoZSBTXCZQIDUwMCBpbmRleC4gVGhlIHRpbWUgc2VyaWVzIGRhdGVzICBiYWNrIHRvIDE5MjguCmBgYHtyLCBtZXNzYWdlPUYsIHdhcm5pbmc9Rn0KbGlicmFyeShxdWFudG1vZCkKbGlicmFyeShsdWJyaWRhdGUpCmdldFN5bWJvbHMoIl5HU1BDIixmcm9tID0gIjE5MDAtMDEtMDEiKQpQIDwtIEdTUEMkR1NQQy5BZGp1c3RlZApSIDwtIG5hLm9taXQoUC9sYWcoUCkpIC0gMQpwbG90KGN1bXN1bShSKSkKYGBgCgpDb25zaXN0ZW50IHdpdGggdGhlIGFydGljbGUsIGxldCB1cyBjb25zaWRlciB0aGUgbGFzdCBmaXZlIHRyYWRpbmcgZGF5cyBvZiB0aGUgeWVhciBhcyB3ZWxsIGFzIHRoZSBmaXJzdCB0d28gdHJhZGluZyBkYXlzIG9mIHRoZSBmb2xsb3dpbmcgeWVhci4gSW4gb3JkZXIgdG8gZXh0cmFjdCB0aGVzZSBkYXlzLCBJIHVzZSB0aGUgZm9sbG93aW5nIHRyaWNrCmBgYHtyfQpsYXN0X2ZpdmUgPC0gYXBwbHkueWVhcmx5KFIsZnVuY3Rpb24oeCkgKHByb2QodGFpbCh4LDUpKzEpKSkKZmlyc3RfdHdvIDwtIGFwcGx5LnllYXJseShSLGZ1bmN0aW9uKHgpIChwcm9kKGhlYWQoeCwyKSsxKSkpCgoKYGBgCkdpdmVuIHRoZSBhbm51YWwgZGF0YSwgSSBtZXJnZSB0aGVtIGJhc2VkIG9uIHRoZSB5ZWFyIGluIHRoZSBmb2xsb3dpbmcgd2F5CmBgYHtyfQpkczEgPC0gZGF0YS5mcmFtZShZZWFyID0geWVhcihsYXN0X2ZpdmUpLCBSNSA9IGFzLm51bWVyaWMobGFzdF9maXZlKSkKZHMyIDwtIGRhdGEuZnJhbWUoWWVhciA9IHllYXIoZmlyc3RfdHdvKSwgUjIgPSBhcy5udW1lcmljKGZpcnN0X3R3bykpCmRzMiRZZWFyIDwtIGRzMiRZZWFyIC0gMQpkcyA8LSBtZXJnZShkczEsZHMyKQpkcyRSYWxseSA8LSBkcyRSNSpkcyRSMiAtIDEKYGBgCgpMZXQgdXMgY29uc2lkZXIgc29tZSBzdW1tYXJ5IHN0YXRpc3RpY3MuIE9uIGF2ZXJhZ2UsIHdlIG9ic2VydmUgdGhhdCB0aGlzIHJhbGx5IGlzIGFib3V0IDEuNjdcJSwgYSBsaXR0bGUgYml0IGhpZ2hlciB0aGFuIHRoZSBudW1iZXIgcmVwb3J0ZWQgYnkgdGhlIGpvdXJuYWwKYGBge3J9Cm1lYW4oZHMkUmFsbHkpCmBgYApBdCB0aGUgc2FtZSB0aW1lLCB0aGVyZSBzZWVtcyBhIGxvdCB2YXJpYWJpbGl0eSBvdmVyIHRpbWUKYGBge3J9CmJveHBsb3QoZHMkUmFsbHksIHBjaCA9IDIwLAogICAgICAgIGNleCA9IDAuNSwgY29sID0gImdyYXkiKQpncmlkKDEwKQpgYGAKTm9uZXRoZWxlc3MsIHdlIGFsc28gbm90ZSB0aGF0IHRoaXMgcmFsbHkgaXMgcG9zaXRpdmUgNzhcJSBvZiB0aGUgdGltZSwgd2hpY2ggaXMgY2xvc2UgdG8gdGhlIDgwXCUgc3RhdGlzdGljIHJlcG9ydGVkIGJ5IHRoZSBqb3VybmFsIApgYGB7cn0Kcm91bmQobWVhbihkcyRSYWxseSA+IDApLDIpCmBgYAoKRmluYWxseSwgbGV0IHVzIGNvbnNpZGVyIGhvdyB0aGlzIHJhbGx5IGhhcyBjaGFuZ2VkIG92ZXIgdGltZS4gVG8gZG8gc28sIHdlIGNvbnNpZGVyIGEgMjAgeWVhcnMgcm9sbGluZyB3aW5kb3cuIEZvciBlYWNoIHdpbmRvdywgd2UgY29tcHV0ZSB0aGUgcHJvcG9ydGlvbiBvZiB5ZWFycyBmb3Igd2hpY2ggdGhlIHJhbGx5IGlzIHBvc2l0aXZlLgpgYGB7cn0KcHJvcF90cyA8LSByb2xsYXBwbHkoZHMkUmFsbHksMjAsZnVuY3Rpb24oeCkgbWVhbih4ID4gMCkKICAgICAgICAgICxhbGlnbiA9ICJyaWdodCIsZmlsbCA9IE5BKQp5ZWFyc194dHMgPC0gY2VpbGluZ19kYXRlKHltZChkcyRZZWFyKjEwMDAwICsgMTAxKSwieSIpIC0gMQpuYW1lcyhwcm9wX3RzKSA8LSB5ZWFyc194dHMKcHJvcF90cyA8LSBhcy54dHMocHJvcF90cykKcHJvcF90cyA8LSBuYS5vbWl0KHByb3BfdHMpCnBsb3QocHJvcF90cyxtYWluID0gIjIwIFllYXJzIFJvbGxpbmcgV2luZG93IikKYGBgCgpJbnRlcmVzdGluZ2x5LCB3ZSBvYnNlcnZlIHRoYXQgdGhlIHJhbGx5IHdlcmUgaGlnaGVzdCBkdXJpbmcgdGhlIG1pZC0xOTcwcywgd2hlcmVhcyBpdHMgbG93ZXN0IGxldmVsIHJlYWNoZXMgNjVcJSBkdXJpbmcgdGhlIG1pZC0xOTkwcywgZm9sbG93ZWQgYnkgYW4gdXB3YXJkIHRyZW5kIG92ZXIgdGhlIGxhc3QgdGhyZWUgZGVjYWRlcy4gCgpJbiB0ZXJtcyBvZiBkb3duc2lkZSByaXNrLCBsZXQgdXMgY29uc2lkZXIgdGhlIHZhbHVlLWF0LXJpc2sgKFZhUikgb2YgcHVyc3VpbmcgdGhpcyBzdHJhdGVneSBvdmVyIHRoZSB3aG9sZSBwZXJpb2QuIApgYGB7cn0KVmFSXzk5IDwtIG1lYW4oZHMkUmFsbHkpIC0gcXVhbnRpbGUoZHMkUmFsbHksMC4wMSkKcm91bmQoVmFSXzk5LDIpKjEwMApgYGAKV2Ugbm90ZSB0aGF0IHRoZSA5OVwlIFZhUiBpcyByb3VnaGx5IDZcJS4gVGhpcyByZXN1bHQgaW1wbGllcyB0aGF0IGZvciAxIG91dCBvZiAxMDAgeWVhcnMsIHRoZXJlIGlzIGEgY2hhbmNlIGxvc2luZyBtb3JlIHRoYW4gNlwlIGlmIG9uZSB3ZXJlIHRvIHB1cnN1ZSB0aGUgU2FudGEgQ2xhdXMgUmFsbHkuIAoKCiMgTm90ZQpUaGUgYWJvdmUgYW5hbHlzaXMgaXMgYmFja3dhcmQtbG9va2luZyBhbmQgZG9lcyBub3QgZ3VhcmFudGVlIHdoZXRoZXIgdGhlc2UgcmVzdWx0cyB3aWxsIG5lY2Vzc2FyaWx5IGhvbGQgdHJ1ZSBtb3ZpbmcgZm9yd2FyZC4gV2hpbGUgdGhlIHJhbGx5IHNlZW1zIHRvIGJlIHBlcnNpc3RlbnQgb3ZlciB0aW1lIHdpdGggYW4gYXZlcmFnZSBvZiAxLjY3XCUgcmV0dXJuIG92ZXIgdGhlIHNldmVuIGRheXMgcGVyaW9kLCBpdCBhbHNvIGV4aGliaXRzIGxhcmdlIHZhcmlhYmlsaXR5IGFuZCBjb3VsZCByZXN1bHQgaW4gbW9yZSB0aGFuIDZcJSBsb3NzIGlmIHRoZSBkb3duc2lkZSByaXNrIG1hdGVyaWFsaXplcy4gT2YgY291cnNlLCBhcyBsb25nIGFzIG9uZSBpcyB0cmFkaW5nIHdpdGhvdXQgbGV2ZXJhZ2UsIDZcJSBzZWVtcyBhcyBhIHNtYWxsIGRyb3Agb25jZSBldmVyeSBodW5kcmVkIHllYXJzLiBPdGhlcndpc2UsIGEgNlwlIGRyb3AgY2FuIHRyaWdnZXIgbGFyZ2UgbGlxdWlkaXR5IHNob2NrcywgbGVhZGluZyB0byBncmVhdGVyIGxvc3NlcyBhbmQgdW5jZXJ0YWludHkgaW4gdGhlIG1hcmtldC4KCgoKCgoK