Sqrt-law Market Impact (and Slippage Drag)

Why doubling your position size more than doubles your slippage, the Almgren-Chriss square-root law in trader-friendly form, and how the Robustness Sizing panel applies it only where it actually matters.

Updated 2026-06-03
10 min read
advanced

TL;DR. The square-root law of market impact says per-contract slippage grows with the square root of order size, so total slippage scales as size to the 1.5 power. Doubling your position pays roughly 2.8× the slippage, not 2×. The Sizing panel applies this above 1× when the parent backtest used orderbook fills, producing a realistic Kelly recommendation instead of the naive linear one.

What you'll be able to do

  • Explain why doubling order size more than doubles execution cost.
  • Distinguish situations where the platform applies sqrt-law impact from situations where it stays linear.
  • Read the Slippage Drag metric on the Sizing panel and use it to bound aggressive sizing decisions.

What "market impact" actually means

Every market order has two prices: the price you wanted (the inside ask if buying), and the price you got (a weighted average of fills across multiple book levels if the order was large). The difference is market impact — the cost of moving the market away from you by your own demand for liquidity.

For a 1-contract market order, market impact is usually one tick or less — the inside ask is deep enough that one contract gets filled there. For a 10-contract order, you might eat through the first two levels and fill at a worse average price. For 100 contracts, you might walk down the book several levels and pay substantially more than the inside ask. The impact grows with size, and it doesn't grow linearly.

This is why backtests that assume linear scaling of position size systematically overstate the upside of sizing up. The strategy works at 1×, the strategy works at 2× per the linear backtest — but in reality at 2× you pay more slippage per contract, so the gross PnL × 2 minus 2× the slippage isn't what your account actually sees. What it sees is gross PnL × 2 minus roughly 2.8× the slippage.

The square-root law

Empirical research across equities, futures, options, and crypto consistently finds that per-share or per-contract impact grows with roughly the square root of order size. Total impact (per-unit impact × number of units) grows with size to the 1.5 power.

Impact_per_contract ∝ √(order_size)
Total_impact ∝ order_size × √(order_size) = order_size^1.5

This is sometimes called the Almgren-Chriss model (after a 2000 paper that derived it from optimal execution theory) and sometimes called the Kyle's lambda model (after a 1985 paper that derived it from information-asymmetry economics). Multiple derivations all converge on the same empirical relationship.

Why square root specifically

The intuition is liquidity scaling. Order book depth at a single price level is finite. A small order consumes only one level. A larger order consumes multiple levels — but the levels deeper in the book typically have similar size to the inside (not infinitely smaller), so each additional level adds roughly the same amount of capacity. The per-contract cost grows because more levels need to be consumed, but it grows less than linearly because the marginal cost of going one level deeper is bounded.

The square-root relationship emerges from the integral of this stepwise penetration. It's not derived from first principles in a single elegant equation; it's the empirical regularity that this kind of stepwise liquidity model produces, observed across decades of market microstructure research.

Where the platform applies it

Not every fill mode is subject to sqrt-law impact. The Robustness Sizing panel applies the model only when the parent backtest's fill mode is sensitive to order size.

Fill modeSizing scalesWhy
1-second granularityLinearFills happen at the 1-second bar close — single price point, not size-dependent.
Tick (without orderbook simulation)LinearFills happen at a single tick price — assumes infinite liquidity at the tick.
Tick + orderbook simulationSqrt-law above 1×Book-walk fills depend on order size, so impact applies.

When the platform applies sqrt-law impact, the Sizing panel shows two lines on the frontier chart: the naive linear curve (what backtest math would naively project) as a dashed reference, and the sqrt-adjusted curve as the headline recommendation. Below 1× the two lines coincide — smaller orders don't enjoy a slippage discount, but they don't suffer additional impact either.

Slippage Drag

Slippage Drag is the related output metric: total slippage cost as a fraction of gross PnL. It's the answer to "how much of my strategy's edge gets eaten by execution?"

SlippageDrag = total_slippage / (total_pnl + total_slippage)

At 1× sizing, Slippage Drag depends on your strategy's structural cost profile — high-frequency scalpers might pay 30-40% of gross PnL in slippage, while patient swing strategies might pay under 5%.

As size grows, Slippage Drag grows nonlinearly. A 5% drag at 1× becomes roughly 9% at 2× and 16% at 3× under the sqrt-law model. This is the visible cost of the math. The Sizing panel exposes Slippage Drag as a dedicated chart for this reason — it makes the cost of sizing-up visceral in a way the Kelly multiplier alone doesn't.

Placeholder · Screenshot

Slippage Drag climbing under sqrt-law impact

Author hint: The Sizing panel's Slippage Drag chart. Show the cyan line climbing from ~5% at 0.25× to ~16% at 3×. Mark the 1× point at 5%. Capture from an orderbook-mode backtest where the climb is visible. Save to /public/images/guide/robustness/sqrt-law-market-impact/erosion-chart.png.

The math in plain English

The Robustness Lambda decomposes each trade into three pieces:

Gross PnL at mid = recorded PnL + slippage + commission

For multiplier m:

Gross at m = Gross at mid × m            (linear — price movement)
Commission at m = Commission × m          (linear — per-contract)
Slippage at m = Slippage × m              (linear, for m ≤ 1 or in linear modes)
              = Slippage × m^1.5          (sqrt-law, for m > 1 in orderbook mode)
PnL at m = Gross at m − Slippage at m − Commission at m

The clean result: for linear modes, PnL at m = original PnL × m. For orderbook mode at m > 1, the slippage component grows faster than gross, eroding the upside. The Sizing panel's frontier chart visualizes this directly.

Why the platform doesn't apply it below 1×

Above 1× the sqrt-law math is rigorous: larger orders eat deeper book levels and pay more per contract. Below 1× the situation is asymmetric. Smaller orders don't get a slippage discount in any rigorous sense — they still pay the inside spread per contract. The platform models the below-1× case as linear (per-contract cost stays constant, total cost scales linearly with size) rather than as sqrt-law in reverse.

This is a defensible asymmetry. It means the sqrt-adjusted curve and the naive-linear curve coincide below 1× and diverge above 1×, which is the visual hint to read: above 1× is where the slippage tax matters.

In AlgoLift

The full sqrt-law treatment lives on the Sizing panel:

  • The fidelity banner — a top-of-panel callout that names whether sqrt-law applies for this run. Green "Linear (high fidelity)" for non-orderbook modes; amber "Sqrt-law (approximate above 1×)" for orderbook modes.
  • The frontier chart — dual y-axis composed chart showing geometric return + P(ruin), with the naive-linear curve as a dashed reference when sqrt-law applies.
  • The Slippage Drag chart — dedicated subchart showing drag as a percentage of gross PnL across multipliers.
  • The Slippage Drag KPI — at-1× drag in the KPI strip, color-coded green/amber/red.
Placeholder · Screenshot

The fidelity banner naming sqrt-law mode

Author hint: The Sizing panel fidelity banner showing the amber 'Sqrt-law (approximate above 1×)' state with the explanatory body text. Dark theme, full banner visible. Save to /public/images/guide/robustness/sqrt-law-market-impact/fidelity-banner.png.

Worked example

Placeholder · Worked Example

Naive-linear vs. sqrt-adjusted at 1×, 2×, 3×

Author hint: A strategy in orderbook mode showing the sqrt-law effect. At 1×: gross PnL $42k, slippage $2.1k (5% drag), recorded PnL $39.9k. At 2× naive linear: projected PnL $79.8k. At 2× sqrt-adjusted: gross $84k, slippage $2.1k × 2.83 = $5.9k, recorded PnL $78.1k (a $1.7k miss vs. naive). At 3× sqrt-adjusted: gross $126k, slippage $2.1k × 5.2 = $10.9k, recorded PnL $115.1k (a $4.6k miss vs. naive's $119.7k).

What this shows. At 1× the slippage tax is modest (5% of gross). At 2× the per-contract tax grows by √2 ≈ 1.41×, but you're paying it on 2× the contracts, so total slippage is 2.83× the original — about $5.9k instead of the naive $4.2k. The naive linear analysis would have projected $79.8k at 2×; the sqrt-adjusted reality is $78.1k. At 3× the gap widens further — the naive projection of $119.7k overstates by $4.6k. None of these gaps are catastrophic individually, but they're the difference between an honest Kelly recommendation and a misleading one.

Common misunderstandings

Common Misconception
Myth
Sqrt-law is only relevant for institutional sizes.
Reality
It kicks in whenever order size starts exceeding one level of book depth. For thin-liquidity instruments, that can happen at 10-20 contracts — well within retail futures. For deeply liquid instruments like MES, you need much larger sizes before sqrt-law dominates. The platform applies it based on the fill mode, not your assumed institutional status.
  • "The platform always applies sqrt-law." No. Only when the parent backtest used orderbook-simulation fills. Bar-close (ohlc_1s) and standard tick fills are linear-scale because their fill model doesn't depend on size.
  • "I should reduce my Kelly to account for sqrt-law manually." Not necessary. The Sizing panel already applies sqrt-law to compute the adjusted Kelly. Reading and acting on the headline Kelly multiplier is correct — no manual deflation needed.

When sqrt-law impact is the binding constraint

  • Strategies with high slippage drag at 1×. A strategy already paying 15% of gross PnL in slippage doesn't have room to size up — the sqrt-law tax would crush the upside.
  • Thin-liquidity instruments. Smaller futures contracts (MET, MGC, etc.) or off-peak hours see sqrt-law dominate at smaller absolute sizes than mainstream instruments.

When it matters less

  • Bar-close or tick-mid backtests. The platform won't apply sqrt-law in these modes because the fill model doesn't support it. The Slippage Drag KPI still shows the raw 1× drag, but it stays constant across multipliers.
  • Very deeply-liquid markets at retail sizes. Trading 1 ES on day session is so deep in the book that sqrt-law effects are practically undetectable.
Key Takeaway

Sqrt-law Market Impact is what makes the Sizing panel's recommendations honest for orderbook-mode backtests. Doubling your size doesn't pay 2× the slippage; it pays about 2.8×. The platform applies this correction automatically and shows you both the naive-linear and sqrt-adjusted curves so the cost is visible.