▲ Work in progress. This site is built and researched in the open: pages, numbers and findings may change or be wrong, and the record has gaps. Not advice. More
The Lab
Ideas traders use, put to the record
← the Lab · models explained · write-up
#52 Hidden order in crypto prices? The BDS test, before and after a volatility model
Past prices; no real orders were placed.
Last checked: 18 October 2026.
Where the idea comes from
- Measuring hidden order. Peter Grassberger and Itamar Procaccia (1983) counted how often points of a series come back close to each other. William Brock, Davis Dechert and José Scheinkman (1987) turned that count into a test of whether a series is independent, now called the BDS test. Its final form, with Blake LeBaron, came in 1996.
- The search for chaos in markets. In the late 1980s many hoped that prices hid simple rules behind their noise. José Scheinkman and Blake LeBaron (1989) and David Hsieh (1991) ran the BDS test on stocks and found dependence. Hsieh concluded it came mostly from changing volatility, not from chaos.
- Volatility models. Robert Engle (1982) modelled volatility that clusters, and Tim Bollerslev (1986) gave the standard form used here: GARCH(1,1).
- Our theory pages "Quantum finance: what it adds, and what it doesn't" and "Hard-to-beat markets, and why every test needs a random twin" give the background.
The question
Are crypto returns independent from one period to the next? If not, does a standard volatility model explain the dependence, or is something left over?
How we tested
- Prices: Bybit's hourly futures prices for Bitcoin, Ether and Solana, October 2022 to October 2026, as daily returns (1,460 each) and 4-hour returns (8,765 each).
- The BDS test at 16 settings (histories of 2 to 5 returns, and four closeness distances). We kept the largest of the 16 scores, so each series has a single test.
- Against chance:
- For the raw returns, the same returns were shuffled into random order, 200 times. Shuffling keeps how big the moves are and destroys any order.
- For the model, we fitted GARCH(1,1), divided each return by the spread the model predicted, and tested what was left. Its chance copies were 200 paths drawn from the fitted model, each refitted and tested the same way. The usual tables don't fit the leftovers of a fitted model, so we simulated instead.
- The bar, set in advance: a series fails if its score is beaten by fewer than 5% of its chance copies.
The maths, step by step
1. Coming back close. Take the series 1, 2, 1, 2 and call two values close if they differ by less than 0.5.
- Single values: of the 6 pairs, 2 are close (the two 1s and the two 2s), so the share is 1/3.
- Pairs of neighbours (1, 2), (2, 1), (1, 2): of their 3 pairings, 1 is close in both places, also 1/3.
- If the values were independent, being close in both places would have the chance of two closes in a row: 1/3 × 1/3 = 1/9. The real share is 3 times that, because the series repeats. The BDS test measures that gap, scaled by how much it would vary by chance.
2. Today's spread from yesterday's (GARCH). The model's variance for today is a small constant, plus a times yesterday's surprise squared, plus b times yesterday's variance.
- For Bitcoin's daily returns the fit gave a = 0.16 and b = 0.64, so a + b = 0.80.
- The pull back to normal: a shock to the variance fades by a factor of 0.80 a day, so half of it has gone after ln 0.5 ÷ ln 0.80 = 3.1 days.
3. What is left. Divide each return by the spread the model predicted. A 6% fall on a day when the model expected a 3% spread becomes −2. If the model has caught all the dependence, these leftovers should look independent.
What we found
1. Raw returns are not independent, on every series.
| daily | 4-hour | |
|---|---|---|
| Bitcoin | 6.58 | 41.2 |
| Ether | 7.96 | 37.9 |
| Solana | 9.15 | 30.7 |
The scores are the largest of the 16. Each beat all 200 shuffles, while 95% of the shuffles scored under 2.5 to 2.7.
2. Daily: the volatility model explains most of it.
- Bitcoin 1.18 (beaten by 44% of the chance copies) and Solana 2.16 (11%): they pass.
- Ether 3.04 (3.5%): a narrow fail.
3. Every 4 hours, it doesn't. What was left scored 16.0 (Bitcoin), 13.0 (Ether) and 5.8 (Solana). Each beat all 200 chance copies, while 95% of the copies scored under 2.5 to 2.8.
4. Part of it is the calendar. Two checks we added after seeing finding 3, so they weren't part of the test set in advance:
- dividing each 4-hour return by the usual spread for its time of day left 16.6, 13.6 and 7.3;
- by its 4-hour slot of the week (weekends are quieter) it left 8.0, 7.6 and 3.4: about half gone, and still failing on all three.
The volatility model brings the daily scores down near the chance level (Ether just above it), while at 4 h they stay far above it even with the week's rhythm out.
What it means
- Crypto returns have memory. Most of it is in how big the moves are: calm and wild spells. A standard volatility model removes almost all of that for daily returns.
- At 4 hours, there is more than GARCH(1,1) catches. About half of it is the week's rhythm of trading, and the rest we haven't explained.
- None of this points to chaos, or to anything beyond ordinary probability. The BDS test reacts to any dependence. The natural next step is a richer volatility model (for the calendar, long memory, or falls moving volatility more than rises), not a new kind of mathematics.
- Memory in the size of moves doesn't say which way the price will go.
Limits
- One volatility model, fitted one way (Gaussian likelihood).
- 200 chance copies, so the smallest share it can report is 0.5%.
- Four years, three coins that tend to move together.
Credits
- Peter Grassberger and Itamar Procaccia, "Measuring the Strangeness of Strange Attractors", Physica D, 1983: the correlation sum in step 1.
- W. A. Brock, W. D. Dechert and J. A. Scheinkman, "A Test for Independence Based on the Correlation Dimension", working paper, 1987; W. A. Brock, W. D. Dechert, J. A. Scheinkman and B. LeBaron, the same title, Econometric Reviews, 1996: the BDS test and its variance.
- José A. Scheinkman and Blake LeBaron, "Nonlinear Dynamics and Stock Returns", Journal of Business, 1989.
- David A. Hsieh, "Chaos and Nonlinear Dynamics: Application to Financial Markets", Journal of Finance, 1991.
- Robert F. Engle, "Autoregressive Conditional Heteroscedasticity with Estimates of the Variance of United Kingdom Inflation", Econometrica, 1982.
- Tim Bollerslev, "Generalized Autoregressive Conditional Heteroskedasticity", Journal of Econometrics, 1986: GARCH(1,1).
- J. A. Nelder and R. Mead, "A Simplex Method for Function Minimization", Computer Journal, 1965: the fitting search.
- R. A. Fisher, The Design of Experiments, Oliver and Boyd, 1935: shuffled copies as the test against chance.
- Torben G. Andersen and Tim Bollerslev, "Intraday Periodicity and Volatility Persistence in Financial Markets", Journal of Empirical Finance, 1997: the time-of-day pattern in volatility, behind finding 4's checks.
- Our statistic follows the formulas of the statsmodels project's BDS function. The single largest-score test, the simulated chance copies and the calendar checks are our own choices.
- Data: Bybit's public candles.
- PerpGremlin and Claude, Hidden order in crypto prices? The BDS test, before and after a volatility model, TerminalGremlin, 2026: the tests, the code and the words.
← How the coins were pickedHow our backtester works →
Educational research from public market data; any trading discussed is paper, never real. Nothing here is advice. The full notice.