Scope: Ethereum mainnet · Position: $60M wstETH (26,259 wstETH) · Modelled deployment: $24M (40%) = 10,503 wstETH Date: 2026-08-03 · Block stamp: all on-chain reads at block 25,673,966 unless stated
Answer
There are exactly three things you can do with wstETH. Only one of them pays.
| # | Option | Result |
|---|---|---|
| 1 | Lend wstETH for a supply APY | Does not exist. No venue pays a meaningful rate — §2 |
| 2 | Lever wstETH (borrow ETH, loop) | Capped at ~$20,000/yr, any size — §4 |
| 3 | Borrow against wstETH, redeploy the debt | +25 to +47bp, all of it paid for with new risk — §5–§8 |
wstETH already earns 2.21% via the stEthPerToken() exchange rate, and that accrues wherever the token sits — wallet, Aave aToken, Morpho collateral, identically. Everything below is measured as incremental return over that 2.21% baseline.
Root cause of the poor economics: Ethereum staking yield has compressed to 2.21%, at or below what every liquid venue charges to borrow ETH (1.75%–2.58%). The leverage trade has no spread to multiply.
Recommendation: Path 0 (hold). If the mandate requires yield, Path B1 at 2.46%.
1. Market data
1.1 wstETH baseline
| Metric | Value | Source |
|---|---|---|
| Lido stETH APR, 7-day SMA | 2.213% | Lido API /apr/sma |
| Lido stETH APR, latest | 2.173% | Lido API /apr/last |
DefiLlama lido/STETH APY / 30d mean | 2.173% / 2.208% | DefiLlama |
| Rocket Pool rETH (cross-check) | 2.175% | DefiLlama |
| Modelled throughout | 2.21% APY | — |
wstETH.stEthPerToken() | 1.240774 stETH | on-chain |
| Chainlink ETH/USD | $1,839.52 | on-chain |
| Aave oracle WETH / wstETH | $1,841.54 / $2,284.94 | on-chain |
Aave’s implied wstETH/WETH ratio is 1.24080 against the on-chain exchange rate of 1.240774 — Aave prices wstETH off the exchange rate, not market price. Consequence: eMode liquidation is driven by Lido’s redemption rate, not by a stETH market depeg.
1.2 ETH borrow cost — every liquid mainnet venue
| Venue | Borrow APR | Borrow APY | Net of rewards | Spread vs 2.21% | Usable capacity |
|---|---|---|---|---|---|
| Compound v3 WETH comet | 1.7343% | 1.749% | ~1.56% (COMP 0.19%) | +65bp | $22M to kink |
| SparkLend | 2.0157% | 2.036% | 2.036% | +17bp | $22M (borrow cap) |
| Aave v3 core | 2.1148% | 2.137% | 2.137% | +7bp | $758M |
| Fluid vault #13 | 2.31% | 2.31% | 2.31% | −10bp | negative carry |
| Morpho Blue 96.5% LLTV | 2.58% | 2.58% | 2.58% | −37bp | $8.6M |
The two cheapest venues are the two that cannot take the size. No incentive campaigns are live — apps.aavechan.com/api/merit/aprs returns null for every mainnet key including ethereum-borrow-weth; DefiLlama shows zero reward APY on all these pools.
1.3 Stablecoin borrow cost (Aave v3 core, including our own $8.4M of demand)
| Asset | Borrow APY | Available | Utilisation | Kink | Buffer to kink |
|---|---|---|---|---|---|
| USDT | 3.71% | $495M | 83.53% | 92% | 8.47pp / $255M |
| GHO | 3.82% (fixed 3.75% APR) | — | — | n/a | cap headroom 48.3M |
| USDC | 4.05% | $191M | 91.03% | 92% | 0.58pp / $12.4M ⚠ |
Aave stablecoin reserves use slope1 = 4%, Uopt = 92%, slope2 = 100% — the rate climbs 12.5% APR per percentage point past the kink.
1.4 Stablecoin deployment venues
| Venue | APY | TVL | Withdrawal | Risk class |
|---|---|---|---|---|
| sUSDS (Sky Savings Rate) | 3.52% | $4.64B | instant ERC-4626 | minimal — negative carry |
| Aave sGHO | 4.25% | $143M | instant | minimal |
| Fluid fUSDT | 4.41% | $131.1M | instant while utilisation allows | lending market |
| Centrifuge USDS | 4.50% | $871M | redemption epochs | RWA |
| Gauntlet USDC RWA | 4.54% | $11.5M | — | RWA, 100% concentrated |
| Centrifuge AUSD | 4.80% | $373M | redemption epochs | RWA |
| Fluid fUSDC | 4.83% | $153.8M | instant while utilisation allows | lending market |
| Steakhouse USDT | 4.92% | $87.9M | — | 100% wstETH/USDT, 92% util |
| Smokehouse USDT | 5.04% | $23.3M | — | 53% sUSDS, 92.2% util |
| Gauntlet USDT Frontier | 5.05% | $11.4M | — | 48% Pendle PT, 91.6% util |
| Maple syrupUSDC | 5.06% | $1.067B | queue, worst case 30d | private credit |
| stUSDS | 6.31% | $190.3M | — | first-loss risk capital |
Every venue at or below the 3.71% borrow cost is safe; every venue above it is paid-for risk. sUSDS at 3.52%, Aave USDC supply at 3.24%, Steakhouse USDC at 3.27%, Gauntlet USDC Prime at 3.44% are all negative carry.
1.5 Exit liquidity
CoW Protocol quotes, wstETH→WETH, inclusive of fee:
| Order size | Slippage |
|---|---|
| ≤12,000 wstETH | −2.6 to −5.6bp |
| 20,000 wstETH | −21 to −25bp |
| 22,000 wstETH | −33.5bp |
| ≥24,000 wstETH | routing fails — unquotable |
A single large DEX order carries heavy price impact and cannot be routed above ~22,000 wstETH. Mitigate with TWAP: 500-wstETH clips quote at −2.6bp, so 24,000 wstETH costs ~$14,300 spread over ~1 day. CoW supports native TWAP orders (ComposableCoW); fills are gasless to the taker.
wstETH suits TWAP unusually well — the pair is a deterministic exchange rate (no timing risk) and is arbitrage-anchored to Lido redemption, so impact mean-reverts between clips rather than accumulating. Clip quotes are independent spot quotes, so spread execution over a day rather than an hour.
Lido withdrawal queue: 5,343 stETH unfinalized, last request 131,497 vs finalized 131,369 — effectively empty. MAX_STETH_WITHDRAWAL_AMOUNT = 1,000 stETH, so a $60M exit splits into ~33 requests. Zero-slippage path for size, a few days.
2. Option 1 — Lend wstETH: does not exist
| Venue | Status | Supply APY |
|---|---|---|
| Aave v3 core | borrowEnabled = false — disabled by governance | 0.0000064% |
| SparkLend | borrow cap = 1 — effectively disabled | ~0% |
| Compound v3 | collateral-only; no comet uses wstETH as base | n/a |
| Morpho Blue | collateral not rehypothecated by design | 0% |
| Morpho — Smokehouse WSTETH vault | exists | 0.00%, $0.63M TVL |
| Morpho — 10 markets with wstETH as loan asset | exist | 0% util, $0.64M total |
Fluid fwstETH | exists | 0.03%, 460 wstETH ($1.05M) |
Cause: lending rates are paid by borrowers, and nobody wants to borrow a yield-bearing asset — you would pay interest and be short an asset appreciating 2.21%/yr against ETH. Aave and Spark did not merely fail to attract borrowers; governance actively disabled wstETH borrowing, because a market with no borrow demand is a liquidation surface with no offsetting revenue.
Conclusion: wstETH yields 2.21% and only 2.21%, wherever it is held. Any additional yield must come from borrowing against it.
3. Path 0 — Hold
| Metric | Value |
|---|---|
| Action | none |
| Net APY | 2.21% |
| $/yr on $24M | $530,400 |
| Incremental risk | none |
| Cost | $0 |
Baseline for every path below.
4. Path A — ETH-correlated loop
Mechanics: supply wstETH → enable Aave eMode 1 → borrow WETH → swap to wstETH → re-supply → repeat.
Formula: net APY = L × 2.21% − (L−1) × borrowAPY(debt), with the borrow rate re-solved on Aave’s IRM after adding our own debt.
IRM calibration: the model carries a +5.23bp offset so it reproduces the on-chain rate (2.1148% APR) at the observed 80.7431% utilisation. Aave v3.2+ computes utilisation off virtual balances; the raw curve understates the rate without this.
4.1 The dollar gain is a function of debt alone
gain$ = Debt × (2.21% − borrowAPY(Debt))
Borrowing more earns the spread on more notional while compressing that spread on all of it. Optimises at a fixed point independent of equity:
- Optimal debt: $54.9M (29,812 WETH)
- Maximum gain: ~$20,000/yr — hard ceiling at any equity size
| Equity | Peak leverage | Collateral | Debt | Borrow APY | Net APY | Gain | $/yr |
|---|---|---|---|---|---|---|---|
| $18M | 4.05x | 31,905 wstETH | 29,812 WETH | 2.173% | 2.32% | +11.1bp | ~$20,000 |
| $24M | 3.28x | 34,504 wstETH | 29,779 WETH | 2.173% | 2.29% | +8.3bp | ~$20,000 |
| $30M | 2.83x | 37,156 wstETH | 29,812 WETH | 2.173% | 2.28% | +6.6bp | ~$20,000 |
No leverage at any size in the $18–30M range reaches +20bp. At 5x on $24M the gap is 4bp — the borrow rate would need to be 2.160% instead of 2.201%, or Lido 2.251% instead of 2.210%.
4.2 Position parameters at $24M
| Parameter | Value |
|---|---|
| eMode | 1 “ETH correlated” — LTV 93% / LT 95% / 1% bonus |
| Collateral | 34,504 wstETH ($78.8M) |
| Debt | 29,779 WETH ($54.8M) |
| LTV / health factor | 69.6% / 1.37 |
| Liquidation trigger | wstETH/ETH exchange rate −26.8% (Lido slashing, not a market move) |
| Unwind swap | 24,000 wstETH ($54.8M) |
4.2.1 Round-trip friction
Entry is nearly free: buying 24,000 wstETH quotes at −0.8bp ($4,572), because aggregators arbitrage against Lido’s mint (getCurrentStakeLimit() = 150,000 ETH available, not paused). Exit costs ~$14,300 via TWAP or $0 via the Lido queue (§1.5). Both routes de-lever progressively — withdraw within LTV headroom, sell/redeem, repay, repeat — so no flash loan is needed.
| Round trip | Cost | Payback on ~$20,000/yr |
|---|---|---|
| TWAP exit, iterative entry | ~$21,000 | 1.1 years |
| Lido queue exit | ~$12,000 | 0.6 years |
Friction is not a reason to reject Path A.
4.3 Why the cheaper venues cannot be used
| Venue | Constraint | Max usable |
|---|---|---|
| Compound v3 WETH | U already 66.09%; only 12,157 WETH (~$22M) before the 30% slope-high. At 3x the rate hits 10.6%, net APY −14% | ~2x |
| SparkLend | Borrow cap 419,256 vs 407,167 debt → 12,089 WETH (~$22M). Cap binds before liquidity ($115M available) | ~2x |
| Morpho Blue 96.5% | $6.8M idle + $1.8M reallocatable = $8.6M; already negative carry | none |
| Fluid vault #13 | $164.6M vault, but 2.31% > 2.21% — negative carry at any leverage | none |
Only Aave v3 core has depth: 412,038 WETH ($758M) available, borrow-cap headroom 672,350 WETH, wstETH supply-cap headroom 107,370 wstETH (Path A uses 32%).
4.4 Borrow-leg rate risk
Aave WETH utilisation reached 98.48% at block 25,018,766 (borrow 4.239% APR). IRM parameters changed during the window — Uopt 94%→92%, slope1 2.00%→2.35%, slope2 3.00%→6.00% between blocks 25,119,566 and 25,321,166 — so the series is not strictly comparable. Under today’s curve, 98.48% utilisation implies ~7.21% APR, which would make Path A deeply loss-making.
Verdict: reject — but on the gain, not on friction:
- ~$20,000/yr is the ceiling at any size (§4.1) — 8.3bp on $24M, and it does not scale with capital committed.
- 3.29x leverage is required to earn it, with a $54.8M debt position to manage.
- The borrow leg can reprice against you (§4.4) — WETH utilisation hit 98.48% within the quarter; under today’s curve that implies ~7.21% APR, which turns the position deeply loss-making.
- Exit must be TWAPed or queued (§4.2.1) — a single atomic unwind at this size cannot be routed on-chain, so an emergency de-lever is expensive and slow exactly when speed matters.
Friction does not kill Path A — round-trip is ~$21k, paying back in 1.1 years. The trivial, hard-capped gain does.
5. Path B1 — All-USDT → Fluid fUSDT
Mechanics: supply wstETH (no eMode) → borrow USDT → deposit fUSDT. No swap, no basis risk.
| Step | Detail |
|---|---|
| 1. Supply | 10,503 wstETH → Pool.supply(). No eMode (it would restrict debt to WETH). LTV 78.5% max / LT 81% / 6% bonus |
| 2. Borrow | $8.4M USDT → Pool.borrow(USDT, 8_400_000e6, 2, 0, …) at 3.71% APY |
| 3. Deploy | Fluid fUSDT deposit() at 4.41% |
| Metric | Value |
|---|---|
| LTV / health factor | 35% / 2.31 |
| Liquidation | ETH ≤ $796 (−56.8%) |
| Spread | +70bp |
| Net APY | 2.21% + 0.35 × 0.70% = 2.46% |
| vs hold | +24.5bp — $58,800/yr |
| Capacity | Fluid free USDT $28.15M — uses 30% |
| Borrow-leg buffer | 8.47pp to kink |
| Round trip | $3–5k, payback <1 month |
| Stress (USDT at 90d-max 4.10%) | 2.32% — still above hold |
Risks: ETH-price liquidation · Fluid utilisation (deposit not withdrawable if borrowed out) · Fluid smart contract.
5.1 Why not a higher-yielding USDT venue?
Steakhouse USDT (4.92%) and Smokehouse USDT (5.04%) both post higher headline rates than Fluid’s 4.41%, and both are native USDT — no swap, no basis risk. Rejected for two measured reasons.
(a) Our own deposit lowers the rate. These vaults lend into Morpho markets at 90–93% utilisation. Steakhouse USDT is 100% allocated to the wstETH/USDT 86% market (0xe7e9694b754c4d4f7e21faf7223f6fa71abaeb10296a4c43a54a7977149687d2): $138.0M supply, $127.0M borrowed, 92.0% utilisation. Since supply APY = borrow APY × utilisation × (1 − fee):
| Headline | After our $8.4M enters | |
|---|---|---|
| Market utilisation | 92.0% | 86.7% |
| Steakhouse USDT net APY | 4.92% | ~4.66% |
And it continues falling: Morpho’s AdaptiveCurveIRM targets 90%, so post-deposit utilisation sits below target and the borrow rate drifts down further over subsequent days. Fluid dilutes too, but $8.4M is 6.4% of fUSDT against a much larger shared liquidity layer.
(b) Exit capacity — the binding constraint. Pro-rata claim on idle market liquidity against an $8.4M ticket:
| Venue | TVL | Our ticket as % of vault | Withdrawable now | Coverage |
|---|---|---|---|---|
| Fluid fUSDT | $131.1M | 6% | $28.15M | 3.4x ✓ |
| Steakhouse USDT | $87.9M | 10% | $7.01M | 0.83x |
| Smokehouse USDT | $23.3M | 36% | $1.80M | 0.21x |
Supply caps are not the constraint — both vaults have ample headroom ($3.7B and $999B nominal). The constraint is that 90%+ utilisation means only ~8% of each market is idle at any moment.
Net economics after dilution: Steakhouse still beats B1 — roughly +33bp / $79,800 vs +24.5bp / $58,800. The extra $21k/yr is real. It buys a position that is 83% exitable on demand, in a vault 100% concentrated in wstETH — the same asset already posted as Aave collateral.
Smokehouse fails on every axis: 36% of a $23.3M vault, 0.21x exit coverage, 20% allocated to Pendle PT-reUSD (a maturity-dated token) and 9% to reUSD.
Decision: B1 keeps Fluid fUSDT. B1’s purpose in this study is the path where every risk is bounded and exit takes minutes; substituting a venue with 0.83x exit coverage converts it into a worse-executed B3. If the higher yield is wanted, B3 buys it more cleanly — +47.3bp with an explicit redemption queue and a secondary market, rather than +33bp with silent illiquidity.
6. Path B2 — USDT → swap → Fluid fUSDC
Steps 1–2 as B1. Then swap USDT→USDC (~1–3bp via CoW or Curve 3pool), deposit fUSDC at 4.83%.
| Metric | Value |
|---|---|
| Spread | +112bp |
| Net APY | 2.21% + 0.35 × 1.12% = 2.60% |
| vs hold | +39.2bp — $94,080/yr |
| Capacity | Fluid free USDC $26.22M — uses 32% |
| Round trip | $5–8k |
| Stress (USDT at 90d-max) | 2.47% |
Additional risk vs B1: USDT/USDC basis — you owe USDT while holding USDC. Normally <10bp; a 1% adverse move costs $84k, about a year of the edge.
7. Path B3 — USDT → swap → Maple syrupUSDC
Steps 1–3 as B2. Deposit syrupUSDC at 5.06% (share price 1.176549 USDC).
| Metric | Value |
|---|---|
| Spread | +135bp |
| Net APY | 2.21% + 0.35 × 1.35% = 2.68% |
| vs hold | +47.3bp — $113,400/yr |
| Capacity | syrupUSDC $1.067B — uses 0.8% |
| Withdrawal | queue; usually minutes via instant-liquidity buffer, worst case 30 days; secondary exit on Uniswap/Balancer |
| Stress (USDT at 90d-max) | 2.55% |
Additional risk vs B2: private credit default. Maple lends to leveraged crypto trading firms; the 135bp is a credit spread.
Correlation: a 57% ETH drawdown — the liquidation trigger — is precisely when those borrowers are most stressed and the redemption queue is longest. The ETH-price risk and the credit risk fire in the same tail event.
8. Path B4 — All-USDC → Maple syrupUSDC
The no-swap version of B3: borrow USDC directly, deploy to Maple.
| Metric | Value |
|---|---|
| Borrow | $8.4M USDC at 4.05% APY |
| Spread | +101bp |
| Net APY | 2.21% + 0.35 × 1.01% = 2.56% |
| vs hold | +35.4bp — $84,840/yr |
| Borrow-leg buffer | 0.58pp to kink ⚠ |
| Stress (USDC at 90d-max 5.14%) | 2.18% — below hold |
8.1 Best USDC borrow venue — Aave v3 core, by elimination
| Venue | Borrow APY | Usable capacity | Verdict |
|---|---|---|---|
| Aave v3 core | 4.05% | $191M available | only venue with size |
Morpho 0x7e585a93… 86% | 3.97% | $1.26M idle + $58.03M reallocatable | adaptive IRM — see below |
Morpho 0xb323495f… 86% | 3.96% | $3.01M idle, $21.8k reallocatable | too thin |
| Compound v3 USDC | 4.05% (3.94% net COMP) | $3.4M to kink | unusable |
| Euler v2 | 3.94% | $7.5M at 88.7% util | too thin |
| SparkLend | 4.19% | $2.3M | too thin |
| Dolomite | 5.11% | $31.8M | too expensive |
| Aave side-instance | 2.40% | $5.2M | too thin |
Compound v3 USDC does accept wstETH (borrowCF 82%, liqCF 86%, supply cap 75,000 vs 39,254 posted), but sits at 89.01% utilisation against a 90% kink with slopeHigh = 360%.
Morpho’s adaptive IRM: AdaptiveCurveIRM targets 90% utilisation and ratchets the rate upward over days while above target. The 3.97% would not survive our $8.4M. Direct evidence: the Morpho wstETH/USDT market — identical collateral, identical 86% LLTV — sits at 92.1% utilisation paying 5.68%, 172bp higher purely from utilisation drift.
8.2 Sensitivity to Aave USDC utilisation
Maple deploy leg fixed at 5.06%:
| Aave USDC util | Borrow APY | Spread | Net APY | vs hold | $/yr |
|---|---|---|---|---|---|
| 91.02% (today) | 4.04% | +102bp | 2.57% | +35.8bp | +$85,954 |
| 92.00% (at kink) | 4.08% | +98bp | 2.55% | +34.3bp | +$82,229 |
| 92.08% ← observed | 5.13% | −7bp | 2.19% | −2.3bp | −$5,637 |
| 92.50% | 10.79% | −573bp | 0.20% | −200.7bp | −$481,633 |
| 93.00% | 17.94% | −1288bp | −2.30% | −450.8bp | −$1,081,862 |
The distance from “working” to “worse than doing nothing” is 0.08pp of utilisation. One point past the kink is a −2.30% absolute loss.
8.3 Observed utilisation history — 14 weekly on-chain samples, ~90 days
| USDC | USDT | |
|---|---|---|
| Utilisation range (balance-derived) | 87.12% – 92.81% | 72.62% – 92.02% |
| Samples past the 92% kink | 2 of 14 | 1 of 14, marginally |
| Highest borrow APR observed | 5.0098% (= 5.1374% APY) | 4.019% (= 4.101% APY) |
| Typical distance from kink | 1–5pp | 8–19pp |
Utilisation note: balance-derived utilisation (totalDebt / totalAToken) runs up to 0.73pp above Aave’s internal virtual-balance measure. IRM parameters were verified identical across all sampled blocks for both stablecoin reserves (Uopt 92%, base 0, slope1 4%, slope2 100%), so the observed borrow APR is ground truth and utilisation is back-solved from it.
8.4 Why B4 is worse than the USDT paths
On raw spread cushion B4 is more robust than B1:
| Path | Spread must compress by | Mechanism |
|---|---|---|
| B1 | 70bp | gradual market repricing |
| B4 | 101bp | one step across a kink |
| B2 | 112bp | gradual market repricing |
| B3 | 135bp | gradual market repricing |
B4’s cushion is not thin — it is erasable in a single mechanical step. B1 requires Fluid and Aave USDT rates to genuinely converge, which is visible and exitable. B4 requires one basis point of utilisation drift across a threshold crossed twice in fourteen weeks, repricing instantaneously.
Verdict: reject. Removing the swap makes the position more fragile, not less — trading ~10bp of mean-reverting basis risk for a discontinuous ~110bp jump, on a trade whose entire upside is 35bp.
9. Rejected options
| Option | Headline | Why rejected |
|---|---|---|
| Steakhouse USDT | +33bp after dilution | 100% in wstETH/USDT at 92% util; our deposit drops the rate 4.92%→~4.66%; exit coverage 0.83x — see §5.1 |
| Smokehouse USDT | +47bp headline | Our ticket = 36% of a $23.3M vault; exit coverage 0.21x; 20% Pendle PT — see §5.1 |
| stUSDS | +91bp | Explicitly Sky’s first-loss risk-capital tranche — absorbs staked-SKY loan shortfall and governance slashing. Higher risk than Maple despite the issuer |
| Maple syrupUSDT | +17bp | Same credit risk as B3 for a third of the return |
| Aave sGHO | +15bp | Safe but thin; GHO borrow cap headroom only 48.3M |
| Centrifuge USDS / AUSD | +28 to +38bp | RWA redemption epochs conflict with needing liquidity in a drawdown |
| Gauntlet USDC RWA | +29bp | $11.5M TVL, 100% single-asset concentration |
| sUSDS, Aave USDC, Steakhouse USDC, Gauntlet Prime | 3.24–3.52% | Negative carry — below the 3.71% borrow cost |
| saturn sUSDAT 25.3%, apyx APXUSD 14.0%, pareto-credit 8.31%, 3jane USD3 6.96% | — | Exotic or unproven at this size |
| Compound v3 / SparkLend ETH loops | — | Cap-bound at ~$22M; blow out their rate curves above ~2x |
| Morpho wstETH markets | — | Collateral earns nothing; loan-side liquidity $3–11M |
Not evaluated (outside a passive “deposit for a %” mandate): Pendle fixed-rate/PT markets · wstETH/ETH LP (LVR economics not assessed here) · restaking (EigenLayer, Symbiotic) · L2 venues. The staking-yield constraint is chain-independent, so loop economics do not improve on L2s, though borrow rates differ.
10. Master comparison
Basis: $24M equity = 10,503 wstETH · ETH $1,841.54 · wstETH $2,284.94 · Lido 2.21% · block 25,673,966.
Every computed cell below was independently re-derived from the stated inputs. Rates re-checked live at block 25,675,104 (+1,138 blocks): WETH borrow 2.1345% APY, USDT 3.7007%, USDC 4.0392%, Lido 7d SMA 2.2066%, fUSDT $131.13M, fUSDC $153.74M, syrupUSDC $1.0666B — all within rounding of the figures used.
| 0. Hold | A. ETH loop | B1. All-USDT ★ | B2. USDT→USDC | B3. Maple | B4. All-USDC→Maple | |
|---|---|---|---|---|---|---|
| Structure | unencumbered | leveraged staking | borrow & redeploy | borrow & redeploy | borrow & redeploy | borrow & redeploy |
| Collateral venue | wallet | Aave v3 core | Aave v3 core | Aave v3 core | Aave v3 core | Aave v3 core |
| eMode | — | 1 “ETH correlated” | none | none | none | none |
| Max LTV / LT | — | 93% / 95% | 78.5% / 81% | 78.5% / 81% | 78.5% / 81% | 78.5% / 81% |
| wstETH posted | 10,503 (held) | 34,504 | 10,503 | 10,503 | 10,503 | 10,503 |
| Collateral value | $24.0M | $78.8M | $24.0M | $24.0M | $24.0M | $24.0M |
| Collateral yield | 2.21% | 2.21% | 2.21% | 2.21% | 2.21% | 2.21% |
| Debt asset | — | WETH | USDT | USDT | USDT | USDC |
| Debt amount | — | 29,779 WETH | $8.4M | $8.4M | $8.4M | $8.4M |
| Debt value | — | $54.8M | $8.4M | $8.4M | $8.4M | $8.4M |
| Borrow APY | — | 2.173% | 3.71% | 3.71% | 3.71% | 4.05% |
| Buffer to rate kink | — | 11.3pp | 8.47pp | 8.47pp | 8.47pp | 0.58pp ⚠ |
| Actual LTV | 0% | 69.6% | 35% | 35% | 35% | 35% |
| Health factor | ∞ | 1.37 | 2.31 | 2.31 | 2.31 | 2.31 |
| Liquidation trigger | none | wstETH/ETH −26.8% | ETH ≤ $796 (−56.8%) | ETH ≤ $796 | ETH ≤ $796 | ETH ≤ $796 |
| Swap required | no | yes (loop + unwind) | no | yes | yes | no |
| Deploy venue | — | wstETH re-supplied | Fluid fUSDT | Fluid fUSDC | Maple syrupUSDC | Maple syrupUSDC |
| Deploy APY | — | 2.21% | 4.41% | 4.83% | 5.06% | 5.06% |
| Spread | — | +4bp | +70bp | +112bp | +135bp | +101bp |
| NET APY | 2.21% | 2.29% | 2.46% | 2.60% | 2.68% | 2.56% |
| vs hold | — | +8.3bp | +24.5bp | +39.2bp | +47.3bp | +35.4bp |
| Incremental $/yr | — | ~$20,000 | $58,800 | $94,080 | $113,400 | $84,840 |
| Total $/yr on $24M | $530,400 | $550,400 | $589,200 | $624,480 | $643,800 | $615,240 |
| Net APY at 90d-max borrow rate | 2.21% | loss-making | 2.32% | 2.47% | 2.55% | 2.18% ⚠ below hold |
| Binding capacity | none | 32% of Aave wstETH cap | 30% of Fluid free USDT | 32% of Fluid free USDC | 0.8% of syrupUSDC | Aave USDC kink, not size |
| Round-trip friction | $0 | ~$21k (TWAP exit) | $3–5k | $5–8k | $5–8k | $3–5k |
| Exit time | instant | ~1 day TWAP, 2–4 weeks queued | minutes | minutes | minutes–30 days | minutes–30 days |
| Payback on friction | — | 1.1 yrs | <1 month | <1 month | <1 month | <1 month |
| Primary risk | none | trivial hard-capped gain; WETH rate spikes | ETH liquidation; Fluid utilisation | + USDT/USDC basis | + private credit default | Aave USDC kink + private credit |
| Verdict | ★ recommended | reject | ★ best if deploying | acceptable | risk not compensated | reject |
Route B: net APY = 2.21% + 0.35 × (deployAPY − borrowAPY) · Route A: L × 2.21% − (L−1) × borrowAPY at L = 3.28x ($78.8M / $24M).
What would change the conclusion
- Lido APR above ~3% — requires validator exits or a sustained fee-market recovery
- WETH borrow rates fall — Aave core WETH at 80.7% utilisation against a 92% kink; a large supply inflow drops it toward the 0% base rate
- Incentives return — a Merit or COMP campaign. Compound’s WETH comet already pays 0.19% on borrow
- Spark or Compound raise caps — both are cheaper than Aave and cap-bound, not liquidity-bound. Spark’s WETH borrow cap moving 419,256 → ~500,000 opens ~$170M at 2.04%
Target: a ≥75bp staking-yield-to-borrow-cost spread. Currently +7bp on the venue with size.
11. Sources and contracts
Contracts (all reads at block 25,673,966)
| Contract | Address |
|---|---|
| wstETH | 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0 |
| WETH | 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 |
| USDT | 0xdAC17F958D2ee523a2206206994597C13D831ec7 |
| USDC | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
| GHO | 0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f |
| USDS | 0xdC035D45d973E3EC169d2276DDab16f1e407384F |
| Aave v3 Pool | 0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2 |
| Aave v3 PoolDataProvider | 0x0a16f2FCC0D44FaE41cc54e079281D84A363bECD |
| Aave v3 AddressesProvider | 0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e |
| Aave v3 Oracle | 0x54586bE62E3c3580375aE3723C145253060Ca0C2 |
| Aave stablecoin IRM | 0x9ec6F08190DeA04A54f8Afc53Db96134e5E3FdFB |
| SparkLend Pool | 0xC13e21B648A5Ee794902342038FF3aDAB66BE987 |
| SparkLend DataProvider | 0xFc21d6d146E6086B8359705C8b28512a983db0cb |
| Compound v3 WETH comet | 0xA17581A9E3356d9A858b789D68B4d866e593aE94 |
| Compound v3 USDC comet | 0xc3d688B66703497DAA19211EEdff47f25384cdc3 |
| Morpho Blue | 0xBBBBBbbBBb9cC5e90e3b3Af64bdAF62C37EEFFCb |
| Fluid Liquidity Layer | 0x52Aa899454998Be5b000Ad077a46Bbe360F4e497 |
| Fluid Lending Resolver | 0xC215485C572365AE87f908ad35233EC2572A3BEC |
| Fluid fUSDT ($131.1M) | 0x5C20B550819128074FD538Edf79791733ccEdd18 |
| Fluid fUSDC ($153.8M) | 0x9Fb7b4477576Fe5B32be4C1843aFB1e55F251B33 |
Fluid fwstETH (460 wstETH) | 0x2411802D8BEA09be0aF8fD8D08314a63e706b29C |
| Maple syrupUSDC ($1.067B) | 0x80ac24aA929eaF5013f6436cdA2a7ba190f5Cc0b |
| Sky sUSDS | 0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD |
| Sky stUSDS | 0x99CD4Ec3f88A45940936F469E4bB72A2A701EEB9 |
| Steakhouse USDT vault | 0xbEef047a543E45807105E51A8BBEFCc5950fcfBa |
| Lido withdrawal queue | 0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1 |
| Chainlink ETH/USD | 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419 |
| Curve stETH/ETH | 0xDC24316b9AE028F1497c275EB9192a3Ea0f67022 |
Morpho market IDs (both wstETH collateral / USDC loan, 86% LLTV — see §8.1):
| Market | ID |
|---|---|
| $23.5M supply, 3.96% borrow | 0xb323495f7e4148be5643a4ea4a8221eef163e4bccfdedc2a6f4696baacbc86cc |
| $9.7M supply, 3.97% borrow, $58.03M reallocatable | 0x7e585a933ffe8443c371b4f8cfeb4430f5f6a14c2f32a898c26662c67a1cb8b8 |
APIs (all accessed 2026-08-03)
| Source | Endpoint | Used for |
|---|---|---|
| Lido | eth-api.lido.fi/v1/protocol/steth/apr/sma, /last | staking APR |
| DefiLlama | yields.llama.fi/pools, /lendBorrow | venue sweep, cross-check |
| Morpho | api.morpho.org/graphql | markets, vaults, allocations, reallocatable liquidity |
| Fluid | api.fluid.instadapp.io/v2/1/vaults | vault rates |
| CoW Protocol | api.cow.fi/mainnet/api/v1/quote | swap depth |
| Aave Chan | apps.aavechan.com/api/merit/aprs | incentive check (all null) |
| Maple | docs, syrupUSDC scale | withdrawal mechanics |
| Sky | stUSDS, protocol docs | stUSDS risk-capital structure |
Verification log
| Claim | Method | Result |
|---|---|---|
| Lido APR 2.21% | Lido API SMA + /last; DefiLlama; Rocket Pool cross-check | ✓ 3 independent sources |
| wstETH rate 1.240774 | stEthPerToken() | ✓ |
| Aave prices wstETH off exchange rate | Oracle ratio 1.24080 vs on-chain 1.240774 | ✓ |
| Aave wstETH LTV 78.5% / LT 81% | getReserveConfigurationData → 7850/8100/10600 | ✓ |
| Aave eMode 1 = 93%/95%/1% | getEModeCategoryCollateralConfig(1) → (9300, 9500, 10100); collateral bitmap bits {0,1} = WETH+wstETH; borrowable bitmap = bit 0 = WETH only | ✓ |
| Aave WETH borrow 2.1148% APR | getReserveData var rate 2.1148e25 / 1e27 | ✓ |
| Aave WETH IRM | getInterestRateData → Uopt 92%, base 0, slope1 2.35%, slope2 6% | ✓ raw curve gives 2.0625% vs on-chain 2.1148% → +5.23bp calibration applied |
| Aave WETH available $758M | 2,139,688.77 supplied − 1,727,650.38 debt | ✓ |
| Aave wstETH cap headroom 107,370 | getReserveCaps 1,000,000 − 892,630.50 | ✓ |
| Aave USDC/USDT IRM identical across samples | getInterestRateData at 3 blocks → Uopt 92%, slope1 4%, slope2 100% | ✓ |
| Aave USDC crossed kink twice / 14 samples | getReserveData weekly, 90d; observed 5.0098% and 4.2737% APR | ✓ |
| Aave WETH IRM changed mid-window | Uopt 94%→92%, slope1 2.00%→2.35%, slope2 3.00%→6.00% | ✓ series not strictly comparable |
| Spark wstETH 83%/84%, eMode 92%/93% | getReserveConfigurationData; getEModeCategoryData(1) → (9200, 9300, 10100, 0x0, “ETH”) | ✓ |
| Spark WETH borrow cap headroom 12,089 | getReserveCaps 419,256 − 407,167.13 | ✓ binding constraint |
| Compound v3 WETH borrow 1.7343% APR | getBorrowRate(getUtilization()), U=66.09% | ✓ reproduces from IRM |
| Compound v3 WETH IRM | borrowPerSecondInterestRate* × 31,536,000 → base 1.0%, slopeLow 1.111%, kink 90%, slopeHigh 30% | ✓ exactly reproduces rate |
| Compound v3 USDC accepts wstETH | getAssetInfoByAddress → borrowCF 82%, liqCF 86%, cap 75,000 vs 39,254 posted | ✓ |
| Compound v3 USDC $3.4M to kink | U 89.01%, kink 90%, slopeHigh 360% | ✓ |
| sUSDS 3.52% | ssr() = 1.000000001096988989836188433 → r^31536000 − 1 | ✓ |
| stUSDS 6.31% | str() = 1.000000001940295800728849590; totalAssets 190,292,092 USDS | ✓ |
| Aave GHO 3.75% APR fixed, RF 100% | getReserveData / getReserveConfigurationData | ✓ |
| syrupUSDC $1.067B | totalAssets() = 1,066,875,927.909197 USDC; share price 1.176549 | ✓ DefiLlama’s $2.54B aggregates Maple institutional pools beyond syrupUSDC |
| fUSDT $131.1M / fUSDC $153.8M | totalAssets() via Fluid Lending Resolver getAllFTokens() | ✓ |
| Fluid free USDT $28.15M / USDC $26.22M | balanceOf(FluidLiquidityLayer) | ✓ |
| Steakhouse USDT 100% wstETH | Morpho GraphQL vault allocation | ✓ |
| No wstETH lending market | Morpho: 10 markets, $0.64M, 0% util; Fluid fwstETH 460 wstETH @ 0.03% | ✓ |
| No Merit incentives | apps.aavechan.com/api/merit/aprs — all mainnet keys null | ✓ |
| Swap depth | CoW Protocol /api/v1/quote | ✓ |
| Lido queue near-empty | unfinalizedStETH() = 5,343 stETH; last 131,497 / finalized 131,369 | ✓ |
Discarded data: aggregator quotes fail to route large wstETH sells and return nonsense — Paraswap above 1,000 wstETH (−50% to −92%), CoW at ≥24,000 wstETH (a 24,000 quote returned 1,618 WETH, −9457bp). Validate any single large quote against the size curve before using it as a cost. DefiLlama’s chartLendBorrow endpoint is paywalled; utilisation history was sampled directly on-chain instead.
Unit convention: bp for rate spreads and execution costs · % for levels and price moves · pp for gaps between two percentages.