Dashboard · VantagePlanned

DeFi Lending Bad Debt Tracker

How much bad debt do DeFi lending protocols carry right now, and who absorbed it?

Debt no longer covered by collateral on Aave, Morpho, Compound, Euler and other lenders: recorded deficits, write-offs and underwater loans.

ShareEmail itvoltfincrypto.com/apps/defi-lending-bad-debt
Blueprint

What the dashboard will show.

The dashboard as it will open in Vantage. Each figure is named here and arrives with its receipt; until its data is published, its place stays empty.

  • Protocol
  • Chain
  • Period

Overview

Realized and unrealized bad debt by protocol, chain and market.

Realized bad debt

USD

Bad debt recorded or written off on the selected protocols in the period, from their deficit and write-off events.

FigureliquidationsAwaiting data

Unrealized bad debt

USD

Debt on positions whose collateral is worth less than their debt at the latest pinned block.

Figurelending_markets_dailyAwaiting data

Underwater accounts

count

Borrowers with collateral below their debt at the same block, dust positions included.

Figurelending_markets_dailyAwaiting data

Covered by reserves

%

The share of unrealized bad debt that the protocols' reserves and staking covers could absorb at the same block.

Figurelending_markets_dailyAwaiting data

Bad debt by protocol

USD

Realized and unrealized bad debt by protocol and chain, with dust shown as its own band.

Stacked barslending_markets_dailyAwaiting data

Markets with the most unrealized bad debt

Each market with protocol, chain, collateral, unrealized bad debt, underwater accounts and the largest single account.

Tablelending_markets_dailyAwaiting data

Write-offs

Every recorded deficit and write-off, and who absorbed it.

Write-offs in the period

count

Deficit and write-off events on the selected protocols in the period.

FigureliquidationsAwaiting data

Largest write-off

USD

The largest single deficit or write-off in the period, with its market and transaction.

FigureliquidationsAwaiting data

Who absorbed the loss

Realized bad debt split by who absorbed it: protocol reserves, staking covers or the lenders of the market.

DonutliquidationsAwaiting data

Every write-off

Each deficit and write-off with date, protocol, market, amount, the account and who absorbed it, linked to its transaction.

TableliquidationsAwaiting data

Protocol
All protocols, or one of Aave, Morpho, Compound v3, Euler v2, Spark, Fluid and Venus
Chain
Every covered chain, or all chains
Period
Last 30, 90 or 365 days
About

What it answers, and for whom.

Bad debt is a loan whose collateral is worth less than what is owed, so no liquidator will repay it at a profit. Lending protocols handle it differently, and that decides who loses: Aave records a deficit on the reserve and can cover it with staked funds, Morpho writes it off against the suppliers of the market where it happened, Compound v3 absorbs it into reserves and Euler can socialize it among a vault's lenders. This dashboard reads each mechanism from the protocols' own events.

Not all bad debt has been recorded yet. A position can sit underwater for weeks before anyone closes it, because liquidating a tiny or illiquid position does not pay. So every market shows two figures. Realized bad debt comes from deficit and write-off events; unrealized bad debt comes from positions whose collateral is worth less than their debt at a pinned block.

Use it to check the markets a vault or a treasury supplies to, or to see what a price crash or a faulty oracle left behind. Every amount names the accounts and transactions it was read from, and positions are valued with the same oracle prices the protocol itself uses.

Method

How it will be measured.

Every figure will be read at a block, kept with its source and its exact read, and open a receipt anyone can re-check.

How receipts work →
  1. Realized bad debt comes from each protocol's own records: Aave DeficitCreated events, Morpho Blue Liquidate events with badDebtAssets, Euler v2 DebtSocialized events, Fluid vault absorb events and Compound v3 absorbs where the collateral taken was worth less than the debt cleared.
  2. Unrealized bad debt is the debt of every borrower whose collateral, valued at the protocol's oracle, is below their debt at a pinned block, from getUserAccountData on Aave and position reads on Morpho, Compound and Euler.
  3. Who bears each loss is recorded with it: a reserve deficit, a write-off against a market's suppliers, a draw on reserves or a staking cover such as Aave's Umbrella.
  4. Dust is kept apart: positions too small to be worth liquidating are counted, but in their own band, so they never hide a large account.
  5. Losses passed to depositors also show in vault share prices, so a fall in a lending vault's convertToAssets is listed beside the market event that caused it.

The data it needs

Read from chain state and history

  • lending_markets_dailyTo buildLending marketsSupply, borrow, utilization and rates per lending market (Aave, Morpho, Spark, Compound, Euler and others) at day end.
  • liquidationsTo buildLiquidationsEvery liquidation on major lending markets and perp venues: collateral seized, debt repaid, liquidator, and the price at the time.
  • yield_rates_dailyTo buildYields and ratesSupply rates, staking yields and vault share-price growth per pool and vault per day, in one comparable table.
  • security_incidentsTo buildHacks and exploitsA registry of exploits, hacks and rug pulls: date, chain, protocol, attack type, amount lost and the transactions involved.
  • native_prices_dailyTo buildOracle prices by dayReference prices of major assets read from on-chain oracle feeds (Chainlink latestRoundData) at each day's last block, with each round's update time.
  • Aave v3.3 and later DeficitCreated events per reserve, and Umbrella slashing events
  • Morpho Blue Liquidate events: badDebtAssets and badDebtShares
  • Compound v3 AbsorbDebt and AbsorbCollateral events and getReserves()
  • Euler v2 DebtSocialized and Liquidate events
  • Aave and SparkLend getUserAccountData, Morpho position(), Euler account liquidity and Venus getAccountLiquidity for every borrower with debt at a pinned block
  • Fluid vault absorb events, where the protocol takes over positions past their limit
  • Vault convertToAssets at daily blocks, for losses passed to depositors
  • Chainlink latestRoundData and each protocol's own oracle at the same block
Questions

Questions people ask.

What is bad debt in DeFi lending?

Debt that its collateral no longer covers. Once collateral is worth less than the loan, liquidating the position loses money, so it stays open or is closed at a loss. Someone absorbs the difference: the protocol's reserves, a staking fund or the lenders in that market.

How does Aave handle bad debt?

Since Aave v3.3, when a liquidation leaves a borrower with debt but no collateral, the remaining debt is recorded as a deficit on that reserve instead of staying on the account. Where Umbrella is live, staked funds for that asset can be burned to cover the deficit.

How does Morpho handle bad debt?

In Morpho Blue, a liquidation that takes all of a borrower's collateral writes off the remaining debt against that market's suppliers, so the market's supplied assets fall at once. Vaults supplying to the market take their share of the loss, which shows up in their share price.

What is unrealized bad debt?

Debt on positions whose collateral is already worth less than the loan but that have not yet been liquidated or written off. It is often a long tail of small positions not worth liquidating, but it can also be a large account waiting for prices to recover.

Does bad debt mean a protocol is insolvent?

Not by itself. A protocol whose reserves or staking cover exceed its bad debt can absorb it. The dashboard shows bad debt beside the reserves and covers that could pay for it, so the comparison is visible rather than implied.

Which protocols are included?

Aave, Morpho, Compound v3, Euler v2, Spark, Fluid and Venus to start, on the chains where they are deployed. Each protocol's rules are read from its own events, so a new lender is added once its write-off mechanism is mapped.

Deficit
In Aave v3.3 and later, debt left on a reserve after a liquidation has taken all of a borrower's collateral.
Socialized loss
A loss spread across all lenders in a market or vault, lowering what each share is worth.
Dust position
A position so small that the gas cost and penalty make liquidating it unprofitable.

Build DeFi Lending Bad Debt Tracker on verified data.

Start free in Voltfin Studio: boards, tables and reports where every number opens its receipt. Tell us which data you need first and we will build it next.