Published 2026-10-14 · Updated 2026-10-25

Backtest a Portfolio, Not Just a Stock

Single-stock backtests flatter almost everything. A portfolio backtest adds the parts that decide whether a strategy survives: correlation, rebalancing, and the costs that only appear when many positions trade at once.


On this page

Why one stock is not enough

A single-stock backtest answers: “would this rule have worked on this one name?”

That is almost never the question you actually have. You run a portfolio, and portfolios introduce three things a single name hides.


The three things a portfolio adds

1. Correlation

Two stocks that each look great can be the same bet.

If positions are Then
Uncorrelated Gains and losses partly offset — smoother path
Highly correlated Losses arrive together — the drawdown is the sum

A portfolio of ten correlated names is one position with extra steps. The correlation is not visible in single-name backtests, and it is where most apparent diversification disappears.

2. Rebalancing

A portfolio has to be re-weighted. How often, and to what target, changes the result:

Approach Trade-off
Fixed schedule Predictable, but may trade when nothing has changed
Threshold-based Trades only when weights drift far enough
Never Weights drift into whatever won — often an accidental bet

Every rebalance is a trade, and every trade carries costs.

3. Simultaneous costs

A single-name backtest assumes one trade at a time. A portfolio rebalance can trade many names at once — in the same moment, into the same liquidity.

This is where a backtest’s cost assumption stops being a detail. Ten names rebalancing together do not each get the single-name price.


What a portfolio backtest must state

Must state Otherwise
The universe You do not know what was actually tradable
The weighting rule Half the strategy is missing
The rebalance rule The turnover — and its cost — is unknown
The correlation assumption Diversification is asserted, not measured
The cost model The result is pre-fee, and the fees may finish it

A portfolio backtest that states none of these is a single-stock backtest with more names in it.


Build it reproducibly

Each piece needs a data pull you can re-run: the universe, the prices, the factors, the windows.

# Reproducible inputs are the only way to check a portfolio result.
curl "https://api.ashareapi.com/v1/kline?code=sh600519&period=day&count=250"

If the constituent series cannot be reproduced, the portfolio result cannot be checked — and an unchecked portfolio result is a story about a portfolio.


The check that follows

Once the portfolio is built, the three checks from the earlier guide still apply:

  • Look-ahead — was each input known at each rebalance?
  • Costs — stated, including the simultaneous-trade problem?
  • Survivorship — does the universe include the names that failed?

A portfolio makes all three harder and more important, not easier.


Next

Sources