A composite relative strength score is a nice thing to look at. You get a clean number between 0 and 100 for every name in your universe, sorted so the leaders float to the top, and it feels like the hard part is done. It is not. The score answers what is leading. It says nothing about how much of your book should sit in any of it. That gap is where most of the damage happens, because the natural move is to just buy the top of the list, and the top of the list is usually the most crowded, most extended thing in the universe on the day you look at it.
I have run this a few different ways over the years and the version that keeps my hands off the keyboard is boring on purpose. Map score bands to allocation tiers, cap what any single leader can be, and only move weights when a name actually changes tier. Everything below is that, with the parts that bit me included.
Why you do not size linearly to the score
The tempting thing is to make weight a straight function of score. Name at 92 gets almost twice the weight of a name at 48, and so on down the list. It sounds principled and it behaves badly. A composite score built from a handful of ranked components is not a cardinal measurement of anything. The difference between 88 and 92 is mostly noise, and treating it as a real 4 point signal means you are constantly nudging weights around numbers that do not mean what the arithmetic implies.
The other problem is fat tails at the top. Linear sizing quietly concentrates you into whatever is most extended, because extension and high relative strength tend to arrive together. You end up maximally exposed to the names with the least room left. So I bucket instead. Bucketing throws away the fake precision on purpose and forces me to decide, in advance, how much a whole class of leaders deserves rather than reacting to every wiggle in the underlying number.
Score bands to allocation tiers
Here is the shape I actually use. Numbers are illustrative, the structure is the point.
- Score 80 to 100, core tier. These are the genuine leaders. Each name gets a target weight in a fixed range, say the high single digits, and the whole tier is where most of the risk lives.
- Score 60 to 80, satellite tier. Strong but not leading. Smaller per name weight, roughly half of a core position. These are the on deck names, the ones about to matter or about to fade.
- Score 40 to 60, watch tier. Weight of zero. I hold nothing here. I just want them on the screen so that when one crosses up into satellite I already know its story.
- Below 40. Not in the portfolio, and if I own it, it is a sell candidate on the next rebalance, not an emergency.
The gap between the bands matters more than the exact cutoffs. If your satellite tier ends at 60 and your core starts at 80, a name sitting at 70 has to move a real distance before it changes anything about your book. That distance is what stops you from trading on noise. When people complain that a banded system churns, it is almost always because the bands touch, so a name flickering across a single boundary keeps flipping tiers. Leave a buffer.
Capping a single leader
The score does not know about correlation and it does not know about your own concentration limits, so you have to bolt those on afterward. Two caps do most of the work.
First, a hard per name ceiling. No matter how high the score, no single position goes above some fixed fraction of the book. I keep this tighter than feels necessary, because the name with the best score is exactly the one I will be tempted to let run, and that is how a diversified book quietly becomes a bet on one thing. Second, a tier budget. The core tier as a whole gets a maximum share of capital. If eight names all score above 80, they split the core budget, they do not each get a full target weight. That single rule quietly solves the problem of a screaming bull market where suddenly forty percent of your universe is a leader.
There is a subtle failure mode with correlation. If your top five leaders are all the same sector or all the same factor, the per name cap is doing nothing for you, because you are still making one bet in five costumes. If you can cheaply group names by sector or by a rough factor tag, add a group cap on top. If you cannot, at least eyeball the core tier and ask whether it is actually five bets or one. That check has saved me more than any sizing formula.
Rebalancing without churning the whole book
This is the part everyone gets wrong, myself included for a long time. The scores drift every day. If you re weight to target every time any score moves, you generate a stream of tiny trades that cost real money and accomplish roughly nothing. The fix is to separate the score, which can update continuously, from the weights, which should be sticky.
The rules I settle on look like this. A name only changes its target weight when it crosses a tier boundary, not when its score moves within a tier. So a core name drifting from 91 to 84 does not get trimmed, because it is still core. Then I only act on tier changes on a fixed cadence, weekly or twice a month, rather than intraday. And I put a no trade band around each target, so I do not rebalance a position that is already within a couple of percent of where it should be. Small drift is cheaper to tolerate than to fix.
A quick way to sanity check the whole thing before you trust it with money. Run it on history and count trades, not just returns. If a banded, buffered, cadenced system is still turning the book over aggressively, one of three things is wrong. Your bands are too narrow, your cadence is too fast, or your score is too jumpy and needs smoothing at the source. Historically, most of the churn I have chased down was the third one. The score was reacting to a single noisy component, and the fix was upstream in how the composite was built, not in the sizing rules at all.
None of this is exotic. It is a lookup table from score to tier, two caps, and a rule that says do not trade unless a name actually moved to a different tier. The reason it works is not cleverness, it is that it removes almost every discretionary decision from the moment when you are most likely to make a bad one, which is when something is ripping and the score is flashing green and you want to press. The table already decided. You just follow it.