Author: shyam

Changepoints vs. Buy & Hold

A changepoint is a point in time where the statistical properties of a sequence change. For financial return series this typically means the mean, variance, or distribution of returns shifts — a stock that was trending sideways suddenly becomes volatile, or a calm market enters a turbulent regime.

Can we use changepoint detection to time exposure to the market and beat simple buy-and-hold, on a risk-adjusted basis, on India’s NIFTY indices?

First, we calculated an aggregate score using different changepoint algorithms to classify the return-series. This was done with both a sliding window and an expanding window of data.

Then, we tried the simplest use of the signal: be fully invested when STABLE, fully out when UNSTABLE. This binary approach underperformed buy-and-hold badly, on both return and Sharpe ratio, on every index.

Throughout the process, we kept a 50-day SMA as the base case to beat. It is a simple totem to keep us honest about the complexity vs. efficacy trade-off.

The problem with this binary approach is that volatility clusters – the worst days and the best days tend to occur together. However, changepoint is backward looking so you will end up catching the worst days and missing out on the best days.

To fix this, we added a direction condition: only treat instability as a reason to exit if the market is also in a downtrend (price below its 50-day moving average). Otherwise, stay invested through volatile-but-rising periods. It removes the worst part of the filter – exiting during uptrends.

metrics

The next step was to remove the binary nature of the strategy: size the position by mapping it to model confidence [0,1] and sizing only when the market is in a downtrend (close < 50-day MA); in uptrends, stay fully invested regardless of volatility.

metrics

This is how we narrowed in on Direction-Gated Continuous Sizing.

metrics

Sadly, using this technique instead of a basic SMA only made sense with the NIFTY 50 index. In every other situation, SMA won.

You can dig deeper here. Code and charts are on github.

Single Stock Momentum

Typically, momentum strategies create portfolios of 20-50 stocks. What if only a single stock was used?

Ammann, Manuel and Moellenbeck, Marcel and Schmid, Markus, Feasible Momentum Strategies in the US Stock Market (November 17, 2010, SSRN) explores precisely this idea (summary).

We ran a bunch of backtest scenarios adapted for the Indian market.

Methodology

  • Each month, stocks are ranked by past return over a formation period J (3, 6, or 12 months).
  • The best-performing stock(s) are “winners” (bought).
  • Short the NIFTY.
  • Positions are held for a holding period K (3, 6, or 12 months), using the standard overlapping-portfolio construction (K staggered investment “strands” so only 1/K of the book turns over each month).
  • A one-month lag is inserted between the formation period and the holding period to avoid short-term reversal effects.
  • Portfolios of 1, 3, 5, or 10 stocks N per side are tested (buying more than just the single best).

Paper Best

Using the “best” config in the paper, we realized that considering just returns without volatility leads to failure.

Beta hedging + Omega

Momentum stocks tend to be high beta, so instead of shorting the same notional, we shorted the beta. Besides, Sharpe penalizes volatility symmetrically. Omega with NIFTY as MAR penalizes only underperformance relative to the index.

Also, the training set pointed us toward a longer holding period K (6 vs. the paper’s 3) and a larger number of stocks in the portfolio N (3 vs. the paper’s 1).

With these changes, we were able to squeeze out 5 more points in the hedged variant and almost match the buy & hold momentum index in the long-only variant.

More details can be found here.

The most important contribution of this paper is the parameterization of the holding period and the usage of strands (portfolio sleeves) to create over-lapping portfolios. Something that can be carried over to future research in this area.

Code and charts on github.

Intramonth Momentum

Nathan, Daniel and Suominen, Matti and Tasa, Joni, The Intramonth Momentum Cycle (March 16, 2026, SSRN) discusses an end-of-month effect where the short-leg of a momentum strategy out-performs (summary).

The paper, however, conveniently leaves out borrow costs. Besides, in India, only stocks with futures listed can be shorted. When you include these constraints and add up transaction costs, the results are underwhelming.

Code and charts on github.

Day vs. Night Momentum

In Barardehi, Yashar and Bogousslavsky, Vincent and Muravyev, Dmitriy, What Drives Momentum and Reversal? Evidence from Day and Night Signals (February 6, 2023, SSRN) the authors posit that momentum is entirely an intraday phenomenon (summary).

The authors split the standard past-return momentum signal into its intraday and overnight components and test which piece actually predicts future returns. They find that intraday-signal momentum works – stocks with high past intraday returns keep outperforming – while past overnight returns show no significant predictive power for future returns.

What we found with Indian stocks:

tl;dr: while overnight returns under-perform, intraday returns also under-perform a “total” (close-to-close) return ranking scheme.

Code and charts on github.

VIX and Equity Index Returns, Part III

We had looked at using VIX for driving equity index positioning about eight years ago and had abandoned the idea having found no relationship between VIX levels and future returns (Part I, Part II). We found some modest success in using realized volatility to position towards a target volatility (Volatility Targeting). However, the idea of using VIX as a predictor of future equity returns refuses to die.

The correct time to take more equity risk is when VIX has been high for six months but has been trending down. The correct time to take less equity risk is when VIX has been low for six months but has been trending up. The target equity weight is then proportional to the target equity risk divided by VIX. Therefore, at most times, low VIX corresponds to high equity weight and high VIX to low equity weight.

Thanks to AI, we can now test this hypothesis out without wasting too much time. We got Claude to give us the long-only and long-short outlines and backtest plans (lo, ls). And then we got hermes + deepseek to execute this in R. The tl;dr is that inverse-volatility long-only is “good enough.”

The approach sounded good on the face of it but doesn’t bear scrutiny once you run the numbers through it.

Code and charts on github.