Fees and Effective Price
Signals v1 separates base pricing from fees. The base cost or proceeds come from the CLMSR pricing curve, and fees are applied afterward as an explicit policy layer. This keeps pricing coherent while making fees transparent.
The result is two numbers for every trade: the base price implied by the curve, and the effective price paid or received after fees.
That separation keeps the mechanism legible. The curve defines the base cashflow implied by a state transition. The fee defines a surcharge or discount applied to that base amount. Keeping them separate avoids conflating curve slippage with fee policy.
It also makes execution analysis possible. Two trades can be compared at the same curve state to isolate whether the difference came from price impact or from policy. That clarity is hard to get if fees are embedded into the curve.
Fees as an overlay
If fees were embedded inside the curve, the curve itself would stop being a clean expression of price impact. By keeping fees outside the curve, the mechanism preserves interpretability: the curve captures price impact, and the fee captures a policy surcharge applied on top.
That separation keeps analysis clean. Price impact is a property of the shared curve; fees are a policy overlay. Keeping them separate prevents execution cost from being conflated with mechanism behavior.
Fee policy is an explicit contract referenced by a market. Different markets can use different fee policies while keeping the CLMSR pricing rule unchanged. This makes trades comparable at the level of base pricing: differences in effective price come from the overlay, not from a different curve.
In v1, a market stores a single feePolicy address at creation time. Trade
entrypoints call that policy during execution to quote a fee amount in ctUSD
units. The policy call can condition on trade direction and trade metadata
(trader address, market ID, range, size, and the base amount), but the mechanism
surface remains the same: the policy returns a fee amount that is applied after
base pricing.
Where fees apply
- CLMSR computes the base cost or proceeds for a trade.
- A fee is applied on top of that base amount.
This preserves the mathematical properties of the pricing curve while letting markets express their own fee policy.
Because fees are layered, they apply to the total trade cost, not to individual ticks. When reconciling a trade, the curve provides the base cost; a single rate defines the fee; the sum is the total paid.
In practice, the fee is symmetric on buys and sells: it increases the amount paid on a buy and reduces proceeds on a sell. The mechanism is the same even though the sign flips.
Effective price
Effective price is the cashflow that enters realized PnL. It is not a separate pricing rule. It is the base curve cashflow plus an explicit overlay.
For a buy:
For a sell, the fee reduces the proceeds:
The result is an effective execution amount, which can be converted to an effective average price by dividing by quantity.
In other words, the effective price is the base price adjusted by a predictable markup or markdown. Profitability depends on effective price, not base price.
Execution venues are comparable only via effective price. The curve expresses market impact; the fee expresses policy cost. Both enter PnL.
One subtle but important point is that the fee overlay composes with slippage. If the base amount increases because the curve moved against the trade, the fee amount typically increases as well because it is computed from the base amount. This is another reason it is useful to keep the layers explicit: slippage and fees are different objects, but they interact through composition.
A concrete example
Suppose the base cost for a trade is 100 units. If the fee is 0.5%, the total paid is 100.5. If the fee is 2%, the total paid is 102. The curve did not change in either case; only the overlay did.
Fee policy changes effective outcomes: two trades with identical base pricing can produce different results if fee policies differ across markets.
The logic can be inverted: if two trades have the same effective price but different fee rates, their base costs differ. This is another reason to keep base pricing and fees separate when analyzing execution.
Charts that show only base prices omit the policy layer that the market applies to every trade.
Fees vs slippage
Slippage and fees are different layers.
Quoted range price mass describes the marginal price at the current state. Executed average price also depends on slippage along the trade path and on the fee overlay applied to the base amount.
Slippage is state-dependent and convex; fees are policy-dependent and linear. When scaling size, the difference becomes more pronounced. Slippage grows faster than size, while fees grow proportionally.
For very small trades, fees can dominate total cost. For larger trades, slippage often dominates. The crossover point depends on depth and fee rate. Execution is the combination of state (slippage) and policy (fees).
Fee rationale
Fees serve two roles at once: they compensate the system for providing liquidity, and they shape trading behavior by adding a predictable surcharge. The structural placement of fees remains the same: the fee is applied to the base amount after the curve computes the state transition cashflow.
Because fees are a separate overlay, fee analysis is separable from slippage analysis: the curve determines the state-dependent component and the policy determines the linear overlay.
Different fee policies trade off effective spread and turnover. The curve still does the pricing; the fee changes the effective execution result.
Fees also enter the daily accounting boundary. Fee amounts are generated during the trading window and then recorded into daily accounting at settlement. The subsequent allocation of fees across the capital stack is part of the fee waterfall, but the transparency boundary is already visible at execution time: each trade emits the base amount and the fee amount.
Effective price is the quantity that enters PnL: base cost plus fee on buys, and base proceeds minus fee on sells. Slippage and fees are separable. Slippage is the curve movement cost and is convex in size; fees are a linear overlay on base cost.
Cross‑market comparisons should be done on effective price, not base price. Two markets can have similar curve behavior but different fee overlays, producing different effective outcomes.
Fee amounts are emitted on-chain alongside trade execution, so effective cost is determined by the state transition and fee events.
On-chain fee record
Every trade execution emits both the base amount and the fee amount. The
canonical record is the TradeFeeCharged event, which includes:
isBuyto distinguish buy vs sell semantics,baseAmountas the base cost/proceeds in ctUSD units,feeAmountas the overlay charged in ctUSD units, andpolicyas the fee policy contract address applied for that market.
Gross fees are accumulated per market during the trading day and are recorded into daily accounting at settlement. Allocation of fees across maker components is part of the daily fee waterfall described separately.
Related sections: