The Order Book
Every order in this market is placed at random. Nobody forecasts, nobody reads anything, nobody has a strategy. The book still has a bid-ask spread of a definite size, and you can predict that size before running it.
A real order book looks like the product of a great deal of thinking. It has a spread that stays in a narrow range, depth that builds up away from the middle, and a price that moves like a random walk with a particular step size. It is tempting to read all of that as the sum of what the traders know. Strip the knowledge out entirely and most of it is still there. Orders arriving at constant rates, at uniformly random prices, cancelled at random, produce a spread whose size is set by the arrival rates and nothing else.
On this site a basin is the set of conditions a system comes back from. Push a marble around the inside of a bowl and it rolls back to the bottom; the bowl is its basin, and the rim is its edge, the push beyond which it does not come back. Finding basins, and their edges, is the point of the Laboratory. This panel has one basin, the mean bid-ask spread (the gap between the best price a buyer offers and the best price a seller asks). The price has none.
| basin | what it returns to | what pushes it | its edge |
|---|---|---|---|
| 1. The spread | a mean spread about 1.35 times μ / α, the market-order rate over the limit-order rate | changing the order rates | μ / α shrinking to a couple of ticks, where the spread meets a floor of roughly three ticks |
1. The spread. Limit orders (orders that wait in the book at a chosen price) build the book up at a rate α per unit of price, and market orders (orders that trade at once at the best price) eat it at a rate μ. The spread right now jumps around; its mean is set by those rates. Press Fresh book to start an empty book and compare mean spread so far with predicted, μ / α. What pushes it: changing the rates. Across a factor of five in α, the spread followed μ / α with a slope of 0.899 on the panel's grid and 0.99 ± 0.03 on the finest grid over six random seeds; a slope of 1 means the spread doubles when μ / α doubles. Raising μ alone moved the spread by only half over a near-sevenfold change, because μ also lowers the granularity, σδ / μ. Scaling the cancellation rate δ with μ to hold that still gave a slope of 1.0006, with the ratio sitting on 1.35 the whole way. The edge: push α up until μ / α is worth only a couple of ticks (the price step). With the tick at 0.28 to 0.55 of μ / α, the ratio climbs from 1.47 to about 1.65 and stops, because the spread has hit a floor of roughly three ticks that has nothing to do with the order rates. The panel marks those points gold.
The return is real and supplied from outside: it is a statistic of the order flow, and cut off the order flow and there is no book and no spread.
The price has no basin. It wanders like a random walk and nothing pulls it back to a level. The price plot is illustrative only.
A Market With Nobody Thinking In It
On this grid the slope comes out at 0.899, not 1. That is the tick size, and the right-hand plot is the check: the same measurement is run again on two wider price grids, where the same range of μ / α sits on a tick half and then a quarter as coarse. The slope goes 0.899, 0.970, 1.010. Across six random seeds the finest grid gives 0.99 ± 0.03; the 1.010 is the seed the panel starts with. The gold points in the left plot are the coarsest of all and are left out of every fit.
The Whole Specification
There is nothing else in this market. No agents, no beliefs, no information:
A market order takes the best price on the other side. A limit order lands at a uniformly random price on its own side of the book and waits. Cancellations remove resting orders at random. That is the entire model, and it has no free parameters: every input is a rate you could measure from a tape of real trades without knowing anything about who placed them or why.
The Spread Comes Out of the Rates
Limit orders build the book up at α per unit of price, market orders eat it at μ. The price at which those two balance is:
and the model says the mean spread is that, times a function of the two dimensionless groups left over. It does not say what that function equals. So the testable claim is the proportionality itself: double μ/α and the spread should double. Plotted on log-log axes, that is a straight line of slope 1 at a height the model never predicts.
Running a fresh book at nine different limit-order rates, and taking the six where the tick is fine:
| α | μ/α | measured spread | spread ÷ μ/α |
|---|---|---|---|
| 0.040 | 25.00 | 31.45 | 1.258 |
| 0.055 | 18.18 | 23.06 | 1.269 |
| 0.075 | 13.33 | 18.18 | 1.363 |
| 0.100 | 10.00 | 14.16 | 1.416 |
| 0.140 | 7.14 | 10.09 | 1.412 |
| 0.200 | 5.00 | 7.35 | 1.470 |
The straight line through those six points has slope 0.899, at R² 0.9988. A factor of five in the arrival rate and the line does not bend. But it does not come out at 1 either, and the last column shows why: the ratio is not flat, it climbs from 1.26 to 1.47 as μ/α falls.
The Missing Ten Percent Is the Tick
A spread of five ticks cannot be off by less than a fifth. The grid the prices live on is coarse enough at that end to hold the spread up, which lifts the small-μ/α measurements and flattens the line. If that is the whole story, then putting the same range of μ/α on a finer tick should straighten it.
So the panel runs the sweep three times, on three price grids. Each one is twice as wide as the last, so the same physics sits on a tick half as coarse:
| price grid | μ/α range | coarsest tick ÷ μ/α | fitted slope | R² |
|---|---|---|---|---|
| 420 ticks | 5 to 25 | 0.20 | 0.899 | 0.99882 |
| 1200 ticks | 10 to 50 | 0.10 | 0.970 | 0.99743 |
| 2400 ticks | 20 to 100 | 0.05 | 1.010 | 0.99916 |
0.899, 0.970, 1.010. Halve the tick and the slope moves a third of the way to 1 each time, and on the finest grid it arrives, one percent high. The constant settles as well: the unpinned ratio, which climbed from 1.26 to 1.47 on the coarse grid, sits between 1.29 and 1.36 on the fine one with no trend left in it.
That is the prediction confirmed and its own failure mode explained by the same argument. The shortfall on the panel’s grid was never the model being wrong. It was the grid.
One run of six points is one run. Repeating the finest grid under six different random seeds gives slopes of 1.010, 1.022, 1.002, 0.974, 0.985 and 0.945: 0.99 give or take 0.03. The panel shows the first of those because it is the seed it starts with.
The Same Slope, Coming the Other Way
Everything above moves μ/α by changing α. If the claim is really about the ratio, then changing μ instead has to give the same answer. It does, but only once you notice that μ appears twice.
The spread is pc times a function of the granularity ε = σδ / μ, and μ is in the denominator of that too. Turn up the market-order rate on its own and you raise pc while lowering ε, and the two effects very nearly cancel:
| μ | μ/α | ε | measured spread | ratio |
|---|---|---|---|---|
| 0.30 | 10.00 | 3.33 | 36.19 | 3.619 |
| 0.65 | 21.67 | 1.54 | 39.96 | 1.844 |
| 1.40 | 46.67 | 0.71 | 48.68 | 1.043 |
| 2.00 | 66.67 | 0.50 | 56.21 | 0.843 |
Slope 0.215. A near-sevenfold change in pc and the spread moves by half. Read carelessly, that looks like the prediction collapsing.
It is not. Hold ε still by scaling the cancellation rate with μ, so that the only thing moving is pc, and run exactly the same sweep:
| μ | δ | μ/α | measured spread | ratio |
|---|---|---|---|---|
| 0.30 | 0.30 | 10.00 | 13.53 | 1.353 |
| 0.45 | 0.45 | 15.00 | 20.41 | 1.361 |
| 0.65 | 0.65 | 21.67 | 28.73 | 1.326 |
| 0.95 | 0.95 | 31.67 | 43.17 | 1.363 |
| 1.40 | 1.40 | 46.67 | 62.92 | 1.348 |
| 2.00 | 2.00 | 66.67 | 90.31 | 1.355 |
Slope 1.0006, at R² 0.9998, with the ratio sitting on 1.35 the whole way. A 6.7-fold change in the characteristic price and the constant does not move in the third decimal. This is the same number the α sweep converges to, reached by moving a different rate, and it is the cleanest confirmation on the page.
It also disposes of the loose version of the claim. The spread is not simply μ/α. It is μ/α times something that depends on the other rates, and if you move μ without saying what you did with δ, you will measure a slope of 0.2 and conclude the model is broken.
And Where It Gives Up Altogether
Push α the other way and the characteristic price falls until it is worth only a couple of ticks. There is nowhere left for the spread to go:
| α | μ/α | tick ÷ μ/α | measured spread | ratio |
|---|---|---|---|---|
| 0.280 | 3.57 | 0.28 | 5.46 | 1.527 |
| 0.400 | 2.50 | 0.40 | 4.12 | 1.649 |
| 0.550 | 1.82 | 0.55 | 2.99 | 1.646 |
The ratio climbs from 1.47 to about 1.65 and then stops climbing, because the spread has run into a floor of roughly three ticks that has nothing to do with the arrival rates. This is the same tick effect as the section above, at the end of the range where it stops being a ten percent correction and starts being the whole answer.
The model expects this. The spread is pc times a function of the tick divided by pc, and that function stops being flat once the ratio is no longer small. The panel marks those points gold rather than dropping them, because a prediction that never fails has not been tested.
What Happened When Somebody Checked This Against a Real Exchange
Farmer, Patelli and Zovko took the arrival rates off the London Stock Exchange and compared the model’s predictions to what the market actually did. Eleven stocks, twenty-one months, 434 trading days, about six million events:
| prediction | R² | fitted slope | what the model says the slope is |
|---|---|---|---|
| bid-ask spread | 0.96 | 0.99 ± 0.10 | 1 |
| price diffusion rate | 0.76 | 1.33 ± 0.25 | 1 |
With nothing fitted. Those numbers are theirs and this page does not reproduce them, because the panel has no London Stock Exchange in it. Their slope is a regression across eleven real stocks of the actual spread on the model’s prediction. The panel’s 0.99 ± 0.03 is a log-log slope across six settings of α in a simulated book. The agreement in the central value is a coincidence of two different measurements that should both give 1, and it is not evidence about the London Stock Exchange. What the panel checks is that the model behaves the way the paper says it does, which is a much weaker claim than the paper’s own.
Why This Is an Attractlet
The spread is a real structure. It has a size, it stays in a range, it responds to conditions, and you could build a business on knowing it. And nothing in this market chose it, is maintaining it, or would notice if it changed. It is a statistic of the order flow, in the way that the mean of a thousand dice rolls is a statistic of the dice.
Cut off the order flow and there is no book, no spread and no price. Nothing here produces its own supply and nothing closes a loop. That is the plainest reading in the set, and it is the market twin of the point the Clock-Driven Pattern makes with a painted stripe: structure is not evidence that anything is computing.
What This Model Is Not
Real traders are not random and this does not claim they are. The claim is narrower and more interesting: the parts of market structure this model gets right are parts that do not require anybody to be clever. Everything strategy explains is what is left over.
Limit orders arrive over a band, not a half-line. The published model places them uniformly over an unbounded range on their own side of the book. This one uses 110 ticks, which is wide enough that the book never reaches the edge at the settings the sliders allow, and narrow enough to simulate.
No price impact, no order-size distribution, no correlated order flow. Real order flow is strongly autocorrelated and real order sizes are heavy-tailed. Both are absent here and both matter for anything past the spread.
The diffusion prediction is not checked on this page. The model also predicts the rate at which the price wanders, as a specific product of powers of the five rates. Measuring that well takes far longer runs than a panel can do while you watch, so the price plot here is illustrative and no claim is attached to it.
Farmer, J. D., Patelli, P. & Zovko, I. I. (2005). The predictive power of zero
intelligence in financial markets. Proceedings of the National Academy of Sciences, 102(6),
2254–2259. Preprint fetched and read 2026-09-13; source of the five-rate specification, the
characteristic price μ/α, the statement that the model has no free parameters, and the
London Stock Exchange regression figures quoted above.
Gode, D. K. & Sunder, S. (1993). Allocative efficiency of markets with zero-intelligence traders.
Journal of Political Economy, 101(1), 119–137.