I have had this conversation with many friends now. Many people think SIP (systematic investment plans) is THE best way of investing in stock market. Sure, having discipline to invest in systematic manner is a virtue which I admire. But there are some glaring myths about SIPs which bother me whenever someone mentions SIP and I have to list them down.
Myth#1 : SIP reduce volatility of your investment
What bothers me most is the fact that people believe that they reduce volatility of their portfolio by investing via SIP. This is plain wrong. Volatility is nothing but standard deviation of returns over series of periods. It has no bearing on how much capital you have in your account but rather on when the capital is kept aside for investment. That is, unless you have all the cash that you are ever going to invest in SIP and calculate return on the whole amount such that initial large portion of capital is earning fixed return, you are really not reducing volatility of your investments by investing in SIP
Myth#2 : Drawdowns are reduced in SIP by LARGE amount / Drawdowns are more palatable.
Yes, SIP MAY reduce drawdowns. But, from many tests I have done, during crisis periods they are not reduced to levels which people are comfortable with.
Finally, I would like to share this graph which shows comparison of SIP into SPX vs. SIP into 10Y US Treasuries (with R code of the analysis at the end of post)
Note that at end of 2010 i.e. after 20 years of starting the SIP investments, you would have ended up with similar amounts in both cases.
In conclusion, SIP investments in stock markets do provide you disciplined way of getting exposure to stock markets but they definitely don’t shield you from the volatilities and drawdowns of the stock market.
Code to reproduce above graph
library("quantmod") library("PerformanceAnalytics") getSymbols("SPX", from="1989-01-01") SPX <- to.quarterly(Ad(SPX), drop.time = FALSE, indexAt = 'endof') SPX <- cbind(Cl(SPX), Return.calculate(Cl(SPX))) names(SPX) <- c("close", "ret") RFR <- getSymbols("DGS10", src="FRED", from="1989-01-01", auto.assign = FALSE) names(RFR) <- "RFR" SPX <- cbind(SPX, lag(RFR[index(SPX)]/400))['1990/'] SPXIndCumRets <- do.call(cbind, sapply(1:nrow(SPX), function(i) cumprod(SPX$ret[i:nrow(SPX)]+1))) RFRIndCumRets <- do.call(cbind, sapply(1:nrow(SPX), function(i) cumprod(SPX$RFR[i:nrow(SPX)]+1))) SPXSIPEq <- xts(rowSums(SPXIndCumRets, na.rm=T), order.by = index(SPXIndCumRets)) RFRSIPEq <- xts(rowSums(RFRIndCumRets, na.rm=T), order.by = index(RFRIndCumRets)) Comparison <- cbind(SPXSIPEq, RFRSIPEq) names(Comparison) <- c("SPX_SIP", "Treas10Y_SIP") plot.xts(Comparison, legend.loc = 'topleft', cex = 1)