The companion chapter on the limit order book describes the mechanism, the bids and asks, the price-time priority, the matching of incoming orders against resting depth, and the reading of the book as a supply and demand schedule. This chapter models the prices that mechanism produces. We keep the same notation for the best bid , the best ask , the mid , the spread , and the imbalance , and we add the probabilistic structure the models need.
#Primitives
Fix a filtered probability space satisfying the usual conditions of right-continuity and completeness, where is the information carried by the order flow to time . Completeness lets us treat almost-surely defined conditional expectations as genuine adapted processes, and right-continuity secures càdlàg modifications so that first-passage and stopping-time arguments are well posed. A market buy prints at , a market sell at , so every print carries a side . Every expectation, variance, and covariance is taken under the physical measure .
#The efficient price is a martingale
Behind the quotes sits the value the market estimates. A process is a martingale when it is integrable, adapted, and satisfies almost surely for (see the companion martingales chapter), the three clauses the proof below verifies in turn.
The efficient price is the conditional expectation of the terminal value given the order flow, .
The efficient price is an -martingale.
We verify the three clauses. For integrability, conditional Jensen applied to the convex map gives almost surely, and taking expectations with the tower property gives for every , so . For adaptedness, is -measurable by the definition of conditional expectation, and we fix these canonical versions throughout, which is legitimate under completeness. For the martingale identity, the nesting and the tower property give
All three clauses hold, proving the claim.
Subtracting the -measurable from Equation (1) gives the increment form
so efficient-price increments carry no -forecastable component. This is a theorem, not a hypothesis, because the efficient price is defined as a projection. Among all -measurable square-integrable predictors of , the conditional expectation uniquely minimises ; it is the projection of onto , with orthogonality for every bounded -measurable . Defining the efficient price as this projection is the optimal use of order-flow information, and the martingale property is the microstructure shadow of the no-arbitrage statement that discounted prices are martingales under a pricing measure, here proved under the physical measure from the definition alone.
The observed mid is a noisy reading of . Write with . Both and are -adapted, so is too and , leaving it uninformative against itself. Centering requires a coarser value filtration that excludes the tick, spread, and queue state, in the sense , or unconditionally . Under either centering the forecastable structure of the mid is carried entirely by the noise, because by Equation (2). The bid-ask bounce and short-horizon mean reversion of the mid are properties of , not of , and the empirical content of the decomposition is the centering of , which is falsifiable, not the martingale property of , which is a theorem.
#The bid-ask bounce and the spread
A market order buys at the ask and sells at the bid, so consecutive prints bounce across the spread even when the efficient price stands still. Roll's observation is that the bounce leaves a negative signature in the serial covariance of price changes [1].
Let the efficient price be a random walk with i.i.d., mean zero, variance , and let trades print at with side i.i.d., symmetric, and independent of . Then
so the effective spread is .
Differencing the print equation and using ,
A symmetric side has and , so , and by the i.i.d. assumption . Expanding the covariance of Equation (4) at consecutive dates by bilinearity gives four blocks. The block vanishes because has zero autocovariance. The two cross blocks and vanish because is independent of the sides, which factors each expectation and cancels it. Only the side block survives,
Expanding the bilinear form into its four terms,
so the side block equals , which is Equation (3). The inversion takes the positive root because , and the population covariance is non-positive, so the root is real.
The drift of never appears, so the spread is read off price data with no model of returns, and three corollaries sharpen the picture.
Under the assumptions of Theorem 3, the autocovariance of price changes vanishes at every lag , the efficient-price variance is , and the per-period variance of the -step return is .
For the side and innovation indices in and are disjoint, so every block vanishes by independence and the autocovariance is zero. Price changes are therefore an MA(1) process with a single negative autocovariance. For the variance, , and rearranging recovers . For the -step return, splits into independent pieces of variance and , so and dividing by gives the stated ratio.
The per-period variance is largest at , where it equals , and decreases monotonically toward the fundamental variance as ; equivalently the variance ratio starts at one and falls toward . Negatively autocorrelated bid-ask bounce gives a variance ratio below one that decays with horizon and plateaus at the long-run level rather than a ratio that rises to one, the volatility signature plot that diagnoses microstructure noise, and separates fundamental volatility from the noise variance using only the lag-zero and lag-one autocovariances . The idealisation that prints land exactly at makes the recovered the effective round-trip cost, which equals the quoted width only without price improvement; real fills inside the quotes shrink the bounce and the estimator returns the smaller effective spread. The sharper caveat is order-flow autocorrelation. If sides persist with , the four-term expansion Equation (6) becomes , so and positive persistence pushes the covariance toward zero, biasing the naive estimator downward and voiding it once . Roll's formula assumes the bounce is the only source of serial correlation in prints.
As a worked instance take an efficient-price volatility and a spread . The lag-one autocovariance is , inverting to , and the per-period return variance falls from sampled at unit lag toward at long lag, the signature plot that distinguishes the spread term from the fundamental variance.
#Adverse selection sets a spread
Roll's bounce produces a spread with symmetric information. Glosten and Milgrom show a spread arises from information alone, with zero processing cost, because a resting quote is picked off by traders who know more [2].
Let the value be binary with . A fraction of arriving traders are informed and trade in the direction of ; the remaining are noise traders who buy or sell with probability each, independent of . A competitive risk-neutral market maker quotes the conditional expectations
Then the spread is
strictly positive whenever , and the quote mid equals the prior mean .
Take "competitive" to mean free entry, at least two Bertrand-competing makers, so equilibrium drives expected profit per quote to zero. Competition and risk-neutrality then force the quotes in Equation (7), since any ask above is undercut by a rival and any ask below it loses money on average against the informed flow, and symmetrically for the bid. An informed trader buys exactly when , so and . With the uniform prior the buy probability is , so Bayes gives and , whence . By the symmetry of a sell, . Subtracting gives Equation (8), and gives the mid.
With , , and an informed fraction , the ask is , the bid is , the spread is , and the mid is the prior mean . Doubling the informed fraction to doubles the spread to , the linear adverse-selection cost of trading against better information.
The static spread is one frame of a dynamic process. With a general prior the quotes still bracket the value, and the belief they encode walks toward the truth as trades accumulate.
For a general prior , the quotes and keep a strictly positive spread for every , largest at and shrinking to zero as or . The posterior value is a martingale, and as trades accumulate it converges almost surely to , so the spread vanishes.
The trade likelihoods are and , with the sell case reflected, so Bayes maps each trade to a posterior update that raises on a buy and lowers it on a sell. Writing with , the tower property gives , so is a bounded martingale and converges almost surely by the martingale convergence theorem. Each trade carries strictly positive information for , so the limiting -field distinguishes from and the limit is . The spread is the dispersion of under the trade-conditional posteriors, which is greatest when the prior is most uncertain and contracts as the belief concentrates.
Starting from with , a buy raises the posterior to , moves the posterior value from to , and narrows the spread from to , the quotes tightening as the belief walks toward the truth.
The Roll and Glosten-Milgrom spreads are additive components of the same observed width, one from processing the bounce and one from adverse selection. After a trade the market maker's posterior moves to the executed-side conditional expectation, so the transaction-revised price is a martingale by the tower property, and price impact is revealed as Bayesian updating rather than a separate force. The sequential unit-trade structure here is the simple limit; the batched divisible-quantity limit is Kyle's model below, and both price the same informational wedge.
#Fill probability from queue position
A passive order rests in a first-in, first-out queue at the best bid. Let its queue position be the number of units that must execute before and including the order, so rest ahead. Assume constant intensities, execution as the only advancement mechanism, and an order that rests indefinitely without own cancellation. Market sell orders arrive as a Poisson process of rate and remove the unit at the front; an adverse move of the best bid arrives as an independent Poisson process of rate and abandons the level, leaving the order unfilled [3].
For independent and , , the minimum is , and the identity of the winner is independent of the minimum.
Conditioning on with density and using ,
The minimum of independent exponentials is exponential with the summed rate, and the joint density factors into a function of the minimum and the winner label, giving independence.
Under the stated assumptions the probability the order is filled before the level moves is
Superpose the two Poisson processes into one of rate and label each event by its source. By Lemma 7 each event is an execution with probability and an adverse move with probability . Independence and stationarity of Poisson increments, together with rates that do not depend on the position, make the labels of successive events independent and identically distributed Bernoulli trials. Pass to the embedded jump chain; by the strong Markov property at each event time the future is independent of the past given the state, and since the split probability is the same in every position the trials are i.i.d. A fill is the event that the first labels are all executions, which has probability .
The fill probability decays geometrically in depth and Equation (10) prices queueing behind size. Two extensions matter. First, the result is a lower bound on real fill probability because it excludes cancellations of the orders ahead, which also advance the position. If each of the orders ahead cancels independently at rate , then in position the advancement rate is against abandonment , the races stay independent but cease to be identical, and the product becomes
which exceeds Equation (10) for and collapses to it at . Second, conditioning on a fill leaves each sojourn exponential with rate , so the expected time to fill given a fill is , distinct from the unconditional expected time to leave the level, . A trader weighs the discount of resting, the saved half-spread, against the non-fill risk and the adverse selection of fills that cluster exactly when the price is about to move against the resting side.
For a numerical case take execution rate and adverse-move rate per second. A position fills with probability , in expected time seconds given a fill. Letting the three orders ahead cancel at rate raises the fill probability to the product by Equation (11), the gain from queue attrition ahead of the order.
#Which way the mid moves
The same Poisson primitives that fill an order also move the price. Reduce each best queue to a birth-death walk with arrival rate adding depth and depletion rate removing it, and let the mid tick up when the ask queue empties before the bid queue. The single-queue first-passage probability is the gambler's ruin [3].
A birth-death queue of size with up-rate and down-rate , started at , empties before reaching with probability
and when the queue drifts up, , the probability it ever empties is .
Only the embedded jump chain matters for which boundary is hit, since the holding times do not affect the order of jumps. In the jump chain the size rises by one with probability and falls by one with probability . The absorption probability satisfies the harmonic equation with , . The general solution is with , since solves the characteristic equation . Imposing the boundary values gives and , which is Equation (12). Letting with sends and leaves .
Racing the two best queues, the mid ticks up when the ask empties first, an event whose probability increases in the imbalance , the bid share of touch depth. The monotonicity is a coupling argument. Raising at fixed lengthens the bid's first-passage time to zero pathwise while leaving the ask's unchanged, so the ask wins more often, and a heavier bid queue predicts an up move. Imbalance is therefore the natural state variable for the fair price, which the next section makes precise.
#The microprice
The mid is not the fair value. A heavy bid queue tilts the next move up, so the value conditional on the book sits above the mid, and the correction is a function of imbalance [4].
The microprice is the expected mid at the next price move conditional on the current state, , where is the time of the next mid move.
The microprice is the one-step minimum-mean-squared-error predictor of the next observed mid and decomposes as with odd about , , and increasing in . To first order in the tick it is the imbalance-weighted touch
By construction the microprice is the conditional expectation , which Proposition 12 shows is the unique state-measurable predictor of minimising mean-squared error; the mid is the suboptimal special case, since off balance. The up-move probability of the previous section is increasing in and symmetric under the swap with , so the expected signed mid move inherits oddness about , vanishing at and increasing in . Write the next mid move as to the opposite touch, up with probability and down otherwise, so . Linearising the gambler's-ruin up probability of the previous section as , that is taking imbalance to equal the up probability to first order, matches , which is Equation (13).
At the microprice is the mid; a full bid queue, , pulls the fair value to the ask. The mid is a biased predictor of the next price and the microprice removes the bias, and the sense in which it is the right predictor is exact.
Among all predictors of the next mid measurable with respect to the current state, the microprice minimises mean-squared error.
For any state-measurable predictor ,
since the cross term vanishes when both and are state-measurable, by the orthogonality of the conditional expectation. The second term of Equation (14) is nonnegative and is zero exactly when , so the microprice is the unique minimiser. The mid is the special case , which is suboptimal off balance by the squared bias .
This is why execution and signal models condition on imbalance rather than on the mid alone.
#Information becomes impact
The spread and the queue defend against one hazard. A resting quote can be hit by a trader who knows more, and Kyle's model makes the resulting price impact exact in a batched auction [5].
A risk-neutral informed trader observes the terminal value and submits demand ; noise traders submit independent of ; a competitive market maker observes only the aggregate flow and sets . The unique linear equilibrium is
and exactly half the prior variance is resolved, .
Conjecture the linear forms and solve for a consistent pair . Given , and since is a function of the observed while is independent of with mean zero, , so the informed trader's expected profit is
The objective is bounded above only if , for if it is convex or linear in and unbounded, so no optimal demand exists and there is no equilibrium. Under the first-order condition gives , the second derivative confirms the maximum, and . Competition forces the maker to break even, , which Bertrand undercutting between two or more makers selects as the unique no-undercutting schedule. The pair is jointly Gaussian with of mean zero, so the projection theorem gives
using and , so . Substituting and clearing denominators leaves , hence ; the positive root is forced by and by sharing the sign of , giving Equation (15). The posterior variance is on substituting the equilibrium . Within the linear class the system has this single positive solution, so the linear equilibrium is unique.
The impact slope rises with the value uncertainty the maker faces and falls with the noise volume that camouflages the informed order. Exactly half the private signal is impounded, since gives , the price companion of the variance result . The informed trader earns , paid by the noise traders against the break-even maker, increasing in both prior uncertainty and the noise volume to hide behind. Glosten-Milgrom is the sequential unit-trade dual in which the same wedge appears as a bid-ask spread rather than a slope, and the informed trader here is a strategic monopolist who shades demand, the factor being exactly that restraint. In the continuous-time limit of auctions the slope is constant in time and equal to without the factor two, the posterior variance falls linearly to zero, , and the price runs as a Brownian bridge from to with full revelation at the close.
Take prior variance , so , and noise volatility . Then , , the product , the posterior variance is , and the informed trader's expected profit is . The continuous-time slope on the same primitives is , twice the single-period value, the factor the two settings must not share. Glosten-Milgrom and Kyle price the same informational wedge through different mechanisms.
| Feature | Glosten-Milgrom | Kyle |
|---|---|---|
| Trade structure | Sequential unit trades | One batched auction |
| Informed trader | Price taker | Strategic monopolist |
| Price object | Bid and ask quotes | One linear price |
| Wedge | Spread | Slope |
| Information revealed | Toward full over many trades | Half the variance in one shot |
#Inventory and the maker's reservation price
Adverse selection is one cost the maker bears; inventory risk is the other. A maker filled on one side accumulates a position in an asset whose value moves, and a risk-averse maker prices that exposure into its quotes, skewing them to mean-revert inventory toward zero [6].
A maker with constant absolute risk aversion holding inventory in an asset whose mid follows arithmetic Brownian motion with volatility over a remaining horizon values the inventory at the certainty equivalent , and its reservation price, the per-unit indifference value at which it will add one more unit, is
Under exponential utility and a Gaussian mid the certainty equivalent of holding units to the horizon is the mean value minus a risk penalty equal to half the risk aversion times the variance of the terminal position, , since the arithmetic Brownian mid has and . The reservation price is the marginal certainty equivalent, the derivative with respect to , , which is Equation (18). A long maker, , prices below the mid to encourage selling the inventory off, and a short maker prices above it, with the skew vanishing at the horizon.
The reservation price is where the maker centres its quotes, and the optimal half-spread around it trades the profit of a wider quote against the lower fill rate it implies. Solving the maker's utility maximisation against an exponential fill intensity in the quote distance gives the Avellaneda-Stoikov optimal total spread
with the bid and ask placed symmetrically about the reservation price rather than about the mid [7]. As a worked case take , risk aversion , volatility so , horizon , and fill decay . The total spread is , a half-spread of , and the reservation price and quotes skew with inventory.
| Inventory | Reservation | Bid | Ask |
|---|---|---|---|
| (long) | |||
| (flat) | |||
| (short) |
The long maker lowers both quotes to sell its position down, the short maker raises them to buy back, and the reservation skew is the inventory leg of the spread that sits beside the adverse-selection leg of Glosten and Milgrom and the order-processing leg of Roll.
#Optimal execution
Price formation tells a trader what the book will do. Execution asks what the trader should do in return, liquidating a position without paying away the impact the previous sections priced [8].
Liquidate shares over with holdings , , . Let temporary impact cost the rate and let the unaffected price carry volatility , with mean-variance risk aversion . The trajectory minimising solves , giving
which front-loads selling, and the risk-neutral limit is the straight line of constant participation.
Optimise over deterministic, pre-committed trajectories . Temporary impact accumulates expected cost , and the residual position held against a random walk of volatility incurs price risk of mean zero and, by the Ito isometry on the deterministic integrand, variance , the permanent-impact term being path-independent and dropped. The objective is the functional
Its Euler-Lagrange equation reduces to , a linear second-order equation with general solution and . The boundary conditions , select the hyperbolic-sine combination Equation (20), the optimal schedule within the deterministic class. As the equation becomes , whose boundary solution is the straight line, and as the trajectory liquidates immediately.
The two limits are the entire trade-off. A patient risk-neutral trader spreads the order uniformly to minimise impact, and a risk-averse trader front-loads to cut exposure to price risk, the curvature setting the urgency. Kyle's is the permanent-impact slope that the trajectory pays once on net, while is the temporary slope it pays on every instant of trading, the same linearity producing two distinct costs.
As a worked case set the urgency so that . The fraction of the position still held at the midpoint of the schedule is , so of the order is sold in the first half of the window, the front-loading a risk-averse trader chooses. Sending flattens the curve to the straight-line schedule , which holds exactly half the position at .
#Transient impact and resilience
Kyle's impact is permanent and the Almgren-Chriss temporary impact vanishes the instant trading stops. Real impact lies between. A market order consumes depth and pushes the price, then the book replenishes and the price relaxes part of the way back, so impact is transient and the speed of its decay is the resilience of the book [9].
Model the displacement of a signed trade of size at time zero as , relaxing at rate , so its contribution to the price at time is . For a trading rate the impact is the convolution of the flow against the resilience kernel,
Under Equation (22) a constant trading rate drives the impact to the steady state , while a single block of size followed by no trading leaves a residual impact that halves every in time.
For the constant rate, . For the block, taking gives , which falls by half when , that is at .
The steady state is the standing impact a sustained participation rate maintains, the resilience pulling against the trading pushing, and the model recovers the two extremes as limits, giving permanent impact and giving purely temporary impact. A linear propagator must respect a no-arbitrage constraint, since a kernel that relaxed the wrong way would let a round trip profit, and the Gatheral condition gives a sufficient guarantee, that for linear impact a non-increasing and convex kernel excludes price manipulation, a test the exponential resilience passes [10]. Under Equation (22) the optimal liquidation is no longer the smooth Almgren-Chriss curve but a discrete block at the start, a constant rate through the middle, and a block at the close, the trader hitting fresh depth hard, coasting on resilience, and clearing the residual at the end. As a numerical case, three unit buys spaced by leave cumulative impact just after the third trade, against with no decay, the resilience having absorbed the rest.
#Order-flow memory and the square-root law
The propagator Equation (22) generalises from a single decay rate to an arbitrary kernel, and that generalisation explains the empirical impact law the linear models miss. Write the price as the sum of past trades filtered through a decaying kernel,
where is the sign of the trade at and decays as a power law. The order-flow signs are not independent, since splitting and herding give them long memory, an autocorrelation with , so a buy is followed by more buys for a long time.
Persistent flow through a fixed kernel would make the price predictable, which arbitrage forbids, so the kernel decay and the flow memory are locked together. Requiring price increments to be serially uncorrelated, the diffusive efficiency condition, forces
The argument is a scaling balance, since the autocovariance of price increments pairs the kernel response against the flow correlation , and the two power laws cancel to leading order only at this exponent, the delicate balance that keeps a market made of autocorrelated orders statistically efficient [11]. The same balance produces the square-root law, that the impact of a metaorder of size grows as
concave rather than linear against the daily volume , because the early child orders of the metaorder are partially relaxed by the power-law kernel before the later ones land, so doubling the size less than doubles the impact. The concavity is a consequence of the decaying propagator and the long memory of flow rather than an independent assumption, while the precise one-half exponent is the robust empirical value that the locally linear latent-supply picture reproduces, and the prefactor is genuinely empirical and of order one. That is the honest status of the law, a concave shape that follows from order-flow memory and resilience, sitting on a measured exponent and prefactor.
#Summary of results
Each model is a statement about the same object under its own assumptions.
| Result | Statement | Key assumption |
|---|---|---|
| Efficient price | is a martingale | |
| Roll spread | I.i.d. symmetric sides, independent of value | |
| Glosten-Milgrom | Spread | Sequential unit trades, competitive maker |
| Fill probability | Constant rates, execution-only advance | |
| Mid move | Birth-death queue, embedded jump chain | |
| Microprice | to first order | Symmetric tick moves, imbalance state |
| Kyle impact | Gaussian value and noise, linear conjecture | |
| Reservation price | CARA maker, Gaussian mid | |
| Execution | Linear temporary impact, mean-variance | |
| Transient impact | Exponential resilience, convex kernel | |
| Square-root law | Power-law propagator, long-memory flow |
#Numerical illustration
Roll's identity Equation (3) is exact in expectation, so a long simulated print series recovers the spread it was given from the first serial covariance alone.
import numpy as np
from numpy.random import Generator
def simulate_prints(
sigma: float, spread: float, n: int, rng: Generator
) -> np.ndarray:
"""Simulate transaction prints under Roll's bid-ask bounce model.
Args:
sigma: Standard deviation of the efficient-price innovations.
spread: Effective spread; trades print at the efficient price plus or
minus half the spread.
n: Number of prints.
rng: Seeded generator for reproducibility.
Returns:
The transaction price series of length n.
"""
efficient = np.cumsum(rng.normal(0.0, sigma, size=n))
side = rng.choice([-1.0, 1.0], size=n)
return efficient + 0.5 * spread * side
def estimate_spread(prints: np.ndarray) -> float:
"""Recover the effective spread from the first serial covariance.
Args:
prints: A transaction price series.
Returns:
The Roll estimate 2 * sqrt(-cov) of the spread when the lag-one
covariance of price changes is negative, and zero otherwise.
"""
changes = np.diff(prints)
cov = np.cov(changes[1:], changes[:-1])[0, 1]
return 2.0 * np.sqrt(-cov) if cov < 0.0 else 0.0
rng = np.random.default_rng(0)
prints = simulate_prints(sigma=0.01, spread=0.05, n=500_000, rng=rng)
recovered = estimate_spread(prints)
The efficient price is the martingale the order book tracks. The spread is the cost of the bounce and of adverse selection, the queue sets who is filled and which way the price tips, the microprice corrects the mid for imbalance, Kyle's slope turns information into impact, and the execution trajectory pays that impact back at the least total cost. Each is a theorem about the same object, a priority queue carrying information.