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,\; p^\top(R+\Delta) = T'.$

The two constraints interact, so they have to be solved together, and clipping the unconstrained solution coordinatewise satisfies neither. The exact target is reachable precisely when the post-trade value clears $T'_{\min} = \max_i p_i (R_i - R^A_i) / w^\star_i$: each asset's locked portion is a floor, and the most over-locked asset alone decides whether a pure rebalance can work or whether the pool must take a deposit first. Below that bound the objective still has a minimiser, the projection of $w^\star$ onto the feasible weights, which water-fills as $x_i = \max(\ell_i, w^\star_i + \theta)$.

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() (which reports infeasibility rather than returning a trade that misses both constraints), target_weight_min_value(), portfolio_dilution_value().

Why a PDLP is claimed to bound 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).

That claim is disputed and this page does not adjudicate it. Jiang and Wen (2026) argue that the sufficient condition behind Claim 3.4 is self-contradictory, and prove an impossibility result that no target weight mechanism lowers the delta uniformly. Read the bounded-delta story below as the original paper's position with an open challenge against it, not as settled. Under a mean-variance objective the optimal hedge, ignoring transaction costs, is the 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.

Worth separating what is the paper's from what is not. The hedge formula itself is textbook one-period mean-variance: maximising $f\,\ell^\top x - \tfrac{\gamma}{2}(x+\Delta)^\top\Sigma(x+\Delta)$ gives $x + \Delta = (f/\gamma)\Sigma^{-1}\ell$ by setting the gradient to zero, and the transaction-cost version is the same first-order condition with a $\mathrm{Diag}(c)$ ridge. What the paper supplies is the *identification* of the terms — that the PDLP's expected-return vector is the fee revenue $f\ell$ and that its delta $\Delta$ is bounded by Claim 3.4, which is the part Jiang and Wen dispute — plus the Sharpe conditions of Claim 4.1, which are sufficient rather than necessary. The mean-variance step is doing no work the literature has not already done; the bounded delta is why the step is worth taking here at all.

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 the original paper argues has a bounded delta, subject to the challenge noted above.

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