Pools maths

APY is recalculated every 6 hours (an epoch) from the fees generated by deposits and withdrawals across pools. Each epoch, the protocol computes a reward budget and distributes it to active pools.
Inputs (per epoch)
Pool fees:
F_i
= fees generated by pool i this epochF_total = Σ F_i
(sum over all active pools)Active pools:
N_active
= number of pools that are activated (have met the activation goal)Epoch reward budget (denominated in $YIELD):
R_epoch
= total $YIELD to distribute this epoch (derived from protocol rules and fee model)
Inactive pools get 0 this epoch (no APR) until they activate.
Distribution (20/80 rule)
Equal share (20%) — baseline for every active pool:
R_equal_per_pool = 0.20 × R_epoch / N_active
Activity share (80%) — proportional to each pool’s fees:
R_activity_i = 0.80 × R_epoch × (F_i / F_total)
Pool i epoch rewards:
R_i = R_equal_per_pool + R_activity_i
From rewards to APR
Let TVL_i
be the current staked value in pool i.
APR shown in the UI is the annualized rate implied by the current epoch’s reward pace:
epochs_per_year = 365 × 24 / 6 = 1,460
BaseAPR_i = ( Value(R_i) / TVL_i ) × epochs_per_year
Value(R_i) uses the current $YIELD reference price (e.g., TWAP) at calculation time. Displayed APR is an estimate and updates every 6 hours.
Boosted APR (with Tips)
If a pool has an active boost from Tips (SOL):
BoostedAPR_i = BaseAPR_i × (1 + Boost%)
The Boost% multiplies whatever the current base APR is.
Tips do not affect activation or lock timers—only the APR once active.
Example (simplified)
R_epoch = 100,000 $YIELD
,N_active = 3
Fees this epoch: Pool A
F_A=10
, Pool BF_B=30
, Pool CF_C=60
⇒F_total=100
Equal share:
0.20 × 100,000 / 3 = 6,666.67 $YIELD
per poolActivity share (80,000 $YIELD):
A:
80,000 × 10/100 = 8,000
→R_A = 14,666.67
B:
80,000 × 30/100 = 24,000
→R_B = 30,666.67
C:
80,000 × 60/100 = 48,000
→R_C = 54,666.67
Convert each
R_i
to APR using each pool’sTVL_i
and annualize (as above).If Pool B has a +10% boost,
APR_B
becomesBaseAPR_B × 1.10
.
Edge cases & notes
Just activated: Rewards for a pool start next epoch after activation.
Zero fees this epoch: If
F_total = 0
, the activity share is 0; ifR_epoch
is fee-derived, equal share may also be 0 → APRs show 0% for that epoch.TVL changes: APR reflects the current TVL at the time of calculation.
Decimals/rounding: UI rounds APR to a sensible precision (e.g., 2 decimals).
