TaoYield Logo

🔎 How Validator APY Calculations Work

For a detailed look at the implementation, visit the APY Calculator GitHub Repository.

TaoYield calculates the Annual Percentage Yield (APY) based on historical validator performance data over selected time intervals (1h, 24h, 7d, 30d). The APY displayed reflects past staking rewards earned by validators.

Data shown in TaoYield is refreshed automatically approximately every minute, providing a constantly updated sliding window of APY information corresponding to your selected interval.


📌 Step-by-Step APY Calculation

The APY calculation differs slightly between the Root Network and Subnetworks:


🌳 Root Network APY Calculation

1. Identify Reward Epochs

Determine the total number of blockchain blocks within the selected interval (1h, 24h, 7d, or 30d). The Bittensor blockchain produces a block roughly every 12 seconds.

2. Collect Dividends and Stake

For each reward epoch within the selected interval, retrieve:

  • Dividends: Validator's earned rewards.
  • Stake: Validator’s total staked amount at that epoch.

3. Calculate Yield per Epoch

For each epoch event, yield is calculated as:

EpochYield=DividendsStakeEpoch Yield = \frac{Dividends}{Stake}

Accumulate these yields by multiplying them together to obtain the compounded yield for the entire interval:

YieldProduct=∏i=1n(1+EpochYieldi)Yield Product = \prod_{i=1}^{n}(1 + Epoch Yield_i)

Then, determine the total interval yield as:

IntervalYield=YieldProduct−1Interval Yield = Yield Product - 1

4. Annualize the Yield (APY)

Convert this interval yield into a standardized annual APY using compounding:

APY=[(1+Interval Yield)seconds per yearinterval duration in seconds−1]×100%APY = \left[ (1 + \text{Interval Yield})^{\frac{\text{seconds\ per\ year}}{\text{interval\ duration\ in\ seconds}}} - 1 \right] \times 100\%

🕸️ Subnetwork APY Calculation

Subnetworks follow a similar approach but include subnet-specific parameters:

1. Calculate Interval Blocks

Find the minimum number of blocks covering the selected interval, adjusted to match the subnet's epoch period (which equals tempo + 1 blocks).

2. Collect Emissions and Stake

For each epoch within the interval, gather:

  • Emissions: Subnetwork rewards.
  • Stake: Validator's subnet-specific stake.

3. Calculate Epoch Yield

Epoch yields for subnetworks are similarly computed by emissions divided by stake for each epoch:

EpochYield=EmissionAlphaStakeEpoch Yield = \frac{Emission}{Alpha Stake}

4. Annualize the Yield (APY)

Annualization follows the same method as the root network calculation:

APY=[(1+Interval Yield)seconds per yearinterval duration in seconds−1]×100%APY = \left[ (1 + \text{Interval Yield})^{\frac{\text{seconds\ per\ year}}{\text{interval\ duration\ in\ seconds}}} - 1 \right] \times 100\%

📌 Important Notes

  • 1h interval special case: To reduce APY volatility for the shortest interval (1h), we extend it slightly to 72 minutes, corresponding exactly to 360 blocks.
  • Data accuracy warning: Validators must have activity data available for at least 90% of epochs within the selected interval. APY calculations may be inaccurate if validator data availability falls below this threshold.

✅ Validator Eligibility Criteria

To ensure accuracy and stability of the displayed APY values, TaoYield filters out validators with very low stake:

  • Root Network:
    TaoYield UI only shows validators with:TAOStake>4,000TAO Stake > 4,000
  • Subnetworks:
    TaoYield UI only shows validators satisfying the following conditions:
    (TAOStake×RootProportion+AlphaStake)>4,000 (TAO Stake \times Root Proportion + Alpha Stake) > 4,000

These criteria eliminate validators with excessively volatile and unpredictable APY metrics caused by low stakes.