Alpha Not Foundopen trading research archive

Archive / Crypto & DeFi / E003

AI-generated research, checked but not peer-reviewed. It may contain errors.
E003  KILL  Not replicatedTested · October 2026

Bitcoin hour-of-day and weekday patterns do not pay

A Bitcoin weekday rule, long 6 days of 7, beat buy-and-hold in only 2 of 3 windows (Sharpe gaps +0.06, -0.58, +0.62), and the Thursday it skipped did not hold up on a 24-coin basket.

bitcoin seasonality hour-of-day day-of-week thursday buy-and-hold perpetuals

People say Bitcoin has strong and weak hours and weekdays. We picked the long or short side of each hour and weekday bucket on the first 60% of history and traded it in the next two windows, paying 7 bp per side. The weekday rule was long on 6 of 7 days, so it mostly held Bitcoin. Net Sharpe was 1.04, 0.96 and 0.39, but buy-and-hold scored 0.98, 1.54 and -0.23: the rule lost to holding in validation. Hour-of-day rules had a net Sharpe around -10. Thursday, skipped by the rule, was -32 bp a day on Bitcoin and +29 bp on a basket, one bucket picked afterwards.

Hour rules, net Sharpearound -10gross about 0 out of sample
Weekday rule, net Sharpe1.04 / 0.96 / 0.39buy-and-hold 0.98 / 1.54 / -0.23
Sharpe gap to buy-and-hold+0.06 / -0.58 / +0.62selection / validation / holdout
Thursday in selection, bp per day-32 vs +29Bitcoin vs 24-coin basket, gross
01 · The idea being tested

Bitcoin has hours of the day and days of the week that are reliably strong or weak, and a trader can lean on them.

Why people believe it

People point to the rhythm of trading sessions, the weekend lull and the habits of traders in different time zones, and expect returns to repeat by the clock. A rule that only needs a calendar looks like a free signal.

Why it would persist The argument, as stated before testing

The belief is that a pattern tied to the clock has no news to trade on and is too small to interest large funds, so it would remain.

02 · How it was tested

For each of the 24 hours, each of the 7 weekdays and each of the 168 hours of the week, we looked at Bitcoin's average return in the first 60% of the history and took that bucket long if it was positive and short if negative. We then traded that fixed choice in the next two windows, paying a cost every time the position changed, and compared the weekday rule with simply holding Bitcoin over the same windows. A follow-up checked the weakest weekday, Thursday, on a basket of 24 coins as independent evidence.

Pass required

Standard pass rule used for all tests; not pre-registered for this test. Net Sharpe above 0 in selection, validation and holdout, above buy-and-hold in the same windows, a bootstrap interval of the validation and holdout Sharpe that excludes 0, and survival at 2x costs. The Thursday follow-up had no pass rule; it reported the mean daily return and a t-statistic per window.

Killed if

Standard rejection rule used for all tests; not pre-registered for this test. Any default criterion failed. The weekday rule failed the buy-and-hold criterion: its Sharpe was below buy-and-hold in validation (0.96 vs 1.54). Hour-of-day rules failed on net Sharpe.

Costs

7 bp one way (5 bp fee + 2 bp slippage), charged on the absolute change of position, per entry and exit. The Thursday follow-up is gross daily return with no cost applied.

Controls

Long-only buy-and-hold of Bitcoin in the same three windows, for the weekday rule. For Thursday, the same weekday on a 24-coin equal-weight basket.

03 · What happened
Why it was rejected

The weekday rule failed the default requirement to beat buy-and-hold in every window (it lost in validation, 0.96 vs 1.54), and hour-of-day rules had a net Sharpe around -10.

  • Hour-of-day and hour-of-week rules had a gross Sharpe of about 0 out of sample and a net Sharpe around -10, after 7 bp per side.
  • The weekday rule is long on 6 of the 7 days. Its net Sharpe was 1.04, 0.96 and 0.39 in selection, validation and holdout, positive in all three. Because it is long on 6 of 7 days, it mostly held Bitcoin.
  • Buy-and-hold Bitcoin scored 0.98, 1.54 and -0.23 in the same windows. The rule beat it in 2 of 3 windows, with Sharpe gaps of +0.06 (selection), -0.58 (validation) and +0.62 (holdout), so it failed the requirement to beat buy-and-hold in every window.
  • Thursday was picked after the fact as the one weekday to skip: -32 bp per day on Bitcoin in selection (t about 1.4) against +29 bp on an equal-weight 24-coin basket (t 0.8). Its effect did not hold up as a rule. All figures are gross of cost.

The weekday rule lost to holding in validation

00.511.5Selection+1.04+0.98Validation+0.96+1.54Holdout+0.39-0.23

Weekday rule, net of 7 bpBuy-and-hold

Annualised net Sharpe of the weekday rule (long on 6 of 7 days) against simply holding Bitcoin, per window. The rule is ahead by 0.06 in selection, behind by 0.58 in validation (0.96 vs 1.54) and ahead by 0.62 in holdout, where holding lost (-0.23).

Chart data (net Sharpe)
Weekday rule, net of 7 bpBuy-and-hold
Selection1.040.98
Validation0.961.54
Holdout0.39-0.23
04 · What it means

Why it failed Interpretation · not established

Interpretation: hour rules have no gross signal for 7 bp per side to erode. The weekday rule is mostly a long position, so beta rather than seasonality may explain most of its Sharpe. Thursday is one bucket out of seven, picked after the fact, and a pattern chosen that way is expected to look strong in the sample it was chosen from.

Lesson

Always put buy-and-hold next to a calendar rule: a rule that is long 6 days in 7 inherits the trend of the sample. A bucket picked after seeing the data needs an independent test, and here the same weekday on a 24-coin basket was +29 bp in selection against -32 bp on Bitcoin.

Scope of this result

Covers Bitcoin perpetual hourly closes from 2020-01 to 2026-10, sign-of-mean rules per hour of day, weekday and hour of week, 7 bp per side, and the Thursday daily return on a 24-coin equal-weight basket over the same windows without costs.

A rejected experiment applies to the tested conditions and does not prove an idea can never work. bp = basis point, 0.01%.

1. Test design

Pre-registered
No
Data
Hourly closing prices of the Bitcoin perpetual future (USDT-margined) — the largest USD-margined crypto perpetual venue, public historical klines; 1 hour; 2020-01..2026-10; public download, no login | Hourly closing prices of 24 crypto perpetual futures (follow-up basket) — the largest USD-margined crypto perpetual venue, public historical klines; 1 hour, aggregated to UTC days; 2020-2021 start depending on the coin, to 2026-10; public download, no login
Universe
Bitcoin perpetual for the three bucket rules (hour of day, day of week, hour of week). Equal-weight basket of 24 perpetuals for the Thursday follow-up.
Signal
For each bucket (24 hours, 7 weekdays or 168 hours of the week) the sign of the mean next-hour return in the selection window. In validation and holdout, hold that sign (long or short) during that bucket.
Execution
The position set at an hourly close earns the return of the following hour. A bucket position is entered and exited each time the bucket changes.
Costs
7 bp one way (5 bp fee + 2 bp slippage), charged on the absolute change of position, per entry and exit. The Thursday follow-up is gross daily return with no cost applied.
Controls
Long-only buy-and-hold of Bitcoin in the same three windows, for the weekday rule. For Thursday, the same weekday on a 24-coin equal-weight basket.
Sample split
Three consecutive windows by position in the hourly series: first 60% (selection, to 2024-01), next 20% (validation, to 2025-06), last 20% (holdout, after 2025-06).
Pass criterion
Standard pass rule used for all tests; not pre-registered for this test. Net Sharpe above 0 in selection, validation and holdout, above buy-and-hold in the same windows, a bootstrap interval of the validation and holdout Sharpe that excludes 0, and survival at 2x costs. The Thursday follow-up had no pass rule; it reported the mean daily return and a t-statistic per window.
Kill criterion
Standard rejection rule used for all tests; not pre-registered for this test. Any default criterion failed. The weekday rule failed the buy-and-hold criterion: its Sharpe was below buy-and-hold in validation (0.96 vs 1.54). Hour-of-day rules failed on net Sharpe.
Power
Not computed. Thursday is one bucket picked after the fact from seven, and its selection t-statistic is about 1.4.

2. Result

Observations
—
Instruments
1
Net mean
—
95% interval
Not reported
Median
—
Worst
—
Finding 1
Hour-of-day and hour-of-week rules had a gross Sharpe of about 0 out of sample and a net Sharpe around -10, after 7 bp per side.
Finding 2
The weekday rule is long on 6 of the 7 days. Its net Sharpe was 1.04, 0.96 and 0.39 in selection, validation and holdout, positive in all three. Because it is long on 6 of 7 days, it mostly held Bitcoin.
Finding 3
Buy-and-hold Bitcoin scored 0.98, 1.54 and -0.23 in the same windows. The rule beat it in 2 of 3 windows, with Sharpe gaps of +0.06 (selection), -0.58 (validation) and +0.62 (holdout), so it failed the requirement to beat buy-and-hold in every window.
Finding 4
Thursday was picked after the fact as the one weekday to skip: -32 bp per day on Bitcoin in selection (t about 1.4) against +29 bp on an equal-weight 24-coin basket (t 0.8). Its effect did not hold up as a rule. All figures are gross of cost.

3. Interpretation

Why it failed
Interpretation: hour rules have no gross signal for 7 bp per side to erode. The weekday rule is mostly a long position, so beta rather than seasonality may explain most of its Sharpe. Thursday is one bucket out of seven, picked after the fact, and a pattern chosen that way is expected to look strong in the sample it was chosen from.
Lesson
Always put buy-and-hold next to a calendar rule: a rule that is long 6 days in 7 inherits the trend of the sample. A bucket picked after seeing the data needs an independent test, and here the same weekday on a 24-coin basket was +29 bp in selection against -32 bp on Bitcoin.
Scope
Covers Bitcoin perpetual hourly closes from 2020-01 to 2026-10, sign-of-mean rules per hour of day, weekday and hour of week, 7 bp per side, and the Thursday daily return on a 24-coin equal-weight basket over the same windows without costs.

4. Reproducibility

Steps
1) Download hourly closes of the Bitcoin perpetual and of the 24 perpetuals for 2020-01 to 2026-10. 2) Split the series by position into 60%, 20% and 20%. 3) For each hour-of-day, weekday and hour-of-week bucket, take the sign of the mean next-hour return in the first window and hold that sign in that bucket in the later two. 4) Charge 7 bp times the absolute change of position, and compute the Sharpe ratio as mean over standard deviation times the square root of 8,760 hourly bars. 5) Repeat for long-only Bitcoin in the same windows. 6) For Thursday, average the UTC daily return of the equal-weight basket on Thursdays per window and compute a t-statistic.
Grade
COMPLETE
Feedback
Feedbacksite

Feedback on the archive

Type
Type

Text only. No name or e-mail is asked; please do not include personal data. Nothing identifying you is stored.

0/2000

Agents: the same channel is available as submit_feedback, see API & agent access.