Addressing Community Feedback on Volume Fees & Next Steps
Hi everyone,
I’ve been closely monitoring the conversation here and in Discord since the 2 bps fee went live on Wednesday.
First, I want to acknowledge the feedback and frustration expressed by some community members regarding execution prices on specific pairs. While the immediate revenue data is positive (as @koeppelmann pointed out), it is crucial that we don’t erode our competitive edge on pairs where a 2 bps fee simply doesn’t fit the market structure.
I want to share some data on why a 2 bps fee is generally viable, before addressing the specific cases where it isn’t.
The Data Case: Why 2 bps Works (On Average)
We recently conducted a “0-Minute Markout” analysis comparing CoW Protocol against major DEX aggregators for trades between $10k-$100k on Ethereum during September 2025. This metric compares the execution price against a neutral price oracle at the exact minute of the trade.
The results show that CoW Protocol’s execution quality is sufficiently superior to absorb a fee in many cases while still leaving the user better off than they would be elsewhere.
-
Median Performance (p50): CoW Protocol achieved a median markout of -0.97 bps, significantly outperforming 1inch Fusion (-2.30 bps), Kyberswap (-1.70 bps), and Uniswap X (-30.00 bps).
-
Upside Potential (p75): CoW was the only protocol to show positive upside (+1.01 bps) at the 75th percentile, proving the value of our solver competition and surplus capture.
When our execution beats the next best alternative by ~1.3 bps (vs Fusion) or more, a small volume fee is often “paid for” by the superior price improvement the protocol generates.
The Exception: Low-Volatility Pairs
However, averages can hide specific outliers. While the data proves our model works for the majority of flow, it also highlights why a rigid fee is problematic for stable-to-stable or LST pairs.
On a USDC/DAI or WETH/wsETH swap, the “execution advantage” margin is extremely thin—often less than 1 basis point. In these specific scenarios, a 2 bps fee can exceed the surplus we generate, leading to the uncompetitive quotes some of you have flagged.
On @koeppelmann’s Proposal (Volatility-Based Fees)
Martin, I think your proposal to link fees to the volatility/slippage of the pair is directionally 100% correct. High volatility pairs can absorb higher fees; low volatility pairs cannot. However, there are two critical constraints we must consider before automating this:
-
The “Zero Reward” Issue: As @tanglin correctly identified, under the current mechanism, the protocol fee caps the solver reward. If we set fees to 0% for low-volatility pairs, we risk removing the incentive for solvers to settle these batches entirely. We likely need a minimum viable fee (e.g., 0.5 bps) rather than 0 bps to ensure solver participation.
-
Data Reliability: While using dynamic slippage tolerance as a proxy for volatility is a clever heuristic, we need to verify if this data stream is comprehensive and robust enough to dictate protocol revenue policy programmatically. We need to be careful not to introduce instability into the fee model based on data that was originally intended for a different purpose (slippage protection).
Next Steps
The passed proposal explicitly included the flexibility for the Core Team to manually adjust fees per trading pair (0-5 bps), so we have the mandate to address this without passing another CIP.
We are taking this feedback seriously. We are currently reviewing the examples provided by the community to understand the full scope of the impact on stable/LST pairs. Because adjustments here directly impact solver incentives, we want to ensure any changes are backed by data and don’t inadvertently break the reward mechanism.
We will continue to monitor the situation and discuss the best path forward for these specific pairs.