Quantitative Finance · Book 11 · Market making

Market Making and High-Frequency Trading

Market Making and High-Frequency Trading · Market making

4Extensions of the Inventory Framework

The exact solution of chapter 3 tells a market maker holding four units to offer them below the mid. Real market makers stop buying instead: they bound the inventory. They also hold several correlated books at once, they know something about where the price is going, and they know that the next trade is more likely to come from someone who knows more than they do. Each of these enters the same linear system. In this chapter’s simulations, quoting two assets whose prices are correlated 0.8 as one book instead of two carries 21% less inventory risk for the same expected profit; a market maker who knows the drift holds the position the formula targets; and one whose fills are followed by an adverse move does best by widening each quote by half that move, not by all of it.

4.1 Inventory bounds and the asymptotic solution

Definition 4.1 (Inventory bound)

An inventory bound qˉ\bar q is a hard limit on the market maker’s position: at q=qˉq=\bar q it does not bid, at q=−qˉq=-\bar q it does not offer, so that ∣qt∣≤qˉ|q_t|\le\bar q at all times.

The bound is part of the state space of Proposition 3.6 of chapter 3, which is why that solution was exact on a finite grid. Its first use is practical: whatever the model says, the position cannot run away. Its second is analytical: on a finite grid the long-horizon behaviour of the solution is an eigenvector problem.

Proposition 4.2 (The stationary quotes)

As T−t→∞T-t\to\infty, the depths of chapter 3’s running-penalty model converge to time-independent depths given by the same formulas with h=1kln⁡vh=\tfrac1k\ln v, where vv is the eigenvector of the largest eigenvalue of MM.

Proof. MM is symmetric with positive off-diagonal entries next to the diagonal, so its largest eigenvalue μ1\mu_1 is simple and its eigenvector vv can be taken positive (Perron–Frobenius). Then ω(t)=eM(T−t)z=∑ieμi(T−t)(vi⊤z)vi\omega(t)=e^{M(T-t)}z=\sum_ie^{\mu_i(T-t)}(v_i^\top z)v_i is dominated by the first term as T−t→∞T-t\to\infty, since v⊤z>0v^\top z>0. The depths depend on ω\omega only through ratios across qq, so the factor eμ1(T−t)(v⊤z)e^{\mu_1(T-t)}(v^\top z) drops out. ∎

In the chapter 3 parameters (A=140A=140, k=1.5k=1.5, ϕ=0.5\phi=0.5) a horizon of one unit of time is already long: the depths at its start agree with the stationary ones to eight decimals. Guéant, Lehalle and Fernandez-Tapia solved the exponential-utility version the same way and approximated the eigenvector in closed form. The same approximation for the running penalty gives a formula simple enough to put in a pricing function.

Proposition 4.3 (Closed-form stationary quotes)

If the eigenvector is approximately Gaussian, vq∝e−βq2/2v_q\propto e^{-\beta q^2/2} with β\beta small, then β2=ϕke/A\beta^2=\phi ke/A and, with c=β/k=ϕe/(Ak)c=\beta/k=\sqrt{\phi e/(Ak)},

δb(q)≃1k+2q+12 c,δa(q)≃1k−2q−12 c.\delta^b(q)\simeq\frac1k+\frac{2q+1}{2}\,c,\qquad \delta^a(q)\simeq\frac1k-\frac{2q-1}{2}\,c .

Proof. The eigenvalue equation is Ae−1(vq−1+vq+1)−ϕkq2vq=μ1vqAe^{-1}(v_{q-1}+v_{q+1})-\phi kq^2v_q=\mu_1v_q. With the Gaussian ansatz, vq±1/vq=e−β(±2q+1)/2v_{q\pm1}/v_q=e^{-\beta(\pm2q+1)/2}, whose sum is 2e−β/2cosh⁡(βq)≃2−β+β2q22e^{-\beta/2}\cosh(\beta q)\simeq2-\beta+\beta^2q^2 to second order. Matching the terms in q2q^2 gives Ae−1β2=ϕkAe^{-1}\beta^2=\phi k. Then h(q)−h(q±1)=1kln⁡(vq/vq±1)=β2k(±2q+1)h(q)-h(q\pm1)=\tfrac1k\ln(v_q/v_{q\pm1})=\tfrac{\beta}{2k}(\pm2q+1). ∎

Each unit of inventory shifts both quotes by cc, and the spread stays 2/k+c2/k+c. For γ→0\gamma\to0 with ϕ=12γσ2\phi=\tfrac12\gamma\sigma^2, the Guéant–Lehalle–Fernandez-Tapia formula reduces to this one. The approximation needs β\beta small, that is a penalty small against the fill rate:

bid depth, ϕ=0.5\phi=0.5q=0q=0q=1q=1q=2q=2q=3q=3worst gap, ∣q∣≤10|q|\le10
exact, stationary0.7080.7900.8720.953
closed form0.7070.7870.8680.9480.034
worst gap for ϕ=5\phi=5 / ϕ=50\phi=500.70 / 5.0

Figure 4.1 shows the failure at ϕ=5\phi=5: the exact depths curve at large inventories, where the eigenvector is far from Gaussian; the straight line does not.

Stationary bid depth against inventory: exact (eigenvector) and closed form, for two running penalties (A=140, k=1.5, inventory within ±20). Data: firm.multimm.
Figure 4.1. Stationary bid depth against inventory: exact (eigenvector) and closed form, for two running penalties (A=140A=140, k=1.5k=1.5, inventory within ±20\pm20). Data: firm.multimm.

4.2 Many assets and correlated inventory

Definition 4.4 (Multi-asset market making)

Multi-asset market making quotes several instruments from one inventory vector q∈Zdq\in\mathbb Z^d and one risk charge on the whole book, ϕ q⊤Σq\phi\,q^\top\Sigma q per unit of time, with Σ\Sigma the covariance of the instruments’ price changes, so that each quote depends on the inventory of every instrument.

Proposition 4.5 (Exact multi-asset quotes)

If the instruments share AA and kk, the substitution h=1kln⁡ωh=\tfrac1k\ln\omega turns the problem on the grid {−qˉ,…,qˉ}d\{-\bar q,\dots,\bar q\}^d into the linear system ∂tω+Mω=0\partial_t\omega+M\omega=0, with Mq,q=−ϕk q⊤ΣqM_{q,q}=-\phi k\,q^\top\Sigma q and Ae−1Ae^{-1} between neighbouring inventories q±eiq\pm e_i; the depths of instrument ii are δib,a(q)=1k+h(q)−h(q±ei)\delta^{b,a}_i(q)=\tfrac1k+h(q)-h(q\pm e_i), and Proposition 4.2 holds on the grid.

Proof. As in chapter 3, instrument by instrument: each side’s supremum contributes

1k Ae−1 ek(h(q±ei)−h(q)),\tfrac1k\,Ae^{-1}\,e^{k(h(q\pm e_i)-h(q))},

which is linear in ω\omega after the substitution because every instrument has the same kk. ∎

The shared kk is the price of exactness; with different kik_i the system is no longer linear and the multi-asset literature (Guéant 2017) turns to quadratic approximations of the value function. The grid has (2qˉ+1)d(2\bar q+1)^d points, 289 for two instruments with qˉ=8\bar q=8: fine for a pair, not for a hundred names.

Correlation creates a cross-skew. Under the joint policy (Figure 4.2), a market maker short four units of the second instrument bids for the first at 0.572 from the mid when flat in it, against 0.700 when flat in both: a long position in the first hedges the short in the second. Asset by asset, the bid would be 0.700 whatever the other position.

The joint policy’s bid depth for asset 1 against its own inventory, for three inventories of asset 2 (two assets with price correlation 0.8, penalty =0.1 on q q, A=140, k=1.5, =2). Data: hf_extensions.cross_skew.
Figure 4.2. The joint policy’s bid depth for asset 1 against its own inventory, for three inventories of asset 2 (two assets with price correlation 0.8, penalty ϕ=0.1\phi=0.1 on q⊤Σqq^\top\Sigma q, A=140A=140, k=1.5k=1.5, σ=2\sigma=2). Data: hf_extensions.cross_skew.

The cross-skew pays. On 1 000 simulated paths of five units of time, with the two mids correlated 0.8, the joint policy and the asset-by-asset policy (the same penalty applied to each asset’s own variance) earn almost the same, but the joint book carries less inventory risk, measured as the time average of q⊤Σqq^\top\Sigma q (Figure 4.3). At the joint policy’s mean profit for ϕ=0.1\phi=0.1, 673.3, the asset-by-asset frontier carries 30.8 units of inventory risk and the joint policy 24.3: 21% less. Across the six penalties the reduction runs from 10% to 22%.

Mean profit against inventory risk for two assets correlated 0.8, quoted as one book or asset by asset, for penalties  from 0.01 (right) to 0.5 (left); 1 000 common paths of five units of time. Data: hf_extensions.frontier2.
Figure 4.3. Mean profit against inventory risk for two assets correlated 0.8, quoted as one book or asset by asset, for penalties ϕ\phi from 0.01 (right) to 0.5 (left); 1 000 common paths of five units of time. Data: hf_extensions.frontier2.

4.3 Signals and drift inside the control problem

Definition 4.6 (Drift-adjusted quoting)

Drift-adjusted quoting solves the market maker’s control problem with the forecast drift μ\mu of the mid inside it, so that the forecast shifts the quotes through the value of holding inventory rather than being added to them as a separate skew.

With dSt=μ dt+σ dWtdS_t=\mu\,dt+\sigma\,dW_t, holding qq earns μq\mu q per unit of time, and the running reward is μq−ϕq2=−ϕ(q−q0)2+const\mu q-\phi q^2=-\phi(q-q_0)^2+\text{const} with q0=μ/(2ϕ)q_0=\mu/(2\phi).

Proposition 4.7 (A drift sets a target position)

With a constant drift μ\mu, the diagonal of MM becomes k(μq−ϕq2)k(\mu q-\phi q^2), and in the closed form of Proposition 4.3 the market maker quotes as if its inventory were q−q0q-q_0: it targets the position q0=μ/(2ϕ)q_0=\mu/(2\phi).

Proof. The running reward enters MM’s diagonal multiplied by kk, as −ϕq2-\phi q^2 did. Completing the square, the eigenvalue equation of Proposition 4.3 holds with qq replaced by q−q0q-q_0 up to a constant absorbed in μ1\mu_1. ∎

Guéant, Lehalle and Fernandez-Tapia’s formula with a drift has the same shape, a shift of the inventory by μ/(γσ2)\mu/(\gamma\sigma^2), which is q0q_0 for ϕ=12γσ2\phi=\tfrac12\gamma\sigma^2. Cartea and Wang put a stochastic alpha signal inside the problem in the same spirit. In the simulation with μ=2\mu=2, ϕ=0.5\phi=0.5 (so q0=2q_0=2), the drift-adjusted market maker holds 1.97 units on average and earns 355.6, against 335.7 for the market maker that ignores the drift and stays flat: 5.9% more, for a standard deviation of 18.0 instead of 15.8. The forecast is worth money only through the position it makes the market maker hold; chapter 7 builds such forecasts at the horizon of seconds.

4.4 Adverse selection inside the model

Adverse selection enters the model in two ways, and they call for different widenings.

Proposition 4.8 (Widen by the cost, or by half the move)

(i) If each fill costs an expected ε\varepsilon (the fill price is on average ε\varepsilon worse than the mid), the off-diagonal of MM becomes Ae−1−kεAe^{-1-k\varepsilon} and both optimal depths increase by ε\varepsilon at every inventory. (ii) If instead the mid moves permanently by ξ\xi against the market maker after each of its fills, the optimal depths are those of (i) with ε=ξ/2\varepsilon=\xi/2.

Proof. (i) Each supremum becomes sup⁡δAe−kδ(δ−ε+Δh)\sup_\delta Ae^{-k\delta}(\delta-\varepsilon+\Delta h): the optimum is 1/k+ε−Δh1/k+\varepsilon-\Delta h and its value carries a factor e−kεe^{-k\varepsilon}. (ii) After a bid fill the whole position q+1q+1 is revalued by −ξ-\xi, after an ask fill q−1q-1 by +ξ+\xi: the brackets are δ−ξ(q+1)+h(q+1)−h(q)\delta-\xi(q+1)+h(q+1)-h(q) and δ+ξ(q−1)+h(q−1)−h(q)\delta+\xi(q-1)+h(q-1)-h(q). With h(q)=h~(q)+12ξq2h(q)=\tilde h(q)+\tfrac12\xi q^2 both become δ−12ξ+Δh~\delta-\tfrac12\xi+\Delta\tilde h, the problem (i) for h~\tilde h with ε=ξ/2\varepsilon=\xi/2, and the depths expressed through h~\tilde h are those of (i). ∎

Half, because the move that hurts the unit just traded also revalues the rest of the position, and on average the position the fill leaves is on the right side of the move as often as on the wrong one. The simulation of (ii) with ξ=0.3\xi=0.3, ϕ=0.5\phi=0.5 agrees, provided the time step is fine enough:

widening of each depthnoneξ/2=0.15\xi/2=0.15ξ=0.3\xi=0.3
mean profit262.7267.2258.9
profit less the penalty253.1258.6251.2
fills498396315
profit less the penalty, time step four times coarser270.8270.2259.3

With the coarse step (0.005, when a flat quote has about a 24% chance of a fill per step), the unadjusted policy looked marginally best; divided by four, the step reproduces the proposition. The rule of One Quant Book 7 applies: a simulation that a named result leans on is rerun with a quarter of the time step.

4.5 Tutorial: one linear system, four extensions

Goal. Compute stationary, closed-form, multi-asset, drift-adjusted and adverse-selection-adjusted quotes from one construction, and test each in simulation. End state: the three tables and three figures of the chapter.

  1. Stationary and closed form. The Perron eigenvector of MM gives the long-horizon depths; the Gaussian approximation gives the formula (Listing 4.1).

    def stationary(A: float, k: float, phi: float, qmax: int, mu: float = 0.0, eps: float = 0.0):
        """Long-horizon depths: omega(t) tends to the eigenvector of the largest eigenvalue of M (symmetric), so the depths
        stop depending on time."""
        M, qs = _tridiag(A, k, phi, qmax, mu, eps)
        w, V = np.linalg.eigh(M)
        v = np.abs(V[:, -1])
        h = np.log(np.maximum(v / v.max(), 1e-300)) / k
        bid = np.full(len(qs), np.nan)
        ask = np.full(len(qs), np.nan)
        ask[1:] = 1.0 / k + eps + h[1:] - h[:-1]
        bid[:-1] = 1.0 / k + eps + h[:-1] - h[1:]
        return bid, ask
    
    
    def asymptotic(A: float, k: float, phi: float, q, mu: float = 0.0, eps: float = 0.0):
        """Closed form of the stationary depths from a Gaussian eigenvector exp(-beta (q - q0)^2 / 2),
        beta^2 = phi k e / A."""
        q = np.asarray(q, float)
        c = math.sqrt(phi * math.e / (A * k))
        q0 = mu / (2.0 * phi) if phi > 0 else 0.0
        return 1.0 / k + eps + (2 * (q - q0) + 1) / 2 * c, 1.0 / k + eps - (2 * (q - q0) - 1) / 2 * c
    Listing 4.1. Stationary depths from the eigenvector, and their closed form. code/firm/multimm/firm_multimm.py
  2. Two assets. The same construction on the grid of inventory pairs (Listing 4.2); simulate_multi draws correlated mids.

        def __init__(self, A: float, k: float, phi: float, cov, qmax: int):
            cov = np.asarray(cov, float)
            d = cov.shape[0]
            side = 2 * qmax + 1
            grid = np.array(np.meshgrid(*[np.arange(-qmax, qmax + 1)] * d, indexing="ij")).reshape(d, -1).T
            n = len(grid)
            M = np.zeros((n, n))
            M[np.arange(n), np.arange(n)] = -phi * k * np.einsum("ni,ij,nj->n", grid, cov, grid)
            off = A * math.exp(-1.0)
            strides = [side ** (d - 1 - i) for i in range(d)]
            for i in range(d):
                ok = grid[:, i] < qmax
                src = np.flatnonzero(ok)
                M[src, src + strides[i]] = off
                M[src + strides[i], src] = off
            w, V = np.linalg.eigh(M)
            v = np.abs(V[:, -1])
            self.h = (np.log(np.maximum(v / v.max(), 1e-300)) / k).reshape([side] * d)
            self.k, self.qmax, self.d = k, qmax, d
    Listing 4.2. The multi-asset linear system and its eigenvector. code/firm/multimm/firm_multimm.py
  3. Frontiers. hf_extensions.frontier2() runs both policies for six penalties on 1 000 common paths; equal_capture() interpolates the asset-by-asset frontier at each joint mean.
  4. Drift and adverse selection. drift_case(adjust) and adverse_case(adjust, dt).

What to change next. Give the two assets different fill rates and compare the grid solution with a quadratic approximation; make the drift switch sign at random (a Markov signal) and add it to the state.

4.6 Build: the multi-asset and signal extensions

Purpose. Long-horizon quotes that a production quoter can evaluate in microseconds (a table or a formula), for one or several instruments, with a drift and adverse selection inside the problem.

Interface. firm.multimm: stationary(A, k, phi, qmax, mu, eps), asymptotic(A, k, phi, q, mu, eps), MultiStationary(A, k, phi, cov, qmax).depths(q), simulate_multi(policy, T, dt, cov, A, k, paths, seed, qmax), table_policy; firm.invmm.CJSolution(…, mu, eps) for finite horizons.

Rules. The inventory bound is never breached. A permanent post-fill move ξ\xi is passed as ε=ξ/2\varepsilon=\xi/2. Simulations that support a printed result are repeated with a quarter of the time step.

Acceptance tests. code/firm/multimm/tests/: the stationary depths equal the finite-horizon ones at the start of a long horizon; the closed form within 0.05 of the exact depths for a small penalty and its per-unit skew equal to cc; a drift shifts the quotes by q0q_0; ε\varepsilon shifts both closed-form depths by ε\varepsilon; two uncorrelated assets quote like two single assets; with correlation, a short position in one asset lowers the bid depth of the other; the simulator is deterministic and bounded.

Stretch. Different kik_i with a quadratic approximation of hh; a Markov-modulated drift in the state.

Sources and further reading

  • O. Guéant, C.-A. Lehalle and J. Fernandez-Tapia, “Dealing with the inventory risk: a solution to the market making problem”, Mathematics and Financial Economics 7(4), 2013.
  • O. Guéant, “Optimal market making”, Applied Mathematical Finance 24(2), 2017.
  • Á. Cartea and Y. Wang, “Market making with alpha signals”, International Journal of Theoretical and Applied Finance 23(3), 2020.

4.7 Exercises

Exercise 4.1 ★

Compute c=ϕe/(Ak)c=\sqrt{\phi e/(Ak)} for A=140A=140, k=1.5k=1.5, ϕ=0.5\phi=0.5, and the closed-form bid and ask depths at q=2q=2.

Solution

Solution of Exercise 4.1.

c=0.5e/210=0.0804c=\sqrt{0.5e/210}=0.0804; δb(2)=0.667+2.5c=0.868\delta^b(2)=0.667+2.5c=0.868, δa(2)=0.667−1.5c=0.546\delta^a(2)=0.667-1.5c=0.546.

Exercise 4.2 ★

A market maker with ϕ=0.5\phi=0.5 forecasts a drift of μ=1\mu=1. What position does it target?

Solution

Solution of Exercise 4.2.

q0=μ/(2ϕ)=1q_0=\mu/(2\phi)=1 unit.

Exercise 4.3 ★

How many grid points does the exact multi-asset solution need for three instruments with qˉ=8\bar q=8, and for ten?

Solution

Solution of Exercise 4.3.

173=4 91317^3=4\,913 points for three instruments; 1710≈2.0×101217^{10}\approx2.0\times10^{12} for ten: the grid is out of reach, hence quadratic approximations.

Exercise 4.4 ★★

Show that the closed-form spread δa+δb\delta^a+\delta^b does not depend on inventory, and give it for the parameters of exercise 1.

Solution

Solution of Exercise 4.4.

δa+δb=2/k+c((2q+1)−(2q−1))/2=2/k+c\delta^a+\delta^b=2/k+c\bigl((2q+1)-(2q-1)\bigr)/2=2/k+c, free of qq: 1.333+0.080=1.4141.333+0.080=1.414.

Exercise 4.5 ★★

Why does the joint policy bid more aggressively for asset 1 when short asset 2, and would it do so if the correlation were negative?

Solution

Solution of Exercise 4.5.

With positive correlation, a long position in asset 1 offsets part of the variance of the short in asset 2, so buying asset 1 lowers the penalty ϕq⊤Σq\phi q^\top\Sigma q. With negative correlation the offsetting position is a short in asset 1: the market maker would bid less and offer more aggressively.

Exercise 4.6 ★★

Explain in words why a permanent post-fill move ξ\xi calls for widening by ξ/2\xi/2 rather than ξ\xi.

Solution

Solution of Exercise 4.6.

The move revalues the whole remaining position, not only the unit traded. After a bid fill the position is q+1q+1, after an ask fill q−1q-1; averaged over the positions the market maker holds, the loss per fill beyond the unit itself cancels to a quadratic term in qq that the value function absorbs, and what remains is half the move per fill.

Exercise 4.7 ★★★

Coding. With stationary(140, 1.5, 0.5, 20, mu=2.0), give the bid and ask depths at q=0q=0 and at q=2q=2, and compare them with the depths at q=0q=0 without a drift.

Solution

Solution of Exercise 4.7.

At q=0q=0: bid 0.543, ask 0.872 (keen to buy); at q=2q=2: 0.708 on both sides, exactly the no-drift depths at q=0q=0. The drift moves the whole schedule by q0=2q_0=2.

Exercise 4.8 ★★★

Find the flaw. “Our simulation shows that widening for adverse selection loses money, so we quote at the monopoly depth and ignore it.”

Solution

Solution of Exercise 4.8.

Three possible errors. Widening by the whole move instead of half of it (a permanent move revalues the position too); a time step coarse enough to change the answer (the chapter’s coarse step favoured no widening, the fine one half the move); and scoring on mean P&L while the policy maximises P&L less the penalty. Widen by half the permanent move, check with a quarter of the time step, and score the objective.

4.8 Problem: Two Books, One Risk

Problem 4.1

Weekend problem — two books, one risk

A desk makes markets in two instruments that move together and has a signal for one of them.

Part I — Bounds and the long horizon.

  1. Define an inventory bound and say why it makes the long-horizon quotes an eigenvector problem.
  2. Prove Proposition 4.2.
  3. Derive the closed form of Proposition 4.3.
  4. When is the closed form accurate? Give the worst gaps for ϕ=0.5\phi=0.5, 5 and 50.

Part II — Two assets.

  1. Define multi-asset market making and write the risk charge.
  2. Why must the instruments share kk for the exact solution?
  3. Give the cross-skew: asset 1’s bid depth at q1=0q_1=0 when short four, flat and long four of asset 2.
  4. Describe the simulation and its measure of inventory risk.
  5. State the named result: the reduction in inventory risk from quoting the two assets as one book, at equal mean profit, for ϕ=0.1\phi=0.1, and its range across penalties.
  6. Why is the reduction in P&L standard deviation much smaller than in inventory risk?

Part III — The signal.

  1. Define drift-adjusted quoting.
  2. Prove Proposition 4.7.
  3. Give the simulated gain and average position with μ=2\mu=2, ϕ=0.5\phi=0.5.
  4. What is the drift worth if the market maker’s bound is below q0q_0?

Part IV — Adverse selection.

  1. Prove both parts of Proposition 4.8.
  2. Give the simulated profit and penalised objective for no widening, ξ/2\xi/2 and ξ\xi.
  3. Why did the coarse time step point to no widening?
  4. Which of the chapter’s four extensions would you implement first in a production quoter, and why?
  5. How would you estimate ξ\xi from your own fills?
  6. In one sentence: what do bounds, correlation, signals and adverse selection have in common in this framework?
Solution

Solution of Problem 4.1.

  1. A hard limit ∣q∣≤qˉ|q|\le\bar q; it makes the state space finite, so the linear system has a largest eigenvalue that dominates as the horizon grows.
  2. See Proposition 4.2 (Perron–Frobenius and the spectral decomposition of eM(T−t)e^{M(T-t)}).
  3. See Proposition 4.3.
  4. When β=ϕke/A\beta=\sqrt{\phi ke/A} is small; worst gaps for ∣q∣≤10|q|\le10: 0.034, 0.70 and 5.0.
  5. One inventory vector and the charge ϕq⊤Σq\phi q^\top\Sigma q on the whole book.
  6. The substitution h=1kln⁡ωh=\tfrac1k\ln\omega linearises every instrument’s term only if all share the same kk.
  7. 0.572, 0.700 and 0.828.
  8. 1 000 common paths of five units of time, mids correlated 0.8, six penalties; inventory risk is the time average of q⊤Σqq^\top\Sigma q.
  9. 21% less (24.3 against 30.8 at a mean profit of 673.3); 10% to 22% across penalties.
  10. P&L variance also comes from the randomness of fills and spread capture, which quoting jointly does not change.
  11. The drift inside the control problem, acting through the value of holding inventory.
  12. See Proposition 4.7.
  13. 355.6 against 335.7 (5.9% more), holding 1.97 units on average against a target of 2.
  14. Less: the market maker can only hold up to its bound, and the reward −ϕ(q−q0)2-\phi(q-q_0)^2 is then maximised at the bound.
  15. See Proposition 4.8.
  16. Profit 262.7, 267.2, 258.9; objective 253.1, 258.6, 251.2 for none, 0.15 and 0.3.
  17. With a flat quote filled with probability about 0.24 per step, the discrete simulation departs from the continuous-time model the proposition solves; with a quarter of the step it agrees.
  18. Adverse selection: it is present in every real market (chapter 1’s quoter lost its spread to it), and the adjustment is a constant per side.
  19. Mark out one’s own fills at the horizon where the curve settles (One Quant Book 7, chapter 23): the settled mark-out is ξ\xi.
  20. Each is a change to one matrix: its size (bounds, assets), its diagonal (penalties, drift) or its off-diagonal (adverse selection).

4.9 Interview questions

Interview question 4.1 ★ trader

You make markets in an index future and its exchange-traded fund. You are long the fund. How should that change your quotes in the future?

Solution

Solution of Interview question 4.1.

Being long the fund is being long the index: skew the future’s quotes as if you were already long it, keener to sell and less keen to buy, by the hedge ratio times your fund inventory.

What the interviewer is looking for: thinking in one book, with a hedge ratio.

Interview question 4.2 ★★ researcher

Why do the finite-horizon quotes stop depending on time far from the horizon?

Solution

Solution of Interview question 4.2.

The solution is eM(T−t)ze^{M(T-t)}z; far from the horizon the largest eigenvalue dominates, and the depths depend only on ratios of the dominant eigenvector.

What the interviewer is looking for: the spectral argument, or an ergodic-control intuition.

Interview question 4.3 ★★ researcher

Your fills are followed by a 0.3-tick adverse move on average. By how much do you widen, and what do you need to know first?

Solution

Solution of Interview question 4.3.

Whether the move is a cost on the unit (widen by 0.3) or a permanent move of the mid (widen by 0.15); measure the mark-out curve and where it settles, and check how much of the move reverts.

What the interviewer is looking for: the distinction and a measurement plan.

Interview question 4.4 ★★ developer

A quoter must evaluate its depths in under a microsecond. How do you deliver a model whose exact solution is an eigenvector problem?

Solution

Solution of Interview question 4.4.

Precompute: solve offline, store the depths in a table indexed by inventory (and a few signal buckets), or use the closed form; refresh the table when parameters change, off the hot path.

What the interviewer is looking for: precomputation and a lookup on the hot path.

Interview question 4.5 ★★ risk

A desk measures inventory risk instrument by instrument. What does it miss, and how would you measure it instead?

Solution

Solution of Interview question 4.5.

The correlation between positions: offsetting positions look risky and concentrated ones look diversified. Measure q⊤Σqq^\top\Sigma q (or a factor-model version) on the whole book.

What the interviewer is looking for: portfolio variance, not a sum of variances.

Interview question 4.6 ★★★ researcher

In a running-penalty market-making model, show that a constant drift μ\mu makes the market maker target the position μ/(2ϕ)\mu/(2\phi).

Solution

Solution of Interview question 4.6.

The running reward μq−ϕq2=−ϕ(q−μ/(2ϕ))2+μ2/(4ϕ)\mu q-\phi q^2=-\phi(q-\mu/(2\phi))^2+\mu^2/(4\phi): the problem is the zero-drift one in the shifted variable q−q0q-q_0, whose optimum centres the inventory at zero.

What the interviewer is looking for: completing the square.

Terms defined in this chapter

See all 2333 terms in the glossary