# Two published intraday strategies, tested on NIFTY 50 stocks: an edge that fades and one that isn't there

> A noise-band breakout from "Beat the Market" and the market intraday momentum effect, applied to every NIFTY 50 stock from 2016. The first had a real edge that shrank every period; the second has almost none.

- Published: 2026-10-07
- URL: https://datapointx.com/research/in/academic-strategies-in-india/
- Tags: academic-research, momentum, strategy-test
- Verdict: Noise band −₹1.53 Cr, edge 5.7 → 1.5 bps over three periods. Intraday momentum: 0.1 bps before costs.
- Source: DataPointX Research (education and research only, not investment advice)

Academic papers are a better source of trading ideas than YouTube: the rules are exact and the tests are careful.
But they're usually tested on US markets, often on an index fund rather than single stocks. We took two well-known
intraday papers and applied their rules to every NIFTY 50 stock from January 2016 to August 2026, with Indian costs.

**Not the papers' own tests.**

These are our per-stock adaptations on Indian data, not reproductions of the papers' results. Both papers studied
the US market through an S&P 500 index fund.

## 1. The noise band ("Beat the Market", Zarattini, Aziz and Barbon, 2024)

**The idea:** most intraday moves stay inside a "noise" band that can be estimated from recent days. Price leaving the
band suggests real demand, so trade in that direction.

**Our rules, per stock:** the band is centred on the larger (or smaller) of today's open and yesterday's close, and
is as wide as the stock's average absolute move from the open at the same time of day over the last 14 days. Every
half hour from 10:00, go long above the upper band or short below the lower band. Exit when price crosses back
through the band or VWAP (or at 15:15).

Unlike most setups we test, this one has a real edge: +4.1 bps per trade before costs, and the stocks it picks beat
random stocks at the same minute in all 200 of our random runs. But the edge isn't large enough to pay for a round
trip, and it has shrunk in each period:

A wider band (1.5×) trades less and loses less, −₹71 lakh. Holding to the close instead of trailing doubles the win
rate to 47% but still loses ₹95 lakh. All three versions lost the most in 2024–26.

## 2. Intraday momentum (Gao, Han, Li and Zhou, 2018)

**The idea:** the market's return in the first half hour predicts its return in the last half hour, and the authors link
it to investors who rebalance or trade late in the day.

**Our rules, per stock:** take each stock's return from the previous close to 09:45. Near the end of the day, enter in
that direction and close at 15:15. We tried no threshold, moves above 0.5% and above 1%, and entries at 14:45 and
14:15.

On single NIFTY 50 stocks there's almost nothing there: +0.1 to +0.6 bps per trade before costs, and in 2024–26 the
edge is zero or negative in three of the four versions. A 30-minute trade can't pay 6.5 bps of costs from a fraction
of a basis point. Every version lost money in all eleven years.

| Variant | Trades | Gross / trade | Win % | Net after costs | Net with +3 bps | 2016-20 | 2021-23 | 2024-26 |
|---|---:|---:|---:|---:|---:|---:|---:|---:|
| Noise band (1x), trailing exit | 1,27,985 | 4.1 bps | 23.8% | −₹1.53 Cr | −₹5.37 Cr | −₹25.2 L | −₹48.3 L | −₹80.0 L |
| Noise band (1x), hold to 15:15 | 75,420 | 4.0 bps | 47.3% | −₹94.5 L | −₹3.20 Cr | −₹21.1 L | −₹18.6 L | −₹54.8 L |
| Noise band (1.5x), trailing exit | 78,165 | 4.7 bps | 24.7% | −₹71.2 L | −₹3.05 Cr | −₹1.7 L | −₹17.7 L | −₹51.8 L |
| Intraday momentum, any move, enter 14:45 | 1,28,299 | 0.1 bps | 41.6% | −₹4.09 Cr | −₹7.93 Cr | −₹1.86 Cr | −₹1.15 Cr | −₹1.07 Cr |
| Intraday momentum, move > 0.5%, enter 14:45 | 73,555 | 0.4 bps | 42.3% | −₹2.25 Cr | −₹4.45 Cr | −₹1.08 Cr | −₹61.5 L | −₹54.9 L |
| Intraday momentum, move > 1%, enter 14:45 | 36,831 | 0.5 bps | 42.9% | −₹1.09 Cr | −₹2.20 Cr | −₹49.9 L | −₹30.3 L | −₹29.3 L |
| Intraday momentum, move > 0.5%, enter 14:15 | 73,555 | 0.6 bps | 44.2% | −₹2.15 Cr | −₹4.35 Cr | −₹1.04 Cr | −₹52.4 L | −₹58.5 L |

_₹5 lakh per trade, 5-minute bars, v2026.08 snapshot (Jan 2016 – Aug 2026), NIFTY 50 point-in-time members, discount-broker (₹20/order) and statutory charges + 1 bp slippage per fill._

## What to take from this

- **A real edge can still be untradeable.** The noise band picks better stocks than chance and still loses after
  costs. Always compare the edge with the cost of a round trip.
- **Check whether the edge is shrinking.** A strategy that earned 5.7 bps in 2016–20 and 1.5 bps in 2024–26 is
  telling you where it's heading.
- **An index result doesn't carry over to single stocks automatically.** Both papers studied a US index fund; on
  individual Indian stocks the effects are weaker or absent.

### The exact code we ran

```python
def noise_band(mult=1.0, exit='trail'):
    """Zarattini, Aziz & Barbon (2024), "Beat the Market", per stock. Noise band around max/min(today's open, previous
    close): +/- mult x the average absolute move from the open at the same time of day over the last 14 days. At every
    HH:00 / HH:30 from 10:00, go long above the upper band or short below the lower band. exit='trail': close when
    price crosses back through max(band, VWAP); 'eod': hold to 15:15."""
    def strategy(p):
        move = (p.close / p.day_open - 1).abs()
        sigma = move.groupby(p.tod.values).transform(lambda x: x.rolling(14, min_periods=10).mean().shift(1))
        pc = p.prev_day('close')
        upper = np.maximum(p.day_open, pc) * (1 + mult * sigma)
        lower = np.minimum(p.day_open, pc) * (1 - mult * sigma)
        end = p.tod + p.minutes
        check = p.bcast((end >= bt.hm('10:00')) & (end % 30 == 0))
        sig = dict(long=check & (p.close > upper), short=check & (p.close < lower))
        if exit == 'trail':
            sig['long_exit'] = p.close < np.maximum(upper, p.vwap)
            sig['short_exit'] = p.close > np.minimum(lower, p.vwap)
        return bt.Signals(**sig)
    return strategy
```
