← Lab
S036

Johansen cointegrated ETF baskets (curve butterfly + credit)

pairs-johansen-basket-v1
failed Stage 1 (Quick-screen) 2026-07-04
Share: Twitter / X LinkedIn

ID: S036 Slug: pairs-johansen-basket-v1 Run date: 2026-07-04 Failed at: Stage 1 (Quick-screen) Outcome: FAILED — both cells NULL. Headline metric: per-fold cointegration persistence 19% / 48% (gate ≥ 50%); Sharpe −0.37 / −0.32 (gate ≥ 0.8) Fail reason: Both baskets are strongly cointegrated on the full sample (Johansen trace 58.6 / 40.3 vs 29.8 crit) — but under the honest per-fold walk-forward test the cointegration is intermittent (present in only 19% and 48% of folds, both below the 50% admission gate), and even in the folds where it does hold, the reverted spread loses money net of the triple-leg cost stack (negative Sharpe and negative expectancy). Full-sample cointegration is a long-horizon property that does not survive as a tradeable, per-fold signal.

What we found

Cell Basket Full-sample Johansen Per-fold persistence Sharpe β-SPY Max-DD Exp/trade Verdict
c01 [SHY,IEF,TLT] butterfly 58.6 ✅ 19% −0.37 0.00 8.3% −0.30% NULL
c02 [HYG,LQD,IEF] credit 40.3 ✅ 48% −0.32 0.03 21.3% −0.48% NULL

Two honest observations

The 504-day window under-powers a 3-asset Johansen. A persistence-by-window diagnostic shows the fold-level cointegration rate rises with the estimation window: butterfly 18% → 46%, credit 48% → 56% as the window grows 504 → 1260 days (see chart). So the frozen 504-day choice was on the short side for a three-variable test — a genuine calibration lesson. A longer window (≈ 1000–1260 days) would push the credit basket over the 50% persistence bar.

But persistence was not the binding failure — profitability was. In the folds where the basket is cointegrated, the traded spread still earns a negative Sharpe and negative expectancy. A longer estimation window fixes the admission gate, not the fact that the reverted spread is too thin to pay for six transactions plus borrow. Fixing the window would let more folds trade a losing signal.

Verdict & the pillar read

Both cells NULL — cut at Stage 1. With S034 (7 two-asset pairs, all NULL) this makes the pairs pillar 9 trials, all NULL: liquid-ETF relative value, whether as fixed-ratio pairs or per-fold Johansen baskets, does not clear an honest, walk-forward, cost-aware, tail-aware gate over 2007–2026. The recurring lesson: cointegration that is real on the full sample is either not persistent in tradeable windows or not profitable net of the multi-leg cost stack. A longer-window variant (≈ 1008–1260 days) is a possible next S-NNN, but the bar is the negative net edge, not the persistence gate — so the expectation is low, and it must be pre-registered as a new identifier (the 504-day gate here is frozen). The pillar's transparent fail record across the stat-arb design space is the point.

Baseline zero (market-neutral). Friction: 6 transactions/round-trip at 5 bps + 0.5%/yr borrow on shorts. Johansen vector estimated per fold (504-day window, monthly), never full-sample. Data: Tiingo EOD 2007–2026 (panel bounded by HYG/LQD inception). English per repo convention. Ledger: pairs-pillar-ledger.md. Predecessor: S034 (pairs-cointegration-etf-v1, all NULL).

What we tested — the recipe

What we tested — Johansen cointegrated ETF baskets
3-asset dollar-neutral spreads, vector re-estimated per fold, traded on z-score reversion
Baskets — Treasury curve butterfly [SHY,IEF,TLT] + credit [HYG,LQD,IEF]2 basketsVector — Johansen rank-1, estimated per fold (504-day window, no look-ahead)per foldAdmission — cointegrated (Johansen 95%) in ≥ 50% of foldspersistenceSignal — 90-day z of the spread, entry |z|>2, exit |z|<0.5mean-revertFriction — 6 transactions/round-trip (3 legs) + borrowtriple costGate: Sharpe≥0.8 · |beta-SPY|≤0.15 · max-DD≤15% · persistence≥50% · baseline ZERO
Both baskets clear cointegration on the FULL sample (Johansen trace 58.6 / 40.3) — but the gate re-estimates the vector per fold, the honest walk-forward test.

Slice & dice

Growth of $1 — both Johansen baskets (net of triple-leg friction)
even in the cointegrated folds the reverted spread loses money after cost
0.790.850.910.971.042008201020122014201620182020202220242026curve butterflycredit basket
Both drift down: the reversion is too thin to overcome the 6-transaction round-trip cost + borrow.
Cointegration persistence by estimation window — curve butterfly
% of walk-forward folds cointegrated (gate ≥ 50%); frozen window = 504d
504d756d1008d1260dflat = 33
The frozen 504-day window (leftmost) underpowers a 3-asset Johansen; persistence rises with a longer window — but even where it clears 50%, the traded edge is negative net of cost.
Cointegration persistence by estimation window — credit net of duration
% of walk-forward folds cointegrated (gate ≥ 50%); frozen window = 504d
504d756d1008d1260dflat = 49
The frozen 504-day window (leftmost) underpowers a 3-asset Johansen; persistence rises with a longer window — but even where it clears 50%, the traded edge is negative net of cost.
← Olderpairs-johansen-basket-v1

Mechaniq provides information, not investment advice. We do not execute trades. Past results are no guarantee for future performance. You are solely responsible for your trading decisions.

Lab · Methodology · Greeks Lab · About · FAQ · Glossary · Privacy · Terms · mechaniq.trade © 2026

07 Jul 2026, 07:09