# Macroscopic Liquidity Provision This note proposes a *macroscopic model for Liquidity Provision (LP)* on Uniswap v4. This model represents market orders using continuous order flows rather than typical discrete point processes. The primary goal is to introduce a novel, tractable framework for analyzing the Uniswap v3 LP optimization problem, specifically focusing on the determination of *dynamic fees* $\gamma_t$ and the *optimal rebalancing time* $\tau$. This joint optimization problem naturally leads to a formulation as an optimal stopping and optimal control problem, whose value function is characterized by a *Hamilton-Jacobi-Bellman Quasi-Variational Inequality (HJB QVI)*. ## The Model ### Continuous Framework Let $T>0$ be a trading horizon. We study a *Concentrated Liquidity Market Maker (CLMM)* for a pair consisting of a risky asset $X$ and a numéraire $Y$. Within the CLMM, we let $X_t$ and $Y_t$ be the non-negative quantities of assets $X$ and $Y$ for the LP at time $t \in [0,T]$. We assume that there exists an external reference market (e.g., LOB) for trading $X$ and $Y$ with price process $S = (S_t)_{t \in [0,T]}$. This external price follows the *Geometric Brownian Motion (GBM)* dynamics: $$ dS_t = S_t \sigma dW_t $$ with $W_t$ a standard Brownian motion. We operate under the risk-neutral measure, assuming zero drift ($\mu=0$) for simplicity. In the CLMM, liquidity takers arrive according to a continuous flow $\alpha_t$ (liquidity-taking sells of $X$) and $\beta_t$ (liquidity-taking buys of $X$). We denote by $P = (P_t)_{t \in [0,T]}$ the marginal price of $Y$ in terms of $X$ in the CLMM, and $\gamma = (\gamma_t)_{t \in [0,T]}$ the fee tier charged, where $0 < \underline{\gamma} \leq \gamma_t \leq 1$. The CLMM inventory dynamics are then given by: \begin{cases} dX_t &= \ \frac12 P_t^{\frac12} \left\{ \gamma_t^{-1} \alpha_t - \gamma_t \beta_t \right\} dt \\ dY_t &= \ \frac12 P_t^{-\frac12} \left\{ \beta_t - \alpha_t \right\} dt \\ dP_t &= \ P_t \left( \alpha_t - \beta_t \right) dt \\ \alpha_t &= \ \pmb{1}_{P_t \in [\underline{P}, \overline{P}]} \ \alpha(S_t,P_t,\gamma_t) \\ \beta_t &= \ \pmb{1}_{P_t \in [\underline{P}, \overline{P}]} \ \beta(S_t,P_t,\gamma_t) \end{cases} with: * $X_0, Y_0 > 0$. * $0 \leq \underline{P} \leq \overline{P} < \infty$ representing the boundaries of the concentrated liquidity range. * $\alpha$ and $\beta$ are order flow functions modeled by: \begin{align} \alpha(S, P, \gamma) &= \max\{a_0 (c + \ln \gamma), a_1 (c + \ln \gamma) + a_2 ( \ln S - \ln P + \ln \gamma) \} \\ \beta(S, P, \gamma) &= \max\{b_0 (c + \ln \gamma), b_1 (c + \ln \gamma) + b_2 (\ln P - \ln S + \ln \gamma) \} \end{align} Here the $\max\{\cdot, \cdot\}$ structure models a threshold where order flow is driven by two components: * a baseline component dependent only on the fee tier ($\gamma$), representing *noise trading* (terms $a_0(\cdot)$ and $b_0(\cdot)$), and * an arbitrage/informed component dependent on the *price difference* between the external price $S$ and the effective CLMM price ($\gamma^{-1} P$ or $\gamma P$). * The indicator $\pmb{1}_{P_t \in [\underline{P}, \overline{P}]}$ ensures orders only execute within the concentrated liquidity range. Note that the system is completely driven by the external price $S$ and the internal price $P$. ### Problem Formulation The LP's optimization problem is defined by the following actions and goal: * The LP **provides** a fixed amount of liquidity (W.L.O.G., $\ell=1$) in a neighborhood of the current AMM price $P_t$; * The LP **determines** the fee tier $\gamma_t \in [\underline{\gamma},1]$; and * The LP **fully hedges** its initial position at $t=0$. The hedged PnL $\text{PnL}_t$ at time $t \in [0,T]$ is defined as the change in the portfolio value evaluated at the external price $S_t$: $$ X_t - X_0 + S_t (Y_t - Y_0) $$ The LP wants to maximize her expected hedged PnL by solving the joint control and optimal stopping problem: $$ \sup_{\tau \in \mathcal{T}} \sup_{\gamma \in \Gamma} \mathbb{E} \left[ X_\tau - X_0 + S_\tau (Y_\tau - Y_0)\right] $$ Here we define: * $\mathcal{T}_{t,T}$ as the set of *stopping times* taking values in $[t,T]$, and $\mathcal{T} = \mathcal{T}_{0,T}$. * $\Gamma = [\underline{\gamma},1]$ as the set of admissible fee tiers, with $0 < \underline{\gamma} < 1$. #### Interpretation * The stopping time $\tau$ is viewed as the time for rebalancing or exiting the liquidity position. * The fee tier $\gamma$ is adjusted dynamically to maximize the LP's expected revenue. ## Mathematical Analysis ### PnL Dynamics and Value Function Definition The accumulation of instantaneous profit (the running reward) can be written as the integral of the change in PnL: $$ \mathbb{E} \left[ \text{PnL}_t \right] = \int^t_0 \mathbb{E} \left[ d\text{PnL}_s \right] = \int^t_0 \frac12 P_s^{-\frac12} \left\{ \left( \gamma_s^{-1} P_s - S_s \right) \alpha_s + \left( S_s - \gamma_s P_s \right) \beta_s \right\} ds $$ The terms $\left( \gamma_s^{-1} P_s - S_s \right)$ and $\left( S_s - \gamma_s P_s \right)$ represent the difference between the effective trading price in the CLMM (including the fee $\gamma$) and the external market price $S_s$. We define the associated value function $v$, which depends on the current state $(t,P,S)$, as the maximum expected future running reward until the optimal stopping time $\tau$: \begin{align} v: \quad& [0,T] \times \mathbb{R}_+ \times \mathbb{R}_+ \rightarrow \mathbb{R} \\ &(t,P,S) \mapsto \sup_{\tau \in \mathcal{T}_{t,T}} \sup_{\gamma \in \Gamma} \mathbb{E} \left[ \int^\tau_t \frac12 P_s^{-\frac12} \left\{ \left( \gamma^{-1} P_s - S_s \right) \alpha_s + \left( S_s - \gamma P_s \right) \beta_s \right\} ds\right] \end{align} ### HJB Quasi-Variational Inequality (QVI) The value function $v$ is the unique viscosity solution to the following HJB QVI: $$ 0 = \max \left\{ \mathcal{L}v, -v \right\} \quad \text{on} \ [0,T) \times \mathbb{R}_+ \times \mathbb{R}_+ $$ where $\mathcal{L}v$ is the operator associated with the optimal continuation problem, defined as: $$ \mathcal{L}v = v_t + \frac12 \sigma^2 S^2 v_{SS} + \sup_{\gamma \in \Gamma} \left\{ P (\alpha - \beta) v_P + \frac12 P^{-\frac12} \left[ \left( \gamma^{-1} P - S \right) \alpha + \left(S - \gamma P \right) \beta \right] \right\} $$ with the terminal condition $v(T,P,S)=0$. The term $\sup_{\gamma}$ inside $\mathcal{L}v$ determines the optimal dynamic fee policy, and the $\max\{\mathcal{L}v, -v\}$ structure characterizes the optimal stopping time $\tau$. ### To Do * Work out the viscosity properties of the value function. ## Numerical Scheme The HJB QVI is solved backwards in time from $T$ to $0$ using a specialized finite difference approach that balances stability and computational efficiency. ### Discretization and Iterative Method We discretize the time variable $t$ and state variables $P$ and $S$. * **Time Grid**: Uniform grid $t_n = n \Delta t$ for $n = 0, \ldots, N$. * **State Grids**: $P$ is restricted to $[P_\min, P_\max]$ and $S$ to a finite domain $[S_\min, S_\max]$. * **Efficiency Strategy**: By applying an implicit scheme to the diffusion term $\partial_{S}^{2}v$ and an *explicit scheme* to the reward terms, we decouple the state variables. This allows us to independently solve a smaller, tridiagonal linear system for each $P_j$ grid point, significantly reducing complexity. ### Backward Iteration Step Starting from the terminal condition $v^N = 0$, the value at time $n$ is found by evolving the PDE and then applying the stopping constraint. #### Discrete Operator and Stability We approximate the continuation value $v^*$ using centered differences $D_S^2$ for the diffusion and upwind differences $D_P$ for the price drift. The evolution equation is: $$ \frac{v^n - v^*}{\Delta t} + \frac{1}{2}\sigma^2 S^2 D_S^2 v^* + b^n D_P v^n + c^n = 0 $$ To ensure the numerical solution remains unpolluted by boundary errors, the following *CFL Stability Constraint* must be satisfied: $$ \frac{\Delta t}{\Delta P} < \frac{1}{\max_{S,P} |b^n|} $$ <font color=red>To be verified</font> #### Boundary Condition Management The algorithm proceeds via backward induction to handle the optimal control $\sup_{\gamma}$ and the stopping constraint $\max$: * **$P$ Boundaries**: If the boundary at $P_{\min}$ or $P_{\max}$ is *upwind*, a condition must be prescribed. If the boundary is *downwind*, the PDE evolves naturally, and the boundary value is determined by the internal dynamics. * **$S$ Boundaries (Neumann)**: Unlike the upwind drift in the $P$ direction, diffusion in the $S$ direction causes boundary errors to propagate globally and immediately. We prescribe the derivative $v_S$ at $S_0$ and $S_{N_S}$. * At the lower boundary $S_0$, we replace $D_S^2 v^*(S_0)$ using the given $v_S^*(S_0)$ data: $\frac{v^*(S_1) - v^*(S_0)}{\Delta S^2} - \frac{v_S^*(S_0)}{\Delta S}$. * At the upper boundary $S_{N_S}$, we replace $D_S^2 v^*(S_{N_S})$ with: $\frac{v^*(S_{N_S-1}) - v^*(S_{N_S})}{\Delta S^2} + \frac{v_S^*(S_{N_S})}{\Delta S}$. * This formulation results in an $(N_S+1) \times (N_S+1)$ linear system that remains tridiagonal and solvable via a standard tridiagonal solver. #### Pseudocode ``` FUNCTION Solve_HJB_QVI_Optimized(T, N_t, P_grid, S_grid, sigma, gamma_search): """ Optimized solver using explicit drift to decouple linear systems and Neumann boundary conditions for the S-dimension. Inputs: T, N_t: Time horizon and steps. P_grid, S_grid: Discretized state vectors. sigma: Volatility of external price S. gamma_search: Discrete set of fee tiers. """ dt = T / N_t N_P = len(P_grid) N_S = len(S_grid) v_grid = zeros(N_t + 1, N_P, N_S) # 1. Terminal Condition v_grid[N_t, :, :] = 0 # 2. Backward Evolution Loop for n = N_t - 1 down to 0: # A. Optimal Control & Hamiltonian (Explicit Step) # Use the already computed v_grid[n+1] to find optimal gamma, # the drift term b^n, and running reward c^n. gamma_star, b_n, c_n = compute_explicit_control(P_grid, S_grid, v_grid[n+1], gamma_search) # B. Independent Tridiagonal Solves (Decoupled P-direction) # Treat each P_j independently to solve for the S-diffusion. FOR each j from 0 to N_P - 1: # Solve an (N_S + 1) x (N_S + 1) linear system # Use Neumann BCs at S_0 and S_{N_S} to handle global diffusion errors. v_star = solve_tridiagonal_S_Neumann(v_grid[n+1, j, :], b_n[j, :], c_n[j, :], sigma, dt) # C. Stopping Constraint & Free Interface # If the continuation value v_star < 0, stopping is optimal (v = 0). v_grid[n, j, :] = max(v_star, 0) return v_grid FUNCTION solve_tridiagonal_S_Neumann(v_next, b_j, c_j, sigma, dt): """ Solves the implicit diffusion step in S for a fixed P_j. Incorporates Neumann BCs: v_S is prescribed at S_0 and S_max. """ # 1. Construct the (N_S+1) tridiagonal matrix coefficients. # 2. Modify the first and last rows to implement Neumann discretization: # At S_0: Replace D_S^2 with (v[1] - v[0])/dS^2 - v_S_given/dS. # At S_N: Replace D_S^2 with (v[N-1] - v[N])/dS^2 + v_S_given/dS. # 3. Solve the system via Thomas Algorithm. RETURN v_star ``` ## Reference * Aqsha, A., Bergault, P., & Sánchez-Betancourt, L. (2025). Equilibrium reward for liquidity providers in automated market makers. arXiv. https://doi.org/10.48550/arXiv.2503.22502 * Baggiani, L., Herdegen, M., & Sánchez-Betancourt, L. (2025). Optimal dynamic fees in automated market makers. arXiv. https://doi.org/10.48550/arXiv.2506.02869 * Bergault, P., Bieber, S., & Sánchez-Betancourt, L. (2025). Optimal exit time for liquidity providers in automated market makers. arXiv. https://doi.org/10.48550/arXiv.2509.06510 * Guo, I., Jin, S., & Nam, K. (2024). Macroscopic Market Making Games. *arXiv preprint arXiv:2406.05662*. * Tung, S.-N., & Wang, T.-H. (2024). A mathematical framework for modelling CLMM dynamics in continuous time. *arXiv preprint arXiv:2412.18580*.