Metrics Calculation Reference
This page documents the formulas and methodology used to compute vault performance metrics. All metrics are derived from oracle reports stored on IPFS and from on-chain contract state.
Data Sources
Each oracle report is stored on IPFS and contains the following fields per reporting period:
| Field | Description |
|---|---|
totalValueWei | Total ETH value held by the vault at report time |
inOutDelta | Cumulative net ETH flow into the vault (deposits minus withdrawals) |
fee | Cumulative Lido protocol fee balance attributed to the vault |
liabilityShares | Number of stETH liability shares the vault holds (minted stETH backed by vault ETH) |
On-chain values read at the oracle report block:
| Value | Source contract | Description |
|---|---|---|
settledGrowth | NodeOperatorFee | Cumulative vault growth that has been settled with the NO |
feeRate | NodeOperatorFee | Node operator fee rate in basis points (e.g. 1000 = 10%) |
shareRate | stETH | Current stETH share rate (ETH per share, scaled by 1e27) |
Gross Staking Rewards
The gross staking reward for a given period is the increase in total vault value, excluding any ETH inflows or outflows:
grossStakingRewards = (totalValueCurr − totalValuePrev)
− (inOutDeltaCurr − inOutDeltaPrev)
inOutDelta is a cumulative counter, so its delta isolates the organic ETH growth from staking vs. new deposits or withdrawals.
Currently, any ETH change not captured in inOutDelta is treated as staking rewards. This means that slashing penalties, unexpected value changes, or other vault-level ETH movements are included in grossStakingRewards rather than tracked separately.
Daily Lido Fees
The Lido protocol charges fees (infrastructure, liquidity, reservation) on each report. These are tracked as a running cumulative sum in the fee field:
dailyLidoFees = feeCurr − feePrev
This delta equals infraFee + liquidityFee + reservationFee for the reporting period.