Research code & frozen evidence →
A pattern at the turn of the hour
Does Bitcoin move more in the first minute of an hour? In the later sample I tested, it did, relative to the rest of the same completed hour. The mean first-minute contrast was +0.2326 and its one-sided 95% bootstrap lower bound was +0.2106. The lower bound exceeded zero, satisfying the frozen rule.
The earlier reconstruction had a higher observed first-minute value: 1.532, against 1.229 in the later validation. These are dimensionless relative-volatility measures, not price returns. The comparison describes the two samples; I did not predeclare or run a significance test for the change between them.
The first-minute peak is still visible
Relative absolute log return · hourly average = 1
The complete values for both profiles are available in the table below.
Show all 60 minute values
| Minute | 2020–2021 exploratory | 2025–2026 validation |
|---|---|---|
| 00 | 1.5324 | 1.2287 |
| 01 | 1.2765 | 1.1431 |
| 02 | 1.1835 | 1.1395 |
| 03 | 1.1300 | 1.0978 |
| 04 | 1.0459 | 1.0878 |
| 05 | 1.1184 | 1.1480 |
| 06 | 1.0511 | 1.1149 |
| 07 | 0.9669 | 1.0716 |
| 08 | 0.9724 | 1.0175 |
| 09 | 0.9678 | 1.0172 |
| 10 | 1.0630 | 1.0662 |
| 11 | 0.9943 | 1.0032 |
| 12 | 0.9458 | 0.9625 |
| 13 | 0.9430 | 0.9414 |
| 14 | 0.9199 | 0.9104 |
| 15 | 1.2315 | 1.1171 |
| 16 | 1.0851 | 1.1001 |
| 17 | 1.0038 | 1.0600 |
| 18 | 0.9778 | 1.0400 |
| 19 | 0.9531 | 1.0371 |
| 20 | 1.0507 | 1.0880 |
| 21 | 0.9701 | 1.0329 |
| 22 | 0.9283 | 1.0141 |
| 23 | 0.9329 | 0.9712 |
| 24 | 0.9221 | 0.9525 |
| 25 | 1.0115 | 1.0108 |
| 26 | 0.9545 | 0.9424 |
| 27 | 0.9182 | 0.9154 |
| 28 | 0.8978 | 0.8727 |
| 29 | 0.8922 | 0.7998 |
| 30 | 1.2369 | 1.1554 |
| 31 | 1.0729 | 1.1205 |
| 32 | 1.0124 | 1.0795 |
| 33 | 0.9823 | 1.0524 |
| 34 | 0.9599 | 1.0267 |
| 35 | 1.0313 | 1.0844 |
| 36 | 0.9737 | 1.0486 |
| 37 | 0.9316 | 1.0240 |
| 38 | 0.9234 | 0.9874 |
| 39 | 0.9225 | 0.9766 |
| 40 | 0.9894 | 1.0362 |
| 41 | 0.9470 | 0.9554 |
| 42 | 0.9160 | 0.9167 |
| 43 | 0.9044 | 0.8973 |
| 44 | 0.8967 | 0.8490 |
| 45 | 1.1740 | 1.0509 |
| 46 | 1.0426 | 1.0231 |
| 47 | 0.9813 | 0.9940 |
| 48 | 0.9560 | 0.9581 |
| 49 | 0.9186 | 0.9586 |
| 50 | 1.0082 | 1.0150 |
| 51 | 0.9542 | 0.9783 |
| 52 | 0.9181 | 0.9391 |
| 53 | 0.9105 | 0.8822 |
| 54 | 0.9061 | 0.8968 |
| 55 | 1.0087 | 0.9195 |
| 56 | 0.9446 | 0.8604 |
| 57 | 0.9072 | 0.8136 |
| 58 | 0.9108 | 0.7836 |
| 59 | 0.9181 | 0.8130 |
Hansen, Kim and Kimbrough’s paper reported recurring cryptocurrency volatility patterns around hourly, quarter-hour and smaller time boundaries. Algorithmic trading and derivatives funding schedules are possible explanations, but this test cannot identify the cause. I examined one pair on one venue, not the paper’s entire set of markets or methods.
What the numbers measure
For each UTC minute I calculated the absolute log return from the preceding minute’s close. For a complete hour, I divided each of its 60 absolute returns by their average for that hour. The resulting 60 numbers average 1: a value above 1 indicates more movement than that hour’s average minute.
This is the within-hour statistic used in the paper’s Figure 8. It uses all 60 minutes of a completed hour, so it cannot be known in full before the hour ends. Figure 7 uses a different rolling normalization; its ambiguous printed formula is outside this test. Neither measure establishes an executable trading signal.
Reconstructing the earlier pattern
I first reconstructed the Figure 8 profiles using Binance Vision BTCUSDT spot candles from October 2020 through May 2021. The archives contained 348,967 rows, with 953 absent source minutes and three rows with malformed close timestamps. I excluded malformed rows without correcting the source, and I did not bridge missing candles when constructing returns. An eligible hour required all 60 candles and the immediately preceding close.
That left 5,809 eligible hours and 23 excluded hours. Minute 00 was the highest point in 21 of the 24 hour-of-day profiles. An independently written calculation checked the coverage, exclusions and profiles. The shape was qualitatively consistent with Figure 8, but exact numerical reproduction and equivalence between Binance Vision and the authors’ historical Nomics/CCXT data were not established. This period was exposed development evidence, not a second independent holdout.
A later test, frozen before acquisition
I froze the validation lineage on 4 November 2026 at 21:27:11 UTC, before acquiring the 21 declared monthly archives for January 2025 through September 2026. The original paper and my earlier reconstruction informed the hypothesis. The later data were uninspected during this study before the freeze; earlier exposure outside this work is unknown. These market observations had already occurred, so this is a retrospective holdout, not a prospective live experiment.
The single primary comparison was the normalized return for minute 00 minus the average normalized return for minutes 01–59, computed separately for each eligible hour. The estimate gives each eligible hour equal weight. The frozen rule required the one-sided 95% lower bound to be strictly greater than zero. A negative point estimate alone would not have established the opposite effect.
I used 10,000 fixed-seed resamples of UTC ISO-week clusters, retaining partial boundary weeks and recomputing the hour-weighted mean in each resample. The 500th sorted value supplied the one-sided lower percentile bound. This allows within-week dependence, but its interpretation depends on weeks being sufficiently independent and representative; dependence across weeks or changing market conditions can weaken that assumption.
The lower bound remains above zero
Hour-weighted first-minute contrast · one-sided 95% bootstrap bound
Mean contrast 0.2326; one-sided 95% lower bound 0.2106; zero is the decision threshold.
Coverage and result
The 21 later archives matched their publisher checksums. The frozen decoder admitted 918,720 rows and found no missing minutes or malformed rows. Of 15,312 calendar hours, 15,311 were eligible. The first hour had no preceding close within the declared sample and was excluded; no zero-denominator hour was found. The bootstrap used 92 observed calendar-week clusters.
The first-minute contrast was positive under the fixed rule. The later profile still shows variation at other minute boundaries, but those features were descriptive, not additional confirmatory hypotheses. The lower first-minute value in the later profile is an observation, not evidence from a separate statistical test that the effect declined.
Verification and limits
The first and only validation run was sealed COMPLETE. A study-owned semantic verifier independently reconstructed the scientific calculations from the bound observations and passed. A separate platform integrity check passed for the sealed artifacts and source-byte identities. Neither check is a third-party audit, and hashes alone do not establish scientific validity or chronology.
This result covers Binance BTCUSDT spot, not all Bitcoin markets. Source corrections, exchange-specific mechanics, excluded observations and market changes may matter. The normalized statistic says nothing about direction, transaction costs, execution or profitable trading. Nor does it establish that a futures funding schedule or any other mechanism caused the pattern.
The frozen lineage is btc-intrahour-2025-2026-validation; the sealed run is 20261104T213413Z-4ef67560ac6b. The chart data on this page were generated from the checked historical profile and the sealed validation result. Their source SHA-256 identities are 1fd1460cd8658da5dd6389d8bdd90e5814712454a7744a34b2f765547f92055f and fdad096a7d0138f3518d0495a92464b5a84f1dfcefcac9b447aa38abe2315f99, respectively. The underlying raw archives and full rerun package are not hosted here.
The public research snapshot contains the scientific algorithms, tests, frozen specification, sealed result and semantic verification. A full independent replay requires the exact source bytes and access to the separate private research-platform dependency. The snapshot’s sanitized module path differs from the original sealed implementation identity.
Data attribution and reuse. The source candles are from Binance Vision BTCUSDT spot one-minute archives. I calculated absolute log returns, normalized them within hours and aggregated the resulting values into the profiles and charts. These derived profile values and charts are offered for noncommercial reuse under CC BY-NC-SA 4.0, with attribution to Binance Vision and Backtest Discipline and share-alike for covered adaptations. Binance’s Vision Dataset Terms and general terms also apply. This notice does not relicense unrelated article text or research code, and Binance did not endorse the analysis. Applicability to publication and redistribution remains subject to rights review.