Lecture 3: The Anatomy of Price Discovery
A practical series for the discerning retail trader and the quantitative alchemist on Market Microstructure
🕯️Greetings, esteemed reader!
In the previous lecture, we rolled up our sleeves and laid out the theory and practical applications of various Liquidity Measure methods.
Now, we lay the last piece of theory you will need before we dive into market‑making models: how prices digest information and what “efficiency’’ really means.
I will keep the “🔬” tags for theory‑heavy passages (great for context, less immediately monetisable) and “🛠️” for hands‑on ideas you can plug straight into code or trading heuristics.
🔥 Shall we commence?
Why do people trade? 🔬
The market is a game of expectations on the assets’ value. If a market participant thinks ETH will make 10x, they buy spot from someone who wants to get rid of it, thinking it is overpriced; both participants have their own understanding of the asset’s fundamentals.
Prices move continuously because market participants place orders for three main reasons:
Risk-sharing/rebalancing – move along the efficient frontier to earn risk premiums. Everybody has their own risk profile; if they want to take risks, they want to get paid for it.
Personal liquidity needs – raise cash or deploy capital. Real “grocery market” situation, - people are selling assets to get money, buying assets to invest, expecting long-term growth.
Speculation – act on heterogeneous expectations about the future price that stem from information. Pure information imbalance about the asset’s value.
Information taxonomy 🔬
Speaking of information market participants base their trades on, it can be classified in a binary way:
Public information: asset valuation moves without trade due to public announcements (press releases, macro data, earnings, etc.), and there is no internal disagreement.
Private information: only some traders possess it, and they reveal it through their trading activities.
Insider info (can be illegal depending on the case! Defo illegal in TradFi in most jurisdictions)
Academic alpha: more knowledge and better tools to convert public information into private.
Fama’s Efficient Market Hypothesis
Let’s define three tiers of price efficiency we’ll be referring to later:
Weak: The price reflects historic price information.
Semi-strong: all publicly available info.
Strong form: all public and private info.
Fama (1970) argued that, in equilibrium, prices should reflect all available information (3. Strong form).
Real‑life frictions generate three famous counter‑arguments:
No‑trade theorem (Milgrom & Stokey, 1982): if everyone is rational and risk‑neutral, private information alone should never induce trade.
Grossman–Stiglitz paradox (1980): if prices already embed everyone’s private info, nobody will pay the cost of acquiring it.
Excess volatility: price jumps too large to be justified by public news flow alone.
Information → Price transformation unclear: EMH doesn’t explain how information is reflected in the prices.
EMH overall is somewhat VERY questionable!
But it’s still just a model, and like any model, it works under specific conditions, so it would be incorrect to dismiss it outright.
In reality, market making and arbitrage, which are the core areas of algotrader’s interest, rely on EMH-like thinking - they assume price discrepancies between related instruments should converge quickly.
The central paradox with EMH is EMH itself, which is simultaneously foundational and frequently violated in practice.
Asset value vs price 🔬
Now let’s write what we talked about in math.
Let
Ωt – the public information set (the “market’s knowledge’’) at time t.
I(t+1) – new public info arriving in [t,t+1] so that
We distinguish price pt (what you actually pay) from market value μ(t) (consensus estimate of “true’’ worth).
Two common approaches to defining the market value (not price!) of an asset:
Discounted cash‑flow value
That’s just an expectation of the future cash flow the asset gives, where c(s) future cash flows, δ∈(0,1] is a discount factor.
Fundamental (state‑price) value
μ(t) is the market makers’ estimate of the security’s value v as of time t, and Ωt denotes the information available to them at that time. v is the asset’s underlying fundamental payoff (could be liquidation value, long‑run dividend sum, etc.).
Informational efficiency in equations 🔬
Assume semi‑strong efficiency (price equals to value estimate equals to value expectation given the information available).
At every instant, the traded price is the market’s best public estimate of fundamental value.
pt = transaction price (last trade or mid‑quote).
μt = “market value’’—shorthand for the conditional expectation.
v = fundamental payoff (liquidation value, discounted cash‑flow, …).
Ωt = all public information known just before time t
Given everything the crowd collectively knows at t, no other unbiased estimate of v beats the price; if it did, arbitrageurs would trade until the two match.
Valuation innovation
When new info arrives (If tomorrow’s earnings come in better than expected, ϵ(t+1)>0; if the CEO resigns unexpectedly, ϵ(t+1)<0):
News has zero predictable mean. Conditional on today’s info, the expected size of tomorrow’s shock is zero:
Why? Because conditional expectations are tower‑property martingales. Just apply the “tower property”, which is a law of integrated expectations:
So no part of tomorrow’s value change is forecastable using information that is already common knowledge today.
Further, for any two different dates s ≠ t
⇒ Innovations are serially uncorrelated. Which means yesterday’s surprise tells you nothing about today’s. If it did, yesterday’s information wouldn’t have been fully incorporated, contradicting efficiency
Price innovation equals value innovation
Because p(t)=μ(t), the same ϵ(t+1) drives the price:
Taking the conditional expectation again:
→ Under informational efficiency, the price process is a martingale.
Add risk aversion and you obtain a “fair‑game’’ plus permanent impact framework à la Kyle.
A martingale is a process whose next expected value equals the current one, given all available information.
🛠️ If prices are martingales, you cannot design a strategy that forecasts the direction of the next price move using only public data—edge must come from
superior processing of that data,
private signals, or
supplying liquidity rather than predicting prices.
Sounds reasonable, doesn’t it?
Liquidity Cost Toolkit 🛠️
Now, on this third lecture, let’s sum up a head‑first catalogue of the price‑based liquidity measures you will reach for in production.
Pairwise Bid–Ask Spread Estimators
Roll (1984)
Core idea
Use the negative first‑order autocovariance of price changes to back out the effective spread.Formula
\( \widehat{s} = 2\sqrt{-\operatorname{Cov}(\Delta p_t,\Delta p_{t-1})}\)When it shines
Tick‑by‑tick data with reliable sequencing, no need for quotes.Caveat
Breaks down when quote revisions are frequent or trade classification is noisy - a typical crypto case.
Corwin–Schultz (2012)
Core idea
High–low price range over two overlapping days proxies the spread.Why traders like it
Works on daily bars—handy when you lack high‑freq prints.Watch out
Overnight gaps inflate the range; adjust or pair with Abdi–Ranaldo.
Abdi–Ranaldo (2017)
Enhancement
Separates intra‑day and overnight volatility to refine Corwin–Schultz.Sweet spot
Assets that close each day with sizeable news risk.
Impact‑Based Measures
Kyle’s λ
Model
In Kyle’s auction, price change is linear in signed orderflow\(\Delta p_t = \lambda\,q_t + \eta_t\)where q(t) is the net trade size.
Practical read‑out
λ captures permanent impact per share/contract.Use case
Estimate with intraday regression, then size trades so that λQ stays below your risk budget.
Square‑Root Impact (Empirical law)
Rule of thumb
\(\Delta p \;\approx\; \sigma \sqrt{\tfrac{Q}{V}}\)where Q is your meta‑order size and V the day’s volume.
Good for Quick what‑if checks when pitching trade sizes to PMs.
Limitation: Purely empirical; the coefficient hides regime shifts.
Execution‑Cost Decomposition
Implementation Shortfall (IS)
Definition
(IS) = benchmark price − your average execution price.Decomposes into
Delay cost – waiting to start.
Impact cost – you moved the market.
Opportunity cost – child orders left unfilled.
Realised Spread
Idea
Quote half‑spread earned minus adverse selection.How
Compare execution price to mid‑price a short time later (e.g., +1 min).Signal
High realised spread ⇒ you provide liquidity without getting picked off.
Benchmark‑Deviation Metrics
VWAP & Slippage
VWAP (Volume‑Weighted Average Price) is the crowd’s yard‑stick.
Slippage = |your execution − VWAP|.
Use it to tune TWAP/VWAP algos and report to clients who think in benchmarks.
Low‑Frequency Illiquidity Proxy
Amihud’s Illiquidity (2002)
Statistic
\(I_t \;=\; \frac{|r_t|}{\text{VOL}_t}\)daily absolute return divided by dollar volume.
Interpretation
“How much price move for one dollar traded?’’Great for
Cross‑sectional screens when only daily data are available.
Production pointers 🛠️
Avoid look‑ahead bias – use only Ωt when computing any statistic at t.
Volume‑scaling – normalise impact by daily volume to compare across assets.
High‑freq data quality – mis‑stamped trades will break serial‑covariance estimators like Roll; clean aggressively.
Market‑making models – the martingale property is a baseline; any predictable drift you discover is potential edge, but will shrink once you trade on it (GS paradox in action) - we’ll talk about that later.
Next lecture: we switch from theory to action – calibrating a simple dealer market‑making model and stress‑testing it on tick data.
Happy coding & good hunting, my dear reader!