Perpetual demand lending pools

A perpetual demand lending pool (PDLP) is the liquidity pool behind a decentralised perpetuals exchange, GMX's GLP, Jupiter's JLP, Hyperliquid's HLP, dYdX's MegaVault. Liquidity providers deposit a basket of assets; traders take under-collateralised, single-purpose loans out of that basket to open levered positions on the exchange, and pay a lending fee for the privilege; arbitrageurs keep the pool near a target composition and keep the perpetual tethered to spot. The LPs, not the protocol, bear the residual risk. The model below is Chitra, Diamandis, Sheng, Sterle & Yusubov (2025), which answers a sharp empirical puzzle: why are these LP positions so much easier to delta-hedge than ordinary CFMM positions?

What the pool lends

A PDLP is a tuple $(R, w^\star, f, \{c_i\})$, reserves, target weights, lending fee, and outstanding loans. Unlike a CFMM, which only ever swaps, a PDLP lends: a trader posting collateral $c$ can open a notional that is $|\eta|$ times larger, subject to the collateral condition $p_0\,\delta \le |\eta|\,c$, and is liquidated once the price crosses $\operatorname{sign}(\eta)\,\delta\,(p_0-p)\ge c$. A minimal-collateral $4\times$ long entered at $p_0 = 2000$ liquidates at $1500$. The loan is single-purpose: it can only be used to take a position on the paired perpetual. The pool's value is $p^\top R$, of which $\sum_i c_i$ is lent out, leaving available reserves $R^A = R - \sum_i c_i$ that LPs may still withdraw. The price-weighted composition of the basket is

$w(p, R) = \dfrac{p \odot R}{p^\top R},$

a point on the simplex (each asset's share of total value). The pool earns $f \cdot \sum_i c_i$ per period from borrowers; that fee is the LP's entire compensation for warehousing the traders' directional risk.

In code: PDLP, weights(), collateral_ok(), liquidation_price() in mechanisms/pdlp.py.

The two arbitrages that bracket the fee

Suppose open interest starts balanced, $L = S = L_0$, so the funding rate is zero, and the price then moves from $p_0$ to $p$. This opens two distinct arbitrages whose profitability conditions squeeze the sustainable fee from both sides.

The funding-rate arbitrage exploits the perpetual's linear funding tether. The funding rate is

$\gamma_L = \kappa\!\left(\dfrac{L}{S} - \dfrac{p}{p_0}\right),$

so a price rise makes funding favour longs; an arbitrageur opens the largest funding-capturing long, of size

$\ell = L_0\!\left(\dfrac{p}{p_0} - 1\right),$

which drives $\gamma_L$ back to zero. This is profitable for the arbitrageur, and therefore drains the LPs, only while the fee is small enough, $f \le \tfrac{\kappa}{L_0}\,(1 - p_0/p)$, giving the worst-case upper bound $f \le \kappa\,(1 - B^{-1})/L_0$ under a price bound $p/p_0 \le B$.

The price-impact arbitrage is pure CFMM loss-versus-rebalancing. With a concave forward exchange function $G$, the quantity of risky asset the pool gives up for $x$ units of numeraire, the most profitable trade equates marginal price to the external price:

$G'(x^\star) = \dfrac{1}{p}.$

For the Uniswap-v2 instance $G(x) = R_2 x / (R_1 + x)$ this has the closed form $x^\star = \sqrt{p\,R_1 R_2} - R_1$, and the LP's rebalancing loss is $R_1 + p R_2 - 2\sqrt{p\,R_1 R_2} \ge 0$, the absolute-value form of impermanent loss. The pool only stays whole if the fee covers it, a lower bound $f \ge x^\star/L_0$. Sandwiching the two:

$\dfrac{x^\star}{L_0} \;\le\; f \;\le\; \dfrac{\kappa\,(1 - B^{-1})}{L_0} \qquad\Longrightarrow\qquad f = \Theta\!\left(\dfrac{1}{L_0}\right).$

A sustainable fee must fall as open interest grows, which is why live venues run dynamic fees that track open interest rather than a fixed rate.

In code: linear_funding_rate(), funding_arb_size(), funding_fee_upper_bound(), UniswapV2Forward, pdlp_arb_optimal_x(), fee_lower_bound().

The target-weight mechanism

Because a PDLP lends rather than swaps, LPs may deposit or withdraw any subset of assets, which would let the basket drift away from its intended composition. The target weight mechanism (TWM) keeps the pool near $w^\star$ by paying a discount to LPs whose trades push the weights toward target, approximately solving

$\min_{\Delta}\; \lVert w(p, R+\Delta) - w^\star \rVert \quad\text{s.t.}\quad \Delta \ge -R^A.$

GMX's GLP discount function is an explicit, PID-controller-like instance: it scores each asset $i$ by how a trade changes its gap to target, rewarding moves that shrink $|w_i - w^\star_i|$ with a positive term $\gamma_t\,|(w^b_i - w^\star_i)/w^\star_i|$ and penalising moves that widen it, then takes $F = \max\!\big(0,\, \gamma_b + \max_i G_i\big)$. A discount $F \gt 0$ is a subsidy to the rebalancing LP and accordingly dilutes existing LPs by $1/(1+F)$; after one update the share value is

$V_{\text{new}} = \dfrac{p^\top R}{1+F} + f\,p^\top \ell.$

In code: gmx_glp_discount(), target_weight_trade(), portfolio_dilution_value().

Why a PDLP bounds the LP's delta

Here is the payoff. An ordinary CFMM LP is short volatility with an unbounded, path-dependent delta, the very thing that makes impermanent loss and LVR hard to hedge. The TWM changes the picture: because the mechanism continually pulls the basket back toward $w^\star$, the paper's Claim 3.4 shows the rebalanced portfolio's delta is at most $(\tfrac12 - f)$ times the raw holding's, and the bound tightens as the fee rises. A bounded, fee-shrinkable delta is far cheaper to offset than a CFMM's, which is the structural reason delta-hedged PDLP strategies proliferate (and why JLP-style shares make good collateral elsewhere in DeFi). Under a mean-variance objective the optimal hedge, ignoring transaction costs, is the clean closed form

$\pi_{\text{new}} = \dfrac{f}{\gamma}\,\Sigma^{-1}\ell - \Delta,$

and the hedged pool's Sharpe ratio beats the unhedged pool's whenever the fee revenue dominates the delta, $f\,\mathbb{E}[p^\top \ell] \ge \gamma\,\lambda_{\max}\,\mathbb{E}[p^\top \Delta]$, and the hedge variance is at most $4\times$ the pool variance.

In code: delta_hedge(), sharpe_improves().

Connection to perpetual futures and CFMMs

A PDLP sits at the intersection of three mechanisms in this repository. The funding tether $\gamma_L = \kappa(L/S - p/p_0)$ that powers the first arbitrage is exactly the linear funding rate of a perpetual future: the pool is the counterparty of last resort on that exchange, and the funding payment is what an arbitrageur harvests when the two sides of open interest diverge. The price-impact arbitrage $G'(x^\star) = 1/p$ and its loss $R_1 + p R_2 - 2\sqrt{p R_1 R_2}$ are identical to the CFMM loss-versus-rebalancing; the PDLP simply inherits a CFMM's curve for the swap leg. What is genuinely new is the target-weight controller bolted on top: it is the ingredient that turns an otherwise CFMM-like, hard-to-hedge book into one with a provably bounded delta.

Try it

The linear funding rate $\gamma_L=\kappa\,(L/S - p/p_0)$ pushes the long and short sides toward balance and the perp price toward the index. Vary the long/short ratio $L/S$ and the price ratio $p/p_0$ ($\kappa = 0.01$).

Code: mechanisms/pdlp.py · Demo: examples/pdlp_demo.py · Related: perpetual futures, CFMMs · Research: perpetual-demand-lending-pools.md · Paper: arXiv:2502.06028