3.39 Stat-Arb Without Cointegration: Moving-Band Portfolios via Convex-Concave Optimization

Cointegration tests stationarity, not profit. This method optimizes a basket's price swing inside a band directly, finds ten-asset stat-arbs, and a moving band keeps them alive longer out of sample.

3.39 Stat-Arb Without Cointegration: Moving-Band Portfolios via Convex-Concave Optimization

Every pairs-trading tutorial starts the same way. Find two assets whose prices moved together, run an Engle-Granger cointegration test, confirm the spread is stationary, then trade the spread back to its mean. It works often enough to keep the ritual alive, but the objective is quietly wrong. Cointegration asks whether a combination of prices is stationary. It never asks whether that combination swings enough to pay you. A dead-flat stationary spread passes every test and earns nothing. Kasper Johansson, Thomas Schmelzer, and Stephen Boyd threw the whole testing apparatus out and optimized for the thing you actually get paid for: a portfolio price that stays inside a band and thrashes across it as violently as possible. No cointegration, no stationarity test, no exhaustive pair search. Just an optimization problem, and one clever trick to solve it.

The payoff is a method that finds stat-arbs with ten assets instead of two, scales to a universe of fifteen thousand stocks, and comes with a second idea, the moving band, that keeps the trade alive far longer out of sample. On fourteen years of CRSP data it produced hundreds of tradeable portfolios. The catch, as always, is in the out-of-sample line, and this article spends real time there.

The objective is the profit, so optimize it directly

Start with the setup. You have a universe of n assets with a price vector at each day, and you want a share portfolio, call it s, with short positions allowed as negative entries. The portfolio price on any day is s-transpose times the price vector, a single number that can go negative because s can. You want two things at once from that price series: it should stay inside a band, and it should move across the band constantly. The first property is mean reversion. The second is what pays. Here is the whole problem.

$$ \begin{array}{ll} \text{maximize} & \sum_{t=2}^{T} (p_t - p_{t-1})^2 \\[4pt] \text{subject to} & -1 \le p_t - \mu \le 1, \quad p_t = s^{\top} P_t, \quad t = 1, \ldots, T \\[2pt] & |s|^{\top} \bar{P} \le L, \quad \mu \ge 0 \end{array} $$

Read it in plain language. Maximize the sum of squared day-to-day price changes, which is the portfolio's total price variation. Hold the price within one unit of the band midpoint mu on every day, so it never escapes the band. Cap the leverage, the average dollar size of the position, at a limit L, which is a weighted sum of absolute holdings and therefore pushes most weights to zero and leaves you a sparse portfolio of a handful of names. The band width is fixed at 2 because you can always rescale the shares and midpoint to make it so.

Work the number to feel why the objective is right. Take two portfolios that both obey the band. Portfolio A barely moves, drifting a hundredth of a unit per day, so each squared change is about 0.0001 and over 62 days the objective sums to roughly 0.0006. Portfolio B slams from the bottom of the band to the top and back, a change of about 2 units each day, so each squared change is about 4, and over 62 days the objective is about 248. Both are stationary. Both would pass a cointegration test. Only B is worth trading, and the objective ranks B four hundred thousand times higher than A. Cointegration cannot see that difference. This objective is built from nothing but that difference.

Why maximizing variation inside a band is exactly the trade

The objective is not a proxy. It is the trading profit, almost exactly, and the paper proves it with a simple policy. Hold a quantity of the portfolio equal to the midpoint minus the current price. When the price sits at the bottom of the band, one unit below mu, you hold plus one and you are long. When it sits at the top, one unit above, you hold minus one and you are short. Buy low, sell high, mechanically.