Category: Investing Insight

Investing insight to make you a better investor.

SMA Strategies using ETFs

A simple moving average of an index is nothing but the average of closing prices of that index over a specified period of time. We did a quick backtest to see how an SMA based toggle between going long an index vs. cash performed.

Cumulative returns

NIFTY 50

NIFTY%2050

NIFTY MIDCAP 100

NIFTY%20MIDCAP%20100

NIFTY SMLCAP 100

NIFTY%20SMLCAP%20100

Feasibility

The backtest, unsurprisingly, shows that shorter the SMA look-back period, better the performance. However, the boost in performance comes at the expense of higher number of trades. Lower look-backs are only viable now thanks to brokerages where you would pay zero for these trades (however, you still pay the securities transaction tax.) To see how this would shake out in the real world, have a look at how our Tactical Midcap 100 Theme has performed in the last ~2 years:

The Theme used the M100 ETF (Motilal Oswal Midcap 100 ETF) with a 10-day SMA toggle to switch between the ETF and LIQUIDBEES. The blue line represents zero brokerage and 0.1% STT and the green line represents a brokerage of 5p and 0.1% STT. The chart shows it beating an actively managed midcap fund across all transaction fee scenarios.

The snag is that this strategy is tough to scale. The M100 ETF just doesn’t trade enough for this strategy to absorb more than Rs. 10 lakhs. And there is no small cap ETF on the horizon to implement the strategy in that space.

The second problem is that M100 trades to a wide premium/discount to NAV (see: ETF Premium/Discount to NAV.) This is another layer of risk that an investor could do without.

However, things seem to be moving in the right direction. Reliance Capital launched a new ETF recently that tracks the NIFTY MIDCAP 150 index. Their ETFs usually trade better – tighter spreads, narrower tracking errors, better liquidity. Hopefully, it will emerge as a stronger alternative to M100 and allow these strategies to scale. We setup the Tactical Midcap 150 Theme that uses the RETFMID150 ETF instead of the M100 ETF for those who are interested.

In Part II, we will see how adding a simple check on the SMA can reduce drawdowns.

Code and charts are on github.

Getting Bullish on Crypto

Jan 2018 was the height of crypto-fever. Every punter I knew was “trading” it. Then came crypto-winter. Then the RBI banned banks from doing business with any entity dealing with cryptos. And now we are going through a new phase: crypto-indifference.

Bitcoin was hailed as “digital gold.” And crypto’s were supposed to supplant fiat currency (aka, regular currency) as a store of value and a medium of exchange. Never going to happen. And that is a good thing.

I had talked quite a few of our investors out of “investing” into cryptos last year. And it proved to be a good call. Now is the time to have a re-look.

Will crypto’s ever be a store of value or a medium of exchange or an alternative to fiat currency? No. But they don’t need to be any of those to be useful. There are a lot of use-cases where a “score” needs to be kept within a closed network. Situations like voting within your apartment complex or splitting bills with your roommates or friends. There are micro-payment use-cases where you don’t need to have a charge-back facility. I see the core ideas behind the crypto+blockchain toolset being embedded in applications that a network would use everyday. And there is sufficient plumbing available now to do these experiments faster.

It is still an open question as to who and how these will be monetized. But now that the punters have pretty much written off cryptos, it allows the space to step back and innovate without the distractions of a ticker-tape.

Does this mean that you should go out and buy a bunch of bitcoin? No! I remain bearish on the price of all cryptos, including bitcoin. But I am now bullish on their value.

The futility of market timing?

We recently came across an article put out by Albert Bridge Capital titled the “The futility of market timing.” You can read it here. The authors use the S&P 500 index to show that the gap between perfect market timing (always buying at the lows) vs. the worst market timing (always buying at the highs) doesn’t matter over long periods of time (20+ years.)

We were curious about how returns from the NIFTY 50 would look like if we ran the same experiment. We looked at consecutive 10- and 20-year rolling periods starting from 1991 where an investor buys Rs. 1 lakh of the index every year at

  1. the highest level of that year (H)
  2. the lowest level of that year (L)
  3. some random day (R)

We added the random scenario (#3) because that is more-or-less the opposite of trying to time the market.

10-year rolling-period returns:
nifty.market-timing.10.annual
20-year rolling-period returns:
nifty.market-timing.20.annual

Unlike the S&P 500, the NIFTY 50 has been an extremely volatile beast. And given the wide gap in terminal wealths, there is always going to be a temptation to try and time the NIFTY 50.

Code on github.

Stock and Bond Correlations and Volatility

Stocks and Bonds are not correlated. They are not negatively correlated. And neither are they positively correlated. One doesn’t “zig” when the other “zags.” This is exactly why portfolio allocations start with stocks and bonds – the diversification math works on uncorrelated asset classes. When you combine the two assets together you get lower portfolio volatility.

Here are some charts that show how the two asset classes differ:

S&P 500 and 3-month t-bills

sp500.tbill.correlation.1mo

sp500.tbill.volatility.1mo

Nifty 50 and 0-5 year TRI

nifty50.z5.correlation.1mo

nifty50.z5.volatility.1mo

Global Equities Momentum, Part IV

Our GEM backtest in Part III used a 12-month formation period to measure momentum. Here, we look at alternative formation periods with an eye on drawdowns.

6- through 12-month formation periods

GEM.6-12mo.cumulative

Even though the 10-month version has higher returns, the 6-month one has lower peak drawdowns.

The average of all

The problem with picking one formation period out of 6 is that it smells of data-mining. What happens if you average them all out?

GEM.avg.cumulative

The average works in reducing drawdowns compared to the traditional 12-month version.

GEM.avg.dd

GEM.m12.dd

We will setup a virtual portfolio for this “averaging” strategy and post the link here when it is up and running.

Code and more charts on github.