Trend following (2/4): Sector-by-sector replication
Part 1 left a gap. Regressing the synthetic backtrack against the whole universe at once recovered the program in ten contracts at a Sharpe of 0.84, against the program’s 1.03 — a fifth of a Sharpe unaccounted for. I argued there that the gap lived in the regression’s blindness to the structure inside the program: equities and bonds, energy and grains, all blended into one optimisation, so the picks came out as coarse compromises. This part measures that structure and rebuilds the replica inside it.
Part 1 closed by pointing at the structure inside the program — the independent bets the universe decomposes into — and at running the selection within it. There is a prior question to settle first. The decomposition to reach for is the CFTC sectors, the same grouping the volatility normalisation already uses. But a sector is a label, and a trend program responds to how markets move, not to what they are called. If some other grouping captures the program’s independent bets better than the sectors do, I should use it. The first thing to settle is whether the data offers one.
The grouping is the sectors
A grouping built from correlations is only worth having if those correlations persist. If last quarter’s co-movement has rearranged itself by the time the position is on, a group defined by it is a group defined by noise. So the question is not what the correlation structure looks like, but how much of it survives a quarter forward. I tested the persistence of correlations directly, as part of earlier work on portfolio construction: trailing estimate against realised outcome over the following quarter, as an R².

Volatility is roughly four times more predictable than correlation, and the difference decides the matter. This construction never forms a covariance matrix: it separates, on purpose, the two things a covariance matrix fuses — each contract’s own volatility, and the correlations between contracts — and treats them according to how forecastable they are. Volatility is, so the program uses it for everything it does quantitatively: the per-contract and per-sector scaling. Correlation is not, so the program refuses to build anything on it — including the grouping. The grouping is handed to prior knowledge instead, and the sectors are that prior knowledge. This does not make them optimal; it makes them defensible, and it makes any data-discovered alternative unreliable in exactly the way the sectors are not. I keep the sectors and move on.
One regression becomes ten
The mechanics carry over from Part 1 unchanged. The synthetic backtrack is still the program’s current weight vector projected across the trailing window; the elastic net still selects contracts against it; the selected contracts are still traded at equal weights and refit monthly. Only the target changes. Earlier it was the program as a whole — one target. Now it is the program restricted to one sector at a time — ten targets, solved independently.

That single change splits one optimisation into ten. The whole-universe regression searched a sixty-two-dimensional space for the ten contracts that best matched one target. The per-sector version solves ten small problems, each confined to one sector’s members and each returning a single representative.

The restriction is the whole point. In the single regression, nothing stopped a currency contract from being chosen to absorb part of a move in bonds, if doing so reduced the global error over the fitting window — and such cross-sector loadings are precisely the ones that fit the past and fail forward. Splitting the target along the sectors removes that freedom. Each regression sees only its own sector, so it cannot borrow one sector’s contract to explain another’s behaviour. The selection that remains is the one the structure actually supports.

The per-sector replica runs at Sharpe 1.06 against the program’s 1.03, with tracking correlation up from 0.68 to 0.77. The missing fifth of a Sharpe was never the price of holding ten contracts. It was the price of choosing them with one regression instead of ten. Fragmenting the target along structure that genuinely exists — the same structure the predictability matrix said to trust — recovers what the whole-universe fit gave away.

The same grid shows where the compression costs the most, and when. In equities, currencies, and grains the grey line opens its lead over the navy one almost entirely in the years before 2000 — when several markets inside one sector trended at once and a single representative could be in only one of them. That is breadth the ten-contract book gives up by construction, and it is concentrated in that early window. After 2000, when a sector’s trend tends to run through fewer markets at a time, the two lines track each other and the gap stops widening.
What the contracts trade
The regression only chooses the representatives; the position each one carries is the program’s own signal, unchanged from Part 1 — a multi-horizon momentum score, volatility-normalised, lagged a day — scaled by two layers of volatility targeting, four percent at the sector and ten percent across the book. The regression answers which contract stands for each sector; the signal and the vol targets answer how much of it to hold.

What this is
The result is a statement about dimensionality. The program’s risk lives in roughly ten independent directions, and one well-chosen contract spans each, so ten contracts reproduce its risk-adjusted return. The refinement over Part 1 is only where to point the regression: not at the program entire, but at each sector in turn, since that is where the structure worth fitting actually sits. That a wide trend program collapses to a handful of representatives is not peculiar to this universe: the same low rank shows up whenever one studies the eigenvalue spectrum of a market correlation matrix against random-matrix noise (Laloux et al., 1999).
Where the method might still improve
One regression and ten independent ones are two points on a spectrum, not its ends. The whole-program fit and the per-sector fit disagree on roughly half their picks in any given month, yet each tracks the program, and their average tracks it more closely than either alone — which suggests the disagreement itself carries information. Weighting the two estimators by how much they agree, or pooling a wider set of them and letting their consensus drive the selection, is a natural direction and one I have only touched here. The per-sector form is not meant as the last word; fragmenting the target is a clear step up from not fragmenting it, and how best to combine estimators looks like an open and probably fruitful question.
The whole record
One figure to close on. Everything above runs from 1995, the window I use throughout this series because the years before it flatter trend following and run on a thinner set of markets. But the replica is not confined to that window. Pushed back to the start of the regression’s reach, in 1980, the same ten-contract construction tracks the full program across forty-five years — through the disinflation of the early eighties, every regime since, and the markets that did not yet exist when it began.

The replica holds its grip on the program across the whole record, not only the window I report. That it does so with ten contracts is the result of this part. Whether those ten can be combined with a risk-premia core, and whether an account of ordinary size can carry them once lot sizes and turnover are accounted for, is where this goes next.
References
Moskowitz, T., Ooi, Y. H. & Pedersen, L. H. (2012). Time series momentum. Journal of Financial Economics, 104(2), 228–250.
Baltas, N. & Kosowski, R. (2020). Demystifying time-series momentum strategies: volatility estimators, trading rules and pairwise correlations. Market Momentum: Theory and Practice, Wiley.
Laloux, L., Cizeau, P., Bouchaud, J.-P. & Potters, M. (1999). Noise dressing of financial correlation matrices. Physical Review Letters, 83(7), 1467–1470.
Marčenko, V. A. & Pastur, L. A. (1967). Distribution of eigenvalues for some sets of random matrices. Mathematics of the USSR-Sbornik, 1(4), 457–483.
Kaminski, K. & Zhao, Y. (2025). Re-evaluating short- and long-term trend factors in CTA replication: a Bayesian graphical approach. arXiv:2507.15876.
Carver, R. (2023). Advanced Futures Trading Strategies. Harriman House.

