How Meter's Smart AMM Engine Works

The first improvement in Meter’s Smart AMM mechanism is to introduce multiple oracle data sources, including those from our partner Chainlink and Uniswap. The oracle data sets a reference price for the AMM, which provides price quotes as guidance and makes adjustments based on the token inventories in the liquidity pool.

There are a few oracle-guided AMMs on the market, such as Bancor v2, Dodo and Cofix. They have different assumptions on their bonding curves and, most importantly, the quality of the underlying oracles. They claim that their platforms address the impermanent loss problem entirely. However, there are in fact two types of potential profit loss in the traditional Uniswap/Balancer style constant product AMM:

  1. LPs are exposed to loss because of the 50/50 constantly-rebalancing portfolio composition, which may be completely different from their target portfolio. For example, when an LP provides 1 ETH and $340 to a pool, the AMM will automatically sell a portion of ETH to USDT as ETH price appreciates to $380. In this case, the LP is better off holding the original position than providing liquidity to the pool.

  2. LPs are exposed to losses by arbitrage. Arbitrage in many cases is beneficial to the AMM, as it contributes to trading volume and fees. It becomes a problem with sudden price movements. Imagine the price of ETH suddenly increases from $340 to $380 on a centralized exchange. However, the Uniswap ETH/USDT pool is completely blind to this information and still quotes $340 per ETH. In the Uniswap pool, it would take $23M to move the price from $340 to $380, and this would open a big window for arbitrageurs to take profit from the pool’s LPs. This loss is actually a permanent loss instead of “impermanent loss”.

Smart AMM aims to remove the first type of loss and reduce the impact of the second type of loss during sudden market movements.

The AMM no longer tries to maintain a 50/50 value split between the two tokens in the pool. Instead, it will try to maintain the same amount of tokens deposited on each side of the pool. This approach essentially eliminates the impermanent loss introduced by forced portfolio composition. Additionally, this approach allows the liquidity providers to add and remove liquidity with arbitrary token composition, including adding a single asset, without impacting the price. This helps liquidity providers tailor their risk exposure.

The smart AMM analyzes the oracle data feed from Chainlink and Uniswap in terms of price, market depth, and timestamp. To save on Ethereum gas usage, Chainlink validators only update the oracle data feeds when they deviate from a Deviation Threshold. Such thresholds are maintained by the Chainlink team and vary from 0.5% to 2% for different trading pairs. We found that for trading pairs with deep liquidity, like ETH/USDT, Uniswap often provides tighter price quotes than Chainlink and are much more cost-effective compared to economic game-based oracles like Nest.

When market volatility is low, Smart AMM uses a flat bonding curve and provides a low-slippage trading experience for traders. When the two price feeds deviate from each other, smart AMM starts giving more weight to one or the other based on multiple factors. It may also adjust the bonding curve when it perceives higher market risks. This dramatically reduces the loss from being taken advantage by arbitrageurs.

For the initial launch, the smart AMM used the same bounding curve formula as DoDo to reduce risks. Meter smart AMM however created the oracle and K factor dynamic adjustment mechanisms for the bounding curve. Due to the limitation of the nonlinearity of the bounding curve, there is a withdraw penalty for the liquidity providers when they try to withdraw the liquidity when the system is significantly unbalanced (one of the tokens' balance deviates too much from the original user deposits). The liquidity provider is recommended to wait some time till the system is back to balance by the arbitrageurs to withdraw liquidity.