deposit_interest_rate and borrow_interest_rate are annual fractions. Read interest_rate_type first: it says whether a rowβs rates apply from that block onward or over the interval that just closed.
Columns
| Column | Type | Description |
|---|---|---|
block_timestamp | TIMESTAMP | Time of the block containing the rate update. Partition column. |
block_number | INTEGER | Number of the block containing the rate update. |
transaction_hash | STRING | Hash of the transaction that emitted the rate update. |
log_index | INTEGER | Position of the rate update in the block. |
unique_id | INTEGER | Row key: fingerprint of chain_id, block_number, transaction_hash, log_index, lending_market_reserve_id. The reserve is part of the key because one rate update can apply to several reserves at once. |
event_type | STRING | Constant interest_rates; stacking key across the lending facts. |
project_id | STRING | Protocol operating the market, such as aave. |
app_id | STRING | Deployment of the protocol the market belongs to. |
chain_id | STRING | Chain the rate update happened on. |
lending_market_id | STRING | Market the rate applies to; joins dimensions.lending_markets. |
lending_market_reserve_id | STRING | Reserve the rate applies to; joins dimensions.lending_market_reserves. |
lending_market_contract_address | STRING | Contract the market lives on; not a key. |
token_id | STRING | Token the rate applies to: {token_address}-{chain_id}. |
token_address | STRING | Contract address of that token. |
token_symbol | STRING | Symbol of that token. |
deposit_index | FLOAT | Cumulative interest index on the supply side, starting at 1. The ratio between two rows is what a supplied balance earned between them. Where a protocol reports a realized share price rather than an accumulator (Morpho Blue), it can fall below 1 after a market absorbs bad debt, and the ratio then reads the loss as well as the interest. |
borrow_index | FLOAT | Cumulative interest index on the borrow side, starting at 1. The ratio between two rows is what a debt accrued between them. Over long gaps between rows this ratio and the annualized rate diverge, because Morpho accrues on a truncated series while quoting APY on the exponential; the index is the realized figure. |
interest_rate_type | STRING | How to read the two rates. forward-looking means they apply from this block onward (Aave, Spark, HyperLend); backward-looking means they applied over the interval that ended at this block (Morpho Blue). Constant per protocol. |
deposit_interest_rate | FLOAT | Annual rate paid to suppliers, as a fraction: 0.05 reads 5%. |
borrow_interest_rate | FLOAT | Annual rate charged to borrowers, as a fraction: 0.05 reads 5%. |
Sample queries
- One day, one app
- Daily rate updates per app
A market updates its rates whenever its utilization moves, so an active reserve has many rows in a day.
deposit_interest_rate and borrow_interest_rate are annual fractions.