top of page

ADA - APY ROS Calculations

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


  • gitbook_edited_edited_edited_edited
  • linkedinn_edited_edited_edited
  • White Telegram Icon
  • White Facebook Icon
  • White Twitter Icon
  • Untitled-1_edited_edited
  • mediumn2_edited_edited_edited
  • instagramlog_edited_edited_edited_edited
  • discord_edited_edited_edited_edited

 © 2020-2026 Prime Stake Pool | Blocks made in India 

flag-india-web.png
bottom of page