I Tried Building a Simple Momentum Strategy on Indian Sector ETFs.
--
A lot of strategies look brilliant until you ask one inconvenient question: can you actually trade them?
Most backtests fail that question.
They look sharp in a chart, elegant in a notebook, and totally unconvincing the moment you ask what you would actually buy on Monday morning.
That was the starting point for this experiment.
I wanted to test a very simple idea:
If I rotate across Indian sector and theme indices using momentum, but keep only the parts of the universe that are actually tradeable through ETFs, does anything still look compelling?
That turned out to be a much better question than “what is the highest return I can get from a backtest?”
The setup
The strategy itself is almost boring on purpose:
- Take a basket of Indian sector and theme indices.
- Measure trailing momentum over a fixed lookback window.
- Rank the basket.
- Hold the top names with equal weight.
- Rebalance on a fixed schedule.
No machine learning.
No macro overlay.
No complicated regime filter.
Just a rules-based momentum rotation.
For each configuration, I tracked:
- Total return
- CAGR
- Sharpe ratio
- Maximum drawdown
- Calmar ratio
I also compared the strategy against NIFTY 50 whenever the benchmark series was available.
The most important decision: make it tradeable
The original index universe was wider.
But that quickly ran into a familiar problem: some indices are interesting on paper and awkward in practice.
So for the daily strategy, I filtered the universe down to indices where I could verify a real ETF wrapper through official exchange or AMC sources.
That left me with this ETF-backed basket:
NIFTY AUTONIFTY BANKNIFTY COMMODITIESNIFTY CONSUMPTIONNIFTY CPSENIFTY ENERGYNIFTY FIN SERVICENIFTY FMCGNIFTY HEALTHCARENIFTY INDIA MFGNIFTY INFRANIFTY IT
And just as important, I skipped the indices where I could not cleanly verify an ETF product.
That changed the tone of the entire exercise.
It stopped being about how flashy the result could look and became about what still looked interesting after a basic reality check.
How I tested it
I ran a parameter sweep across:
- Lookback windows:
20, 30, 50, 75, 100, 125, 150, 200 - Rebalance frequency:
1, 3, 5, 10, 15, 20trading days - Number of holdings:
1, 2, 3, 4, 5, 6, 8, 10
That gave me 384 strategy combinations in the ETF-filtered universe.
I was not looking for a magical number.
I was looking for shape.
Specifically:
- Does shorter momentum work better than longer momentum?
- Does concentration help or hurt?
- Does slower rebalancing reduce noise or just delay reaction?
That kind of pattern is much more useful than one isolated “best” result.
What stood out almost immediately
The strongest setups were not the broadest ones.
They were concentrated.
Again and again, the better results tended to lean toward:
- medium-term lookback windows
- very small portfolios
- moderate rebalancing frequency
In plain English, the system seemed to prefer conviction over diversification.
This universe did not reward “own a little of everything.”
It rewarded picking the strongest leadership and actually letting it matter.
The setup that kept rising to the top
One combination kept showing up in the right places:
- Lookback:
50trading days - Rebalance: every
5trading days - Holdings:
top 1
Its results were:
- Total return:
857.79% - CAGR:
22.40% - Max drawdown:
-24.03% - Sharpe:
1.10 - Calmar:
0.93
That is what made it interesting to me.
Not just the return.
The return relative to the pain.
Momentum strategies can always find ways to look heroic if you are willing to tolerate ugly drawdowns. What caught my attention here was that this setup was strong on return while still keeping drawdown in a range that felt severe, but believable.
Not comfortable.
But believable.
A few other combinations also looked strong
When I ranked the sweep by Calmar ratio, the leaders clustered in a very similar neighborhood:
50 / 5 / 150 / 3 / 150 / 1 / 175 / 5 / 1
That is a useful signal.
When the same region of parameter space keeps resurfacing, it usually means you are seeing something structural rather than one lucky row.
The message was pretty clear:
In this ETF-backed sector universe, medium-term momentum plus concentrated exposure seems to work better than broad, highly diversified rotation.
The drawdown reality check
Every momentum strategy eventually has to answer the same uncomfortable question:
What did it feel like on the way up?
The answer here is simple:
Good returns were not free.
Even the better setups came with real drawdowns.
Some of the lower-drawdown combinations in the corrected sweep were roughly:
50 / 5 / 1with drawdown around-24%50 / 1 / 1with drawdown around-26%150 / 10 / 2with drawdown around-26.5%
That is useful context because it keeps the result honest.
This is not a low-volatility strategy wearing a momentum label.
It is still a momentum strategy. It still rotates into leadership. It still exposes you to reversal risk when trends change fast.
But after restricting the universe to ETF-backed indices, the better configurations no longer looked absurd. They looked testable.
What I was careful about
I wanted this to be more than a nice chart, so I tried to be disciplined about the mechanics.
Things I explicitly took care of:
- Kept daily and intraday logic separate, so the daily strategy really uses day-based lookbacks and rebalances
- Normalized CSV column names to avoid casing issues across files
- Measured CAGR using the actual backtest duration
- Benchmarked against
NIFTY 50where possible - Filtered the daily universe down to indices with a verified ETF route
- Kept the experiment anchored to something investable rather than purely theoretical
None of that is glamorous.
But this is often where research either becomes useful or falls apart.
What this still does not include
This is not a production-ready portfolio system.
It is still research.
There are important things I have not modeled yet:
- Transaction costs
- Slippage
- ETF tracking error relative to the underlying index
- Liquidity constraints
- Tax assumptions
- Turnover analysis
- Walk-forward testing
So I would not frame this as “ready to deploy.”
I would frame it as:
A promising directional result that became more credible once tradeability was taken seriously.
My biggest takeaway
The interesting lesson here is not that momentum works.
We already know momentum can work.
The more interesting lesson is this:
Once you force the universe to be tradeable, once you stop hiding behind unbuyable indices, and once you keep the rules simple, some ideas still survive.
That is a much stronger signal than a spectacular backtest built on a fantasy universe.
If I were taking this further, I would start from the 50-day lookback / 5-day rebalance / top 1 configuration and push in three directions:
- Use actual ETF price series instead of index proxies
- Add transaction costs and turnover assumptions
- Test whether slightly broader versions like
top_n = 2offer a better psychological tradeoff, even if they are not the absolute winner
For now, though, I like where this landed.
Not because it found a perfect strategy.
But because after adding a few real-world constraints, it still found something worth paying attention to.
References
The ETF availability checks were based on official exchange and AMC sources
Data source: https://www.kaggle.com/datasets/debashis74017/nifty-50-minute-data/data
Github: https://github.com/tanmaycodes13/python-notebooks/blob/main/index_momentum.py