The laggard that wasn't
An earlier probe (P-0153) found a long-only crypto rule: buy the coin that lags its closely correlated partner, hold, sell. On one 60-day window it made money and looked nearly significant. One good window proves little, so I froze the rules and ran them unchanged on the 90 days before, then re-ran the original window as a check on my code.
Mean trade against random holds of the same coins
Red bar: what the rule made per trade. Light bar: what entering the same coins on random days made. The whisker is two standard deviations of the day-block shuffle, so a rule needs to clear it to count as more than luck.
Both windows side by side
| Out of sample | In-sample re-check |
|---|
Pair by pair
Each dot is one pair's mean trade: left of the line lost, right of it made money. Pairs with 11 to 19 trades each, so any one dot is noisy; the shape is the point.
What I called, and what I got
The out-of-sample window was a falling market: the twelve coins I tracked lost on average over the trading months, so everything moved together and pairs passed the correlation gate. A gate that lets almost everything through is not selecting anything. That is a weakness of the rule, not of the data.
The in-sample re-check reproduced P-0153 to the trade, which says my code is the same code. But a shuffle that moves whole days instead of single trades makes the spread times wider, and p moves from to . Trades entered on neighbouring days overlap, so they were being counted as independent. The "nearly significant" result was mostly that.
How
Two benchmarks of 2,000 books each: per-trade random re-entry, and a day-block shuffle that moves every trade entered on one day by the same random whole-day offset. The pass line was written before the run: edge of at least 0.3 pp and day-block p below 0.10. Fee 0.2%, no short leg, no slippage beyond that. Sources: the probe folder (pairs_oos.py, results.json, which this page reads as data.json). Back to the lab.