Strategies boost algorithm

"Value" in this text refers to amounts denominated in the same unit, typically USD or a specified token

The boost algorithm is as follows:

After each liquidity addition, a user's fixed pool share is calculated as:

Su=LPdepositTVLS_u=\frac{LP_{deposit}}{TVL}

Where LPdepositLP_{deposit} is the value of deposited tokens and TVLTVL is the value of all pools across all chains.

If the user already has a non-zero SuS_u^{} then the new share is added to the old one:

Su=Su+LPdepositTVLS_u^{'} = S_u + \frac{LP_{deposit}}{TVL}

If the user withdraws LPwLP_w amount of tokens out of his total LPuLP_u amount of liquidity then the SuS_u is updated accordingly:

Su=SuLPwLPuS_u^{'}=S_u\frac{LP_w}{LP_u}

At any moment of time a user's working balance is defined as:

WBu=SuTVLWB_u = S_u \cdot TVL

At the end of a reporting period (one day), we have:

  • WBuWB_u — the time-weighted value of the working balance of the user u;

  • Du,sD_{u,s} — the time-weighted value of the deposit by the same user in strategy s;

  • APRsAPR_s — the annual percentage rate (APR) of strategy s

The user's total allocation over which the boost value calculated is:

Du=sDu,sD_{u} = \sum_{s} D_{u,s}

1. User Boost Factor

βu=min(1,  WBuDu)\beta_{u} = \min\left(1,\; \frac{WB_{u}}{D_{u}}\right)
  • 10k in the pool and 100k in strategies → β = 0.1.

  • 20k in the pool (or more) and 20k in strategies → β = 1 (full boost).

2. User–Strategy Position Weight

Wu,s=Du,sAPRsβuW_{u,s} = D_{u,s} \cdot APR_{s} \cdot \beta_{u}
  • APR sets the priority between strategies.

  • A single β applies to all of a user's strategies.

3. Token Distribution

Let RR be the total amount of tokens to be distributed during the period. Total weight:

Wtot=usWu,sW_{\text{tot}} = \sum_{u} \sum_{s} W_{u,s}

The reward that should be allocated to a user for a specific strategy:

Rewardu,s=RWu,sWtot\text{Reward}_{u,s} = R \cdot \frac{W_{u,s}}{W_{\text{tot}}}

If the allocated reward exceeds the reward corresponding to the baseline APR, it is capped at the baseline reward amount:

Rewardu,sbaseline=min(Rewardu,s,  Du,sAPRs)\text{Reward}^\text{baseline}_{u,s} = \min\left(\text{Reward}_{u,s},\; D_{u,s} \cdot APR_{s} \right)

The algorithm starts with the users with the highest Wu,sW_{u,s}, in the case where their reward exceeds the baseline the leftover tokens are simply counted towards the remaining RR

Last updated