An overview of how fees work on Duality

Disclaimer: Liquidity providing into all AMMs is risky and requires due dilligence. While we explain how fees can hypothetically be used to make money, we reccommend that you do your own research before making decisions on how to choose fees and whether to liquidity provide.

Fees are used by liquidity providers to make money from trades using their liquidity. Every time a trade is made, the fee charges traders a slight premium for using the liquidity.

The best strategy for liquidity providers will not always be to charge traders the highest fee. This is because higher fees also means higher prices, which can be undercut by liquidity being deposited at lower fees or prices. Thus, liquidity providers should be thoughtful in their selection of fees.

A rule of thumb on choosing fees is that liquidity providers typically choose higher fees on pairs with more volatility.

  • Less volatile assets (like stablecoin pairs) carry little to no risk of loss-versus-balancing (LVR) and impermanent loss (loss-versus-holding) for liquidity providers. It is relatively straightforward to LP and make a price prediction. This means that attracting order flow is very competitive and fees may end up becoming a race to the bottom. A typical strategy might be to deploy a lot of liquidity at very close to and at the peg price with the lowest fee tier.

  • More volatile assets are subject to higher LVR and IL. LPs may spread their liquidity across a wider range to capture more volume. This additional volume and lack of liquidity concentration makes it more suitable for LPs to charge higher fees.

Basic Fee Math

We will use γ\gamma​ to represent fees in constant sum pools. Fees work as follows:

  • Consider a pool between token AA​ and token BB

  • When a trader wants to trade ain=Xa_{in} = Xunits of token AA for token BB through a pool with the price pp and a fee γ\gamma, they receive aout=p(1γ)Xa_{out} = p (1 -\gamma) X is long as there are enough reserves in the pool i.e., RBp(1γ)XR_B \geq p (1 - \gamma) X

  • When a trader wants to trade ain=Ya_{in} = Yunits of token BB for token AA through the same pool, they receive aout=(1γ)Ypa_{out} = \frac{(1 - \gamma) Y}{p}as long as there are enough reserves in the pool i.e., RA(1γ)YpR_A \geq \frac{(1 - \gamma) Y}{p}

Note: that since price pp​ is the exchange rate for trades from token AA to token BB, 1p\frac{1}{p} is the exchange rate for trades ​from token BB​ to token AA​.

Last updated