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
- Test a rule without fooling yourself → the three checks in detail
- Position sizing → how the weighting rule is chosen