Lineage: The only trend-confirmation signal in the deployment series, run as a single configuration rather than a threshold sweep.
The premise
The 50/200-day moving-average crossover is among the oldest systematic signals in equity markets. When the 50-day average sits above the 200-day, the reading is that the long-term trend has turned upward. Applied to a monthly contribution, the logic is straightforward: hold cash while the trend is unclear, deploy once the market has confirmed it, and avoid paying up during declines. Only invest when the trend is on your side.
The appeal is that it requires no forecast. It waits for evidence. This study asks what that evidence costs.
How the strategy works
One mechanical detail matters more than the name suggests. The code checks the crossover once a month, on the day that month's ₹10,000 contribution lands, using the previous trading day's average values. It is not a continuous detector that fires the instant the two lines cross. It is a monthly trend gate asking whether the 50-day sits above the 200-day today, and it either deploys the entire accumulated bank or leaves it banked for another month.
That distinction explains the trade count. A signal here means a monthly check that found a valid reading, not a discrete crossover event, so 357 of them across 30 years is unremarkable. It is roughly one a month once the 200-day average has enough history to compute at all.
The setup
A bank account receives ₹10,000 on the first trading day of each month, compounding daily at 5% annualised on actual calendar-day gaps. If the previous day's 50-day average sits above its 200-day average, the full bank balance deploys into Nifty at that day's open at a 0.03% transaction cost. Before the 200-day average has enough history, the code deploys that month's contribution directly rather than banking it, the same warm-up rule Strategies 10 to 12 use. All units are held permanently. Nothing is ever sold, so no capital gains tax applies anywhere in this test.
There is no parameter grid. The two average lengths are fixed at 50 and 200, which is the point: this is a single-point test of a named signal, not a search. The benchmark is a capital-matched monthly SIP, ₹10,000 on the first trading day of each month at the same 0.03% cost, over 1995-11-03 to 2026-05-05. It returns 11.9907% XIRR and a final portfolio of ₹326.41 lakh.
What happened
Across 30.5 years the strategy ran 357 monthly checks, found the trend positive and deployed on 238 of them, and stayed in cash through 119 negative months. Adding the ten warm-up months deployed before the 200-day average existed brings total trades to 248.
| Metric | Golden cross | SIP |
|---|---|---|
| XIRR | 11.9803% | 11.9907% |
| Final portfolio | ₹325.73 lakh | ₹326.41 lakh |
| MOIC | 8.8754x | 8.8941x |
| Alpha | -0.0104 pp | n/a |
Additional wealth against the SIP is -₹68,863, on contributed capital of ₹36.70 lakh, with ₹20,047 still sitting in the bank on the final day. Strategy Sharpe came to 0.7817 and Sortino to 1.6191. The published study states no SIP-side counterpart for either, so no comparison is available.
This is not the figure this study previously carried, and the difference is worth stating. An earlier run of the same script, before it acquired the warm-up rule, left roughly ten months of contributions in cash rather than deploying them. That version executed 238 trades and finished ₹1.03 lakh behind the SIP, with alpha of -0.016%, Sharpe 0.83 and Sortino 1.59. The signal-driven trade count and the skipped-signal count are identical across both runs. Only the ten warm-up deployments changed, and they were enough to more than halve the shortfall. The direction did not move.
Where it fails
The failure is structural, and the golden cross makes it unusually visible. A moving-average crossover confirms a trend only after that trend has established itself. Nifty spends most of its multi-decade history climbing, so waiting for confirmation means holding cash through the early phase of rallies, which is exactly when compounding does the most work.
The arithmetic is unforgiving. A 5% bank rate against a roughly 12% equity return is a seven-percentage-point drag for every day the balance sits uninvested, and that drag accumulates across all 119 skipped months plus the ₹20,047 left idle at the end. Nothing about the entry prices obtained on the 248 deployments compensates for it.
The monthly check is also not selective. It deploys on 238 of 357 opportunities, and many of those positive readings were not clean trend initiations at all, but crossovers inside a broader sideways or declining stretch that reversed shortly after. A signal firing two-thirds of the time is not filtering much.
What separates this from a mistuned threshold elsewhere in the series is that no setting would rescue it. The cost is built into what a lagging, once-a-month signal does on a single long-only asset that trends upward.
Verdict
The 50/200-day golden cross, checked monthly and used as a deployment trigger over a bank-accumulation framework, underperformed a plain SIP by ₹68,863 across 30.5 years, an alpha of -0.0104 percentage points. That gap is smaller than this study previously reported, because the surviving script deploys ten warm-up months an earlier version left idle, but the conclusion is unchanged. Trend confirmation cost more in delayed deployment than it returned in better entry prices. On a single long-only asset that rises across most multi-decade windows, waiting for proof that the trend has turned is the wrong question to be asking. Run the SIP and skip the cross.
Appendix: assumptions and methodology
- Data. Nifty 50 daily prices from
nifty50_research_master.parquet, 1995-11-03 to 2026-05-05, about 30.5 years, index level only. - Benchmark. Monthly SIP, ₹10,000 on the first trading day of each month, 0.03% cost, no bank: 11.9907% XIRR, ₹326.41 lakh final.
- Tax. None modelled, and none applies. Units are bought and held permanently, so no gain is ever realised.
- Bank. ₹10,000 credited monthly, compounding daily at 5% annualised until the cross is active or the warm-up rule spends the contribution.
- Signal. Previous trading day's 50-day average above its 200-day average, checked once a month on the contribution date. No check is possible until the 200-day average has history, roughly the first ten months.
- Counts. 357 monthly checks, 238 positive-signal deployments, 119 skips, 10 warm-up deployments, 248 trades total, from the STRATEGY sheet and
strategy6__DETAIL_COUNTS.csv. - Not modelled. Year-by-year returns, split-period figures, brokerage beyond 0.03%, slippage, dividend reinvestment.
- Not tested. Any parameter variation: different average lengths, a Nifty 500 version, or a fallback rule for skipped signals.
- Withheld. Nothing. The 50/200 crossover is public and carries no configuration worth protecting, which is why this study states its rule in full where the grid studies do not.
- Superseded figures. The earlier run without the warm-up rule produced 238 trades and a ₹1.03 lakh shortfall. That workbook does not survive; those figures come from the published snapshot fetched 2026-09-11 and are quoted for comparison only.
Comments
Questions and notes