Backtesting one strategy on many stocks (and why one ticker proves nothing)
A rule that works on one symbol is an anecdote: you found the symbol where it worked. Running the same rules across a whole universe in one pass is the cheapest honesty test there is — and the second cheapest way to fool yourself, if you read it wrong.
The one-ticker illusion
Suppose you test an idea on twenty stocks, keep the one that looked best and publish that curve. Nothing about that procedure is dishonest — and the result is still meaningless, because you have measured the best of twenty draws and reported it as if it were one. The same arithmetic that inflates a Sharpe when you try a hundred parameter sets inflates it when you try a hundred symbols; the Deflated Sharpe ratio exists for exactly this.
The fix is not to stop looking at many symbols. It is to stop keeping only the winner: run the identical rules on all of them, and read the whole distribution.
What a multi-asset run actually gives you
One pass, up to fifty instruments, and two answers side by side:
- The aggregate — an equal-weight average of the per-asset equity curves, rebased so each starts at the same point. It answers “if I had spread the idea across all of these, what happened?”
- Every asset on its own — the full metric set per symbol, so you can see whether the aggregate came from broad, mild success or from one spectacular outlier carrying twenty failures.
The headline numbers on a multi-asset run are per-asset averages, not the numbers of a portfolio. That distinction decides how you read them: a portfolio has one wallet, and positions compete for it. This does not — each symbol is simulated with its own capital, in parallel, so nothing here is a claim about what you could actually have deployed. That is a different question, and it has its own engine.
One detail that decides the number: mean or median
Most metrics average across assets. A few do not, and the reason is worth stating because it is where a basket number usually lies. Profit factor is taken as a median, not a mean: it is an unbounded ratio, so a single asset with almost no losing trades produces a profit factor of 40 and drags the average of twenty symbols somewhere no symbol actually is. A median says what the typical symbol did, which is the question you were asking.
Assets whose metric is missing or non-finite are skipped rather than poisoned into the aggregate, and both the engine that shows you the number and the optimizer that searches for a better one use the same aggregation rule — because an optimizer that maximizes a different number from the one on screen will happily hand you a winner that looks worse when you open it.
How to read the spread
- How many symbols were profitable? A rule that wins on 17 of 20 mildly is worth far more than one that wins on 3 of 20 enormously.
- Is the best asset carrying the basket? Remove it mentally. If the aggregate collapses, you have found a stock, not a strategy.
- Did the losers lose in the same regime? Simultaneous failure across symbols is a market-condition problem, and a regime-aware exposure rule is the honest response. Scattered failure is idiosyncratic and usually fine.
- Was anything silently dropped? It should not be: symbols beyond the cap, instruments with too little history, exposure-cap trims and same-bar re-entries each raise a warning on the result rather than quietly changing the number.
The temptation you should refuse
Once you can see per-asset results, the obvious next move is to tune the parameters per asset — a faster EMA for the volatile names, a slower one for the placid ones. Do not. Fitting a different parameter set to each instrument is overfitting each one separately and then reporting the sum as a strategy; the engine deliberately does not offer it. If a rule needs a different setting on every symbol, what you have is twenty strategies with a sample size of one each.
The honest version of that instinct is a rule that adapts — sizing tied to a volatility or trend signal, identical on every symbol — whose response curve is then validated out-of-sample like anything else.
How QUANTHEON Lab does this for you
Add more than one instrument to a strategy and the run becomes multi-asset automatically: S&P 500 stocks, ETFs and the SPX / NDX / VIX indices, searchable by ticker, name or ISIN. The result comes back aggregated and per-asset, the chart draws the primary symbol with the rest a click away, and the whole basket can go through the same walk-forward, Monte-Carlo and parameter-stability checks as a single-symbol run. No code, and no per-asset knobs to talk yourself into.
Frequently asked questions
How many instruments can one strategy trade at once?
Up to fifty per run. Beyond that the extras are dropped with an explicit message telling you how many — never silently, because a basket that quietly shrank is a different experiment from the one you asked for.
Is a multi-asset backtest the same as a portfolio backtest?
No, and confusing the two is the most common mistake here. A multi-asset run simulates the same rules on each instrument independently, each with its own capital, and reports the average — it answers “does this edge generalize?”. A portfolio runs one cash account where holdings compete for the same money bar by bar, which answers “what could I actually have deployed?”. Use the first to decide whether an idea is real, the second to decide how to fund it.
Why is the basket's profit factor lower than most of my assets'?
Because it is a median, not a mean. Unbounded ratios are dominated by their best sample: one symbol with a handful of tiny losses can post a profit factor in the dozens and pull a mean far above anything typical. The median reports the middle symbol, which is what you wanted to know.
Should I optimize parameters separately for each stock?
No. That is overfitting each instrument individually and presenting the collection as one strategy — the engine deliberately doesn't support it. If the idea only works with a different setting per symbol, the honest reading is that you have one observation per symbol, not an edge.
Does testing many symbols count as "trying many configurations"?
It does if you keep only the winner. Running all of them and reading the distribution is the honest use; picking the best curve out of fifty and quoting it is exactly the selection bias the Deflated Sharpe ratio was built to punish.