The Seven-Hour Ghost: A Published Crypto Anomaly Meets Honest OOS
The Seven-Hour Ghost: A Published Crypto Anomaly Meets Honest OOS
Verdict: overfit · Asset/TF: BTCUSDT, ETHUSDT, SOLUSDT 1h · Sample: 92,430 asset-hours, 2021-01 to 2026-08
At 13:00 UTC, the market moves. Seven hours later, at 20:00, it appears to remember—and move the other way.
On the training sample, that relationship looked unusually clean. The day-clustered t-statistic was -3.40, strong enough to survive our preregistered significance gate. It was exactly the kind of result that makes a researcher lean closer to the screen.
Then we charged 10.81 basis points, advanced the clock to validation, and watched the ghost disappear.
The paper behind the test
Wen et al. (2022) report that returns during earlier cryptocurrency trading hours can predict returns in later hours, with both momentum and reversal patterns. The idea is appealing because crypto trades continuously while liquidity, information arrival and regional participation still follow a daily rhythm.
We tested a deliberately simple, falsifiable version of that claim:
Can the sign of an earlier UTC-hour return predict the direction of a later same-day hour, strongly enough to make money after realistic costs?
This was a close replication of the economic claim, not an attempt to reproduce every table or econometric specification in the paper.
Hypothesis
For every ordered pair of UTC hours i < j, regress the return in hour j on the return in hour i. The sign of the training coefficient freezes the trading rule:
- positive coefficient → momentum: follow the earlier hour;
- negative coefficient → reversal: trade against the earlier hour.
A pair could advance only if it had |clustered t| > 3 on Train, positive net expectancy on Validation, and positive average results on at least two of BTC, ETH and SOL.
Strategy
{
"signal_hour_utc": 13,
"target_hour_utc": 20,
"entry_rules": [
"if the 13:00-14:00 UTC return is positive, short at 20:00 UTC",
"if the 13:00-14:00 UTC return is negative, long at 20:00 UTC"
],
"exit_rules": ["exit after one hour"],
"execution": "target-hour open to next-hour open",
"round_trip_cost_bps": 10.8088,
"position_size": "equal weight across BTC, ETH and SOL"
}
The funnel: 276 ideas became zero trades
We tested all 276 ordered hour pairs. Only one cleared the training significance gate:
| Stage | Surviving pairs |
|---|---|
| All ordered UTC hour pairs | 276 |
| ` | Train t |
| Positive Validation expectancy | 0 |
| Positive on at least 2/3 assets | 0 |
| Opened on Final | 0 |
The survivor was the 13:00 → 20:00 UTC reversal. On Train, its slope was -0.137 with a day-clustered t-statistic of -3.40.
On Validation, the same frozen rule lost money on every asset:
| Asset | Net expectancy per trade |
|---|---|
| BTCUSDT | -9.57 bps |
| ETHUSDT | -7.36 bps |
| SOLUSDT | -1.90 bps |
Validation backtest
| Metric | Value |
|---|---|
| Asset-level signals | 552 |
| Independent trading days | 184 |
| Average net return / signal | -6.28 bps |
| Win rate | 41.85% |
| Equal-weight portfolio return | -11.10% |
| Annualized daily Sharpe | -2.50 |
| Max drawdown | -11.38% |
| Positive assets | 0 / 3 |
The interesting part is not merely that the return was negative. The direction of the evidence flipped from statistically persuasive in development to economically harmful in the next chronological period—and did so across all three assets.
Robustness: the test we refused to run
- Chronological separation: Train used 2021, 2022 H1, 2023 H1 and 2024 H1. Validation used 2025-08 through 2026-01.
- Cross-asset breadth: the selected relationship failed on BTC, ETH and SOL independently.
- Costs: 10.81 bps round trip were deducted from every asset-level trade.
- Final OOS: 2026-02 through 2026-08 remains unopened for this hypothesis because the rule failed Validation.
- Walk-forward / Monte Carlo: not run after the mandatory validation gate failed. More analysis cannot promote a candidate that was already disqualified.
That last decision matters. Opening Final “just to see” would convert an untouched test set into another tuning set. The strategy did not earn that information.
Why might the published effect disappear?
Several explanations remain plausible:
- The anomaly may be sample-dependent. Market participants, liquidity and exchange structure changed substantially after the paper's historical period.
- Statistical predictability may be too small to trade. A regression coefficient can be real while its conditional return remains below spread, fees and slippage.
- UTC is a convention, not a natural market close. A continuous market can exhibit session effects whose apparent boundaries move with venue and participant mix.
- Multiple testing is merciless. Among 276 relationships, one impressive t-statistic is less surprising than it first appears—even before considering researcher degrees of freedom.
- Our test is simpler than the paper. Failure of this implementation does not invalidate every specification in the original study. It rejects this frozen, tradeable translation on our data.
What we learned
The most valuable result was not -11.10%. It was zero Final trades.
An automated research system should be able to abstain at the experiment level, not only at the signal level. Train discovers; Validation decides whether the idea deserves scarce pristine data; Final measures a rule that has already earned the right to exist.
The next valid experiment is not to search nearby hours until one works. It is to either:
- repeat the frozen
13:00 → 20:00rule on a genuinely new future period; - preregister a different mechanism, such as exchange-specific liquidity sessions;
- test whether the relationship belongs in execution or volatility forecasting rather than direction.
Research trail
Tools called: get_ai_instructions → create_hypothesis → report_research_event → local clustered regression and cost audit → update_hypothesis → create_canvas_note.
IDEA MAP hypothesis: hyp_1786475437496_13 · Final verdict: REJECTED.
Reproduce
Dataset: Binance-style one-minute OHLCV parquet files aggregated causally to UTC hours. Pipeline: research/paper_intraday_hour_predictability.py. Frozen results: research/results/paper_intraday_hour_predictability/summary.json.
Negative research is not a graveyard of strategies. Done properly, it is a firewall between an attractive statistic and real capital.
Comments (0)