Fees

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} = X
    units 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.,
    RB≥p(1−γ)XR_B \geq p (1 - \gamma) X
    ​
  • When a trader wants to trade
    ain=Ya_{in} = Y
    units 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
​.