Folio v0.9 — CEX + On-chain Consolidation is liveSee what's new →

Aave V3 Position Tracking: aTokens, Debt Tokens, and the Health Factor (2026)

Portfolio·

Aave V3 Position Tracking: aTokens, Debt Tokens, and the Health Factor (2026)

An Aave V3 position is not a static balance — supply gives you aTokens whose balance grows as interest accrues, borrowing creates variableDebtTokens that grow too, and the Health Factor moves with oracle prices. Why interest-in-the-balance and the collateral/debt pair break a naive portfolio view.
Author avatar Wag3s TeamEditorial team specializing in Web3 finance, crypto tax, and DAO operations. Based in Zurich, Switzerland.

Reviewed by Wag3s Editorial Team — verified against the Aave V3 aToken/variableDebtToken model, scaled-balance accounting, and the Health Factor mechanic · Last reviewed May 2026

Aave V3 Position Tracking: aTokens, Debt Tokens, and the Health Factor

An Aave V3 position is the opposite of a static deposit: the asset you supplied grows in your wallet on its own, the debt you took grows too, and an oracle move can liquidate both. A balance snapshot misreads all of this. This guide is the aToken/debt-token model and what it changes for tracking.

TL;DR

  • Supply → aTokens whose balance grows as interest accrues ("interest in the balance") — not a fixed deposit.
  • Borrow → variableDebtTokens that also grow with accrued interest — a growing liability.
  • A position is the collateral leg netted against the debt leg — never read supply alone.
  • Health Factor moves with oracle prices + accrued interest; below threshold → liquidation (a real event).
  • aToken balances change without a transfer (scaled-balance design) — transfer-only ingestion misses the accrual.
  • Tax characterisation is jurisdiction-specific — track the mechanics, confirm tax separately.

Supply: a balance that grows by itself

Supply an asset to Aave V3 and you receive aTokens (e.g. aUSDC). The defining property: interest accrues into the aToken balancebalanceOf() rises over time with no new transfer. So a tracker that treats the aToken as a fixed deposit is wrong from block two onward. The balance is continuously changing, and the growth must be attributed (accrued yield), not read as mysterious inflows or, worse, as phantom acquisitions.

Borrow: a liability that grows too

Borrowing creates variableDebtTokens (e.g. variableDebtUSDC) tracking the outstanding debt plus accrued interest — so the debt side grows as well. A correct Aave position is:

net = aToken collateral − variableDebtToken debt

Reading only the supply side overstates the position and ignores a growing liability. The position is a pair, and both legs move.

The Health Factor

Aave's Health Factor is the risk metric. It moves with:

  • collateral and debt values (oracle prices + accrued interest);
  • per-reserve liquidation thresholds.

Below the threshold, the position is liquidatable — and a liquidation is a real economic event that changes both legs. A tracker that ignores Health Factor can see a position "suddenly change" with no explanation; the explanation is the liquidation, and it must be modelled as such.

Why the balance moves with no transaction

Aave V3 uses a scaled-balance design for gas efficiency: internally a scaled value is stored and the displayed balance is derived via an index, so the visible balance grows without a per-block transfer. The tracking consequence is sharp: a tool that only ingests transfer events misses the accrual entirely. It must read the derived balance and attribute the change — the same "don't trust a transfer-only view" lesson as DeFi position reconciliation.

Tax is jurisdiction-specific

Whether supplying is a disposal of the underlying, whether the accrual is income, and how a liquidation is treated are framework- and jurisdiction-specific and must not be assumed (see cost-basis methods and yield farming tracking). The mechanics above are the tracking layer; the tax characterisation is a separate, adviser-confirmed question.

Practical guidance

  1. Treat aTokens as growing balances, not fixed deposits — attribute the accrual.
  2. Always net collateral against debt — track variableDebtToken growth too.
  3. Model the Health Factor so liquidations are explained, not surprises.
  4. Read derived balances, not just transfer events (scaled-balance design).
  5. Confirm tax characterisation of supply/accrual/liquidation per jurisdiction.
  6. Reconcile the position pair to the protocol with an audit trail.

How vendor tools handle Aave V3

Koinly and CoinTracker model lending positions including aToken/debt-token accrual. Confirm the tool reads derived balances (not transfer-only), nets collateral against debt, models Health-Factor liquidations, and does not book accrual growth as phantom acquisitions — accrual misattribution is the recurring Aave error.

How Wag3s helps

Wag3s Folio reads Aave V3 aToken and variableDebtToken derived balances, attributes interest accrual correctly, nets the collateral and debt legs, models Health-Factor liquidations as events, and surfaces the data for the jurisdiction-specific tax characterisation. See the Folio product page.


Further reading

Sources

  • Aave V3 documentation — aTokens (interest accrues into the balance; balanceOf grows) and variableDebtTokens (outstanding debt + accrued interest)
  • Aave V3 scaled-balance accounting (derived balance via an index; growth without a per-block transfer)
  • Health Factor and per-reserve liquidation thresholds (move with oracle prices and accrued interest; below threshold → liquidation)
Editorial disclaimer
This article is informational and does not constitute tax or accounting advice. DeFi position characterisation is framework- and jurisdiction-specific. Confirm treatment with a qualified adviser.