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_activeActivity 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_yearValue(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 = 3Fees this epoch: Pool A
F_A=10, Pool BF_B=30, Pool CF_C=60⇒F_total=100Equal share:
0.20 × 100,000 / 3 = 6,666.67 $YIELDper poolActivity share (80,000 $YIELD):
A:
80,000 × 10/100 = 8,000→R_A = 14,666.67B:
80,000 × 30/100 = 24,000→R_B = 30,666.67C:
80,000 × 60/100 = 48,000→R_C = 54,666.67
Convert each
R_ito APR using each pool’sTVL_iand annualize (as above).If Pool B has a +10% boost,
APR_BbecomesBaseAPR_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_epochis 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).
