Summary
Rented deposits pass for sticky ones
A lot of stablecoin TVL is being paid to sit where it is, the incentives end on a schedule, and the deposits get treated as stickier than they are.
In this report we look at 1,111 stablecoin pools from February 2022 to August 2026. That's 636,173 pool-days, meaning one pool observed on one day, and averages 573 days of history per pool.
- Does capital chase yield? Barely. An extra percentage point of reward APY is associated with 0.91% more 30-day TVL growth.
- Does it leave when the yield stops? Yes. The median pool keeps 58% of deposits 90 days after a reward collapse, and 31% after 180 days.
- Does organic yield predict what stays? No, at least not as "organic" is measured here. The apparent effect turned out to be one protocol with a reporting artifact.
Incentives work more like rent subsidies for capital to stay than true customer acquisition.
Incentives do a poor job of attracting stablecoin deposits and a decent job of holding the ones already there.
This should not be taken as a returns forecast. A network token's price performance, as Eddy and I have discussed, can be totally decoupled from (among other metrics) TVL.
This is all based on public data. There is likely a meaningful amount of alpha that can be generated from MNPI gathered across investor calls, founder pitches and team updates. These results should be treated as a lower bound; the next section elaborates.
Where the firm has an edge
a16z's advantage
Each of these is a PrivateSlot in src/slots.py with a name, unit, join key and a hypothesized sign on retention. All four are currently unpopulated.
Depositor concentrationNegative
Addresses are on-chain but who owns them isn't. One trading desk is many wallets, and one vault address is many people. What we want is entity concentration, which requires identification. If concentration predicts retention and yield doesn't, that would explain why Finding 3 came back null.
Points-to-token conversionNegative
A larger implied subsidy should mean more mercenary capital. Blast Gold, Scroll Marks and Sonic Points all paid off-chain. We only know when each program ended, not necessarily how much raw capital was allocated for it.
Commitment termsPositive
Lockups, market-maker arrangements, ecosystem-fund obligations. We want to know whether the capital could actually leave on the date I've marked. Berachain's TGE was 2025-02-06, but Boyco deposits were locked for 30 or 90 days from launch, so dating the event to the TGE would have scored an 86% loss as retention. I only caught that because Boyco happened to be well documented. Most lockups aren't, and we would need the term sheet to compare.
Post-incentive planPositive
Whether the team had a defined path to organic demand before the program ended. This is ultimately a qualitative judgement call, but even a subjective rating here, if correct, could have strong effects on capital stickiness.
Finding 1
Capital chases yield weakly
Forward 30-day TVL growth, sorted by the reward APY a pool was paying:
| Reward APY | Pool-days | Pools | Median 30d growth |
|---|---|---|---|
| 0% | 156,463 | 566 | 0.992 |
| 0–2% | 48,416 | 274 | 0.976 |
| 2–5% | 25,789 | 235 | 0.973 |
| 5–10% | 19,005 | 178 | 0.973 |
| 10–20% | 9,168 | 108 | 0.988 |
| >20% | 2,213 | 50 | 1.030 |
The column is almost flat. Only the bucket above 20% grows at all, and that's 1% of the observations.
Asking the same question within pools — does a given pool grow faster during its own high-reward periods — gives 0.91% of extra 30-day TVL growth per point of reward APY.
The initial objection is that reward APY is spend divided by TVL, so a high APY might just mean a small pool. However, the correlation with log TVL is −0.070. I also reran it against dollars of incentive spend per day, which takes TVL out of the denominator entirely, and got +0.20% per log-unit. Either way the conclusion is the same.
One reading of this is that capital had already moved to wherever the subsidy was, so whatever APY is left over shouldn't predict much further inflow. Put together with section 2, incentives hold deposits far better than they attract them. The TVL print at launch is less important than understanding how long the incentives underpinning the system will run.
Finding 2
Deposits leave when the yield stops
I take the events from the APY series rather than from announcements to get a much clearer signal. A pool qualifies when its 30-day mean reward APY falls at least 70% from a base of at least 3%, with pre-event TVL of at least $3M. I use the first qualifying event per pool so that no single pool can contribute multiple events.
That gives 96 events across 18 chains and 31 protocols, covering $1.55bn of pre-event TVL. Median reward APY falls from 6.5% to 1.67%.
Median market-adjusted 90-day retention is 0.582, with a bootstrap 95% CI of [0.334, 0.761]. A Wilcoxon signed-rank test on log retention against a null of 1.0 gives p = 1.4 × 10⁻⁶, one-sided. 48% of events lose more than half their deposits.
Curve and Convex account for 30 of the 96 events between them, so I reran it clustered:
| Aggregation | Median retention |
|---|---|
| All 96 events | 0.582 |
| One median per protocol (31) | 0.629 |
| One median per chain (18) | 0.434 |
APY can fall because TVL rose while spend stayed flat, which is a completely different event. Of the 96 APY events, 69 also drop dollar spend by at least 70%, and the median retention on that subset is 0.302 against 0.582 for the full sample. The other 27 events, where TVL rose without spend collapsing, are pulling the headline up. I've kept the main sample APY-defined so the rule stays mechanical, but the spend cut is telling you 0.582 is optimistic.
Finding 3 · Null result
Organic yield doesn't predict retention
DefiLlama splits pool yield into apyBase, which comes from the protocol's own economics, and apyReward, which comes from token emissions. The obvious hypothesis is that pools with real base yield keep more deposits once emissions stop.
The rank correlations are +0.035 for reward paid against retention, and +0.199 for base APY against retention. At the extremes it looks like something: pools below 0.5% base APY retained 0.382, pools above 3% retained 0.668.
However this hypothesis doesn't survive:
| Specification | Low base | High base | Difference | Bootstrap P(high > low) |
|---|---|---|---|---|
| All events | 0.382 | 0.668 | +0.286 | 0.90 |
| Excluding Stargate v1 | 0.662 | 0.668 | +0.006 | 0.63 |
| One median per protocol | 0.647 | 0.696 | +0.049 | 0.80 |
The 0.90 on the full split is Stargate: drop those pools and it falls to 0.63. Seven of the 31 low-base events are Stargate v1 pools reporting base APY of exactly 0.0, with a median retention of 0.166. Stargate earns bridge fees, so that zero is an adapter gap rather than an economic fact. Eight of the 31 low-base events report exactly 0.0.
The split has three other problems as an instrument, independent of Stargate. Base yield can itself depend on subsidies elsewhere, since borrowers may only be there because they're farming another pool, and AMM fee yield depends on volume that might itself be incentivized. High base APY isn't obviously healthy either — the top of that bucket is an Aptos AMM at 36% and another at 17%, and fee yields that high are usually brief. And I measure the variable 30 days before the collapse, so it records whether the pool had base yield then, not whether it still has any afterwards.
The results here are murky enough that I have to consider this a null. The real problem is properly identifying "organic" versus manufactured yield in a neutral and scalable way across all these different chains.
Finding 4
The shape of the outflow
Retention is still falling at six months.
Market-adjusted retention by horizon
| Horizon | Events | Median | Dollar-weighted |
|---|---|---|---|
| 30 days | 103 | 0.766 | 0.862 |
| 60 days | 99 | 0.654 | 0.788 |
| 90 days | 96 | 0.582 | 0.680 |
| 180 days | 85 | 0.305 | 0.489 |
Most post-mortems stop at 90 days. By 180 the median is 0.305, roughly half the 90-day figure. The event count drops at 180 because recent events don't have a post-window yet, so that row leans on older events.
Dollar-weighted retention sits above the median at every horizon: 0.680 against 0.582 at 90 days, 0.489 against 0.305 at 180. Larger pools keep more of their deposits, which means the left tail is made of small pools.
For a prior I'd use the dollar-weighted 180-day number, 0.49, bootstrap 95% CI [0.32, 0.71]. What matters to us is dollars rather than pools, and 90 days is too short given retention is still falling. The band is wide enough that I'd treat it as a 30–70% haircut rather than a point estimate. And 0.49 is still optimistic on two counts: survivorship biases it up, as section 6 shows, and the spend-confirmed 90-day median is 0.30.
By year of event
| Year | Events | Median retention | Pre-event TVL at risk |
|---|---|---|---|
| 2022 | 3 | 1.009 | $152M |
| 2023 | 10 | 0.359 | $290M |
| 2024 | 24 | 0.392 | $267M |
| 2025 | 35 | 0.828 | $491M |
| 2026 | 24 | 0.279 | $354M |
2022 is the only outlier, and it is far too small a sample. The gap between 2025 at 0.83× and 2026 at 0.28× looks like a real difference in the programs rather than something the market adjustment should have removed, since that adjustment only takes out sector-wide TVL moves. The pooled 0.49 is mixing those vintages together. Ideally I'd want to compare a live name against the nearest year, but the sample can't support that yet.
Worked example
Monad
This is not a buy or a sell. It's a live number, and a case where the prior shouldn't be applied as a haircut. Same snapshot as the rest of the memo, and mercenary.py prints all of it. As of 2026-08-20:
| Book | Filter | Pools | TVL | Median reward APY |
|---|---|---|---|---|
| Any-reward | 30d apyReward > 0 | 22 | $286.7M | 2.0% |
| Study-intensity | 30d apyReward ≥ 3% | 6 | $9.6M | 6.2% |
The $286.7M is the dashboard figure. Most of it is Morpho, Accountable, Euler, Curvance and Upshift paying between 0.2% and 2%, which sits below the 3% floor the prior was estimated on. Haircutting that number with a statistic drawn from 3%-plus collapses would be the wrong operation.
These six pools are already shrinking
No reward collapse has fired on Monad. But over the last 45 days:
| 45 days ago | Now | Change | |
|---|---|---|---|
| Study-intensity TVL | $28.9M | $9.6M | −67% |
| Median reward APY | 4.1% | 7.6% | +3.5pp |
All six pools shrank. The APY went up because APY is spend over TVL, so as deposits leave, whatever remains shows a higher yield. The event study asks what happens when you stop paying. What happened here is that the deposits left while the yield on the ones that stayed went up.
What to do with 0.49
The prior measures retention after a collapse, relative to the TVL just before it. These pools don't have a stable base to measure against: spot is $9.6M, the 30-day mean is $16.3M, and they're 1.7× apart purely because the series is trending.
If the subsidy stopped today, on top of the drain already running:
- At the pool level (180-day dollar-weighted 0.49, CI [0.32, 0.71]), about $4.7M would be left in these six pools. Moving to another Monad pool counts as leaving.
- At the chain level (strict-sample median 0.36), about $3.5M would be left on Monad.
Both are estimates of what a stop would add, not haircuts on the $9.6M. Cutting $9.6M by 51% would double-count capital that has already gone.
On the four slots, applied to the $9.6M rather than the $286.7M: depositor concentration is the live question, because whether that 67% is a few desks unwinding or a broad exit changes the read completely, and six of six pools shrinking is a hint but not holder data. Points conversion would show whether dollar spend actually rose alongside the APY or merely held while TVL fell. Commitment terms would tell you how much of the $9.6M can't leave. And a post-incentive plan would tell you whether there's a path off subsidies at all.
The binding risk on these six pools is the drain that's already happening, not a future incentive cliff. I'd size against the trend, treat 0.49 in-pool and 0.36 on-chain as what a stop would add on top of that, and get depositor data before assuming six shrinking pools are a broad unwind.
Method risk
The sample problem that reverses the answer
Run the same event study on pools that are currently above $3M TVL — 368 pools, 33 events — and median retention comes out at 1.115, with 27% losing half their deposits. Taken at face value that says deposits grow after incentives stop.
It's selection. Pools that are large today are pools that survived, so anything that took its incentives, collapsed and fell below the threshold is missing from the sample.
Select on size at the event date instead of size today and the same measurement gives 0.582. Same code, same market adjustment.
Coverage runs to 1,772 of 3,042 listed pools, down to about $103k of current TVL, and the tail I didn't fetch has a median TVL of $33k. On top of that, DefiLlama's pool list is a current snapshot, so pools that went to zero and were delisted never appear at all.
Robustness
Sensitivity to the arbitrary thresholds
Three judgment calls go into the event rule: how large a reward drop counts, how large a pool has to be, and how long to wait. Here are all 27 combinations.
| Drop | TVL floor | 60d | 90d | 180d |
|---|---|---|---|---|
| 50% | $1M | 0.765 | 0.699 | 0.505 |
| 50% | $3M | 0.742 | 0.663 | 0.452 |
| 50% | $10M | 0.664 | 0.674 | 0.293 |
| 70% | $1M | 0.682 | 0.604 | 0.351 |
| 70% | $3M | 0.654 | 0.582 | 0.305 |
| 70% | $10M | 0.587 | 0.409 | 0.248 |
| 90% | $1M | 0.622 | 0.456 | 0.308 |
| 90% | $3M | 0.642 | 0.577 | 0.293 |
| 90% | $10M | 0.644 | 0.561 | 0.260 |
The horizon moves the number by about 0.3 while the drop threshold and TVL floor move it by roughly ±0.1 each. Every 180-day cell sits below every 60-day cell. Averaging across all 27 would mix the horizons together, which is why I haven't quoted a single number for the grid.
Cross-check
Chain-level supply
This is chain stablecoin supply around program endings I dated by hand from governance records and protocol docs.
Adjusted retention by chain · 1.00 = no effect
Median 0.361.
Base is the useful row. It has no token, no airdrop and no points program, and its stablecoins arrived through Coinbase and Circle. Scored on the same dates as Blast it returns 0.985, which is what the market adjustment does to a chain that wasn't treated.
Plasma is the row I'd distrust. It's the largest positive outlier in either study and the weakest-sourced: the launch post redirects to a 404, so its program terms rest entirely on secondary press. A payments chain growing through its TGE is plausible enough, but it's also the one observation I couldn't check at source.
Two studies on different data with different event rules give 0.36 and 0.58.
The chain study is the weaker of the two. Six events, and the sign test gives p=0.109 on the strict set or p=0.035 if I include two programs I'd argue don't belong. The effect size is stable across both; the significance isn't. The pool study, with 96 events and no hand-dating, is the one to lean on.
Method
How retention is measured
Market-adjusted retention at horizon h:
raw = mean(TVL[T+h-29 .. T+h]) / mean(TVL[T-30 .. T-1]) mkt = same ratio on a market series, identical dates adj = raw / mkt
src/metrics.py holds adjusted_retention() and post_window(), and both studies call them. Two things still differ between the studies by design: the series, which is pool TVL in one and chain stablecoin supply in the other, and the market denominator. A chain is large enough to move global supply, so that path sets exclude_own=True. A single pool isn't, so the pool path uses the sampled-pool total as it stands.
Both windows are 30-day trailing averages, so post_window(90) returns T+61 to T+90. An earlier version of the pool study used a window centred on T+90 instead, and aligning it with the chain study moved the headline from 0.498 to 0.582. That's a big enough swing from a convention choice that it belongs in writing.
The market adjustment matters because events cluster in time and sector-wide TVL swings hard over 90 days. Without it you'd mostly be measuring whether an event happened to fall in a good quarter.
I work at pool level rather than chain level because apyReward is the incentive run-rate and it's observable daily going back to February 2022. At chain level it isn't. Blast Gold, Scroll Marks and Sonic Points were paid off-chain, so you can date a program's end but not size it.
For tests: Wilcoxon signed-rank on log retention against 1.0, one-sided, for the main result; an exact one-sided binomial sign test for the chain-level direction; and for the Finding 3 group comparisons, a bootstrap P that the high median exceeds the low over 20,000 draws. With 96 events sitting in 31 protocols, asymptotic standard errors would overstate the precision.
Limits
What this doesn't establish
It isn't causal. Venues that can fund large programs differ from those that can't, and program design tracks team quality. Better teams would probably have retained more anyway.
Retention is an upper bound. Delisted pools are missing and the fetched tail is incomplete, and both of those bias the estimate upward.
A reward collapse isn't always a program ending. APY falls if emissions stop, if TVL rises, or if the reward token's price drops. The spend check covers the second case: 69 of the 96 APY events also drop dollar spend by 70% or more, and that subset retains 0.302 rather than 0.582. I can't separate out the third case.
Leaving a pool isn't leaving crypto. Pool-level retention includes rotation to other venues, while chain-level retention is exit from the chain entirely. The two studies landing at 0.58 and 0.36 is consistent with both effects being real, which is why the Monad example applies each prior to its own object.
What would sharpen it
Fetching the remaining 1,270 pools would help most, because the collapsed low-yield cases are exactly what's sitting in that tail, and those are what Finding 3 needs.
Yield attribution that doesn't depend on per-protocol adapters would let me actually test Finding 3, which failed on coverage rather than on economics.
Joining token prices to emission schedules would separate a collapse caused by a falling reward token from one caused by emissions ending.