4 months of CoW AMM: what we have learned and the next steps

TlDR. CoW AMM is still in beta, and there is ample room to increase the return for its LPs further. Despite this, depending on the method and the pool, the returns to providing liquidity to CoW AMMs are similar to or significantly better (3% extra per month) than the best alternative for passive LPs.

Executive summary

CoW AMM’s promise to protect liquidity providers from LVR, that is, the excess profits made by arbitrageurs when rebalancing an AMM. During the first few months of its existence, we focused on delivering on this promise. CoW AMM’s current implementation, however, has an important limitation: it rarely trades with other CoW Swap users and, hence, rarely earns fees. Despite this, across all token pairs, CoW AMM returns are consistently equal to or better than the return on comparable Uniswap-v2 style pools (which research shows are the best alternative for passive LPs).

In the next phase, our main focus is increasing the frequency with which CoW AMMs trade with other CoW Swap users (and earn fees). We expect this phase to be completed by the launch of the Balancer / CoW AMMs (see here). We also expect that, once this phase is completed, CoW AMM LP’s return will greatly outperform that of Uniswap-v2 style pools.

Finally, the first CoW AMM pool was a COW/WETH pool, and one motivation for launching it was to increase the liquidity of the COW token. At that time, the DAO agreed to build up its TVL via a sequence of small contributions of COW tokens. Because the AMM rarely trades with other users on CoW Swap, this particular objective has not yet been achieved. We, therefore, decided to stop the stream of COW tokens to the COW/WETH pool and reevaluate whether to resume it once the next phase of CoWAMM’s development is completed.

CoW AMM now: how it works

In its current implementation, each CoW AMM trades exclusively via a limit order created by the protocol. Technically, this is achieved via the programmatic order framework in which the watch tower is responsible for automatically creating the AMM order. To create this order, the watch tower checks an oracle price and creates a limit order that, if executed at the oracle price, will move the AMM price in line with the oracle. Solver competition then determines the price at which this order is executed.

This implementation has several advantages. First, solver competition guarantees that the AMM always trades at the correct price, even if the oracle is stale or unreliable (that is, the oracle matters exclusively for determining the sell amount, not the price of the trade). Most importantly, because the AMM trades via a limit order, solvers can interact with it without adopting any special logic.

At the same time, because the limit order created by the watchtower is the only way in which solvers can trade with the AMM, then the AMM trades with other users on the batch only in special circumstances. For example, the watchtower may create an order that is not executable because of gas cost. At some point, a user submits an order trading in the opposite direction of the AMM, which a solver can match with the AMM order. Needless to say, this is far from the ideal situation in which all CoW Swap orders on a given token pair can be matched with the corresponding CoW AMM (if it exists).

Finally, CoW AMMs can currently be deployed exclusively from a safe, which imposes important limitations regarding gas optimization. CoW AMMs are also limited to a single LP for a single AMM with a single token pair.

CoW AMM now: how it performs

We created a preliminary Dune query summarizing all important metrics related to CoW AMM so far (list of all CoW AMM pools, token pair, TVL, fee APY, …), which we invite the reader to check out. Here, we summarize the most important takeaways: the comparison of returns between CoW AMMs and Uniswap-v2 style AMMs (which are better than Uniswap v3 for passive LPs). This comparison focuses on three pools CoW DAO created (partially for testing purposes): the original COW/WETH pool (on mainnet, launched on Feb 14th 2024), a USDC/WETH pool (also on mainnet, launched on April 17th 2024), and a smaller GNO/WETH pool (on Gnosis chain, launched on April 25th, 2024)

For the two pools on mainnet, we started by choosing suitable benchmarks: the Balancer COW/ETH pool and the Uni v2 USDC/WETH. Then, every time liquidity was added to one of the CoW AMM pool, we checked how many LP tokens of the benchmark pool we could have purchased with the same funds. We then tracked the value of our hypothetical stock of LP tokens, and compared it with the TVL in the CoW AMM pool. Note that this methodology overestimates the return of the benchmark pool because, had we really added the same liquidity to the benchmark pool instead of CoWAMM, we would have decreased the value of the LP tokens (for evaluating the GNO/WETH pool, we choose a different method precisely to avoid this issue).

The figures report the result of the comparison. CoW AMM TVL either closely tracks and overall slightly outperforms the benchmark: the TVL in the COW/WETH CoW AMM pool is currently 6.10% larger than the value of our hypothetical holdings of LP tokens of the benchmark pool, while the TVL in the USDC/WETH CoW AMM pool is currently 0.7% larger than the benchmark (remember that this pool was created much later).

Instead, to evaluate the GNO/WETH CoW AMM pool on Gnosis chain, we chose a different approach. We initially created the pool with USD 6700 TVL, while simultaneously contributing the same liquidity to an Honyswap (constant product) GNO/WETH pool and obtained 2.82678966 LP tokens. After a single month, the TVL in CoW AMM is USD 7124.86, while the value of our LP tokens is USD 6916.77: CoW AMM outperformed the reference pool by 3%.

CoW AMM now: summary (and pausing of the COW stream)

We conclude that CoW AMMs’ current implementation successfully protects liquidity providers from LVR. It generates returns that, depending on the method and the pool, are either similar or significantly better (3% extra per month) than comparable traditional AMMs. However, CoW AMMs rarely trade with CoW Swap users and, hence, are not yet very useful for increasing liquidity in a given market.

Remember that the first CoW AMM was a COW/WETH pool, with the additional goal of increasing the liquidity of the COW token. We seeded the pool with ETH and COW contributions (of equal value). We then increased its TVL via a series of one-sided COW contributions. Given the limitation of the current implementation of CoW AMMs, we decided to stop the stream. We will evaluate whether to restart it once the next phase is reached.

CoW AMM in the immediate future

In the next few months, we will work toward removing CoW AMMs current limitations.

First, we worked on a CoW AMM standalone contract that allows deployment of CoW AMMs without needing a Safe. Under a grant from CoW DAO, the Bleu team is working on a revamped CoW AMM deployer app that uses this contract. Once this work is completed, the standalone contract will become the default way to create CoW AMMs. Also, we will transition all CoW AMMs created within Safes to this new architecture. At that point, CoW AMMs will be efficiently gas-optimized.

Second, we will allow solvers to propose orders for CoW AMMs (instead of relying on the limit order produced by the watchtower), hence making flexible use of the liquidity in the AMMs. The required backend infrastructure has already been deployed, and the next step is for solvers to adjust their infrastructure. To speed up the adoption, we set up an incentive program rewarding the first solvers who successfully trade with COW AMM via orders that they propose.

Last but not least, if approved by the DAO, the collaboration with Balancer will provide a host of benefits to CoW AMMs LPs: one of the best UI for adding and removing liquidity, the ability for LPs to pool their funds in the same AMM, robust analytics, …

CoW AMM further down the road

The initiatives described above will be the main axes of development for CoW AMM for the next 1 or 2 months. But we have no intention of stopping there! We are particularly excited about the possibilities that the collaboration with Balancer will open up: multi-token pools, boosted pools, the ability to trade on CoW AMM pools permissionlessly (for a fee), …. Stay tuned for further announcements on these exciting developments!


Thanks, Andrea, for the summary.

I saw the comparison of CoW-AMMs with Balancer and Uniswap on Dune, It looks like the real data confirms your research findings, which is awesome.

I also think that allowing solvers to create orders to rebalance the pool is a great idea and can potentially increase the surplus.

Additionally the interest from Balancer only confirms the potential of this product!

Bullish on CoW-AMM! :fire: