# A Stochastic Control Approach to Liquidity Provision in Uniswap V3 Uniswap V3 is a *decentralized exchange (DEX)* protocol that introduced the concept of concentrated liquidity. Unlike traditional *AMMs (Automated Market Makers)* where liquidity is distributed uniformly along the entire price curve, Uniswap V3 allows *liquidity providers (LPs)* to concentrate their capital within a specific price range. This innovation enables LPs to provide more liquidity at prices where it is most needed, leading to improved capital efficiency and reduced slippage for traders. However, the increased flexibility of concentrated liquidity also introduces new challenges for LPs. Determining the optimal price range and managing inventory risk become crucial considerations. This research aims to address these challenges by developing a framework for analyzing and optimizing liquidity provision strategies in Uniswap V3. We will employ stochastic control techniques to model the dynamics of Uniswap V3 pools and formulate the LP's optimization problem. Our goal is to derive insights into the optimal behavior of LPs under different market conditions and provide practical guidance for maximizing profit while managing risk effectively. ## Uniswap V3 Dynamics ### Evolution of Pool Inventories In Uniswap V3, the state of a pool is characterized by its liquidity and the quantities of its two constituent tokens. To model the dynamics of these quantities, we introduce the following variables: * $x_t$: The quantity of token0 in the pool at time $t$. * $y_t$: The quantity of token1 in the pool at time $t$. * $p_t$: The current spot price of token1 denominated in token0 at time $t$. * $L_t(p)$: The liquidity distribution function at time $t$, which describes how much liquidity is available at each price level $p$. * $u_t$: The trading rate at time $t$, representing the net flow of token0 into the pool (positive for buying token1, negative for selling token1). The evolution of the pool quantities is governed by the following system of differential equations: \begin{split} dx_t &= \frac12 \int_{P_t}^\infty dL_t(p)p^{-\frac32} dp + u_t dt \\ dy_t &= \frac12 \int_0^{p_t} dL_t(p)p^{-\frac12} dp - p_t u_t dt \\ dp_t &= \frac{-2 p_t^{\frac32}}{L_t(p_t)} u_t dt \end{split} The first terms in the equations for $dx_t$ and $dy_t$ account for how the pool reserves change due to the concentrated liquidity distribution as the price $p_t$ evolves. The second terms capture the changes due to trading activity $u_t$. For the sake of our analysis, we introduce a new variable $d \theta_t = p_t u_t dt$. This allows us to simplify the system of equations as follows: \begin{align*} dx_t &= \frac12 \int_{p_t}^\infty dL_t(p)p^{-\frac32} dp + \frac{d\theta_t}{p_t} \\ dy_t &= \frac12 \int_0^{p_t} dL_t(p)p^{-\frac12} dp - d\theta_t \\ dp_t &= \frac{-2 \sqrt{p_t}}{L_t(p_t)} d\theta_t \end{align*} ### Transformation of Equations To further simplify the analysis, we introduce a new variable $q_t = \sqrt{p_t}$. This change of variable allows us to re-express the key terms in our dynamic equations in a more convenient form. Specifically, it simplifies the derivative of $q_t$ with respect to $p_t$, which will be useful in later calculations. With this transformation, we have: \begin{split} d\theta_t &= -L_t(p_t)\frac{dp_t}{2\sqrt{p_t}} = -L_t(q_t^2) dq_t \\ dx_t &= \frac12 \int_{p_t}^\infty dL_t(p)p^{-\frac32} dp + \frac{d\theta_t}{p_t} = \int_{\sqrt{p_t}}^\infty dL_t(q^2)\frac{dq}{q^2} + \frac{d\theta_t}{q_t^2} = \int_0^{\frac1{\sqrt{p_t}}} dL_t\left(\frac1{r^2}\right)dr + \frac{d\theta_t}{q_t^2} \\ dy_t &= \frac12 \int_0^{p_t} dL_t(p)p^{-\frac12} dp - d\theta_t = \int_0^{\sqrt{p_t}} dL_t(q^2) dq - d\theta_t \end{split} ### Model Simplification In practice, LPs on Uniswap V3 typically concentrate their liquidity within a specific price range, as the inventory changes depend only on the liquidity profile near the current pool price. Let's assume the LP provides liquidity only within the price range corresponding to the interval $[q_l, q_r]$, where $0 < q_l < q_r$. This concentrated liquidity profile is represented as: $$ dL_t = 1_{[q_l, q_r]} d\ell_t $$ #### Simplified Dynamics with Concentrated Liquidity When the current price $q_t$ (square root of $p_t$) falls within this active range $[q_l, q_r]$, the pool's dynamics simplify significantly: \begin{split} dx_t &= \int_{q_t}^{q_r} d\ell_t \frac{dq}{q^2} + \frac{d\theta_t}{q_t^2} = \left(\frac1{q_t} - \frac1{q_r}\right) d\ell_t + \frac{d\theta_t}{q_t^2} \\ dy_t &= \int_{q_l}^{q_t} d\ell_t dq - d\theta_t = (q_t - q_l) d\ell_t - d\theta_t \end{split} These equations reveal a crucial insight: changes in the reserves $x_t$ and $y_t$ are directly related to the change in liquidity $d \ell_t$, the current log price $q_t$, and the boundaries of the active liquidity range $[q_l, q_r]$. Furthermore, by substituting $d \theta_t = - \ell_t dq_t$ into the equations above and rearranging terms, we get: \begin{split} d\theta_t &= -\ell_t dq_t \\ dx_t &= \left(\frac1{q_t} - \frac1{q_r}\right) d\ell_t + \frac{d\theta_t}{q_t^2} = \left(\frac1{q_t} - \frac1{q_r}\right) d\ell_t - \ell_t \frac{dq_t}{q_t^2} = d\left(\ell_t \left(\frac1{q_t} - \frac1{q_r}\right)\right) \\ dy_t &= (q_t - q_l) d\ell_t - d\theta_t = (q_t - q_l) d\ell_t + \ell_t dq_t = d(\ell_t (q_t - q_l)) \end{split} The dynamics of the liquidity provider's inventory, is now directly determined by the evolution of liquidity $\ell_t$ and the root of the pool price $q_t$. ### Incorporating Fees Let's consider the impact of fees on the pool's dynamics. Assume the pool charges a fixed fee tier denoted by $1 - \gamma$, where $0 < \gamma < 1$. This means that for every trade, a fraction $1 - \gamma$ of the input amount is retained as fees, while only the remaining fraction $\gamma$ is used for the actual swap. To account for fees, we introduce the following modification to our equations: \begin{split} d\theta_t &= -\ell_t dq_t \\ dx_t &= \gamma^{-1} d\left(\ell_t \left(\frac1{q_t} - \frac1{q_r}\right)\right)_+ - d\left(\ell_t \left(\frac1{q_t} - \frac1{q_r}\right)\right)_- \\ dy_t &= \gamma^{-1} d(\ell_t (q_t - q_l))_+ - d(\ell_t (q_t - q_l))_- \\ \end{split} Here's a breakdown of these modified equations: * The equation for $d \theta_t$ remains unchanged, as the trading amount is unaffected by fees. * The equations for $dy_t$ and $dx_t$ are split into two parts, denoted by the subscripts "+" and "-". * The "+" part represents the change in token reserves when the trade adds token to the pool (i.e., increasing $y_t$ or increasing $x_t$). In this case, the change in the token amounts is amplified by the factor $\gamma^{-1}$ due to the fees collected. * The "-" part represents the change in token reserves when the trade removes token from the pool. **Note:** In Uniswap v4, LP can determine the fee tier $\gamma$ as well. ## Optimal Liquidity Provision in Uniswap v3 We propose a framework for analyzing optimal liquidity provision (LP) strategies in Uniswap v3. We consider a liquidity provider who dynamically adjusts their position to maximize profit while managing inventory risk. ### Price and Liquidity Dynamics We model the evolution of the pool's root price, denoted by $q_t$, using a decomposition approach: $$ q_t = q_0 + U_t - L_t $$ where: * $q_0$ is the initial root price. * $U_t$ and $L_t$ are non-decreasing processes capturing the cumulative upward and downward price movements, respectively. * $U_0 = L_0 = 0$, indicating no price change at the initial time. This model ensures that $q_t$ has bounded variation, which is crucial for preventing the accumulation of infinite fees. #### Evolution of State Variables The state of the liquidity pool is characterized by the reserves of token0, denoted as $x_t$, and token1, denoted as $y_t$. These reserves evolve according to the following dynamics, derived from the Uniswap v3 mechanics and the price dynamics: \begin{split} dx_t &= \gamma^{-1} \ell_t q_t^{-2} dL_t - \ell_t q_t^{-2} dU_t \\ dy_t &= \gamma^{-1} \ell_t dU_t - \ell_t dL_t \end{split} where $\gamma$ is a constant related to the fee structure and $\ell_t$ represents the liquidity provider's control variable, as explained below. ### Control Problem Formulation The liquidity provider aims to maximize their profit over a finite time horizon $[0,T]$, while considering inventory risk and ensuring the liquidation of any remaining assets by time $T$. The market state is described by the tuple $(x_t, y_t, q_t)$. #### LP Strategies The liquidity provider can control their capital by: * **Liquidity provision:** A predictable process $\ell_t \in \{0,1\}$ represents the LP's active state: * $\ell_t = 1$: Active liquidity provision, with the position including the current pool price. * $\ell_t = 0$: No active liquidity provision. #### Objective The liquidity provider's objective is to maximize the following expected value: $$ \max_{\ell \in \mathcal{A}_{0, T}} \mathbb{E} \left[ Y^{\ell}_T + X^{\ell}_T \left(q_T^2 - \alpha X^{\ell}_T \right) - \phi \int_0^T (X^{\ell}_t)^2 dt \right] $$ where: * $\ell = (\ell_t)_{0 \leq t \leq T}$ represents the liquidity provision strategy. * $X^{\ell} = (X^{\ell}_t)$ is the process representing the liquidity provider's inventory of the risky asset. * $Y^{\ell} = (Y^{\ell}_t)$ is the process representing the liquidity provider's cash holdings. * $\alpha$ and $\phi$ are parameters that capture inventory risk aversion and the cost of holding cash, respectively. * $\mathcal{A}_{t, T} = \{0,1\} \times [t,T]$ is the admissible set of strategies. The value function, which gives the maximum expected value achievable starting from time $t$ with state $(x, y, q)$ under the optimal strategy, is defined as: $$ v(t,x,y,q) = \max_{\ell \in \mathcal{A}_{0, T}} \mathbb{E}_{t,x,y,q} \left[ Y^{\ell}_T + X^{\ell}_T \left(q_T^2 - \alpha X^{\ell}_T \right) - \phi \int_t^T (X^{\ell}_s)^2 ds \right] $$ **Note:** Unlike order book market making, LPs in Uniswap V3 cannot separate bid and ask orders. This can lead to skewed inventory and pose challenges for risk management. To address this, LPs may need to actively use market orders to rebalance their inventory. ### Price Dynamic I - Diffusion Process To capture the fluctuations in trading activity, we model the cumulative upward and downward price movements, $U_t$ and $L_t$, as driven by stochastic processes: $$ dU_t = u_t^+dt, \qquad dL_t = u^-_t dt. $$ This leads to the following dynamics for the root price $q_t$ and the liquidity provider's token reserves, $X^{\ell}_t$ and $Y^{\ell}_t$: \begin{split} d q_t &= (u^+_t - u^-_t)dt + \sigma_t dW_t \\ dX^{\ell}_t &= \frac{\ell_t r}{q_t^2} \left( - u^+_t + \frac{u^-_t}\gamma \right) dt \\ dY^{\ell}_t &= \ell_t r \left( \frac{u^+_t}\gamma - u^-_t \right)dt \end{split} where: * $u^+_t$ and $u^-_t$ are positive processes representing the normalized buy and sell order rates from swappers, respectively. These capture the intensity of trading activity. * $\sigma_t$ measures the volatility of the root price, capturing deviations from the expected price movement based on order flow. * $W_t$ is a standard Brownian motion. * $r$ represents the pro rata liquidity provided. **Note:** * In practice, $u_t^+$ and $u_t^-$ can be estimated from decentralized exchange (DEX) data by analyzing trading volume relative to the available liquidity at each price level. * One may also consider the mispricing-driven model, i.e. order flows are functions of mispricing. But this would increase the dimension by 1. ### Dynamic Programming The value function $v(t,x,y,q)$ satisfies the following dynamic programming principle, which incorporates both optimal control of the liquidity parameter $\ell_t$: \begin{split} v(t, x, y, q) = \sup_{\ell \in \mathcal{A}_{t, T}} \mathbb{E}_{t,x,y,q} \left[ Y^{\ell}_T + X^{\ell}_T \left(q_T^2 - \alpha X^{\ell}_T \right) - \phi \int_t^T (X^{\ell}_s)^2 ds \right] \end{split} for all $(t, x, y, q) \in [0,T] \times \mathbb{R}^2 \times \mathbb{R}_+$. This dynamic programming principle leads to the following HJB equation: \begin{split} v_t + \frac{\sigma_t^2}2 v_{qq} + \max_{\ell \in \{0,1\}}\left\{(u^+ - u^-)v_q + \frac{\ell r}{q^2} \left(-u^+ + \frac{u^-}\gamma \right)v_x + \ell r\left(\frac{u^+}\gamma - u^- \right) v_y - \phi x^2 \right\} = 0 \end{split} for $t \in [0,T]$, subjecting to the boundary conditions: \begin{split} v(T, x, y, q) = y + x (q^2 - \alpha x) \end{split} These boundary conditions reflect the fact that the liquidity provider liquidates their position at the terminal time T. ### Optimal Control Moreover, since $\max_{\ell\in\{0,1\}} \{\ell X\} = X_+$ for any $X \in \mathbb{R}_+$, the HJB equation can be expressed as $$ 0 = v_t + \frac{\sigma_t^2}2 v_{qq} + (u^+ - u^-)v_q - \phi x^2 + r\left\{ \frac1{q^2} \left(-u^+ + \frac{u^-}\gamma \right)v_x + \left(\frac{u^+}\gamma - u^- \right) v_y \right\}_+ $$ and the optimal control $\ell^*$ is given in feedback form by $$ \ell^* = {\rm sgn}\left\{ \frac1{q^2} \left(-u^+ + \frac{u^-}\gamma \right)v_x + \left(\frac{u^+}\gamma - u^- \right) v_y \right\} $$ where ${\rm sgn}$ denotes the sign function. #### Interpretation of the Optimal Feedback Control The optimal feedback control $\ell^*$ can be interpreted as follows. * **Case $\ell^* = 1$:** In this case, $$\frac1{q^2} \left(-u^+ + \frac{u^-}\gamma \right)v_x > - \left(\frac{u^+}\gamma - u^- \right) v_y$$ * The left-hand side represents the infinitesimal gain in the value function due to a slight increase in $x$ (inventory risk). * The right-hand side represents the infinitesimal loss in the value function due to a slight increase in $y$ (cash position), resulting from the infinitesimal increase in $x$. * Therefore, if the infinitesimal gain from increasing inventory risk outweighs the infinitesimal loss from the decrease in the cash position, the LP should engage in providing liquidity. * **Case $\ell^* = 0$:** This indicates that the LP will not provide liquidity as the potential gains do not outweigh the potential losses. #### Technical Considerations * **Mollification:** The positive part function $f(x) := x_+$ can be smoothed or mollified using techniques like convolution with a smooth kernel. One approach is to use $f_\epsilon(x) = \mathbb{E}[X_{x, \epsilon}^+]$, where $X_{x,\epsilon} \sim N(x, \epsilon)$. This helps in numerical computations and analysis. * **Entropy Regularization:** Considering an entropy-regularized version of the problem might be beneficial as the control problem appears to be singular. Entropy regularization can promote exploration and prevent the control from becoming overly deterministic. ### Ansatz We employ the following ansatz (an educated guess for the form of the solution): $$ v(t,x,y,q) = y + x (q^2 - \alpha x) + w(t, x, q) $$ In this case, by the same reasoning, the HJB equation can be expressed as \begin{split} 0 = w_t &+ \frac{\sigma_t^2}2 (2x + w_{qq}) + (u^+ - u^-) (2xq - w_q) - \phi x^2 \\ &+ \left\{ \frac{r}{q^2} \left(-u^+ + \frac{u^-}\gamma \right) (q^2 - 2\alpha x +w_x) + r\left(\frac{u^+}\gamma - u^- \right) \right\}_+ \end{split} with the terminal condition: $$ w(T, x, q) = 0 $$ and the optimal control $\ell^*$ is given in feedback form by $$ \ell^* = {\rm sgn}\left\{\frac{r}{q^2} \left(-u^+ + \frac{u^-}\gamma \right) (q^2 - 2\alpha x +w_x) + r\left(\frac{u^+}\gamma - u^- \right) \right\} $$ where ${\rm sgn}$ denotes the sign function. ### Entropy Regularized Control Consider the following entropy-regularized version of the problem: $$ \max_{\pi\in\mathcal{A}[0, T]} \mathbb{E} \left[g(x_T, y_T, q_T) + \int_0^T \left\{\int h(x_s, y_s, q_s) \pi_s(\ell)d\ell + \frac1\beta H(\pi_s) \right\} ds \right] $$ where $H(\pi)$ denotes the entropy of the distribution $\pi$, and $\beta$ is the parameter commonly referred to as the inverse temperature. In our case, since $\ell \in \{0 ,1\}$ is binary, the entropy of $\pi$ is simply $$ H(\pi) = -p\ln p - (1-p)\ln(1-p) $$ where $p = \mathbb{P}[\ell = 1]$. #### Regularized HJB (rHJB) Equation Define the value function: $$ v(t, x, y, q) := \max_{\pi\in\mathcal{A}[t, T]} \mathbb{E}_{t,x,y,q} \left[g(x_T, y_T, q_T) + \int_t^T \left\{\int h(x_s, y_s, q_s) \pi_s(\ell) d\ell + \frac1\beta H(\pi_s) \right\} ds \right] $$ The dynamic programming principle implies that the value function v satisfies the following rHJB equation: \begin{split} 0 =& v_t + \frac{\sigma_t^2}2 v_{qq} + (u^+ - u^-)v_q + h(x,y,q) \\ & + r\max_{\pi} \left\{\mathbb{E}_{\pi}\left[\frac{\ell}{q^2} \left(-u^+ + \frac{u^-}\gamma \right)v_x + \ell\left(\frac{u^+}\gamma - u^- \right) v_y \right] + \frac1\beta H(\pi) \right\} \end{split} subject to the boundary conditions: $$ v(T, x, y, q) = y + x (q^2 - \alpha x). $$ Let $\mathbb{P}[\ell = 1] = p$. We then have: \begin{split} & \mathbb{E}_{\pi}\left[\frac{\ell}{q^2} \left(-u^+ + \frac{u^-}\gamma \right)v_x + \ell \left(\frac{u^+}\gamma - u^- \right) v_y\right] + \frac1\beta H(\pi) \\ =& \max_p \left\{ p \left[\frac1{q^2} \left(-u^+ + \frac{u^-}\gamma \right)v_x + \left(\frac{u^+}\gamma - u^- \right) v_y\right] - \frac1\beta \left( {p\ln p + (1-p)\ln(1-p)} \right) \right\} \end{split} Since the last equation is concave in $p$, the first-order condition implies that the unique maximum is attained at $p^*$ with: $$ p^* = \frac12\left\{1 + \tanh\left(\frac\beta{2q^2} \left(-u^+ + \frac{u^-}\gamma \right)v_x + \frac\beta2 \left(\frac{u^+}\gamma - u^- \right) v_y\right)\right\} \in [0,1] $$ For simplicity, denote by $G$ the linear operator: $$ G[v] = \frac1{q^2} \left(-u^+ + \frac{u^-}\gamma \right)v_x + \left(\frac{u^+}\gamma - u^- \right) v_y $$ Hence, $p^*$ can be written more compactly as: $$ p^* = \frac{e^{\beta G[v]}}{1 + e^{\beta G[v]}} = \frac12 \left\{1 + \tanh\left( \frac\beta2 G[v] \right) \right\} $$ **Note:** The expression for $p^∗$ resembles the sigmoid function used in logistic regression. The maximum value is given by: \begin{split} \frac1\beta \ln\left(1 + e^{\beta G[v]} \right) \end{split} Thus, the rHJB equation reduces to the following nonlinear PDE: \begin{split} 0 =& v_t + \frac{\sigma_t^2}2 v_{qq} + (u^+ - u^-)v_q + h(x,y,q) + \frac r\beta \ln (1 + e^{\beta G[v]}). \end{split} We remark that, since: $$ \lim_{\beta\to\infty} \frac1\beta \ln (1 + e^{\beta G[v]}) = \left\{\begin{array}{ll} G[v] & \mbox{ if } G[v] > 0 \\ 0 & \mbox{ if } G[v] \leq 0 \end{array}\right. = (G[v])_+, $$ the entropy term regularizes the problem by smoothing the $(G[v])_+$ term in the original HJB equation. This smoothing effect can be beneficial for both analytical and numerical tractability. ### Price Dynamic II - Compound Poisson Processes In this section, we consider an alternative model for price dynamics using compound Poisson processes to capture the discrete nature of price changes due to individual trades. ### Assumptions * **Fair Market Price:** We assume an underlying "fair" market price $S_t$ evolves according to a geometric Brownian motion: $$\frac{d S_t}{S_t} = \sigma_t dt$$ where $\sigma_t$ represents the volatility of the fair price. * **Pool Price with Jumps:** * The root pool price $q_t$ is modeled as a compound Poisson process with jumps driven by two independent Poisson processes, $N^+_t$ and $N^-_t$, representing buy and sell orders, respectively. * The intensities of these processes depend on the ratio of the fair price to the current pool price: $\lambda_+(\gamma S_t / q_t^2)$ for buy orders and $\lambda_-(\gamma q_t^2/ S_t)$ for sell orders. This captures the intuition that buying pressure increases when the fair price is above the pool price, and selling pressure increases when the fair price is below. * The dynamics of the root pool price are given by: $$d \ln q_t = b \left( dN^+_t - d N^-_t \right)$$ where $b$ is a fixed constant representing the size of the price jump with each trade. These assumptions lead to the following (approximated) dynamics for the liquidity provider's token reserves: \begin{split} dX_t &= \frac{\ell_t r}{q_{t-}} \left[ \frac{\beta - 1}{\gamma} d N^-_t - (1 - \frac1\beta) dN^+_t \right] \\ dY_t &= \ell_t r \left[ \frac{\beta - 1}{\gamma} dN^+_t - (1 - \frac1\beta) d N^-_t \right] \end{split} where $\beta = e^b$ represents the multiplicative factor by which the price jumps with each trade, and $\gamma$ is a constant related to the fee structure. ### Hamilton–Jacobi–Bellman Equation The value function, now also a function of the fair price $s$ is defined as: $$ v(t, x, y, q, s) := \sup_{\ell \in \mathcal{A}_{t, T}} \mathbb{E}_{t,x,y,q,s} \left[ \left(Y^{\ell}_{\tau} + X^{\ell}_{\tau} \left(S_\tau - \alpha X^{\ell}_{\tau} \right) - \phi \int_0^{\tau} (X^{\ell}_s)^2 ds \right) \right] $$ By the dynamic programming principle, the value function satisfies the following HJB equation: \begin{split} 0 = v_t \ +& \ \sigma_t^2 v_{ss} - \phi x^2 +\\ \max_{\ell}& \{ \ \lambda_+(\gamma s / q^2) \left[ v\left(t, x - \frac{\ell r}{q} (1-\frac1\beta), y + \frac{\ell r}{\gamma} (\beta - 1), \beta q, s \right) - v(t, x, y, q, s) \right] \\ &+ \lambda_-(\gamma q^2 / s) \left[ v\left(t, x+\frac{\ell r}{\gamma q} (\beta - 1), y - \ell r (1-\frac1\beta), \frac{q}{\beta}, s \right) - v(t, x, y, q, s) \right] \} \end{split} subject to the boundary conditions: $$ v(T, x, y, q, s) = y + x (s - \alpha x) $$ #### Symmetric Intensity Case If we assume symmetric jump intensities, i.e., $\lambda_+ = \lambda_- = \lambda$, the HJB equation simplifies to: \begin{split} 0 = v_t \ +& \ \sigma^2 v_{ss} - \phi x^2 + \\ \max_{\ell}&\{ \ \lambda(\gamma s / q^2) \left[ v\left(t, x - \frac{\ell r}{q} (1-\frac1\beta), y + \frac{\ell r}{\gamma} (\beta - 1), \beta q, s \right) - v(t, x, y, q, s) \right] \\ & + \lambda(\gamma q^2/s) \left[ v\left(t, x+\frac{\ell r}{\gamma q} (\beta - 1), y - \ell r (1-\frac1\beta), \frac{q}{\beta}, s \right) - v(t, x, y, q, s) \right] \} \end{split} **Questions:** * How can we rigorously establish the verification of the solutions to the Hamilton-Jacobi-Bellman (HJB) equations? * What numerical methods are most suitable for solving the HJB equations in this context, and how can they be implemented effectively? ## References * Bergault, P., Bertucci, L., Bouba, D., Guéant, O., & Guilbert, J. (2024). Automated Market Making: the case of Pegged Assets. *arXiv preprint arXiv:2411.08145.* * Cartea, Á., Drissi, F., Sánchez-Betancourt, L., Siska, D., & Szpruch, L. (2024). Strategic bonding curves in automated market makers. Available at SSRN: http://dx.doi.org/10.2139/ssrn.5018420 * Cartea, Á., Jaimungal, S., & Penalva, J. (2015). Algorithmic and high-frequency trading. *Cambridge University Press*. * Guéant, O. (2017). Optimal market making. *Applied Mathematical Finance*, 24(2), 112–154. https://doi.org/10.1080/1350486X.2017.1342552 * Guilbaud, F., & Pham, H. (2015). Optimal high-frequency trading in a pro rata microstructure with predictive information. *Mathematical Finance, 25(3), 545–575*. https://doi.org/10.1111/mafi.12042 * Guo, I., Jin, S., & Nam, K. (2023). Macroscopic Market Making. *arXiv preprint arXiv:2307.14129.*