# DFM for Liquidity Providers

This page is the LP-oriented view of AEGIS DFM. It is narrower than [AEGIS for Liquidity Providers](http://../03-using-engine/for-liquidity-providers.md), which covers the full Engine-plus-DFM story. If you're providing liquidity into a pool that has DFM installed but not Engine, start here.

### What you hold

For a DFM-only pool, you hold a standard Uniswap v4 liquidity position — either a concentrated-range NFT from the PositionManager, or a full-range position you manage yourself. DFM does not change what kind of position you hold.

What DFM does change is the economics of that position:

* The fee you earn per swap varies with pool conditions (dynamic) instead of being pinned to a static tier.
* A configurable share of every fee is redirected into a protocol-owned full-range position (POL), deepening the pool over time.
* Your position benefits from that deeper POL — more full-range depth means better trade prices and more volume.

### Fee capture, concretely

For any given swap through the pool:

swapValue × totalFeePPM / 1\_000\_000 = totalFee

totalFee × (1 − polSharePpm/1e6 − hookFeePpm/1e6) = LP fee

LP fee × yourShareOfRange / totalLiquidityInRange = your fee

* totalFeePPM is set by DFM dynamically (base + surge).
* polSharePpm is the configured share that goes to POL. Rest goes to LPs + hook.
* hookFeePpm is the hook fee configured per-pool (bounded by PPM\_SCALE).
* "Your share of range" is the standard Uniswap v4 concentrated-liquidity math — only in-range liquidity earns.

The important mental shift: a static 30 bp pool earns you exactly 30 bp on each swap through your range, always. A DFM pool earns you less than 30 bp during calm periods (e.g., 5-10 bp) and more during volatile periods (e.g., 100+ bp during surge). The average over a representative window should be competitive with or better than a static tier, and the distribution is biased toward capturing adverse selection.

### Why dynamic is better than static (usually)

The standard tiers (5, 30, 100 bp) are too coarse for real pool behavior. The concrete failure modes:

1. Wrong tier for the pair. A USDC/USDT pool at 30 bp is absurd; a wBTC/ETH pool at 5 bp is absurd. DFM sidesteps the choice — the pool finds its own level.
2. Volatility regime changes. A pair that was calm for six months and then enters a volatile regime can't migrate to a higher fee tier without a new pool and TVL-bootstrapping effort. DFM adapts in place.
3. Adverse selection isn't priced. The LVR cost to LPs is concentrated around price moves; a flat fee treats all swap volume identically. Surge pricing captures extra fee specifically during the swaps that would otherwise be most costly to LPs.

The mechanism claim: over a representative volatility distribution, DFM's fee trajectory captures more of the economic surplus a static tier leaves on the table. It is not a claim that every individual swap will be cheaper or more expensive than any given static tier — it is a claim about the average.

### What DFM does not do

* DFM does not rebalance your position. If you hold a concentrated range, it stays where you put it. In-range / out-of-range is determined by pool movement, not by DFM.
* DFM does not hedge you. Impermanent loss (or LVR) is a property of any Uniswap LP. DFM changes the fee side of the equation but not the inventory side.
* DFM does not guarantee higher fees. On pools that are persistently calm, base fee drifts low and surge rarely fires. Your total fee income may be modest.

### Concrete LP patterns

#### Full-range passive

Deposit a full-range position. In a DFM-enabled pool, this is the simplest exposure:

* You earn fees on every swap.
* You earn no IL from concentration (full-range is the baseline IL curve).
* The POL position is also full-range, so it "competes" with you for fee share proportional to liquidity.

This is the right choice if you want low-management, stable-fee exposure and are willing to accept lower absolute fees than a well-managed concentrated position.

#### Concentrated range with rebalancing

Deposit a concentrated range covering the expected price zone. Rebalance when price drifts out.

* Higher fee capture per dollar of liquidity while in-range.
* You earn zero while out-of-range.
* Rebalancing has gas and slippage costs.

DFM doesn't help or hurt this strategy directly, but the higher per-swap fee during volatility periods is a meaningful tailwind.

#### Via a CL manager vault (Gamma, Arrakis, etc.)

These vaults manage concentration and rebalancing for you. On a DFM-enabled pool, the managed strategy's PnL improves with DFM's dynamic fee — more so the more volatile the pair.

### Monitoring

For a DFM-enabled pool, the useful per-pool views:

* DynamicFeeManager.getLatestFeeQuote(poolId) → SwapQuote with current baseFeePPM and surgeFeePPM.
* DynamicFeeManager.getFeeState(poolId) → (base, surge) shortcut.
* DynamicFeeManager.isCapEventActive(poolId) → boolean; true during surge.
* DynamicFeeManager.getMaxTicksPerBlock(poolId) → current MTB from the oracle.
* OracleManager.observe(poolKey, secondsAgos) → tick history if you want to compute your own volatility.

For POL position size: the FullRangeLiquidityManager exposes a view for the protocol-owned position's L. That, combined with total pool L, gives you the POL share of the pool.

TODO: Wire into subgraph view URLs once DFM subgraph is public.

### Fee collection

Claiming fees in a DFM-enabled pool uses Uniswap v4's standard collect on your PositionManager NFT (for concentrated positions) or via whichever interface you used to mint your full-range position. DFM does not own your fees — it only adjusts what the pool charges per swap. Your fees are yours to collect on the normal v4 cadence.

### Risks specific to DFM LPs

* Volatile fee → unpredictable income. If you're used to static-tier income predictability, DFM income is noisier. It also responds more to regime changes in the pair.
* Hook paused or mis-configured. If the DFM policy manager pauses auto-tune (e.g., for safety), base fee freezes at its current value. This is safe but temporarily removes adaptivity.
* POL share in tight ranges. If the POL position becomes a large fraction of a pool's full-range liquidity and you hold a narrow range, your share of in-range liquidity is lower at the market price than it would be in a non-POL pool. This is usually a good thing (more full-range depth helps your in-range liquidity when price moves), but it's worth understanding.
* Hook external-call fallback. If the DFM manager contract is paused or reverts, the hook emits ExternalCallFailed and falls back to a default fee (policy-configured manualFeePpm). This keeps the pool functional but may deviate from expected DFM behavior for a short window.

### The bottom line for LPs

DFM's claim is specific and mechanical:

By pricing fees to volatility and compounding a share into POL, a DFM-enabled pool captures more of the economic surplus of trading than a static-tier pool can, and it grows pool depth without issuing any token incentives.

That's the pitch. Everything on this page follows from that mechanism. If you want the borrower side or the unified Engine-plus-DFM LP story, read [AEGIS for Liquidity Providers](http://../03-using-engine/for-liquidity-providers.md).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.aegis.markets/part-5-dfm-dynamic-fee-mechanism/dfm-for-liquidity-providers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
