Quant Memo
Core

Learning Market Impact From Your Own Fills

Estimating how much your own trading moves the price sounds like a simple regression problem, but your fills are entangled with the very price moves you're trying to measure, so the naive estimate is biased in a way that a bigger dataset does not fix.

Prerequisites: Market Impact, Permanent Versus Temporary Impact

The obvious way to measure market impact is to look at fills: for each trade, record the size and the price move that followed, then fit a curve. This is exactly what confounds a naive estimate. A desk doesn't trade randomly-sized orders at random times — it trades because it has a view, often precisely when it expects the price to move in its favour anyway. A buy order placed just before the price rises for reasons unrelated to the trade looks, in the raw data, exactly like a buy order that caused the price to rise. Separating "the trade moved the price" from "the price was already about to move, which is partly why the trade happened" is the entire difficulty of learning impact from your own fills.

Why this is a causal inference problem, not a regression problem

A naive regression of subsequent price change on trade size will pick up both the genuine mechanical impact of the trade (temporary displacement of the order book, permanent information content) and the selection effect of when and why the desk chose to trade that size. If the alpha model behind the trading correlates with near-term price moves — which is the entire point of having an alpha model — then trade size, timing, and subsequent returns are all entangled with the same underlying signal, and a regression coefficient on size cannot cleanly separate "impact of my trade" from "quality of my prediction."

Two ways researchers try to break this confound: use trades that are not driven by short-term alpha — index rebalance flow, forced liquidations, or randomised (or near-randomised) execution schedules — as a cleaner impact-estimation dataset, since these trades' timing is plausibly unrelated to near-term expected returns; or explicitly model and control for the concurrent alpha signal, so the impact estimate is conditioned on "holding the desk's own expected return constant." Neither is perfect, but both are attempts to isolate a causal effect rather than mistake correlation for it.

A trade's realised subsequent price move is the sum of the trade's actual market impact and whatever the price was independently about to do — and because a desk's trading decisions are themselves informed by expectations of price moves, these two pieces cannot be separated by regression alone without either randomised-style data or an explicit model of the confound.

A worked example

A desk regresses post-trade 5-minute return on trade size (as a fraction of average volume) across a year of its own fills, and finds a strong positive relationship for buy orders: bigger buys precede bigger subsequent rises. Read naively, this looks like a square-root-shaped impact curve consistent with the literature.

The desk then isolates a subset of trades executed purely to rebalance index weights after an index reconstitution announcement — trades whose size and timing were dictated by the index change, not by the desk's own return forecast. Regressing post-trade return on size within this subset only produces a noticeably flatter relationship: some genuine impact, but much smaller than the full-sample estimate suggested. The difference between the two slopes is a rough measure of how much of the original "impact" estimate was actually the desk's alpha signal showing up as apparent price impact, because the desk tends to trade larger when its own conviction is higher.

Path explorer
13055time →
end (bold path) 100.38spread of ends 58.966 independent paths, same settings

Picture a mean-reverting path standing in for the residual price move after impact is removed — a trade's genuine impact should look more like a step that partially reverts (temporary impact bleeding off, permanent impact remaining), while a naive impact estimate contaminated by alpha will show a path that keeps drifting in the trade's direction, because it's capturing the forecast, not the footprint.

Whenever possible, benchmark an own-fills impact estimate against a subset of trades known to be unrelated to short-term conviction — passive rebalances, mandated liquidations, execution scheduled by an algorithm blind to the alpha signal. A large gap between that estimate and the full-sample one is a direct measure of the selection bias.

Where this goes wrong in practice

Even with a clean confound-free subset, sample size is usually small — genuinely alpha-free trades are a minority of any active desk's flow — so the resulting impact curve is noisier and harder to fit reliably than the full, biased dataset. Teams sometimes respond by blending the clean and biased estimates, which reintroduces exactly the bias the clean subset was meant to avoid unless the blending explicitly accounts for it.

An impact model fit purely on a desk's own alpha-driven fills will tend to overstate impact for informed trading and understate it for uninformed trading, because it has learned a mixture of the two without knowing which is which — using it to size a genuinely uninformed rebalance trade can lead to unnecessarily cautious, slow execution.

Related concepts

Practice in interviews

Further reading

  • Almgren, Optimal Execution and Market Impact
  • Bouchaud et al., Trades, Quotes and Prices (ch. 12–13)
ShareTwitterLinkedIn