2 pairwise strategies were run over the same universe and window, each long-only and fully invested, benchmarked against equal-weight buy-and-hold of the identical names.
The best of them returned 24.41% a year and the worst 17.90%. Buying and holding the same basket returned 35.37%.
Three portfolios on the same 25 names, each isolating one decision.
Buy-and-hold returned 35.37% a year. Re-setting to equal weight every bar — same names, no ranking, but the same rebalancing intensity as the strategy — returned 27.70%. The rule itself returned 24.41%.
So the ranking contributed -3.29% a year against simply equal-weighting the same names, and the constant rebalancing cost a further -7.67% against letting the winners run.
That second number is the one usually left out. A rule that rebalances regularly is competing against a benchmark that compounds its winners untouched, and in a trending market that is a large handicap before any question of signal quality arises.
The ranking is identical in every row below. The only thing that changes is how often the target weights are re-imposed — and the engine lets the book drift in between, so nothing is traded on the bars where the instruction has not moved.
Weekly re-setting, which is what the strategy specifies, returned 24.41% a year. Backing off to quarterly returned 26.18%, a difference of +1.77% a year from cadence alone, with turnover falling from 174× the book to 39×.
The reason is mechanical rather than subtle. Re-imposing a target weight means selling whatever has grown past it, every time you do it. In a market where a handful of names do most of the work, that is a recurring transfer away from the winners — and the more often it happens, the more it costs. None of this is about the signal.
| Cadence | CAGR | Max DD | Sharpe | Turnover | vs buy & hold |
|---|---|---|---|---|---|
| Weekly (as designed) | 24.41% | -39.62% | 1.08 | 174× | -10.96% |
| Monthly | 25.72% | -41.20% | 1.11 | 84× | -9.65% |
| Quarterly | 26.18% | -39.01% | 1.11 | 39× | -9.19% |
| Annual | 25.92% | -37.40% | 1.10 | 10× | -9.45% |
The same rule was run on 60 random 25-name baskets drawn from a broad pool, each compared against buy-and-hold of its own names. Both sides hold the same assets, so selection bias in the pool cancels in the difference and what is left is the rule's contribution.
It beat its own buy-and-hold in 0.0% of baskets, with a median edge of -5.62% a year. The real universe's edge of -10.96% sits at the 17th percentile of that distribution.
This is what separates a rule that works from a universe that happened to work. A strategy can look excellent against an index while adding nothing over simply holding what it holds.
| Median | 5th pct | 95th pct | |
|---|---|---|---|
| Rule CAGR | 17.25% | 13.30% | 22.94% |
| Own buy & hold CAGR | 23.42% | 17.79% | 32.38% |
| Edge | -5.62% | -13.28% | -2.42% |
Basket size from 10 to 25 names, against formation windows of 4 to 26 periods: 28 combinations in total.
Every one of them has a negative edge against buy-and-hold of the same names, ranging from -1.99% to -11.55% a year. That is a much stronger statement than any single backtest — there is no setting to tune towards, so the result is not a matter of having picked the wrong parameters.
The consistent finding is that the pairwise ranking added nothing over equal-weighting the same names, and that constant rebalancing cost a further amount against buy-and-hold. Both strategies' apparent appeal came from the universe and from a favourable benchmark, not from the rule.
It would be wrong to generalise this into "momentum does not work". Cross-sectional momentum is a documented factor, the universe here is twenty-five highly-correlated mega-caps — the environment least suited to a relative-strength measure — and the rule as specified rebalances far more often than the construction the literature describes.
The honest scope is narrow and worth stating plainly: this rule, on this universe, over this window, is not worth running.
Backtest results, not forecasts. Past performance carries no implication about future returns.
A strategy returns the position it wants at the close of each bar. The engine fills that order on the next bar, so a signal generated on bar t earns bar t+1's return.
That single shift is the difference between an honest backtest and a fantasy. Remove it and a rule gets to trade on a price it has already seen, which flatters every momentum strategy and never reproduces live. The visible consequence is that every strategy enters one bar late, buy and hold included.
Every change in position pays a cost, set here to 7.0 basis points per unit traded. A round trip — flat to long to flat — therefore pays it twice, which is what a real account does.
Cost matters more than it looks. One of the strategies tested turned over 697 times the book over the period, which is roughly 4% a year in fees alone; the same rule at a monthly cadence turned over 56 times for under 1%. Checking turnover before signal quality is usually the higher-value question.
A portfolio strategy produces a target weight per asset per bar. Between rebalances the book is left alone: each name grows by its own return, so the weights move away from their targets.
A carried-forward target is not an instruction to trade. Without that rule the engine would pull the book back to target on every bar, quietly turning a weekly strategy into a daily-rebalanced one and charging it for trades it never placed. Turnover, and therefore cost, is charged only on bars where the target actually changes.
Every result is reported against buy-and-hold of the same names rather than against an index. Comparing a strategy to the S&P or the Nasdaq measures the universe at least as much as the rule: a basket of names chosen because they are large today will beat a cap-weighted index without any skill involved.
Where selection and rebalancing need separating, an equal-weight reset portfolio is used — same names, re-set to 1/n every bar. It has the same turnover as the strategy and none of the ranking, so the difference between them isolates the ranking alone.
Forward rank correlation between the score and subsequent returns was measured at horizons from one week to five years.
At no horizon was the relationship statistically reliable. Long-horizon figures that appear strong are an artifact of overlapping windows: a 52-week forward return measured every week reuses 51 of the same 52 weeks, so the effective sample is around 22 observations rather than 1,125. Corrected, every horizon sits below t = 2.
This is why the report describes rather than forecasts, and why the robustness analyses above — the control baskets and the parameter grid — carry more weight than any single backtest.
There is no survivorship-bias correction. The universe is today's large Nasdaq names, projected backwards, so the names that survived to be large are the ones that did well. Running the same rule on random baskets drawn from a broad pool is the mitigation used here, and it is a partial one.
There is no historical index membership, no portfolio optimiser, no walk-forward validation, and no live trading connection. Costs are a flat basis-point model with no market impact.