what a dollar earns onchain this week: 3.6% on aave, 4.4% on compound, and why usds on aave earns 0.15%

what a dollar earns and what borrowing one costs on aave v3, spark and compound v3 on 15 september 2026, read from the contracts at one block, with the utilization that explains every rate.

· berlin · alina schanz

question
the yield on a dollar, and the cost of borrowing one, on ethereum's large lending markets at one block.
data
seventeen asset and market pairs on aave v3, spark and compound v3, plus the sky savings rate and the dai savings rate, at block 25,982,545 on 15 september 2026, 11:24 utc.
method
lendrates reads the rates11 lendrates as of 15 sep 2026: my newest commit before it was 193b6db (10 sep 2026), signed with my key. the code. and the supplied and borrowed amounts from the contracts with eth_call, then turns each protocol's rate into a yearly percentage. the command is under method.
finding
a stablecoin dollar earned 0.15% to 4.40%, depending on the market and on how much of the pool borrowers had taken. usdc paid 4.40% on compound v3 and 3.63% on aave v3.

data

supply and borrow apy for seventeen asset and market pairs as horizontal bars: usdc, usdt, dai, usds, usde, pyusd and weth on aave v3, spark and compound v3
supply apy in blue over borrow apy in amber, one row per asset and market.
2 the window: at block 25,982,545 on 15 september 2026, 11:24 utc.
3 the command: lendrates --json.
asset · marketsupplyborrowusedsuppliedborrowed
usdc · compound v3#4.40%5.34%90%$376m$340m
usdc · aave v3#3.63%4.40%92%$2.39bn$2.20bn
usdc · spark#3.61%4.36%92%$26.8m$24.7m
usdt · spark#3.45%4.04%95%$320m$304m
usdt · aave v3#3.30%4.19%88%$3.16bn$2.78bn
usdt · compound v3#3.13%3.95%86%$183m$157m
dai · aave v3#3.12%4.83%87%$132m$115m
dai · spark#2.49%4.13%68%$308m$208m
usds · compound v3#4.38%5.31%90%$1.8m$1.6m
usds · spark#2.35%4.00%66%$1.12bn$735m
usds · aave v3#0.15%5.69%4%$9.1m$0.3m
usde · aave v3#0.69%6.55%14%$657m$94.6m
pyusd · aave v3#3.98%5.04%88%$7.5m$6.6m
pyusd · spark#0.86%4.12%24%$181m$42.8m
weth · aave v3#1.47%2.08%84%$5.25bn$4.40bn
weth · spark#1.42%1.89%79%$1.40bn$1.11bn
weth · compound v3#1.28%1.87%64%$127m$81.1m

observations

each market on the list prices a loan off the share of the pool that borrowers have taken, and pays lenders that rate times the share that is working, minus the protocol's cut. usdc on compound v3 pays 4.40% at 90% utilization44 from the limits: "one block. a rate moves with every borrow and every repayment"; on aave v3 it pays 3.63% at 92%, from a pool 6 times larger. usds on aave pays 0.15% because borrowers have taken 3.7% of it: $9.1m supplied, $0.3m out. the same dollar in three markets earns rates a factor of 29 apart.

usde on aave is the other kind of pool: $657m supplied, 14% borrowed, 0.69% for the lenders and 6.55% for the few borrowers. people put usde there as collateral to borrow something else against it; the deposit and its rate are both side effects.

weth earns 1.28% to 1.47% and costs 1.87% to 2.08% to borrow: the narrowest spread on the list, on the largest pool, $5.25bn of ether on aave alone. spark holds $1.12bn of usds at 66% utilization and pays 2.35%. for comparison, sky pays 3.60% on its savings rate and 1.25% on the dai savings rate.

method

lendrates --json

python 3.10+, standard library, public rpcs, about thirty seconds. aave v3 and spark run the same pool code: getReserveData gives the supply and the borrow rate, and the totalSupply of each reserve's a-token and debt token gives what is supplied and what is borrowed. compound v3 is one contract per lent token: getUtilization, then getSupplyRate and getBorrowRate at that utilization. sky's ssr() and dsr() are per-second rates that governance sets. every apy compounds its rate every second, the way aave's interface shows it.

a workflow in the repository writes one row per asset and market to daily.csv at 00:33 utc, so you can follow a rate over weeks.

sources

limits

revised 21 sep 2026. the note now lays out question, data, method, observations, sources and limits. the figures from 15 september did not change; the one line that cites 21 september says so. none of it is advice, and a rate describes one block. if a number differs from what the protocol's own page shows at the same block, i want to hear about it.

revised 23 sep 2026. the links to my code now point to the copies on this site, and short notes in the margin say where a figure came from. the figures and the sentences above did not change.