ADA - APY ROS Calculations
- Prime Stake Pool

- Dec 19, 2025
- 2 min read

Understanding the Three Metrics
Pool Details now shows three different performance metrics, each answering a different question. They are not supposed to match, and the differences are meaningful.
1️⃣ Delegator Yield (APY)
What it answers
“If I delegate ADA to this pool, what annual return do I earn after costs?”
This is the delegator’s real yield.
What it includes
✔️ Fixed pool cost
✔️ Pool margin
✔️ Zero-block epochs (penalty)
✔️ Stake size effect
✔️ Annualized
What it excludes
❌ Pool pledge advantage
❌ Block luck normalization
Formula (conceptual)
For each epoch:
delegator_rewards =
(pool_rewards − fixed_cost) × (1 − margin)
Then over N epochs:
Delegator APY =
( Σ delegator_rewards )
---------------------- × 73
( Σ active_delegated_stake )
73 epochs ≈ 1 year, so this is annualized
📌 Why lower than pool performance?
Because delegators pay costs and margin, and zero-block epochs hurt small pools the most.
2️⃣ Pool Performance (ROS / ROA)
What it answers
“How efficiently does this pool convert stake into rewards?”
This is a raw performance metric — before delegator costs.
What it includes
✔️ Total pool rewards
✔️ Zero-block epochs
✔️ Annualized
What it excludes
❌ Fixed cost
❌ Margin
❌ Luck normalization
Formula
Pool ROS =
( Σ total_pool_rewards )
---------------------- × 73
( Σ active_pool_stake )
📌 Why higher than delegator yield?
Because this ignores fixed cost + margin — it’s the pool’s gross output.
3️⃣ Luck-Adjusted Pool ROS (AdaStat)
What it answers
“How did the pool perform compared to what it should have earned?”
This is a fairness-normalized metric.
What it includes
✔️ Expected blocks (σ / sigma)
✔️ Network parameters (k, a₀, rewards)
✔️ Zero-block epochs
✔️ No operator cost effects
What it excludes
❌ Fixed cost
❌ Margin
❌ Delegator perspective
AdaStat logic
For each epoch:
Expected rewards = f(
pool_stake / total_stake,
pledge,
network_rewards,
protocol_params
)
Then:
AdaStat ROS =
( Σ actual_rewards / Σ expected_rewards ) − 1
Reported over fixed windows:
12 epochs
73 epochs (1 year)
Lifetime (all epochs)
📌 This now matches your delegator APY closely — as it should.
🔍 Why These Numbers Are Different (and correct)
Metric | Perspective | Costs | Luck-adjusted | Annualized |
Delegator Yield | Delegator | ✅ Yes | ❌ No | ✅ Yes |
Pool Performance | Pool | ❌ No | ❌ No | ✅ Yes |
AdaStat ROS | Network-fair | ❌ No | ✅ Yes | ❌* |
* AdaStat is implicitly annualized via its own epoch windows.
🧠 Key Insight (most important)
❗ Why your results “click”
Delegator Yield ≈ AdaStat ROS
→ Both penalize unlucky epochs and small pool effects
Pool Performance is higher
→ Ignores costs and fairness normalization
Lifetime > ROS73
→ Early epochs were luckier than recent ones
This is exactly what AdaStat, PoolTool, and CExplorer show when interpreted correctly.
✅ Final takeaway (TL;DR)
Delegator Yield = What stakers actually earn
Pool Performance = Raw reward efficiency
AdaStat ROS = Luck-corrected fairness score



Comments