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.
| Setting | A | Effect on the price | Source |
|---|---|---|---|
| Paper slippage chart | 100 | Flat near balance, likened to 100x a product pool | Egorov, 10 Nov 2019 |
| Paper simulation | 85, fee 0.06% | Called optimal on a $30,000 book | Same paper, May–Oct 2019 |
| Guide, lower band | 10 to 100 | Price leaves the peg gradually | Curve guide, 26 Oct 2026 |
| Guide, higher band | 500 to 10,000 | Stays near one, then falls off sharply | Same guide |
| Ethereum 3pool | 4,000 | Live high-band reading, USDT 71.65% of USD | eth_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.
Changing pools' amplification coefficients over 1 week:
— Curve Finance (@CurveFinance) February 11, 2021
3pool: 200 -> 600 (DAI is now more stable due to PSM);
usdn: 100 -> 50 (USDN should have more support if depegs);
stETH: 5 -> 10 (stETH appears to be more stable than anticipated).https://t.co/BmxFMFuOO7
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%.
| Piece | 3pool at block 26,275,250 | Legacy treatment |
|---|---|---|
| Swap fee | 1,500,000, or 0.015% | Taken from the output before payment |
| Admin share | 10,000,000,000, or 100% | Removed from balances, left claimable |
| LP share of the fee | Zero on this read | Would remain in balances and can lift virtual price |
| Off-peg multiplier | Call reverted | Present on NG pools, absent on this call |
| Docs’ admin example | 5,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.
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.
| Curve | Held constant | Near equal balances | When one coin runs thin |
|---|---|---|---|
| Constant sum | Sum of balances | Price exactly one | The dearer coin can be drained |
| Constant product | Product of balances | A small trade moves price | Some of each coin remains |
| Stableswap | Invariant in A and D | Near one while A is high | Bends 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.
