1.76x turnover paid 6.4% in fees — from a stable-stable pool — and it wasn’t emissions.
The stable pool that’s actually paying (and why)
The live USDC–USDT pool on Raydium CLMM is the standout this week: $4.28M TVL, $7.55M 24h volume, and a fees-only APR of 6.4%. No bribes. No points. Just trades crossing bps. The math checks out. At a 1bp take rate, daily fees are $7.55M × 0.0001 = $755. On $4.28M TVL, that’s 0.0176% per day, annualized to 6.4%.
That implies two things:
- Fee tier is effectively 1bp on the flow that matters (yes, 1bp adds up when turnover is high).
- Volume/TVL is the whole story for stables. 1.76x/day in this case.
When you see a stable-stable pool printing >5% on fees alone, you’re looking at real, repeatable microstructure: market makers arbitraging centralized venues, router hops across AMMs, and wallet-to-wallet stable flows. If you’re a conservative LP, this is the kind of setup you want: concentrated liquidity near $1 with deep counterparties doing the work for you.
What I like here: fee APR is coming from flow, not token incentives. We’ve written this before — emissions expire, fees persist — and it continues to be the filter that keeps you out of regret trades (Stop Chasing Emissions: Fee APR Is the Yield That Lasts).
Depeg risk: USDC vs USDT vs DAI vs PYUSD (on Solana)
Stable-stable LPs aren’t free of risk. You’re swapping tail risk (issuer/bridge) for mark-to-market comfort most days. A quick, practical stack rank of the risk channels that matter:
- Issuer/Reserve risk: Can the issuer honor redemptions one-for-one? For USDC, Circle publishes reserve breakdowns and attestations (Circle transparency). For USDT, Tether posts attestations and reserve composition (Tether transparency). Read them. The gap between tweets and cash equivalents is where depegs begin.
- Chain representation: On Solana, some stables are native, some are wrapped/bridged representations. If it’s wrapped, you’ve added bridge and custodian risk on top of issuer risk. Treat a wrapped DAI or PYUSD differently than native USDC.
- Market structure: Depth on centralized venues and AMMs dictates how far a wobble travels. A 0.3% intraday kink is a fee farm; a 3% gap can push you out of range and hand you one-sided exposure.
What’s the actual LP risk if one leg wobbles? Say USDT trades 0.997 briefly. If you’re centered at 1.000 with tight bins (0.999–1.001), flow sells USDT into your USDC and you finish the day a bit longer USDT. If the peg snaps back, you keep the fees and your inventory mean-reverts. If it widens and stays, your PnL becomes exposure to the weaker leg offset by earned fees. The longer it persists, the more your inventory composition matters.
Conservative approach: prefer the leg with better disclosure and fiat ramps as your inventory sink. Size ranges so a 0.5% intraday wobble doesn’t empty you. And define a hard stop: if a gap exceeds X% for Y minutes, cancel and re-center higher quality collateral as base.
Fees vs emissions: what actually survives a quarter
Emission APRs are noisy. They invite mercenary TVL that leaves the moment a snapshot ends. Fees, by contrast, are structural: they come from turnover. That’s why the USDC–USDT CLMM showing 6.4% is interesting — nothing in that number depends on a farm schedule.
If you chase emissions on a stable-stable pair, you often do three things you shouldn’t: widen your range to meet allocation minimums, ignore the fee tier that actually clears flow, and sit in creep risk because free tokens make the dashboard look green. You want the opposite. Tight bins. Deep venues. Fees first. If emissions arrive, treat them as a bonus buffer against rare drawdowns, not the reason to be there.
For context on fee-driven pools that consistently pay even without incentives, compare how major quote pairs behave. A few that our readers watch for fee structure (not for stable-only parking): SOL–USDC on raydium-clmm, SOL–USDC on raydium-amm, and SOL–USDC on orca-whirlpool. Different venues, same lesson: fees stick when turnover sticks. Scan more real-time candidates on Best Solana pools and confirm fee split on your target venue before deploying.
LP vs single-sided lending: your breakeven, in plain numbers
The simple formula
For a stable-stable LP with fee tier f and daily turnover V relative to TVL T, your daily fee yield is f × (V/T). Annualize by ×365.
Fee APR ≈ 365 × fee_tier × (volume ÷ TVL)
Plug in the Raydium USDC–USDT prints: f = 0.0001, V/T = 1.76. That’s 365 × 0.0001 × 1.76 = 6.42% APR. Clean, observable, and self-consistent with the on-chain readout.
When LP > lend
Set your lending alternative as L. Solve for the turnover you need: V/T > L ÷ (365 × f). If you want 4% to beat lending on fees alone at 1bp, you need V/T > 0.04 ÷ (365 × 0.0001) ≈ 1.10x/day. Demand a premium, not parity. For example, target ≥1.3x/day to clear gas, time, and tail risks with a margin.
When you shouldn’t LP
- If the pair is incentive-heavy and fees low, you’re just a temp farm hand. Pass.
- If the fee tier is mis-set (too high for arbitrage to clear), you’ll sit idle. Move to the 1bp lane where the flow actually is.
- If one leg’s issuer/bridge risk violates your mandate, don’t rationalize it with a green APR box.
Opinion you can hold me to: for conservative stables, concentrated LP on a deep 1bp USDC–USDT venue beats lending most weeks, provided you insist on a turnover margin over your lending rate and you actually monitor the peg. Lazy LP dies to basis drift.
How to set a conservative stable-stable range
Think in ladders, not a single band:
- Core: 50–70% of capital from 0.999–1.001. Where most flow clears.
- Guards: 30–50% split into two thinner rails at 0.997–0.999 and 1.001–1.003. These catch brief wobbles and refill the core.
- Stops: If the mid-price leaves 0.996 or 1.004 for more than 30 minutes, cancel guards first. If it persists, cancel core and hold the preferred leg.
Rebalancing cadence? Let fees pay for gas. Every time your realized fee stack equals 1–2 ticks of your band’s notional, re-center the core; don’t micromanage every micro-wiggle. On CLMMs, withdrawing and redepositing achieves the reset without unnecessary swaps.
Venue hygiene matters. Stick to the pools where stable flow actually crosses. Compare fee share and realized volumes in your UI and sanity-check against public trackers like Top Solana pools by TVL. If in doubt, simulate: drop a tiny test range for a day and see if the realized fee rate matches the formula within noise.
Watch list: where I’d park stables, and one I wouldn’t
- Would park: USDC–USDT on Raydium CLMM (pool BZtgQEyS6eXUXicYPHecYQ7PybqodXQMvkjUbP4R8mUU). Live prints: $4.28M TVL, $7.55M 24h volume, 6.4% fee APR. Tight bins, 1bp, and consistent turnover. This is the current baseline for “real yield” on Solana stables.
- Would park (venue diversification): USDC–USDT on Orca stable-tier Whirlpool. Mirror the same ladder (0.997–1.003 total), verify the realized fee take is truly 1bp on the active ticks, and cap size until you see at least $2M depth inside 50bps. Venue diversification reduces venue-specific risk even if the issuers are the same.
- On watch (issuer diversification): PYUSD–USDC stable-tier, once live depth sustains ≥$2M and fees-only APR reads ≥2.5% on a no-incentive day. PYUSD adds a different issuer profile; pair it with USDC and keep the PYUSD inventory small unless redemption mechanics are crystal clear.
- Wouldn’t (for parking stables): JLP–USDC on orca-whirlpool. JLP is a vault share, not a fiat-backed stable. It can and does move. Great if you want exposure to that strategy; not a cash parking lot. If you want USDC inventory with fees from majors instead, compare SOL–USDC on orca-whirlpool or SOL–USDC on raydium-amm for fee structure studies — but recognize these are not stable-stable.
One more cautionary compare: anything pairing USDC with a volatile asset (e.g., cbBTC–USDC) is not a stablecoin parking trade. Useful to learn fee-tier behavior, yes. But your PnL is dominated by price, not a 1bp rake.
If you want a running feed of fee-led pools, skim our Opportunities feed or the free AI Signals — but keep your own threshold: fees-only APR must beat your lending alternative by a margin that pays for the day your peg model is wrong.
Operational checklist before you deploy
- Confirm fee split: Check that the pool’s APR panel separates fees vs incentives. You want the fees line to carry the weight.
- Read issuer pages: Sanity-check USDC and USDT disclosures every quarter (links above). If an attestation changes the cash-equivalent share meaningfully, downsize.
- Inspect bridge lineage: If the ticker isn’t native on Solana, tag it as wrapped in your notes and haircut position size.
- Simulate slippage: Place a tiny test position for one day. Compare realized fees to f × (V/T). If they diverge, the active ticks may be wrong or the posted volume is not hitting your range.
- Define exits: Encode a rule before you start. Example: exit if mid-price exits 0.996/1.004 for 30 minutes, or if issuer spreads widen >50bps on off-chain books.
FAQ
Is a stable-stable LP actually safe during a minor depeg?
For small, temporary wobbles (say ±0.3%), tight 1bp bands usually turn that volatility into fees and a slightly changed inventory mix. Your risk is if the weaker leg stays discounted. Manage it with laddered ranges and a time-based exit if the price leaves your guard rails for longer than your rule allows.
What fee tier should I choose for stables on CLMMs?
Go where the flow clears. On Solana, the most actively traded USDC–USDT lanes typically clear at 1bp. If you sit at 4–5bp, you’ll lose flow to cheaper routes unless depth is unusually thin. Confirm by comparing your realized daily fee rate to fee_tier × (volume ÷ TVL).
How often should I rebalance a stable-stable range?
Let fees fund the move. A practical cadence is to re-center whenever accrued fees equal one to two ticks of your core band’s notional. Over-managing burns gas and reduces time-in-market; under-managing lets drift accumulate. Use time-based stops during abnormal spreads.
Why not just lend USDC instead of LPing?
Lending is simpler and keeps one-asset exposure, but it caps your upside to the borrow demand of that venue. LPing in a deep 1bp stable-stable can beat lending when volume/TVL sustains above your breakeven. Use the formula: you need volume/TVL > L ÷ (365 × fee_tier), then add a safety margin.
How do I check if a "stable" on Solana is wrapped or native?
Inspect the token’s mint address and metadata in your wallet or block explorer, and read the project docs. If issuance points to a bridge program or an Ethereum contract with a Wormhole/bridge note, treat it as wrapped and include bridge risk in your sizing.




