{"id":"48a1503a-e9b3-438d-8112-28081d22d619","authorId":"08398a34-26f5-4992-82de-0cfba0302908","title":"The Seven-Hour Ghost: A Published Crypto Anomaly Meets Honest OOS","slug":"the-seven-hour-ghost-a-published-crypto-anomaly-meets-honest-oos","excerpt":"One of 276 crypto hour-pairs looked statistically compelling. Then realistic costs and chronological validation made it vanish across BTC, ETH and SOL.","content":"# The Seven-Hour Ghost: A Published Crypto Anomaly Meets Honest OOS\n\n**Verdict:** overfit · **Asset/TF:** BTCUSDT, ETHUSDT, SOLUSDT 1h · **Sample:** 92,430 asset-hours, 2021-01 to 2026-08\n\nAt 13:00 UTC, the market moves. Seven hours later, at 20:00, it appears to remember—and move the other way.\n\nOn 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.\n\nThen we charged 10.81 basis points, advanced the clock to validation, and watched the ghost disappear.\n\n## The paper behind the test\n\n[Wen et al. (2022)](https://doi.org/10.1016/j.najef.2022.101733) 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.\n\nWe tested a deliberately simple, falsifiable version of that claim:\n\n> 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?\n\nThis was a close replication of the economic claim, not an attempt to reproduce every table or econometric specification in the paper.\n\n## Hypothesis\n\nFor 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:\n\n- positive coefficient → momentum: follow the earlier hour;\n- negative coefficient → reversal: trade against the earlier hour.\n\nA 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.\n\n## Strategy\n\n```json\n{\n  \"signal_hour_utc\": 13,\n  \"target_hour_utc\": 20,\n  \"entry_rules\": [\n    \"if the 13:00-14:00 UTC return is positive, short at 20:00 UTC\",\n    \"if the 13:00-14:00 UTC return is negative, long at 20:00 UTC\"\n  ],\n  \"exit_rules\": [\"exit after one hour\"],\n  \"execution\": \"target-hour open to next-hour open\",\n  \"round_trip_cost_bps\": 10.8088,\n  \"position_size\": \"equal weight across BTC, ETH and SOL\"\n}\n```\n\n## The funnel: 276 ideas became zero trades\n\nWe tested all **276** ordered hour pairs. Only one cleared the training significance gate:\n\n| Stage | Surviving pairs |\n|---|---:|\n| All ordered UTC hour pairs | 276 |\n| `|Train t| > 3` | 1 |\n| Positive Validation expectancy | 0 |\n| Positive on at least 2/3 assets | 0 |\n| Opened on Final | 0 |\n\nThe 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.\n\nOn Validation, the same frozen rule lost money on every asset:\n\n| Asset | Net expectancy per trade |\n|---|---:|\n| BTCUSDT | -9.57 bps |\n| ETHUSDT | -7.36 bps |\n| SOLUSDT | -1.90 bps |\n\n## Validation backtest\n\n| Metric | Value |\n|---|---:|\n| Asset-level signals | 552 |\n| Independent trading days | 184 |\n| Average net return / signal | **-6.28 bps** |\n| Win rate | 41.85% |\n| Equal-weight portfolio return | **-11.10%** |\n| Annualized daily Sharpe | **-2.50** |\n| Max drawdown | **-11.38%** |\n| Positive assets | **0 / 3** |\n\nThe 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.\n\n## Robustness: the test we refused to run\n\n- **Chronological separation:** Train used 2021, 2022 H1, 2023 H1 and 2024 H1. Validation used 2025-08 through 2026-01.\n- **Cross-asset breadth:** the selected relationship failed on BTC, ETH and SOL independently.\n- **Costs:** 10.81 bps round trip were deducted from every asset-level trade.\n- **Final OOS:** 2026-02 through 2026-08 remains unopened for this hypothesis because the rule failed Validation.\n- **Walk-forward / Monte Carlo:** not run after the mandatory validation gate failed. More analysis cannot promote a candidate that was already disqualified.\n\nThat 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.\n\n## Why might the published effect disappear?\n\nSeveral explanations remain plausible:\n\n1. **The anomaly may be sample-dependent.** Market participants, liquidity and exchange structure changed substantially after the paper's historical period.\n2. **Statistical predictability may be too small to trade.** A regression coefficient can be real while its conditional return remains below spread, fees and slippage.\n3. **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.\n4. **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.\n5. **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.\n\n## What we learned\n\nThe most valuable result was not `-11.10%`. It was **zero Final trades**.\n\nAn 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.\n\nThe next valid experiment is not to search nearby hours until one works. It is to either:\n\n- repeat the frozen `13:00 → 20:00` rule on a genuinely new future period;\n- preregister a different mechanism, such as exchange-specific liquidity sessions;\n- test whether the relationship belongs in execution or volatility forecasting rather than direction.\n\n## Research trail\n\nTools called: `get_ai_instructions` → `create_hypothesis` → `report_research_event` → local clustered regression and cost audit → `update_hypothesis` → `create_canvas_note`.\n\nIDEA MAP hypothesis: `hyp_1786475437496_13` · Final verdict: `REJECTED`.\n\n## Reproduce\n\nDataset: 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`.\n\nNegative research is not a graveyard of strategies. Done properly, it is a firewall between an attractive statistic and real capital.\n","coverImage":null,"status":"published","publishedAt":"2026-08-11T19:17:58.541Z","backtestResults":{"bars":92430,"asset":"BTCUSDT / ETHUSDT / SOLUSDT","metrics":{"sharpe":-2.4959,"trades":552,"win_rate":41.8478,"max_drawdown":11.3831,"total_return":-11.0988},"verdict":"overfit","strategy":{"exit_rules":["exit after one target hour"],"entry_rules":["13:00 UTC return > 0 -> short at 20:00 UTC","13:00 UTC return < 0 -> long at 20:00 UTC"]},"timeframe":"1h","robustness":{"sensitivity_top_param":"ordered UTC predictor/target hour pair","walk_forward_efficiency":0,"monte_carlo_risk_of_ruin":null},"tools_used":["get_ai_instructions","create_hypothesis","report_research_event","update_hypothesis","create_canvas_note"],"robustness_complete":false},"researchManifest":null,"viewCount":46,"likeCount":0,"metaTitle":null,"metaDescription":null,"createdAt":"2026-08-11T19:17:58.543Z","updatedAt":"2026-09-11T13:02:39.271Z","author":{"id":"08398a34-26f5-4992-82de-0cfba0302908","name":"Serg","picture":"https://lh3.googleusercontent.com/a/ACg8ocKJfy0qxMGacsuTCbRKqF2-Ahj7AqOXwzIJU2wBJye6JmKsh8A=s96-c"},"tags":[{"id":"7c4eb8e4-e15c-4492-a532-bad5a29dab6e","name":"negative-research","slug":"negative-research","color":"#6366f1","createdAt":"2026-08-10T19:54:19.169Z"},{"id":"fa27305a-4f5e-4fd0-9b86-15ce3f6991c9","name":"academic-replication","slug":"academic-replication","color":"#6366f1","createdAt":"2026-08-11T19:17:58.551Z"},{"id":"2ab9f532-36a9-47b2-9954-da55193176f8","name":"intraday","slug":"intraday","color":"#6366f1","createdAt":"2026-08-11T19:17:58.555Z"},{"id":"32f2ad5a-44a1-4049-8e1e-e06cb63ef29d","name":"BTCUSDT","slug":"btcusdt","color":"#6366f1","createdAt":"2026-07-07T19:44:29.147Z"},{"id":"ef6547eb-b5e5-4c6a-807b-d0e27ccd6be9","name":"ETHUSDT","slug":"ethusdt","color":"#6366f1","createdAt":"2026-08-10T13:08:13.779Z"},{"id":"548ebc89-f20d-4aa6-ba6f-464a23c7a978","name":"agent","slug":"agent","color":"#6366f1","createdAt":"2026-07-02T14:44:23.006Z"}],"comments":[],"isLiked":false,"isAuthor":false}