CIP-Draft: Aligning quoting and solving behavior of solvers

CIP: Draft
title: Aligning quoting and solving behavior of solvers
author: Haris Angelidakis, Felix Henneke
status: Draft
created:  2025-07-02

Simple Summary

For the past several months, it has been observed that many solvers often provide overly optimistic quotes in the price estimation competition (i.e., when an order is created) while they do not provide matching bids when proposing to execute the order. Although this is often mitigated by the fact that the solver competition is very strong, in many cases it still has multiple consequences; orders sometimes get executed at worse-than-quoted prices, or get a delayed execution or no execution at all, and in many cases quoting solvers do not even attempt to execute such orders, thus passing the risk of execution to other solvers while they still claim the quoting reward, as specified by the current rewards mechanism.

In addition, an influx of trading bots on chains such as Base, combined with optimistic quotes from solvers, has resulted in a significant spike in quote rewards, and a large portion of quote rewards are now allocated to order-flow that consists of repetitive trading back and forth between two or more tokens.

For these reasons, we propose to change the incentives mechanism for the price estimation competition by adding one more condition for a quote to be eligible for a reward; that there is at least one auction where the quoting solver proposed a solution for that order that is at least as good as the quote it provided, and that solution did not get filtered out by the fairness filtering of the fair combinatorial auction mechanism.

Motivation

The incentives for the price estimation competition, first introduced in CIP-27, have proved to be instrumental in getting solvers to provide quotes for the CoW Swap UI, as well as the api and all other integrations of the protocol, creating a very strong quote competition that has made CoW Protocol very competitive in its quoting.

However, given the rather simple nature of the current rewards mechanism with a fixed reward per quote, it has been observed that quoters are now more aggressively overbidding, meaning they report quotes that they often do not intend to match when executing the order. This can lead to orders not getting executed, orders getting executed more slowly, or orders getting executed fast but at a price that is worse than the quoted price (taking advantage of the order’s slippage tolerance). In other words, the quoting mechanism is gradually getting disconnected from the actual trade executions.

Moreover, a recent phenomenon has emerged, where multiple trading bots seem to be placing a lot of orders trading two or more tokens back and forth at very tight limit prices. Many such orders, due to the overbidding in quoting, are being flagged as market orders and thus end up being eligible for quote rewards whenever they get executed. While on mainnet this has not posed much of a problem yet, on L2s, such as Base, where the gas cost is significantly lower, it has been observed that there are multiple trading bots deployed with the sole purpose of trading back and forth two (or more) assets. Although this creates additional volume to the protocol, this type of volume is rather toxic, at least when it comes to quote rewards; such orders barely contribute anything to the protocol, while they allow certain solvers that engage in ovebidding in their quoting to claim more quote rewards.

For all these reasons, we believe that the incentives mechanism needs a redesign, with the main goal to make quoting and solving again much more interdependent than it has turned out to be. Concretely we propose to continue rewarding only quotes that lead to order creation and execution, but moreover, we impose additional constraints on the quotes that are rewarded. Specifically, if a solver provided a quote for an order that was created, then we propose that the quote is rewarded only if all of the following conditions are satisfied:

  1. The order is a fill-or-kill market order;
  2. The quote is verified (i.e., its calldata successfully simulated in the autopilot);
  3. The order was executed (not necessarily by the quoting solver);
  4. The solver that provided the quote during order creation proposed an execution of the order (in at least one auction) that is at least as good as the quote, and that execution was not filtered out by the fairness filtering of the fair combinatorial auction mechanism.

We believe that the above conditions will push quoting solvers to align their quoting and solving behavior, thus making the quotes provided much more accurate and close to what the solver intends to execute onchain. Specifically, the above ensures that overbidding in quoting will not benefit a quoting solver, unless that solver is also willing to match that inflated quote during solving as well.

Specification

We propose to implement the above mechanism on all chains, starting with the accounting week of July 8 - July 15, 2025.

5 Likes

Good to see this problem being addressed. However I’m not sure the proposed modifications align incentives that well.

  • Cowswap will stop rewarding many quotes but in the process it will stop rewarding some valid quotes, such as if a token price goes very slightly down between quoting and execution.
  • If some solvers overbid the quotes and don’t propose executions, they will stop getting paid for those but don’t have any incentives to stop “fake” quotes and solvers proposing valid “true” quotes will still not get paid for them.
  • Why add the fairness filtering requirement ? That means that if a solver provides a better execution than the quote for an individually solved order, the quote will not get paid even though it triggered a legitimate order.
1 Like

Cowswap will stop rewarding many quotes but in the process it will stop rewarding some valid quotes, such as if a token price goes very slightly down between quoting and execution.

This is a good point, and one option would be to add some tolerance in the check. However, a counterargument would be that quoters could start exploiting whatever tolerance we might add there. Let me know if you have any concrete suggestion here.

If some solvers overbid the quotes and don’t propose executions, they will stop getting paid for those but don’t have any incentives to stop “fake” quotes and solvers proposing valid “true” quotes will still not get paid for them.

That’s another good point. Indeed, a quoter can spam the system by bidding epsilon higher than everyone else, and then basically eliminating quote rewards from honest solvers. One could be more aggressive here by introducing a penalty in the case where a matching bid doesn’t show in an auction, but given your point above, that might be too much for honest quoters that provide quotes during a volatile period.

Why add the fairness filtering requirement ? That means that if a solver provides a better execution than the quote for an individually solved order, the quote will not get paid even though it triggered a legitimate order.

I am not sure I get this point. If you quote an order and then propose a better execution for that order in a single-order bid, then you are good to go (as only batched bids might get filtered). The motivation behind this is that a malicious quoter that doesn’t want to execute anything will not be able to claim the reward by batching together the quote with a terrible execution of another order with the goal to get that batched bid filtered out.

1 Like

Nevermind my 3rd point I forgot that individual solutions were not subject to filtering.

The conditions proposed eliminate rewards for bad quotes but they will result in a possibly significant decrease of quoting rewards, even for legitimate quotes.

Did you run any analysis on historical data to see by how much it would decrease quoting rewards?

A way to compensate this would be to increase the base quote reward (by an amount justified by the analysis on historical data).

About my 2nd point, a way to address this would be to give a small penalty to solvers who don’t propose an execution at or above quoting level, but since it will affect to legitimate quotes as well it should also be accompanied by an increase in the base quote reward to compensate for the penalties.

1 Like

The conditions proposed eliminate rewards for bad quotes but they will result in a possibly significant decrease of quoting rewards, even for legitimate quotes.

Did you run any analysis on historical data to see by how much it would decrease quoting rewards?

A way to compensate this would be to increase the base quote reward (by an amount justified by the analysis on historical data).

This is a fair point. We have done some experiments, and aim to share something here in the next 1-2 days. Indeed, quote rewards drop significantly, but we also believe this showcases that multiple quotes are currently overly optimistic. Quoters adjusting accordingly would help with increasing quote rewards an honest quoter will claim.

But it is definitely an option to increase the reward per quote as well to compensate for a potentially very aggressive reduction in rewards. Let’s commit to look at the data of several weeks and if the numbers are consistently very low, we can update the text of the CIP to include an increase in the reward per quote.

About my 2nd point, a way to address this would be to give a small penalty to solvers who don’t propose an execution at or above quoting level, but since it will affect to legitimate quotes as well it should also be accompanied by an increase in the base quote reward to compensate for the penalties.

Will make sure to add this in the experiments to see whether we can come up with a penalty per quote that is reasonable.

2 Likes

I agree that there are cases in which the solver quotes honestly and still may not bid on the resulting order (ie. if the price moved against them). When I last looked at this in 2022, this was the case in about 25% of trades (in ~50% price stays flat, in ~25% it improves). We can look at that data again (although it’s now skewed due to the ongoing overbidding).

I believe we could therefore increase the per order reward for quotes that pass the proposed criteria to offset this risk.

However, I also believe the quote reward on some L2s are way too high. Solvers are currently rewarded 50c per quote and the median trade size on Base is something like $15. That is >3% of volume, an amount the protocol will never be able to recover from fees.

Thus I’d argue we need to significantly reduce the quote fee cap on L2 (something like 10x), introduce the rule above to make sure solvers bid what they quote, and with that re-increase the cap to adjust for the mentioned price movement risk.

On a side note, we are also looking into a more fundamental overhaul of the quoting reward mechanism to bring the per order quote rewards more in line with the value they bring to the system (but this may take a bit more time).

2 Likes

Following up on the discussion about experiments and past data, @hchone, who is doing an internship with us, will soon post some graphs that showcase some of the issues with the existing mechanism.

And as most data is already available on Dune, i will try to post a Dune query soon as well that can be used as a reference point for further experiments

1 Like









The following graphs were built using data from April to June on Mainnet, Base and Gnosis. We reconstructed the quote amounts based on the bids submitted by solvers and the realized gas costs. This approach mimicked what quotes would be if the Protocol had a perfect estimate of gas costs, thereby isolating the effect of bids on quotes. We also controlled for chain-specific fees and restricted the analysis to trades executed in a “single-trade” batch to prevent batching from skewing the results. The variable of interest here is called “Execution vs Quote Difference” and was computed as such : for a buy order, (quote_sell_amount - units_sold) / quote_sell_amount, and for a sell order, (units_bought - quote_buy_amount) / quote_buy_amount.

Data from Mainnet points in the direction of overbidding for at least one solver. While the aggregate proportion of negative execution vs quote difference is only slightly above 50%, for a particular solver it gravitates around 70%. Examining the distribution of the difference for this solver reinforced our suspicions, as the distribution is centered around -1 basis point (bp).

The analysis of solvers’ behaviors on Base proved particularly interesting. For some reason, quotes’ accuracy seemed to have improved significantly during the last two weeks of May. As a result, when plotting the distribution of the difference between execution and quote amounts, we separated the data for those two weeks from the rest of the period. This time, multiple solvers’ distributions are shifted toward the negative side - more so if you don’t consider the last half of May as we chose to do.

On Gnosis, the aggregate distribution shows two bumps on the negative side. While we cannot clearly explain the one at -10 bps, the spike at -1 bp can be directly attributed to one solver. Plotting the distribution for that solver vs all others clearly indicates that it is the one creating the bump, most likely because of very optimistic quoting, or overbidding.

Overall, this analysis reveals that on all chains, quotes from certain solvers are consistently executed at a discount. Additionally, the fact that some solvers’ distributions are centered around the same negative value across multiple chains suggests that this pattern is systematic rather than incidental. These negative differences are unlikely to be fully explained by slippage alone and may instead reflect strategic behaviors in the price estimation competition.

3 Likes

These graphs show there are issues indeed but don’t show how much the proposed solution will affect “honest” quotes. Would be curious to look at your query @harisang.

That said, the proposed solution + revisit quoting rewards based on new data sound good to me, particularly if the incentives get redesigned soon anyway as @fleupold mentioned.

1 Like

Indeed, this is a real issue that needs to be addressed.
However, in order not to disrupt the existing system too abruptly, I’d suggest starting with a probationary period — during which rewards would be evaluated using both the current and proposed systems in parallel. We could then compare the results after, say, one month.

The reason I suggest this is that I’m not entirely convinced that a failed order execution is always an intentional abuse by the solver. If we immediately implement this new system, we might unintentionally withhold rewards from honest solvers

1 Like

Sorry about the very delayed response. I ran some queries in our db and got the following results.

The queries only look at fill-or-kill market orders that do not come from partners (thus, no volume fee), and they look at all orders that were created in June 2025. The goal is to compute the number of quotes that are eligible for rewards in the current mechanism and the number of quotes that are eligible for rewards with the proposed change in this thread.

Mainnet - June 2025

  • current mechanism → 97,765 quotes to be rewarded
  • proposed mechanism → 12,979 quotes to be rewarded

This is a reduction of 86%

The reduction per solver ranges from 65% percent to 98%.

Base - June 2025

  • current mechanism → 163,928 quotes to be rewarded
  • proposed mechanism → 18,130 quotes to be rewarded

This is a reduction of 89%

The reduction per solver ranges from 75% percent to 99%.

Comments

These are very clear very significant reductions. I do believe that quoters will adapt, by reducing significantly overbidding and working more consistently towards aligning their quoting algorithms with their solving ones, so I don’t believe that this signals a reduction in quote rewards of 65+%.

However, I can imagine these numbers are concerning for solvers so we could combine this change with an increase in the native caps for L2s, to match the caps on mainnet. And we could also increase both native and COW cap per quote by, say, 20%-30%.

Would be good to hear your opinions on that.

I am also sharing a preliminary query on Dune that backs up the results that @hchone shared,

https://dune.com/queries/5400264?end_time_d83555=2025-07-01+00%3A00%3A00&start_time_d83555=2025-06-01+00%3A00%3A00&sidebar=none

2 Likes

Thanks for sharing the query and results @harisang.

It looks indeed like this will lead very high decrease in quoting rewards. Even if solvers adapt, because of the probabilistic and approximate nature of quoting, I seriously doubt they will be able to propose more than 50% of executed trades above their quoting level. So I don’t think a 20% increase in rewards will come close to cover the loss incurred by this proposal, I’d guess rewards would need to be doubled. If this does move forward, can there be a 2 step process where the new rules get applied first and based on the observed new behavior readjust rewards then ?

Do we know how many quotes actually get executed below quoted amount (is it significant on mainnet) ? I worry that with this proposal if quotes are low-balled as a result they may not reflect executed prices and affect cowswap’s competitivity for traders comparing quotes on different platforms.

Thanks for the response.

Even if solvers adapt, because of the probabilistic and approximate nature of quoting, I seriously doubt they will be able to propose more than 50% of executed trades above their quoting level. So I don’t think a 20% increase in rewards will come close to cover the loss incurred by this proposal, I’d guess rewards would need to be doubled. If this does move forward, can there be a 2 step process where the new rules get applied first and based on the observed new behavior readjust rewards then ?

Indeed, solvers adjusting doesn’t necessarily mean the quote rewards will continue to match the numbers of the previous several weeks. But, this, in itself, isn’t a problem by default. One could argue quote rewards have been increasing over the past few months, and combined with an increase in performance rewards due to combinatorial auctions, has led to certain weeks with significantly elevated (compared to older weeks) rewards. It is not clear to me what is the “correct” amount of rewards to be distributed. So i think this proposal is, in a way, a restarting of the quote rewards mechanism with the goal to better align quoting and solving behavior, and an “experiment” in trying to identify again what is the correct amount of quoting rewards that need to be distributed. Given that we are indeed actively working on a further restructuring of the quoting rewards mechanism, i think this is a good start, but if you think it’s necessarily, I am fine adding a clause that the core team has the right to further increase caps (but NOT decrease them), after observing the quoters’ behavior over the first 4 weeks after (and if) the new mechanism launches.

Do we know how many quotes actually get executed below quoted amount (is it significant on mainnet) ? I worry that with this proposal if quotes are low-balled as a result they may not reflect executed prices and affect cowswap’s competitivity for traders comparing quotes on different platforms.

Based on the Dune query that i shared, if you look at the first 5 quoters (in terms of absolute number of quotes), only 32% of executions give price improvement, or 68% is executed below quoted amounts (23,885 out of 74588 of the orders the query picks are executed at better than quoted price).

I still believe that showing somewhat inflated prices, although tempting, does hurt the protocol’s credibility in the long run, as many users will start feeling that our quoting is just too inaccurate and optimistic, and seeing a great price will not mean much. And i feel (or hope) that quoters will not just carelessly and selfishly try to underquote as well, as this will indeed impact the number of trades in the protocol, and it is in the best interest of everyone to try and bring as many orders as possible to the protocol.

To conclude, I would concretely propose the following:

  • increase quote reward native cap by 30% on all chains
  • core team reserves the right to further increase (but NOT decrease) the quote reward native cap if quote rewards are significantly reduced after 4 weeks of the new mechanism, and quoters actively express their concern that they cannot cover their running costs via these rewards.
1 Like

Hey @harisang, having 68% of trades executed below quoted amount is a significant problem that needs to be addressed. I agree with your proposal.

We appreciate @harisang for flagging this issue, implementing stricter rules to ensure solvers are willing to execute at their quoted prices is a crucial step in aligning incentives. However, we share concerns that this approach might not fully solve the problem and could inadvertently disadvantage honest solvers, particularly in scenarios like those @tokenwood mentioned, where minor market shifts occur. This could potentially lead to a decrease in rewards, which may in turn reduce the number of active solvers if not managed carefully.

Beyond these immediate fixes and feedback on the proposed CIP, we think we should also look at some deeper, more fundamental changes to how solvers get rewarded, focusing on their actual performance. Here are two approaches we can think of:

First idea that we can think of is to “Drastically change rewards to focus on actual executed trades”. Here’s the things we could consider for this approach:

  • Almost no quote reward: The tiny payment for attracting an order would nearly disappear, or vanish completely if the solver doesn’t even try to bid competitively later.
  • Big execution bonus: Solvers would get more bonus, but only if:
    They submit a solution for that order that is as good as, or better than, their first quote, and this competitive bid directly leads to the order’s execution.

This creates difference incentive dynamics where solvers would want to quote accurately and actually get trades done. Overbidding becomes pointless because there’s almost no reward, pushing them to focus on delivering the promised price.

The second idea is to have “A performance-based reward system” (This would require more time and resources.) This system would reward solvers based on how well they actually perform across a few key areas, demonstrating the real value and efficiency they bring to the protocol. Here’s the things we could consider for this approach:

  • Define key performance areas (KPIs):
    • Quote accuracy: How close was the initial quote to the final trade price (e.g., how little slippage)?
    • Execution success rate: What percentage of orders they quoted actually get completed?
    • Execution speed: How fast did their quotes lead to finished trades?
  • Flexible reward structure: A system could be set up where solvers who perform better across these areas get bigger rewards for their executions. If a solver consistently performs poorly (like overbidding without executing), their rewards could be cut.
  • Clear tracking & checking: Clear and transparent methods would be needed to track and check all these performance areas for every solver. This data would directly decide their rewards.

This complete, performance-driven system, which could even include parts of the first idea, could fundamentally change solver incentive dynamics. It would naturally discourage bad behavior like overbidding and encourage solvers to genuinely help make the protocol efficient and fair in the long run.

Thank you for you contribution @Curia

Could you highlight how this is different from the model that @harisang suggested here?

It’s quite similar overall, but the main difference in this approach is to keep a small quote reward to continue incentivizing solvers. In @harisang model, this quote reward is removed entirely.

Great proposal — it helps ensure both order execution efficiency and fairness in solver competition. Under the current mechanism, the solver with the highest quote receives the reward, which leads to a game-theoretic race to the highest possible (but not necessarily accurate) price. However, since the goal of quoting is to provide users with the most accurate and fair price, it is recommended to adjust the reward mechanism to favor the solver whose quote is closest to the actual execution price, thereby incentivizing honest behavior.