← Back to Blog
2026-10-20 Strategy

Survivorship Bias, Splits and Delistings: Why Your Backtest Lies

A stock backtest assumes every company keeps trading, at one price scale, until the test ends. Real companies split their shares, get bought out for cash, and stop trading. Each of those events breaks a backtest, or a live strategy's track record, in a different way. Here are four of them, with real examples from 2026, and the check that catches each one.

1. Survivorship Bias: The Stocks That Are Not in Your List

The most common way to build a stock backtest is to take an index you know, say the S&P 500 or the Nasdaq 100, download its current members and run the strategy over the last ten years. The problem is the word current. Today's members are the companies that grew into the index or stayed in it. The ones that were dropped, went bankrupt or were acquired along the way are not on the list, so the strategy never gets a chance to buy them.

The effect is larger than most traders expect. Using a point-in-time membership history of the S&P 500 (the list of members as it stood on each date, not as it stands today), with June 1, 2026 as the latest verified date in the dataset:

S&P 500 tickers onMembersStill in on June 1, 2026Not in it
January 1, 2016502329173 (34%)
January 1, 2006497235262 (53%)

These are matched by ticker, so a company that only changed its symbol counts as not in the index, which overstates the turnover a little. So does a company that was moved down to a smaller index and still trades. It does not change the conclusion. A ten-year test on today's S&P 500 is missing about a third of the stocks you could actually have bought ten years ago, and a twenty-year test is missing about half of them.

It usually flatters the results, because the missing companies include the ones that collapsed. Not always, though. Takeover targets also leave the index, and they often leave on a big up day (see section 3). Either way the test is answering the wrong question. It tells you how the strategy would have done on a list of companies you could only have picked with hindsight.

The check: build the universe from point-in-time membership, and use a data source that still has bars for tickers that no longer trade. If you hand-pick symbols, write down why each one is on the list and whether you could have known that at the start of the test.

2. Stock Splits: Same Company, Two Price Scales

When NVIDIA split 10-for-1 in June 2024, it closed at $1,208.88 on Friday, June 7 and opened at $120.37 on Monday, June 10. Nobody lost 90%. Each share became ten shares worth a tenth as much. But raw price data, the prices as they actually traded, shows a 90% drop over a weekend.

Data vendors fix this with split-adjusted prices. Every bar before the split is divided by the split ratio, so NVIDIA's June 7 close shows as $120.89 and the chart is continuous. For the price series a backtest runs on, split-adjusted is what you want. The trouble starts when two price scales meet:

One more thing that catches people out: split-adjusted is not total-return adjusted. Most split-adjusted feeds, Polygon's included, do not add dividends back. A backtest on them measures price return, which understates high-dividend stocks against growth stocks.

Worked example: CrowdStrike's 4-for-1, July 2026

CrowdStrike (CRWD) split 4-for-1 effective July 2, 2026. It closed at $772.74 on July 1 and opened at $191.26 on July 2. Take a long position entered at the June 26 open of $686.20 with a fixed 8% stop at $631.30, and compare a system that checks the stop against raw bars without knowing about the split with one that does.

CRWD long, entry $686.20, stop $631.30Split-blindSplit-aware
July 2 low$190.61, under the $631.30 stop$190.61 × 4 = $762.44 on the entry basis, 21% above the stop
What happensStopped out at the $191.26 openPosition held
Recorded result−72.1%, −9.0RStill open on Oct 19: $228.10 × 4 = $912.40, +33.0%, +4.1R

The split-blind version does not just get one trade wrong. It books a −9R loss that never happened, which wrecks the strategy's drawdown, expectancy and profit factor, and it exits a position that went on to gain a third. Any strategy that holds stocks for weeks at a time will run into one sooner or later. Amphenol (APH) split 2-for-1 on September 3, 2026, for example: a position entered at $155.00 on August 24 is up 3.6% at Monday's $80.28 close, not down 48%.

The check: keep the entry price as it was actually filled, and convert each later bar to the entry's basis with the cumulative split factor since entry before comparing it with the stop or computing a return. Rebuild cached adjusted series from scratch, never append across a split.

3. Cash Takeovers: The Stock That Stops Moving

When a company agrees to be bought for cash, its share price jumps most of the way to the offer and then barely moves until the deal closes. The only thing left to trade is the chance that the deal falls through.

Crinetics Pharmaceuticals (CRNX) shows what that pattern looks like in the data. It closed at $42.03 on July 6, 2026 and opened at $83.58 the next morning, up 99%. In the 40 sessions from the jump to its last bar, every close landed between $83.49 and $84.95. Its median daily range fell from 4.9% in the 20 sessions before the jump to 0.18% after it. The last bar was August 31. Polygon lists the ticker as delisted on September 2.

For a long entered before the announcement, that is a windfall. A position bought at the June 22 open of $35.91 is up 137% at the last close. But a few things go wrong around it:

The check: look for a large one-day move followed by a range that collapses and closes held in a narrow band. When you find one, stop treating the position as a chart trade. Read the deal terms and book the exit at the settlement price when it closes.

4. Delistings: There Is No Next Bar

Every exit rule in a backtest assumes there will be another bar to act on. After a delisting there is not. A cash deal closes, a merger completes, or an exchange removes a company that no longer meets its rules, and the price history simply ends.

The check: after a few sessions with no bars, look up whether the ticker was delisted rather than assuming a data gap. Cancel entries that could never have filled, and close held positions at the settlement or last tradeable price instead of leaving them open.

What SignalDeck Does About Each One

SignalDeck has two places where this matters: the backtester, which replays history, and the scanner's live strategies, which run a strategy forward one session at a time. The two handle these events differently and have different limits.

In the backtester

In live strategies

A live strategy cannot suffer from survivorship bias, because it does not know the future: it scans the universe as it exists each day. That is the best argument for forward-testing a backtest before you trust it. But a forward record is only honest if splits, takeovers and delistings are handled while positions are open, which is what the last two releases changed.

The flags do not close or reprice anything. They mark the position for review, with a ⚠ next to its P&L, so the settlement can be booked at the deal terms rather than leaving the position open on a frozen price.

SignalDeck Open Positions for a live strategy called Momentum Breakout, seven long positions. CRWD shows entry $686.20, current $228.10 and unrealized P&L plus 32.96%. APH shows entry $155.00, current $80.28, plus 3.59%. CRNX shows entry $35.91, current $84.95, plus 136.56%. GOOGL, AMZN, MSFT and AAPL show ordinary moves between minus 1.88% and plus 6.38%.
A live strategy's open positions. The Entry and Current columns are real traded prices, so CRWD reads $686.20 then $228.10 and APH $155.00 then $80.28. The P&L column is on the entry basis: +32.96% and +3.59%, not −67% and −48%. Screenshots in this article come from a demo account holding these positions at real opening prices, marked at the real October 19, 2026 closes (CRNX at its last bar, August 31).
SignalDeck trade details for the CRWD position: fill price $686.20 on June 26, 2026, current price $228.10, unrealized P/L 32.96% with a yellow warning sign, R multiple 4.12R, original stop $631.30.
The CRWD position: filled at $686.20, stop at $631.30, current price $228.10 after the 4-for-1, and still reported as +32.96% and +4.12R. The ⚠ next to the P&L reads: “A stock split or corporate action occurred since entry. Managed Polygon stock P/L uses executed split factors; review other actions and sources.”
SignalDeck trade details for the CRNX position: fill price $35.91 on June 22, 2026, current price $84.95 last updated 49 days ago, unrealized P/L 136.56% with a yellow warning sign, R multiple 17.09R, original stop $33.04.
The CRNX position, flagged as a possible cash deal. Its stop at $33.04 is meaningless after the jump to $84, and the price has not updated in 49 days because the ticker no longer trades. The ⚠ reads: “Possible cash acquisition: the price jumped and has been pinned in a narrow band since, as it is after an all-cash deal. A pinned position may never hit its stop; review the deal and book the settlement when it closes.”

A Checklist Before You Trust a Stock Backtest

QuestionIf the answer is no
Was the symbol list knowable at the start of the test?Survivorship bias. Use point-in-time membership, or shorten the test so today's list is closer to the list you would have had.
Does the data still have bars for companies that no longer trade?Takeovers and bankruptcies are missing. Expect the result to be too kind on the downside and to miss deal-day gains.
Are prices, entries and stops all on one split basis?False stop-outs and fake −70% trades around splits. Check every symbol that split during the test.
Do you know whether returns include dividends?Comparisons with a total-return benchmark are off by the dividend yield.
Are signals on a ticker's last session cancelled, and held positions settled?The test contains trades that could not have happened, and positions frozen at a stale price.
Has the strategy run forward on live data?Nothing above has been tested against a period the strategy has not seen. Compare the forward record with the backtest before sizing up.

What to Do With This

Open your best stock backtest and list every symbol in it that split, was taken over or stopped trading during the test window. For each split, check that no trade shows a loss larger than its stop allowed. For each company that is gone, ask whether it should have been in the list at all and what the strategy would have done with it. Then ask the question survivorship bias hides: which companies are not in the list because you already knew how their story ended? If the edge survives all of that, run it forward before you trust it with size.

Frequently Asked Questions

What is survivorship bias in backtesting?

It is what happens when a backtest only includes stocks that still exist today. If you take the current S&P 500 or Nasdaq 100 and test it over ten years, every company that was dropped, went bankrupt or was taken over during those ten years is missing from the test. The test is run only on companies that survived, which were mostly the winners, so the results usually look better than anything you could have traded at the time. The fix is a point-in-time universe: the list of members as it stood on each date, including companies that no longer trade.

Should I backtest on split-adjusted or unadjusted prices?

Use split-adjusted prices for the price series a backtest runs on, so a split does not look like a crash. The trap is mixing the two. A stop, an entry or a cached series recorded in one basis and compared against bars in the other produces false stop-outs and nonsense returns. Note that split-adjusted is not the same as total-return adjusted: most split-adjusted feeds, including Polygon's, do not add dividends back, so the results are price returns.

What happens to a stop loss when a stock is taken over for cash?

Usually nothing, and that is the problem. After an all-cash deal is announced the price jumps toward the offer and then trades in a very narrow band until the deal closes. Crinetics Pharmaceuticals (CRNX) gapped 99% on July 7, 2026, in a pattern consistent with a cash deal, and closed between $83.49 and $84.95 for the 40 sessions from the jump to its last bar. A stop placed under the pre-deal price will not be hit, and when the deal closes the ticker stops trading, so there is never another bar to exit on. The position has to be settled at the deal terms, not left open on the last price.

How does SignalDeck handle stock splits and delistings?

In the backtester, stock bars are split-adjusted, and cached price history is rebuilt from scratch once it is 30 days old; until then new bars are appended, so a split in the last 30 days can leave a cached series on two scales. Positions held by the scanner's live strategies keep their real entry price: stops are checked against unadjusted bars on each bar's own split basis, and return and R are reported on the entry basis, so a split never reads as a loss. Since v1.0.129, an entry for a ticker that delists right after the signal is cancelled, and since v1.0.130 a live position whose price looks pinned by a pending cash deal, or whose ticker is reported delisted, is flagged for review rather than left open on a frozen price. The backtester tests the symbols you choose, so building a survivorship-free symbol list is still up to you.

Backtest it, then run it forward

Build a rule strategy, backtest it on split-adjusted data, and see how the scanner's live strategies hold up across splits, takeovers and delistings. Free during beta; Pro is $30/mo and Elite $50/mo when billing launches.