StockLearnGuides › Why most free NSE backtests are quietly wrong: the split & bonus adjustment nobody does
Data & method

Why most free NSE backtests are quietly wrong: the split & bonus adjustment nobody does

A 1:2 split makes ₹2,000 look like ₹1,000 overnight. Unadjusted history reads that as a 50% crash that never happened.

By ClusterMicro · Updated 2026-08-02 · 6 min read · Research & education

Here is a backtest failure that hides in plain sight. Suppose a stock trading at ₹2,000 does a 1-for-2 split. Overnight, its price becomes ₹1,000 — each share is now two shares worth half as much. Nothing was lost; your holding is worth exactly the same. But to a naive price history, that stock just fell 50% in a day. Run any return calculation or backtest across that date and it inherits a fake crash that never happened.

This is what split and bonus adjustment fixes, and it is the single most common reason free NSE backtests are quietly wrong. Most tools either skip it or apply it inconsistently — and the errors are invisible until you know to look for them.

Why raw prices lie

Corporate actions mechanically change a stock's quoted price without changing its value:

An adjusted price series rescales all the history before the event so the line is continuous — the split simply disappears from the chart and from every return computed across it. An unadjusted series leaves the cliff in. Any stock that has ever split or issued a bonus — and hundreds have — carries these landmines in its raw history.

Illustrative example

A stock closes at ₹2,000, then opens at ₹1,000 the next morning after a 1:2 split. Unadjusted, the return that day reads −50% and drags down every average, every drawdown, every backtest that spans it. Adjusted, the return reads ~0% — which is the truth. (Illustrative.)

How we handle it — including finding our own bug

StockLearn maintains an adjusted price series built from a corporate-actions table, and the adjustment step is wired directly into the nightly pipeline so it can never fall behind the data. That last part is not hypothetical: we once discovered that the adjustment build had not been wired into the daily run, so the adjusted column was going stale and raw prices were silently leaking into both the charts and the scanner — producing exactly the fake-crash returns described above on the corporate-action stocks. We found it, fixed the wiring, and cleared the hundreds of fabricated returns it had introduced.

Why we tell you that

Every data pipeline has bugs; the ones that matter are the silent ones. The difference is whether anyone measures their own output closely enough to catch them. Publishing that we found and fixed this — rather than pretending it never happened — is the honest version of "our data is clean." (Note: mutual fund NAVs from AMFI arrive already adjusted, so this is specifically a stock-price problem.)

The day it broke our own classifier

Our stage classification depends on where a stock sits relative to its 200-day moving average. In one pipeline run, the adjusted-close step did not complete before the classification step ran.

The result was unambiguous: the stage classification returned nothing at all for essentially the entire universe of roughly 1,930 stocks. Not wrong values — no values.

That is the small mercy in this particular failure. A price history containing artificial 50% gaps produces moving averages so distorted that downstream conditions simply stop holding, rather than quietly producing plausible-but-wrong labels. A silent version of the same bug would have been far worse.

The check that catches it

A classification step returning zero results across a universe of ~1,930 stocks is never correct. Any pipeline that can produce that outcome should treat it as a hard failure rather than a valid empty result. Ours now aborts instead of publishing.

Where adjustment gets genuinely hard

Splits and bonuses are arithmetic. The difficult cases are the ones where the adjustment factor isn't obvious.

Demergers. A company spins off a division; holders receive shares in a new entity and the parent's price drops. The correct adjustment depends on the relative value of the two pieces at the moment of separation, which is not knowable with precision on day one. A purely multiplicative adjustment — what most data sources apply, ours included — is an approximation.

Rights issues. The theoretical ex-rights price depends on the subscription price and take-up rate. The standard formula is, again, an approximation.

Dividend adjustment is a choice. Whether to adjust for dividends depends on what you are measuring: a total-return series needs it, a pure price-trend measure arguably doesn't. Mixing the two conventions inside one dataset is a real and quiet source of error.

Which series we use where

Moving averages, stage classification and return calculations run on adjusted closes, so no corporate action appears as a price move. Displayed prices — the last close on a stock page — are the actual traded prices, because that is what a reader recognises.

That split is standard practice, and it means a displayed price and a chart point can legitimately disagree for a stock with a recent corporate action.

Key takeaways

  • Splits and bonuses drop a stock's quoted price without any loss of value.
  • Unadjusted price history turns those events into fake crashes in every return and backtest.
  • Adjusted prices rescale the history so the event disappears — which is correct.
  • Many free tools skip or mis-apply this; the errors are invisible unless you check.
  • We wire adjustment into the nightly run, and we found and fixed our own lapse in it.
  • When our adjusted-close step didn't complete, stage classification returned nothing for ~1,930 stocks.
  • Demergers and rights issues have no clean adjustment factor — the standard formulas approximate.
  • We compute on adjusted closes and display raw traded prices; the two can legitimately disagree.

See these ideas on real stocks

StockLearn runs this read on ~2,000 NSE stocks every evening. Nifty 50 is free, no login.

Browse today's scan →

This article explains StockLearn's data methodology using illustrative examples. It is educational, not investment advice or a recommendation to buy or sell any security.