← Alpha
Alpha Research · · 13 min read

Should you trade individual assets or build a portfolio?

Eighty frozen strategies, 105 Binance perpetuals, one candidate stream and five execution policies competing on identical trades across 37 out-of-sample months.

Every systematic trader eventually hits the same fork. The rules fire on fifteen assets at once and there is not enough capital to take all fifteen.

One answer is to take them anyway, sizing each position small enough that the whole book fits. The other is to cap the number of open positions and make the signals compete for the slots. That second answer is what most people mean by building a portfolio, and it carries an implicit promise: that choosing which signals to take is worth more than taking all of them.

The question sounds like it should have a settled answer, yet it does not, because the two choices differ in more than one way at the same time. A capacity limit reduces how many trades you take while it decides which ones survive, and the usual comparisons let those two effects run together, so a result that looks like evidence about selection can be nothing but evidence about turnover.

We separated them. Eighty frozen strategies run across 105 Binance perpetual contracts, generating one stream of candidate trades, after which five execution policies consume that identical stream on identical capital: one takes every signal, one caps the book and picks at random, and three cap the book and rank the competitors by signal strength, by measured track record and by a volatility-adjusted version of the same.

One thing belongs up front rather than in a footnote. This is a documented-exposure study rather than a blind pre-registration. Every design choice was fixed before any out-of-sample number existed, but the specification's own gate ordering required running the scheduler before the freeze, so the first execution preceded the hash and its headline numbers were seen. Re-running after the freeze reproduced that run byte for byte, because the pipeline is deterministic, which demonstrates reproducibility without restoring blindness. No registered choice was changed in response to anything seen.

Reproducibility

The universe rules, the spread measurement, the scheduling mechanics, the cost model, the null corpus and the frozen hashes live on their own page, so they don't crowd the argument here.

Read the reproducibility →

What we tested

Binance USDT-margined perpetual futures is the venue, with the universe fixed on 30 June 2022 by median daily notional over the preceding quarter, decided only on information available that day, and every contract that later dies kept in. That screen yields 105 contracts, from which nested rungs of 10, 25, 50 and 100 are taken. Two ticker renames are stitched after checking price continuity at the handoff, MATIC to POL and EOS to A, because a rename is not a death.

The strategy library is inherited unchanged from earlier work: eight structural families with ten frozen numeric configurations each, eighty strategies in total. No parameter is searched anywhere in this study, which matters more than it sounds. The only thing fitted to in-sample data is the ranking rule, leaving every other layer of selection bias absent by construction rather than argued away.

Each strategy runs its own book across the assets, so signals from different families never share a queue, and five arms then compete on identical signals:

  • independent, holding at most one position per asset at 1/50 of capital, which is the capacity-50 case of the same mechanism;
  • random, capping open positions at K and choosing among competitors by lot, averaged over 100 seeded replicates;
  • signal strength, ranking by how far the entry condition was exceeded, in scale-free units;
  • historical expectancy, ranking by the asset's mean net result per trade over the prior twelve months;
  • information ratio, that same mean divided by its standard deviation.

Walk-forward is a twelve-month in-sample window followed by one out-of-sample month, rolling monthly, giving 37 out-of-sample months from July 2023 to July 2026, with rankings frozen at each window boundary and applied for one month rather than re-decided mid-trade.

Costs are 5 bps taker, 2 bps maker and 2 bps slippage, plus half the measured spread on every crossing fill, where spreads come from the bid-ask bounce in aggregate trades rather than from a bar-based estimator. Funding is charged at its observed settlement times with its real sign.

Barriers are fixed for every strategy at a 2.0 ATR stop and a 3.0 ATR target, chosen by a calibration that read holding period, exit mix and occupancy in sample and never read profit. That calibration is load-bearing in an unusual way, since barrier width drives how often the slots are full and a capacity constraint only has force when the book actually binds. At a 1.0 ATR stop, capacity 5 would bind on 10.9% of bars and the treatment would barely exist, whereas the selected pair gives 6.39 mean concurrent positions against a focal capacity of 5.

The whole design turns on one architectural point. With fixed capital per slot, no leverage and no modelled impact, a trade's entry, exit and costs do not depend on what else the book holds, so every candidate outcome is computed once and each arm becomes a scheduling policy over the same frozen table of 16,452,374 outcomes. The arms are not approximately comparable, given that they consume identical trades.

The registered focal cell is 1-hour bars, the top-50 universe and capacity 5. The primary estimate is the expectancy-ranked portfolio minus independent execution on cumulative net return, with a paired 95% interval built by resampling calendar weeks. Two registered components split it: D_cap, random minus independent, which is limiting alone, and D_rank, expectancy minus random, which is choosing alone. They sum to the headline by construction.

Results

No. At the focal cell the expectancy-ranked portfolio trailed independent execution by 8,090.2 basis points of fixed capital, with a paired week-clustered 95% interval from -9,885.1 to -6,210.9 bp.

Fig. 1: Cumulative net return of the five arms at the focal cell, 1-hour bars, top-50 universe, capacity 5, in basis points of fixed capital. Independent sits well above every capped book.

That is a wide margin and the interval is nowhere near zero, so taken at face value the advice would be to stop building portfolios. The decomposition says something more useful, and one registered sensitivity reverses the sign entirely.

Limiting hurt, choosing did not measurably help

EffectEstimate95% interval
Limiting alone, random versus independent-8,617.0 bp-10,260.0 to -6,868.9
Ranking at fixed capacity, expectancy versus random+526.8 bp+90.5 to +959.7

The registered decomposition at the focal cell. Both components survive the two-test Benjamini-Hochberg correction and they sum to the headline exactly.

Fig. 2: The primary estimate and its registered decomposition, with paired week-clustered 95% intervals in basis points of fixed capital.

Essentially all of the loss came from the constraint rather than from the selection. Ranking, given the same capacity and the same slots, appeared to be worth a few hundred basis points against random, an appearance that a later test removes.

Why the constraint cost so much

The two modes do not put the same amount of capital to work, which is the substance of the comparison rather than a flaw in it. Holding one position per asset at 1/50 of capital leaves the book 88% idle, whereas five slots at a fifth of capital each put 48% to work.

ArmCumulativeMean capital deployedPer point deployed
Independent-3,585.4 bp11.75%-305.1
Signal strength-11,527.9 bp48.59%-237.2
Information ratio-11,623.1 bp48.47%-239.8
Historical expectancy-11,675.5 bp48.47%-240.9
Random-12,202.3 bp48.51%-251.5

Cumulative out-of-sample result at the focal cell, mean capital deployed, and the same result per point of capital actually deployed.

The library loses about 0.169% of notional on the average trade after costs, so the arm deploying four times more capital lost roughly three times more money. The constraint did not pick worse trades, it traded a losing edge harder.

Fig. 3: The same five books, two denominators. Normalised by capital actually deployed the ordering reverses and independent execution becomes the worst of the five.

One caution belongs with that reversal. The random arm carries no selection information at all and it also beats independent on that measure, so it is a statement about capital efficiency rather than about picking better trades.

The denominator that cannot be gamed

The measure that settles it was fixed in advance for exactly this purpose: net R per candidate the arm was offered. That denominator comes from the frozen candidate stream and is identical for every arm by construction, so nothing about deployment can move it.

ArmPer candidate offeredPer candidate takenCandidates takenRejected, book full
Independent-0.0532 R-0.0718 R74.1%0.0%
Random-0.0201 R-0.0690 R29.1%61.7%
Signal strength-0.0191 R-0.0688 R27.8%64.4%
Historical expectancy-0.0191 R-0.0660 R28.9%62.0%
Information ratio-0.0191 R-0.0659 R28.9%62.0%

Exposure-neutral diagnostics at the focal cell, from a 2,303,532-row per-position ledger covering all five arms.

Fig. 4: Selection quality on a denominator deployment cannot move. On candidates offered the capped books separate from independent; on trades actually taken all five sit within 0.006 R of each other.

Two things fall out. The constraint was genuinely binding, since 62% of arriving candidates were turned away because the book was already full, against 0% for the independent control. On the offered denominator the ranked arms beat random by 0.001 R while random beats independent by 0.033 R, so roughly thirty times more of the improvement comes from taking fewer trades than from choosing which ones.

Per trade actually taken the ranked arms are slightly better, -0.066 R against random's -0.069 R. That margin is real but small, and it is the same margin a null corpus reproduces on data with no predictability in it.

The cleanest demonstration of how much the capital convention is doing sits in a registered sensitivity. Size the independent book the way a trader taking every signal at constant size actually would, 1/K per position with no cap on concurrency, whereupon it runs at 117.7% mean deployed capital, against which the capacity-constrained portfolio wins by 24,178 bp. The sign of the headline is a property of the capital convention rather than of selection quality.

-8,090
Portfolio minus independent, bp of fixed capital
-8,617
Of it from limiting alone
62.0%
Candidates refused because the book was full
30×
Trading less versus choosing better, on offered candidates
+24,178
Same contrast against a levered independent book
16.5M
Candidate outcomes, computed once and shared by every arm

Selection looked like it worked, and then it did not

Ranking beats random across the registered surface. Of the 32 cells where it is tested against random at matched capacity, 16 are positive and significant after correction and none are significantly negative, with a gradient that rises as the universe widens.

Fig. 5: Ranking minus random in basis points, across universe size and capacity at both speeds. The dashed ring is the registered focal cell.

That pattern is exactly what a genuine selection effect should look like, which is why the study registered a test capable of killing it. The test is a zero-drift null corpus: thirty synthetic universes with no return predictability of any kind, each asset carrying the realised volatility and spread of a real contract, each run through the entire pipeline from signals to arms. Anything a ranked arm earns there is manufactured by the machinery rather than found in the market.

Ranked armReal estimateNull medianEmpirical pIntervals above zero
Historical expectancy+526.8 bp+64.1 bp0.1330 of 30
Signal strength+674.4 bp+514.8 bp0.4008 of 30

Gate 20. The registered pass condition was that no ranked arm's advantage over random has a 95% interval entirely above zero across the seeds.

Fig. 6: Each dot is one zero-drift corpus. Filled dots are corpora whose 95% interval sat entirely above zero, and the vertical line is what the arm earned on real data.

Signal strength produces an interval entirely above zero on 8 of the 30 corpora that contain no signal at all, failing the registered pass condition outright, while its real result sits at the median of what the same procedure yields on noise. Expectancy clears the registered condition, yet its +526.8 bp lands at the 87th percentile of the null, an empirical p of 0.133.

So the bootstrap interval of +90.5 to +959.7, which excludes zero, was answering a narrower question than it appeared to. It measures sampling variability in the realised returns, meaning it cannot see the machinery's mechanical tendency to beat random, and once that tendency is measured directly the effect is no longer distinguishable from it.

The mechanism is not mysterious. Barriers are scaled by ATR while costs are a fixed fraction of notional, so a low-volatility asset pays proportionally more cost per unit of risk. Both ranking rules correlate with volatility, and volatility persists, so a ranking rule can systematically pick cheaper-per-unit-risk trades without forecasting anything.

The claim that ranking beats chance is withdrawn. Two corroborating sensitivities agree: on the 25-month subset where a 24-month estimation window fits, ranking is worth +256.6 bp on an interval from -139.7 to +657.0, and the matched 12-month window on the same subset gives +154.0 bp, neither of which separates from zero.

Its gradient runs the same way, rising with universe size to reach 4,409 bp at a hundred assets on fifteen-minute bars and 3,204 bp on hourly, then falling as capacity grows. That shape is what a selection effect should have, and it is also what the null produces, because the number of alternatives discarded scales the artifact just as it would scale a real effect.

Which ranking rule, now moot

The three rules are worth separating, since an earlier draft of this study built a claim on the difference between them.

Rule versus randomEstimate95% intervalSignificant
Signal strength+674.4 bp+200.5 to +1,139.5yes
Information ratio+579.2 bp+137.2 to +1,016.5yes
Historical expectancy+526.8 bp+90.5 to +959.7yes

Each ranking rule against random at the focal cell, with paired week-clustered 95% intervals.

That draft argued measured track record beats signal magnitude, reasoning from expectancy clearing the threshold while strength did not in an earlier run. Comparing a significant result with a non-significant one is not a test of the difference between them, and the contrast that would settle it had never been computed. Computed directly, expectancy is significantly better than signal strength in none of the 32 cells and significantly worse in eleven, with a focal-cell gap of -147.6 bp on an interval from -770.4 to +480.8.

The null corpus makes the question moot in any case, since signal strength is the rule the machinery favours most on data with no signal, which is exactly why it looked strongest on real data.

The sensitivities

Fig. 7: The headline under every registered variant. Hover a bar for its two components. The last row sizes the independent book at 1/K with unbounded concurrency, which runs it at 117.7% deployed capital and flips the sign.

The headline and the limiting component are stable across every variant that keeps the capital convention. Entry-day attribution, constant funding, size-dependent slippage and the conditional ranking restriction all land within a few hundred basis points of the baseline. The ranking component is nominally stable too, but the null corpus shows that stability is the stability of an artifact rather than of an effect.

Seven of the eight registered sensitivities ran. The persistent queue did not, and the reason is structural rather than practical: a queued candidate enters at a later bar and therefore a different price, so it is a different trade and is absent from the frozen outcome table that makes every other arm exactly comparable.

The checks

Two checks after the first freeze, one of the engine and one of the statistics, found defects that changed the numbers. The scheduler released a slot for any trade closing inside its own entry bar, so 7.4% of trades occupied no capacity at all. Candidates were accepted on any positive ATR, which let denormal risk denominators produce results as large as 1e95. The book emptied at every month boundary, and the tie-break used parquet row order rather than the frozen universe index. Correcting all of it moved the headline from -10,459 bp to -8,090 bp, with every sign and conclusion unchanged.

Registered in the specification are 21 blocking gates, of which eight are implemented. Gate 20, the zero-drift null corpus, changed the conclusion by failing, whereas gate 14, reference-versus-production scheduler parity, passes with zero disagreements across all five arms and 80 strategies.

Beyond those, the numba first-passage walk reproduces the frozen Python reference exactly across 59,214 candidates with all six exit reasons exercised, the cost identity reconciles to 0.0 across all 16,452,374 candidate outcomes, and panel QA passes with zero failures across 105 contracts and 481,644 funding events. Thirteen gates remain unimplemented, and none of them supports a claim this note makes.

The capacity constraint did not pick worse trades. It deployed four times more capital into a library that loses 0.169% of notional per trade after costs, and lost roughly three times more money doing it.

On this venue, over these 37 months, with this library and these costs, capping open positions at 1/K of capital lost money relative to taking every signal at 1/U. Essentially all of the gap is explained by how much capital each mode deployed rather than by which trades it chose, and reversing the capital convention reverses the sign.

Selection at matched capacity is not established as worth anything. The apparent ranking effect does not survive calibration against a corpus with no predictability in it, and on the exposure-neutral denominator the ranked arms improve on random by about a thirtieth of what simply trading less achieves, which we report as a null rather than as a finding.

None of that makes portfolio construction a mistake. Every arm here lost money because the underlying library loses money net of real costs, so a comparison of losses is not a comparison of edges, and deploying more capital into a positive edge would earn more rather than lose more, so the sign of the constraint effect would very likely flip with it.

Nor does it settle the denominator. Fixed capital is the honest accounting for a trader with a set account size, and by that measure independent execution won decisively, whereas capital actually deployed is the honest accounting for capital efficiency, and by that measure the constrained books won. Reporting one without the other would be a choice about which answer to prefer.

Limitations

  • The primary contrast compares an 11.8%-deployed book with a 48.5%-deployed one on a negative-edge library, so the limiting component is predominantly a capital-deployment difference, and the specification said so before the run.
  • Every arm loses money, making this a comparison of losses rather than of edges, so the sign of the constraint effect would plausibly flip on a profitable library.
  • Ranking can only reorder candidates arriving at the same timestamp, which is 9.8% of arrival events. Rejection caused by slots already held is rank-blind, so ranking here is narrower than the word suggests.
  • Costs are flat in notional, which favours the concentrated arms, and they still lost.
  • Spreads come from a two-day-per-month sample, where 11.4% of symbol-months use a deliberately wide fallback, pricing 3.18% of executed trades.
  • One venue only, since no delisted-contract history exists for Bybit in any available source and including it would have reintroduced the survivorship bias this design pays to avoid.
  • At 1-hour bars 74.9% of strategy-asset cells clear the 20-trade minimum, so the ranked arms fall back on the frozen universe order elsewhere and the ranking component is attenuated, against coverage of 92.6% at fifteen-minute bars.
  • Spread validation was not performed for this study. Gate 16's stratified bookTicker check was never run and the ground-truth comparison is inherited from an earlier build.

Every chart on this page is drawn in your browser from the study's published result tables, the same numbers reported in the text and on the reproducibility page. There are no image files behind them.

Full methodology

Universe rules, the measured spread series, the candidate stream, slot mechanics, the cost model, inference, the null corpus and every gate, with hashes and code snippets.

Reproducibility →