Execution algorithms

Almgren–Chriss optimal execution

structural
Reviewed 4 June 2026. As of 2026: a permanent feature of the market, not an edge that decays.

The canonical optimal-execution model (2000): liquidating a position is a trade-off between market impact (trade fast) and timing risk (trade slow). Minimising a mean-variance cost yields the optimal trajectory; risk aversion sets where on the frontier you sit.

See it move

Almgren–Chriss optimal executiondrag risk aversionIX-ALMGREN
Risk aversion λ0.50
Stylebalanced
Expected cost19.6
Timing variance19.8
optimal trajectory (holdings vs time)efficient frontier (cost vs risk)
Risk aversion λ0.50

What to notice. A patient trader (low λ) liquidates almost linearly and pays little impact but rides volatility for longer; a risk-averse trader (high λ) front-loads and pays more impact to cut timing risk. Every choice sits on the same frontier: there is no free lunch, only a trade-off.

What problem does Almgren–Chriss solve?

You hold XX units and must be flat by time TT. You choose how much to trade in each of NN time slices. Trade quickly and your own selling pushes the price down against you (impact); trade slowly and the price can drift away before you finish (volatility, or timing risk). Almgren–Chriss finds the schedule that optimally trades these two costs off.

It is the formal solution to the dilemma introduced in why execution algorithms exist: impact versus timing risk. Where that page gives you the U-shaped intuition, this page gives you the maths and the answer. The framework is a discrete-time, linear-impact, mean-variance model, deliberately simple enough to be solved in closed form, which is exactly why it became the universal teaching and production baseline.

The output is not one schedule but a family of optimal schedules, one per risk-aversion: the efficient frontier. That is the model's deepest idea: there is no single right answer, only an efficient set. Its assumptions (linear impact, an arithmetic Brownian price) are simplifications, which we flag honestly below.

The impact and risk model

The price you receive on each slice is the unaffected price minus two impact terms: a permanent impact that shifts the price for good and is felt by every later slice, and a temporary impact that depends on how fast this slice trades and recovers after. The unaffected price meanwhile follows a random walk with volatility σ\sigma, the source of risk. Take the three objects one at a time, glossed before any formula.

Permanent impact γ\gamma: each unit you sell permanently lowers the price by γ\gamma per unit, a genuine revaluation the market keeps. It depends on total size, not speed. Temporary impact η\eta: trading a slice of size nn over a short interval τ\tau costs an extra η(n/τ)\eta\,(n/\tau) per unit. The faster you push, the worse the price, but it recovers once you stop. This is the cost you control by slowing down. Volatility σ\sigma: between slices the unaffected price moves as an arithmetic random walk, so the longer you take, the more it can drift against your remaining position. This is the risk (the variance) in the objective.

The execution price on a slice is the prevailing price less the temporary (rate-dependent) impact; the public price itself is pushed down permanently by the size you trade.
S~k=Sk1ηnkτ,Sk=Sk1+στξkγnk\tilde{S}_k = S_{k-1} - \eta\,\frac{n_k}{\tau}, \qquad S_k = S_{k-1} + \sigma\sqrt{\tau}\,\xi_k - \gamma\,n_k

These η\eta, γ\gamma, σ\sigma are the same objects as the market-impact guides. Almgren–Chriss is what you do with a calibrated impact model. See estimating impact for getting η\eta and γ\gamma from data.

The mean-variance objective and the efficient frontier

For any schedule, the model computes the expected cost E[cost]E[\text{cost}] (the impact you'll pay) and its variance V[cost]V[\text{cost}] (the timing risk). It then minimises E[cost]+λV[cost]E[\text{cost}] + \lambda\,V[\text{cost}], where λ0\lambda \ge 0 is your risk-aversion. Sweeping λ\lambda from 0 to \infty traces the efficient frontier, every point a schedule that is optimal for some risk appetite.

Minimise expected impact cost plus risk-aversion times the variance of cost, exactly the mean-variance shape of portfolio theory, applied to a liquidation schedule.
min{xk}  E[cost]+λV[cost]\min_{\{x_k\}} \; E[\text{cost}] + \lambda\,V[\text{cost}]

The intuition for λ\lambda: λ=0\lambda = 0 means you care only about expected cost, so you trade as slowly as possible to minimise impact: the risk-neutral limit, which gives uniform trading (TWAP, the straight-line liquidation). Crank λ\lambda up and you increasingly fear the variance, so you front-load: pay more impact now to cut your exposure to price drift.

The frontier, glossed: plot E[cost]E[\text{cost}] against V[cost]\sqrt{V[\text{cost}]}. It is a convex curve; you cannot reduce expected cost without taking more risk, or reduce risk without paying more expected cost. Your λ\lambda picks the point. This is the single most important picture in execution. An urgent desk (high λ\lambda, it cannot stomach the position drifting) sits up and to the left, trading fast; a patient one (low λ\lambda) sits down and to the right, trading slow. Both are "right"; the model refuses to pretend otherwise.

The closed-form trajectory: the sinh schedule

The optimal holdings path has a closed form. With κ=λσ2/η\kappa = \sqrt{\lambda\sigma^2/\eta} (the "urgency" rate set by risk-aversion, volatility and temporary impact) the remaining holdings decay as a hyperbolic sine. Higher λ\lambda gives a larger κ\kappa and a faster, more front-loaded decay; as λ0\lambda \to 0, κ0\kappa \to 0 and the curve straightens into the TWAP line.

Remaining holdings decay as a hyperbolic sine from XX at the start to 0 at the deadline, with a single urgency parameter κ\kappa controlling all of the curvature.
x(t)=Xsinh ⁣(κ(Tt))sinh(κT),κ=λσ2ηx(t) = X\,\frac{\sinh\!\big(\kappa(T-t)\big)}{\sinh(\kappa T)}, \qquad \kappa = \sqrt{\frac{\lambda\sigma^2}{\eta}}

Reading the formula: the ratio sinh(κ(Tt))/sinh(κT)\sinh(\kappa(T-t))/\sinh(\kappa T) is 1 at t=0t=0 and 0 at t=Tt=T, decaying convexly in between. The single parameter κ\kappa controls the curvature: all of the model's behaviour collapses into this one urgency number. As κ0\kappa \to 0 the ratio becomes linear, recovering uniform (risk-neutral) trading; as κ\kappa grows, the curve bends sharply toward the origin and you dump most of the position early. Volatility (more risk to flee) and risk-aversion both push κ\kappa up; temporary impact (more expensive to rush) pushes it down.

Why permanent impact does not change the shape: in the basic model permanent impact adds a fixed 12γX2\tfrac12\gamma X^2 cost to every schedule (it depends only on total size, not the path) so it shifts the frontier but does not bend the optimal trajectory. Only temporary impact and risk interact to set the curve. That is a genuinely useful, non-obvious fact worth carrying away.

Show the derivation optional

For a liquidation of XX units over NN intervals of length τ=T/N\tau = T/N, let xkx_k be holdings after interval kk (with x0=Xx_0 = X, xN=0x_N = 0) and nk=xk1xkn_k = x_{k-1} - x_k the amount sold in interval kk. The unaffected price carries permanent impact and the execution price carries temporary impact:

Sk=Sk1+στξkγnk,S~k=Sk1ηnkτ,ξkN(0,1) i.i.d.S_k = S_{k-1} + \sigma\sqrt{\tau}\,\xi_k - \gamma\,n_k, \qquad \tilde{S}_k = S_{k-1} - \eta\,\frac{n_k}{\tau}, \quad \xi_k \sim \mathcal{N}(0,1)\ \text{i.i.d.}

The implementation shortfall (cost relative to the arrival value S0XS_0 X) has the expectation and variance below: a path-independent permanent term plus a temporary term that penalises fast slices, and a variance from holding xkx_k through each interval at volatility σ\sigma.

E[cost]=12γX2+ηknk2τ,V[cost]=σ2kτxk2E[\text{cost}] = \tfrac12\gamma X^2 + \eta\sum_k \frac{n_k^2}{\tau}, \qquad V[\text{cost}] = \sigma^2\sum_k \tau\,x_k^2

Minimising E[cost]+λV[cost]E[\text{cost}] + \lambda V[\text{cost}] over the xkx_k (with the endpoint constraints) and setting the gradient to zero gives a linear second-order difference equation in xkx_k:

xk12xk+xk+1=κ~2τ2xk,κ~2=λσ2ηx_{k-1} - 2x_k + x_{k+1} = \tilde{\kappa}^2\,\tau^2\,x_k, \qquad \tilde{\kappa}^2 = \frac{\lambda\sigma^2}{\eta}

Its solution is a discrete hyperbolic sine; in the continuous limit this is x(t)=Xsinh(κ(Tt))/sinh(κT)x(t) = X\,\sinh(\kappa(T-t))/\sinh(\kappa T) with κ=λσ2/η\kappa = \sqrt{\lambda\sigma^2/\eta}, and the trade rate is the corresponding cosh\cosh-weighted decay. The frontier is then traced by evaluating (E[cost],V[cost])(E[\text{cost}],\,V[\text{cost}]) along the optimal xk(λ)x_k(\lambda) as λ\lambda varies. (Almgren & Chriss, Optimal execution of portfolio transactions, Journal of Risk, 2000.)

What the model assumes

The basic model assumes linear impact (real impact is sublinear, the square-root law), an arithmetic random walk (no drift, constant σ\sigma), static parameters, and a single asset. These keep it solvable in closed form. The frontier intuition survives all of them; the exact sinh\sinh trajectory does not, once impact is nonlinear or σ\sigma is time-varying.

Linear vs square-root impact. Empirically impact scales like size\sqrt{\text{size}} (the Gatheral square-root law) not linearly. Almgren–Chriss's linearity is a tractable approximation; extensions (Almgren 2003, Gatheral–Schied) handle nonlinear impact and lose the clean closed form.

No alpha, no drift. The model assumes the unaffected price is a driftless martingale. If you have a short-horizon signal, the optimal schedule tilts toward (or away from) the drift. Execution with alpha is a documented extension, not the base case.

Static parameters. The η\eta, γ\gamma, σ\sigma and the volume profile are taken as fixed; in reality they are regime-dependent and, in 2026, increasingly forecast per name and time of day. This is where ML enters, not to replace the frontier, but to feed it better inputs and to generalise the policy beyond the linear-impact assumption. See what AI changes for HFT.

Worked example

Illustrative synthetic figures, not advice, reproducible in the model above. Liquidate X=1,000,000X = 1{,}000{,}000 shares over T=1T = 1 day in N=20N = 20 slices (τ=1/20\tau = 1/20 day). Take volatility σ=0.30\sigma = 0.30 per day\sqrt{\text{day}} (in price units relative to a 50.00 price), with temporary impact η\eta and permanent impact γ\gamma taken from a calibrated impact model.

Risk-neutral (λ0\lambda \to 0): κ0\kappa \approx 0, so the optimal schedule is the straight line: sell 50,000 every slice (TWAP). Expected cost is the minimum (12γX2\tfrac12\gamma X^2 plus the temporary term spread evenly), but the variance of cost is the maximum: you hold a large position late into the day, fully exposed to σ\sigma.

Picking λ\lambda so the urgency rate gives a half-life of about a quarter of the horizon front-loads the schedule: roughly 130,000 shares in slice 1 falling to about 10,000 in slice 20.
κ=λσ2η,n1130,000    n2010,000\kappa = \sqrt{\frac{\lambda\sigma^2}{\eta}}, \qquad n_1 \approx 130{,}000 \;\longrightarrow\; n_{20} \approx 10{,}000

That moderately risk-averse sinh\sinh schedule pays more temporary impact early, so its expected cost rises, but its cost standard deviation falls sharply, because you are flat much sooner and the price cannot drift on a large remaining position. Reading the frontier: plotting the two points shows the risk-averse schedule sitting up and to the left of the TWAP point, with higher expected cost and much lower risk. Neither dominates; your λ\lambda decides. Drag λ\lambda in the widget above and watch the chosen point glide along the convex frontier while the trajectory bends from a line into a sinh\sinh. Calibrate η\eta, γ\gamma to your own fills; the trajectory shape is robust, the exact numbers are not.

Where this fits

Common questions

What is the Almgren–Chriss model?
Almgren–Chriss (2000) is the canonical optimal-execution framework. It frames liquidating a large position as a trade-off between market impact (trade fast, move the price against yourself) and timing risk (trade slow, expose yourself to volatility). Minimising a mean-variance cost yields an optimal trading trajectory; a risk-aversion parameter sets where on the impact-versus-risk frontier you sit.