Towards a stronger price estimation competition

Price estimation

Price estimation is an integral part of CoW Protocol. A price estimation query results in the quote a user will see, e.g., in the CoW Swap UI; concretely, and considering sell orders, it corresponds to the expected buy amount as well as the fee (in the sell token) a user will be charged. Although user orders are protected via the solver competition (i.e., solvers are required to provide the best possible deal to the users), getting a competitive quote is clearly beneficial, as it provides a hard guarantee (via the limit price) that the order is not exploitable, and also gives a much more accurate signal to the user about the amount they should expect to receive. Ultimately, users do care about the estimated prices they see in the frontend, and this has become very apparent in the last few months due to DefiLlama, where ranking higher in it has resulted in increased traffic in CoW Protocol.

Currently, price estimation is done via a price estimation competition, similar in spirit to the solver competition that takes place for settling batch auctions. So far, mostly the Gnosis solvers have participated in it, with the exception of SeaSolver, which joined the competition a few months ago in order to provide competitive quotes for special token pairs where general-purpose estimators fail. The competition already provides a very robust quote system for the vast majority of token pairs. However, we believe that the protocol could benefit by encouraging more solvers to also participate in price estimation, something that would have a twofold effect:

  1. Even more competitive quotes, as certain solvers are aware of liquidity and execution paths that are not known to 1inch or 0x for example, and
  2. more robust and reliable quote system, for cases where there might be rate limits imposed by 1inch/0x etc.

Ultimately, this would make the protocol even more competitive and would increase the number of orders it is receiving (from DefiLlama and elsewhere).

For these reasons, all solvers currently participating in the solver competition should be encouraged to become price estimators.


The are a few challenges to achieve this goal.

  1. Currently, there is a non-trivial load for price estimations. In particular, estimators might get 1k-2k price estimation quotes per minute. This means that solvers would require to significantly scale up their resources, and this would mean that their operational costs increase by quite a bit.
  2. Even if the Protocol provides the appropriate incentives to address the concerns in (1) and solvers agree to participate in the estimation competition, the Protocol still need to ensure that the provided quotes are meaningful. For that, the first requirement would be that each quote should be accompanied by full calldata, so that it can be simulated and verified, if needed, that the quote is indeed valid. Besides that, reasonable metrics and checks for monitoring the submitted quotes should be put in place, so that the system is able to react fast to quotes that are unmatchable, and which would cause orders to expire.

Given the clear benefits that a stronger price estimation competition would have, we believe that at this point, there is no reason to devise a new incentives mechanism, and agreeing on covering (part of) the solvers’ expenses would be enough for most solvers to take this step. In particular, the protocol could address (1) by allowing to solver, at least in the short term, access to its node infrastructure, so as to minimise the added cost, that solvers will otherwise have to bear.


We hope that all solver teams would consider participating in the solver competition, and we would like to initiate here the discussion about the concrete steps needed to make this happen.


Just adding here a data point that underlines why competitive price estimation is crucial for the protocol’s success and should be in the interest of all stakeholders:
We ran a small DefiLlama experiment, where we slightly subsidized trades (total $2500) which resulted in a 3x volume increase ($13M).

Therefore, we believe that by showing more competitive prices, we can significantly increase the orderflow that solvers receive to settle.

The reason we would like to verify the calldata for quotes is that even worse than not showing the best price, is showing a price that is too good to be true (which we have seen e.g. during the USDC depeg where some estimators weren’t aware of the compound pool being suspended). In those cases users may place orders which are not executable and lead to a very frustrating experience, which we’d like to avoid by simulating the quotes.


Adding another data point: This Monday we had to temporarily disable Balancer liquidity from the Baseline solver due to an issue with the GraphQL indexing of their pools.
Due to the lack of estimator diversity (some of the other APIs that are being used were rate-limiting requests), this lead to certain popular tokens - e.g. Aura - showing flaky quotes, sometimes not being tradable at all.
At the same time users - if they were able to place an order - continued to receive optimal pricing because the solver competition remained strong and competitive.

Maybe the first question we should answer is, whether the price estimation competition should be

  1. Opt-in for solvers and be powered by a nuanced incentive mechanism, or be
  2. Mandatory for any solver that would like to participate in the competition?

I think this will be easier to start with. One question is whether it is viable to add a “non trivial” fixed cost for solvers which will need to deal with the quote load. How their “quote service” is measured?
Would there be a clear rule for disqualifying as a solver for failing to service quotes?

Nuanced incentives might be better but probably hard to reason about them before knowing the market dynamics for this service.

Maybe we can define some minimum (QoS) standard and announce a retroactive grant for solvers that maintain the standard for 6 months?

Just posted a CIP draft that proposes a simple rewards mechanism for solvers participating in the price estimation competition