agentic-trading · desk research note · 25 aug 2026
We ran the standard cointegration pairs trade — the one every tutorial teaches — across 81 pairs of crypto majors and country ETFs, on the daily bars already sitting in this repo. Every parameter is fit out-of-sample. It loses money before fees are charged, in both universes, over fifteen years of ETF history and six of crypto.
The reason for running this now was an expected crypto bull market. The data on this box does not show one.
Our newest Binance bar is 2026-08-11. On that bar Bitcoin closes at $63,559 — 49% below its 2025-10-06 peak of $124,659, and down 46% over twelve months. That does not make a bull market impossible; it means nothing in this report can be read as evidence of one, and any strategy justified by "the bull market is coming" is being justified by a forecast rather than by data.
BTCUSDT daily bars, resampled weekly, 2023-01 to 2026-08-11.
The peak marker sits on the highest weekly close in the file.The design is the textbook one, taken from the method in KidQuant's Pairs Trading With Python: screen every pair for cointegration, regress one leg on the other, trade the residual when it stretches.
Four rules matter more than the rest, because they are where this kind of backtest usually invents its profits:
Entry at |z| ≥ 2, exit at z = 0, stop at |z| ≥ 4, maximum hold 60 bars. Positions are open only 7.7% of bars in crypto and 7.4% in ETFs — the cointegration gate is doing real filtering, not waving everything through.
This is not a repeat of the desk's earlier cointegration test. That one (D-B2) used hourly bars over 2022–2024 with a static hedge ratio and died at the stationarity gate before any backtest ran. Its own write-up listed "daily rather than hourly bars" and "a rolling hedge ratio" among the unresolved explanations for why published work disagrees. This run uses exactly those two things, and gets the same answer.
Nine liquid Binance pairs, 36 combinations, 2020-08-18 → 2026-08-11.
The number that closes the question is gross, not net. Before a single basis point of cost, the average trade earns −91 bps. There is no fee schedule, no venue, no rebate that rescues a trade whose raw price move is against it. The cost model is not the binding constraint — the strategy simply does not have an edge to charge fees against.
The distribution is worse than the mean suggests: the median trade loses 129 bps, so this is not one blow-up dragging a healthy book down. Only 41% of trades close positive, and across the eight pairs that traded at least five times, zero are net-positive. Averaging one number per pair, so that a busy pair cannot outvote a quiet one, the mean is negative at t = −3.61.
Ten index and country ETFs with fifteen years of history, 45 combinations, 2011-08-11 → 2026-08-11 — the longest clean sample in the repo.
This one is not a rout, and it is worth being precise about the difference. At −29 bps a trade over 341 trades, with 12 of 33 pairs net-positive and a pooled t = −1.38, the honest reading is indistinguishable from zero and pointed the wrong way. It is a flat result, not a dead one.
But gross is −23 bps here too. The 6 bps cost assumption is doing almost nothing; halve it, and the trade still loses. Fifteen years and 341 trades is a large enough sample that "we were unlucky" stops being available as an explanation.
EFA / VGK is the single best-behaved pair in either universe, and it is worth looking at because it proves the mechanism rather than the strategy. Its cointegration p-value is 0.004, its gate stays open 28% of bars — four times the average — and it earns +33 bps a trade net over 17 trades at t = 2.02, beating its own random-entry null.
The reason is not a market inefficiency. EFA is MSCI EAFE and VGK is FTSE Developed Europe: the two funds hold many of the same companies. There is a real tether, because it is the same assets priced twice. That is what genuine cointegration looks like, and it is also why it does not generalise — you cannot go looking for it in pairs that do not share holdings.
And it is still not a business. One pair clearing t = 2 out of 81 tested is roughly what pure chance delivers at a 5% threshold — we should expect about four. Seventeen trades across fifteen years at 33 bps is 5.7% total, on a spread that is only open a quarter of the time. It is a real effect that is too small and too rare to fund.
A pairs trade does not need two assets to move together. It needs a force that pulls them back when they drift apart. Correlation is the first thing; cointegration is the second; only the second one pays.
BTC and ETH make the point cleanly. Their daily log returns correlate at 0.83 — as tightly coupled as any two large assets you will find. Their Engle-Granger cointegration p-value over the full daily sample is 0.84: no evidence of a stable relationship whatsoever. High correlation, zero tether.
One subsample does break positive, and it is the one closest to the bull-market thesis — so it deserves to be taken seriously and then measured properly.
Crypto trades closing after 2025-08-11 average +369 bps across 28 trades, at a 64% win rate, against −238 bps for the 106 trades before them. Read on its own that looks like a regime change.
So we swept every rolling twelve-month window in the sample instead of only the last one. There are 46 of them. 24% are positive, the median is −99 bps, and 17% of windows match or beat the recent one. A window this good shows up roughly one year in six in a strategy whose full-sample result is solidly negative. That is exactly what a fat-tailed loser looks like when you slice it — not a regime.
The ETF sweep is a useful control in the other direction: its most recent twelve months are below its own median, beaten by 79% of windows. Same strategy, same period, opposite sign. Neither number is telling you about the market.
The desk has one positive result, and this report does not change it. It is worth restating here because it is the answer to "we have nothing to show."
Funding carry (D-B1b). Hold spot, short the perpetual in equal size. The position is flat in price by construction, so the return is the funding stream minus one round trip of cost. Twelve of fourteen symbols pay. The reason it survives while everything else on this desk died is structural: every other design pays its fee on every trade, and this one pays it twice in a lifetime.
| Symbol | Gross income / yr | Break-even hold | Hours funding positive | Verdict |
|---|---|---|---|---|
| UNI | 10.0% | 7.3 d | 89% | Pays |
| LINK | 9.8% | 7.4 d | 89% | Pays |
| DOGE | 9.1% | 8.0 d | 85% | Pays |
| BTC | 8.0% | 9.1 d | 86% | Pays |
| ETH | 7.3% | 9.9 d | 84% | Pays |
| SOL | −7.7% | never | 73% | No |
| BNB | −8.1% | never | 17% | No |
Every pair that opened at least one position, both universes, heaviest-traded first. Nothing is hidden, nothing is dropped, and nothing was re-tuned after the fact.
| Pair | Universe | Gate open | Coint. p | Ret corr | Trades | Avg hold | Gross bps | Net bps | Win |
|---|
Ordered by trade count, so the pairs carrying the most evidence sit at the top. Dimmed rows opened fewer than five positions — their per-trade figures are single draws from a fat-tailed distribution and should be read as noise, in either direction. Gate open = share of bars the trailing window passed Engle-Granger at p < 0.05, the only bars on which a position could be opened. Coint. p is the full-sample value, shown for reference only — it was never used to select a pair.
Pairs trading's best-documented successes are in single-name equities — same sector, same supply chain, same shock. We could not test that here.
The equity inventory on this box is four months deep: NVDA, AMD, MU, INTC, META, MSFT, TSLA, PLTR, MSTR, CRCL, SNDK, LITE and QQQ all start on 2026-04-13 with 86 rows. A cointegration screen needs a formation window longer than the whole file. The ETF panel is the exception — ten symbols with 3,772 rows back to 2011 — which is why it, and not the semis, carries the equity side of this report.
If single-name pairs are worth a real test, the blocking item is not the method. It is ten years of daily bars for twenty or so names, which is a free download away and takes an afternoon.
| Group | Symbols | Rows each | Coverage | Usable for pairs |
|---|---|---|---|---|
| Country & index ETFs | 10 | 3,772 | 2011-08-11 → 2026-08-11 | Yes |
| Crypto majors (Binance) | 9 | 2,186–2,416 | 2020-01-01 → 2026-08-11 | Yes |
| AAPL | 1 | 502 | 2024-08-12 → 2026-08-11 | Marginal |
| Semis, mega-cap, BTC proxies, QQQ | 13 | 86 | 2026-04-13 → 2026-08-12 | No |
There are five surfaces in this repo that all look like "the desk". They are not competing — they do different jobs, and two of them are stale rather than wrong.
| Surface | What it is | State | Use it for |
|---|---|---|---|
| tradedesk :8600 |
Idea intake. Type or speak an idea; the desk prices it against the frozen cost model and writes a kill number before anything runs. SQLite, stdlib only. | Running | The front door. Every new idea starts here. |
| desk-site/ | The research record — 29 designs, verdict, the number that decided it, and a link to the full result doc. Plus provenance, pre-registrations, test status. | Current | The source of truth. What you show anyone asking what the desk has done. |
| kronos_pipeline/site/ | Long-form narrative of the Kronos programme, written as a lab notebook — scope, method, every kill. | Current | The read-through version of the same record. |
| index.html ALPHA/DESK |
Idea board, knowledge graph, live TA tape. 547 KB single static file, no server behind it. | Snapshot · 15 d stale | Nothing, until it regenerates. Its "live" tape is a frozen quote from 2026-08-10. |
| jesse-desk :9000 |
Jesse backtest/live framework. Running, sitting at a password prompt. | Locked | Execution and backtest plumbing — not a research surface. |
index.html or wire it to regenerate from the same ledger —
a dashboard whose top panel is a two-week-old quote labelled "live" is worse than no dashboard, because
it is the one thing on the page a visitor will trust immediately.