Live markets
The Traders Spread

How Curve Finance Works When Stableswap Sets a Price

Curve stableswap pools set each swap price from one invariant, an amplification factor and a fee. The path runs from pool balances to the coin received.

Unnamed halftone portrait beside two blank coins of different sizes on a bent paper strip, the illustration for a Curve stableswap explainer.
Illustration: The Traders Spread / generated with Grok Imagine

Curve can quote two dollar stablecoins near one-for-one after one coin already dominates the reserves, and the same formula lets that quote run once the peg is gone.

On 26 October 2026 that tension was sitting in public numbers. The Ethereum 3pool, the plain DAI/USDC/USDT stableswap at 0xbEbc44782C7dB0a1A60Cb6fe97d0b483032FF1C7, reported $159,924,404 of USD balances through the Curve pools API at 06:59:48 UTC. USDT was 71.65% of that sum, DAI 14.22% and USDC 14.13%. An eth_call on ethereum.publicnode.com at block 26,275,250, timestamp 07:04:23 UTC, returned an amplification coefficient of 4,000 and a swap fee of 0.015%, with the admin share of that fee at 100%. The flat region is the stretch in which a coin that can no longer be redeemed near a dollar can be sold into the pool for a long time before the curve steepens.

Michael Egorov, founder of Curve, named that shape in the StableSwap paper of 10 November 2019: Uniswap with leverage, at a practical amplification of 100, “somewhat comparable to using Uniswap with 100x leverage.” How Curve Finance works, on this path, is balances in, one invariant, and a fee taken from the coin that leaves. A note on this desk followed a constant-product fee path after a chain launch, Uniswap (UNI) Rose 128% on Robinhood Chain Fees, Then Fell 18%.

Updated 26 October 2026, with the pool, chain and token prints cited below.

Key facts for the Curve stableswap path, each tied to a source and a date.

  • CRV reference print $0.340104, market cap $537,880,958, circulating supply 1,581,491,084, at 07:00:56 UTC. Source: CoinGecko curve-dao-token, 26 October 2026.
  • Ethereum 3pool A() returned 4,000, fee() returned 1,500,000 (0.015%) and admin_fee() returned 10,000,000,000 (100%), at block 26,275,250, 07:04:23 UTC. Source: ethereum.publicnode.com eth_call, 26 October 2026.
  • 3pool balances were 22,743,691 DAI, 22,591,786 USDC and 114,588,473 USDT, USD total $159,924,404, virtual price 1.03982372, API time 06:59:48 UTC. Source: api.curve.finance getPools/ethereum/main, 26 October 2026.
  • Shares of those USD balances: USDT 71.65%, DAI 14.22%, USDC 14.13%. Source: the same API balances and coin prices, 26 October 2026.
  • The StableSwap paper uses A = 100 in its slippage figure and likens that setting to Uniswap with 100x leverage. Source: Michael Egorov, 10 November 2019.
  • DefiLlama curve-dex TVL was $1,165,285,787 and CoinGecko’s total_value_locked field was $1,412,299,922. Source: api.llama.fi and CoinGecko, 26 October 2026.

1. What the pool actually holds

A stableswap pool stores coin balances and one shared invariant. The plain-pool reference says the contract holds the deposited assets itself, with the 3pool of DAI, USDC and USDT as the example. Traders swap against those balances, and liquidity providers hold an LP token valued by a virtual price.

The Stableswap guide, opened 26 October 2026, is for assets meant to share a price. Up to eight assets can share a pool: a plain balance, a rebasing coin such as stETH, an oracle coin such as wstETH, or an ERC-4626 vault via convertToAssets. The stETH rebase is covered in How Lido (LDO) Sets Each Daily stETH Reward Rebase. rETH records rewards in the rate, covered in How Rocket Pool (RPL) Splits a Minipool ETH Reward.

The 3pool API record had usesRateOracle set false. At 06:59:48 UTC the balances were 22,743,691.24 DAI, 22,591,786.13 USDC and 114,588,472.51 USDT, with DAI at 1.000019987 dollars and USDC and USDT at 1, which multiplies to $159,924,404.48. Virtual price was 1,039,823,717,436,667,348, or 1.03982372, defined on the plain-pool page as D times 1e18 divided by LP supply.

2. How the invariant turns balances into a price

Egorov draws the older curves in the 10 November 2019 paper. A constant sum, x + y held constant, prices at one until a balance hits zero and the pool is finished. A constant product, x times y held constant, always leaves some of each coin and still moves the quote on a trade near the middle. StableSwap blends the two, a flat middle joined to a curved tail.

StableSwap provides a mechanism to create cross-markets for stablecoins in a way which could be called “Uniswap with leverage”. It is a fully autonomous market-maker for stablecoins with very minimal price slippage, as well as an efficient “fiat savings account” for liquidity providers on the other side.

Michael Egorov, founder of Curve, wrote that in the abstract, and later puts a size on it: slippage “typically 100 times smaller” than the constant-product exchange. His figure starts with five units of each coin, and the price is dy/dx.

The derivations page, opened the same day, states the invariant. With A the amplification, n the coin count, x_i each balance and D the invariant, A times n to the n times the sum of balances, plus D, equals A times D times n to the n, plus D to the power n+1, divided by n to the n times the product of the balances. Equal coins make D their sum and the marginal price, before the fee, one. Newton’s method finds D once the balances differ, and a swap holds that D fixed.

Add the input to coin i and solve for coin j. Gross output is the drop in j minus one unit for rounding. Legacy exchange builds the scaled balances, calls get_y, sets dy to the old output balance minus the new one minus one, and takes the fee off dy, so the trader is paid the net of a price that worsens as the trade walks the curve.

The guide’s picture sets 40 million crvUSD against 40 million USDC. A 20 million USDC swap withdraws about 19.98 million crvUSD and moves the price to 1.002, then a further 9 million USDC adds 0.002. That page, opened 26 October 2026, describes a different pool from the 3pool, where n is 3 and n to the n is 27, so A sets how far the price moves when DAI is sold into the heavy USDT book or USDT is sold back.

3. What the amplification coefficient changes

The StableSwap invariant has an “amplification coefficient” parameter: the lower it is, the closer the invariant is to the constant product. When calculating slippage, we use a practical value of A = 100. This is somewhat comparable to using Uniswap with 100x leverage.

Egorov builds that curve with a factor, chi, equal to A at perfect balance and falling toward zero as the product of the balances leaves (D/n) to the n, so the path behaves more like a constant product when A is low and keeps a longer flat middle when A is high.

Live A() on the 3pool is 4,000, inside the guide’s high examples of 500 to 10,000, against lower examples of 10 to 100. The paper’s chart used 100, and its 2019 simulation on $30,000 of DAI, USDC and USDT from May to October listed an optimal A of 85, a fee of 0.06% and a simulated provider result of 312% APR, a figure for that small book rather than the 3pool virtual price of 1.03982372.

SettingAEffect on the priceSource
Paper slippage chart100Flat near balance, likened to 100x a product poolEgorov, 10 Nov 2019
Paper simulation85, fee 0.06%Called optimal on a $30,000 bookSame paper, May–Oct 2019
Guide, lower band10 to 100Price leaves the peg graduallyCurve guide, 26 Oct 2026
Guide, higher band500 to 10,000Stays near one, then falls off sharplySame guide
Ethereum 3pool4,000Live high-band reading, USDT 71.65% of USDeth_call and pools API, 26 Oct 2026

Curve Finance posted a February 2021 vote that moves the 3pool from 200 to 600, against the live 4,000 of 26 October 2026.

The stETH step from 5 to 10 sits in the guide’s lower band, and the same post cut a USDN pool from 100 to 50. Raising A deepens the flat quote, while cutting A lets the price move sooner.

4. Where the fee goes

The fee comes off the output coin. Legacy exchange multiplies gross dy by fee and divides by 1e10, the precision the plain-pool page gives fee(). A reading of 1,500,000 is 0.015%. The trader receives the gross output minus that fee, and pays it once.

The admin share is a slice of the same fee, taken after the quote is already net. Code sets dy_admin_fee to dy_fee times admin_fee, over 1e10, and reduces the accounting balance by the coins paid out plus that slice.

admin_fee() on the 3pool returned 10,000,000,000, or 100%. The plain-pool page’s example is 5,000,000,000, called 50% and “paid out to veCRV holders.” At 100% the whole swap fee is reserved for the admin claim, so the LP remainder on this read is zero. Virtual price can still stand at 1.03982372.

Fees are dynamic and are deducted from the output tokens, which enhances the pool’s balance (raising D and increasing the LP tokens’ price).

Pavel Morozov and Sergey Boogerwooger, security researchers at MixBytes, wrote that about Stableswap-NG in their implementation note. NG pools scale the fee with imbalance. The guide calls that scale the off-peg fee multiplier, a cap on the base fee, using the average of balances before and after the trade. An eth_call to offpeg_fee_multiplier() at block 26,275,250 reverted, so the 3pool charge is the flat 0.015%.

Piece3pool at block 26,275,250Legacy treatment
Swap fee1,500,000, or 0.015%Taken from the output before payment
Admin share10,000,000,000, or 100%Removed from balances, left claimable
LP share of the feeZero on this readWould remain in balances and can lift virtual price
Off-peg multiplierCall revertedPresent on NG pools, absent on this call
Docs’ admin example5,000,000,000, called 50%Template only, separate from the 3pool

After the first depositor, add_liquidity charges the gap from proportional growth at fee times n divided by 4 times (n minus 1). For three coins that fraction is 3/8, so three-eighths of 0.015% is 0.005625% on the imbalanced part, and the admin slice comes off the same way. A proportional withdrawal leaves the fee array empty, while a one-coin withdrawal burns LP, lowers D and solves one balance.

5. What breaks the peg

Off equilibrium the paper says the invariant “starts operating in a suboptimal point, still however providing some liquidity,” where a constant sum could already be empty, and the price is the slope on the wing. High A delays that wing, which is why the 3pool’s 4,000 holds a quote near one before liquidity and price drop, while a lower A would have moved the quote with more of each coin still in the pool.

The guide’s example treats the imbalance as an arbitrage when USDC can be redeemed for the underlying dollar, so balances walk back as that coin is taken. When redemption fails, a high A still offers the stronger coin near one in size, and that coin is what gets spent.

RelatedHow Does a Jito (JTO) Bundle Tip Reach the Validator?

An oracle pool can move the price with token counts held still. Viktor Yurov and Dmitry Zakharov, security researchers at MixBytes, follow that rate through the invariant in their note on StableSwap-NG oracles.

In a high-amplification pool, where AD outweighs the raw balance by orders of magnitude, the elasticity approaches –1. The swap price is locked to the oracle.

A keeper’s update changes valuation and leaves token counts alone, so the surcharge that watches those counts stays at its minimum. The sketch uses about 0.03% a leg and about 0.06% for the round trip, and says a jump above about 0.065% can pay the trader who brackets the update. The guide keeps an oracle move inside twice the fee in one block, with 0.04% illustrating a 0.08% cap. The 3pool usesRateOracle flag was false. The same note puts wstETH or rETH growth at 3 to 4% a year, about 0.008% a day, so a 0.30% swap is more than a month of that accrual and the cliff carries the exposure.

6. The CRV print sits outside the formula

Balances, A, n and any rate are the inputs, and the market price of CRV sits outside them. CoinGecko’s curve-dao-token, contract 0xd533a949740bb3306d119cc777fa900ba034cd52, showed $0.340104 at 07:00:56 UTC on 26 October 2026, with market cap $537,880,958, fully diluted value $826,113,977, 24-hour volume $52,426,657 and circulating supply 1,581,491,084 against a max of 3,030,303,031. The payload’s high was $15.37 on 13 August 2020 and its low was $0.170749 on 6 June 2026.

Curve (CRV) daily US dollar reference price from 27 October 2025 to 26 October 2026
Curve (CRV) daily USD reference from the CoinGecko market_chart for curve-dao-token. History only, retrieved 26 October 2026.

The daily series runs from $0.578988 on 27 October 2025 to $0.340682 at 07:01:30 UTC on 26 October 2026, with a window low of $0.181994 on 6 June 2026. That date matches the coin endpoint’s all-time low at a different print from $0.170749, and the 07:00:56 snapshot of $0.340104 sits a minute from the chart’s last point, both of them outside get_y.

Same-morning TVL prints are different baskets. api.llama.fi/tvl/curve-dex returned $1,165,285,787. CoinGecko total_value_locked was $1,412,299,922 at 07:00:56 UTC. The ethereum main registry, which holds the 3pool, reported tvl of $262,879,923 at 06:59:48 UTC, and the 3pool’s $159,924,404 is the largest usdTotal in that file. One pool’s swap price still comes from its own balances and its A.

CurveHeld constantNear equal balancesWhen one coin runs thin
Constant sumSum of balancesPrice exactly oneThe dearer coin can be drained
Constant productProduct of balancesA small trade moves priceSome of each coin remains
StableswapInvariant in A and DNear one while A is highBends toward the product as chi falls

FAQ

What is a Curve stableswap pool?

A contract holding coins meant to share a price, swapping them on one invariant set by an amplification coefficient. The plain 3pool holds DAI, USDC and USDT, and liquidity providers take an LP token whose virtual price is D times 1e18 divided by supply. On 26 October 2026 that reading was 1.03982372 and amplification was 4,000.

How does the pool turn balances into a swap price?

It solves for D, then holds D fixed as the input balance rises and the output balance falls out of the same equation. Gross output is that drop minus one for rounding, and the swap fee comes off the gross amount. Coins received over coins paid is the trader’s price, and a larger trade walks further along the curve.

What does the amplification coefficient change?

It sets how long the price stays near one as balances skew. The guide uses 500 to 10,000 for a tight band and 10 to 100 for a gradual one. The 2019 paper used 100, likened to 100 times a constant-product pool’s depth. On 26 October 2026 the 3pool read 4,000, with USDT at 71.65% of USD balances.

Where does the swap fee go?

Off the output coin, before the trader is paid. At block 26,275,250 the 3pool fee was 0.015% and the admin share was 100%, so the legacy split reserves the whole fee for the admin claim. The docs’ example of 50% is a template, a proportional withdrawal leaves the fee array empty, and a three-coin imbalanced deposit pays three-eighths of the swap fee.

What happens to the price if a coin loses its peg?

The invariant keeps running further from equal balances. High amplification delays the move, then gives way sharply, which is the guide’s account of the upper band. A refill assumes the strong coin can still be redeemed near its peg. An oracle pool can reprice from a rate write, and MixBytes puts high-A elasticity near minus one.

Does the CRV token price set the stableswap quote?

The quote comes from balances, the amplification coefficient and D. CoinGecko’s CRV print at 07:00:56 UTC on 26 October 2026 was $0.340104, market cap $537,880,958. The chart above is that token’s daily history. Gauge weights sit outside get_y, and a 3pool swap of DAI for USDT uses the invariant plus the 0.015% fee.

A checklist for the quote

  • A() beside the bands 10 to 100 and 500 to 10,000.
  • fee() divided by 1e10, taken from the output coin.
  • admin_fee() divided by 1e10, the slice that leaves the accounting balance.
  • The off-peg multiplier on NG pools. The 3pool call reverted at block 26,275,250.
  • Balances in one precision, plus any rate.
  • On a rated pool, an oracle move against twice the fee in one block.
  • Virtual price, D times 1e18 over supply, kept apart from the CRV print.

This article explains how a Curve stableswap pool turns balances into a swap price. It is not a recommendation to trade, to provide liquidity, or to treat the CRV print as a target.

This article is analysis and information, not personal investment advice. Markets move; levels and odds above were correct at publication and any prices shown are indicative.

Share

Send this analysis to someone who trades How Curve Finance Works When Stableswap Sets a Price.

Make us a preferred source

Tell Google you want The Traders Spread higher in Top stories. It sticks to your account.

  1. 1Open Preferred sources on Google.
  2. 2Search The Traders Spread and tick the box.
  3. 3Save — our calls now surface first.
Open on Google

Opens Google in a new tab. Nothing changes here.

Keep reading

Desk