What this is
A relative-strength screen over 80 exchange-traded funds spanning commodities, fixed income, developed markets, emerging markets, US sectors and US subsectors. It ranks each fund against every other in the universe and shows where the strength and weakness currently sit.
It is an attention-routing tool. Its job is to make it obvious which funds and which groups are moving, so that a chart review starts somewhere sensible rather than with all eighty names.
The universe
Eighty funds across six buckets. Buckets are used for display and for the within-group correlation measure; the ranking itself is always computed across the whole universe, so a fund is judged against everything, not just its peers.
Because the universe deliberately spans asset classes, its members are less correlated with each other than a single-sector list would be. That is what gives a relative-strength measure something to separate.
Percentile ranks — the core measure
For each lookback window the fund's total return over that window is computed, and then ranked across the universe on the same date. The rank is expressed as a percentile, so every horizon is on the same 0–1 scale and averaging across horizons is meaningful.
Four lookbacks are used: one month (21 trading days), three months (63), six months (126) and twelve months (252).
- pct_1m … pct_12m
- Percentile rank of the fund's return over that window, against all 80 funds, as of the latest close. 1.00 means it is the strongest in the universe over that window.
- composite
- The mean of the four percentiles. One number, but a decomposable one — you can always see which horizon is driving it.
- agreement
- How many of the four horizons place the fund in the top quartile (percentile ≥ 0.75). 4 means strong over every window; 1 means the strength is confined to one lookback.
Why agreement matters more than the composite
A fund can reach the same composite two ways: consistently strong across all four horizons, or extremely strong over one window and mediocre elsewhere. Those are different situations and the composite alone cannot tell them apart.
The agreement column separates them. Four out of four is an established trend. One out of four is usually a short-term spike in an otherwise unremarkable fund — the kind of thing that looks like a signal and is not.
Movers — measured over four weeks
The change figure is the composite today minus the composite 21 trading days ago, expressed in percentile points. It is deliberately not a week-on-week change.
A single week's rank move has a median of 5 places, and roughly a third of names move ten or more places in a week. Almost all of that is churn in the underlying measurements rather than a change in what the market is doing, so a weekly risers-and-fallers list is mostly noise. Four weeks filters most of it out while still being timely enough to act on.
- change_4w
- Composite now minus composite 21 trading days ago, in percentile points.
- rank_change
- Places gained (positive) or lost (negative) over the same four weeks.
Triggers and context
These are computed directly from price and volume, without reference to the ranking. They are the things that make a chart worth opening.
The context columns exist so that a review starts informed: whether a fund is moving on its own or because its whole group is moving is usually the first question worth answering about any individual chart.
- days_since_52w_high
- Trading days since the fund last set a 52-week high. Blank if it has not set one inside the measured window — deliberately not reported as zero.
- pct_from_52w_high
- How far the current price sits below the highest close of the past 252 trading days.
- volume_ratio
- Latest volume divided by its own 20-day average. Above 2 is flagged as a spike.
- range_break
- True when the close is above the highest close of the preceding 60 trading days.
- vol_63d
- Annualised standard deviation of daily returns over 63 trading days.
- bucket_corr
- Correlation of the fund's daily returns with the average of its own bucket over 63 trading days. High means it is moving with its group; low means it is moving alone.
The data
Daily adjusted closes and volumes, sourced from Yahoo Finance via yfinance, stored in this repository as a single file and updated incrementally: each rebuild requests only the bars it does not already have, normally one row per fund.
Because the history is committed, a rebuild reads local data only and never touches the network. That makes a deployment deterministic and means a build cannot fail because a data provider is slow.
Adjusted prices are revised retroactively when a split or dividend is applied. An append-only store cannot see those revisions, so the history is re-downloaded in full periodically to resynchronise.
What was tested, and what it showed
The ranking on this page was tested against subsequent returns rather than assumed to work. Forward rank correlation was measured between the score and the return over the following period, at horizons from one week to five years, on this universe from 2004 to 2026.
At no horizon was the relationship statistically reliable. Some long-horizon figures look strong — naive t-statistics of 6 to 8 — but those 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, not 1,125. Corrected for that, every horizon sits below t = 2.
This is stated on the page because it should change how the screen is used. It describes what has been happening and where. It does not forecast, and any narrative built on it is a description with hypotheses attached, not a prediction.
A note on the original construction
This screen previously ranked funds by a pairwise tournament: every fund against every other, on the ratio of their prices measured against that ratio's own moving average, with the winner of each pair collecting a point.
That score's ranking was measured against simpler alternatives across 600 weeks and turned out to be a near-perfect copy of a single far simpler quantity — price divided by its own moving average — at a rank correlation of 0.9998. It was also close to trailing four-week return, at 0.894.
In other words the tournament reproduced, at the cost of 3,160 comparisons per rebuild, something that 80 divisions give you directly. The current construction computes the cheap thing openly instead of the expensive thing obscurely, and the multi-horizon percentiles add information the tournament could not express.