Eigenliquidity Cross-Impact + MPC Slippage Controller Playbook

2026-03-01 · finance

Eigenliquidity Cross-Impact + MPC Slippage Controller Playbook

TL;DR

If you execute a correlated basket using independent single-name slippage models, you systematically underprice tail cost.

A practical upgrade is:

  1. Model cross-impact in a no-dynamic-arbitrage-consistent matrix form,
  2. Diagonalize into eigen-liquidity modes (risk factors you actually push),
  3. Run a constrained MPC controller that minimizes expected impact + risk + completion penalty under live participation/latency constraints.

This turns execution from “name-by-name urgency heuristics” into a state-aware portfolio control problem.


1) Why this matters

Real execution flow is coupled:

Common failure pattern in production:

Root cause: the controller optimizes per name, while the market charges by shared liquidity modes.


2) Core modeling frame

Let:

Inventory dynamics:

[ x_{t+1} = x_t - u_t ]

One-step cost (simplified):

[ \mathcal{L}t(u_t)=u_t^\top \Lambda_t u_t + \gamma,x{t+1}^\top \Sigma_t x_{t+1} + \eta,|x_{t+1}|_1 ]

where:


3) No-arbitrage sanity constraints for cross-impact

Before optimization, reject unstable impact estimates.

Practical constraints (from no-dynamic-arbitrage literature):

Engineering rule:

If projection distance spikes, drop to safer execution mode.


4) Eigenliquidity decomposition (the useful basis)

Directly optimizing in name space is noisy and unstable.

Use covariance eigenbasis:

[ \Sigma_t = V_t D_t V_t^\top ]

Rotate residual and trade vectors:

[ \tilde{x}_t = V_t^\top x_t,\quad \tilde{u}_t = V_t^\top u_t ]

In this basis, the dominant few modes capture most risk and cross-impact pressure (market mode, sector modes, etc.).

Benefits:


5) State-dependent impact kernel

Static (\Lambda) is not enough. Use regime-conditioned impact:

[ \Lambda_t = \Lambda(z_t) ]

with regime features (z_t):

A simple deployable variant:


6) MPC controller (receding horizon)

At each decision step, solve over horizon (H):

[ \min_{u_{t:t+H-1}} \sum_{k=t}^{t+H-1} \mathcal{L}k(u_k) + \rho,|x{t+H}|_2^2 ]

subject to hard constraints:

Execute only the first action (u_t^*), observe new state, then re-solve.

Why MPC over one-shot schedule:


7) Control-state mapping (operator-friendly)

GREEN

AMBER

RED

SAFE


8) Calibration workflow

  1. Data contract (decision-level):
    • full basket intent,
    • synchronized order book/prints snapshots,
    • child-level fills/cancels/latency,
    • markouts by horizon.
  2. Estimate intraday (\Sigma_t) (robust rolling + shrinkage).
  3. Estimate raw cross-impact matrix from signed flow-response pairs.
  4. Enforce PSD/symmetry projection and store diagnostics.
  5. Fit state-conditioned (\Lambda^{(s)}) and transient decay parameters.
  6. Backtest with chronological replay:
    • baseline schedule vs eigen-MPC,
    • compare mean, q90, q95, q99 shortfall + completion risk.

9) Production metrics that actually catch failure early

Trigger policy examples:


10) Minimal implementation blueprint

Runtime loop (every (\Delta t))

  1. Ingest basket residuals + microstructure features.
  2. Update regime (z_t), (\Sigma_t), and (\Lambda_t).
  3. Rotate to eigen basis; compute mode-wise pressure.
  4. Solve constrained MPC (QP/NLP depending on kernel choice).
  5. Emit first-slice orders with venue-aware throttles.
  6. Persist full decision tuple for TCA + retraining.

Decision tuple schema (must-log)


11) Common mistakes

  1. Cross-impact estimated on unsynchronized clocks → fake lead/lag.
  2. No PSD projection → optimizer exploits impossible arbitrage geometry.
  3. Controller ignores venue throttles → simulated optimal, live rejected.
  4. Single global participation cap only → dominant factor mode still over-traded.
  5. No fallback policy when features are stale or feed gaps appear.

12) Where this helps most

High ROI contexts:

Lower ROI:


Closing

Single-name execution logic breaks when liquidity is priced in shared factors.

Eigenliquidity + MPC gives a deployable path to:

In short: optimize what the market actually charges you for—modes, not symbols.


References