Cadabra 2.0
Cadabra (EN)
Cadabra (EN)
  • Introducing Cadabra
  • Cadabra's mechanics
  • Security and Audit
  • Short Overview
  • Community
  • Roadmap
  • Cadabra v1
  • Articles
    • Cadabra 2.0 vs 1.0. Advantages and Differences
    • High yield at the launch of Cadabra 2.0
    • ABRA emission + External Yield. Complementarity
    • ABRA Locking: why it’s essential and how it increases your yield
    • ABRA locking migration vs Unlocking. What to choose?
    • Strategies boost algorithm
  • Team
  • Strategies
    • Strategies
    • Yield sources
    • Epochs
    • Voting
    • Liquidity Rebalancing
    • Strategies' APR
    • Underlying Protocol Rewards (UPR)
  • Tokenomics
    • ABRA
    • Emission
    • Locking and veABRA
    • Contracts
    • v1 -> v2
  • Earn with Cadabra
    • Yield from Strategies (ABRA)
    • Holder bonus
    • Yield for Voting (UPR)
    • Yield for Locking (Rebase)
    • Referral Program
  • Referral Program
    • Referral Rank
    • Rewards and Bonuses
      • Emission for Referral Rewards
    • Team bonus and Binary Tree
    • v1 -> v2
  • Airdrop
    • Launch Airdrop (season 2)
    • Airdrop (season 3)
Powered by GitBook
On this page
  • 1. User Boost Factor
  • 2. User–Strategy Position Weight
  • 3. Token Distribution
  1. Articles

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}Su​=TVLLPdeposit​​

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

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

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

If the user withdraws LPwLP_wLPw​ amount of tokens out of his total LPuLP_uLPu​ amount of liquidity then the SuS_uSu​ is updated accordingly:

Su′=SuLPwLPuS_u^{'}=S_u\frac{LP_w}{LP_u}Su′​=Su​LPu​LPw​​

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

WBu=Su⋅TVLWB_u = S_u \cdot TVLWBu​=Su​⋅TVL

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

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

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

  • APRsAPR_sAPRs​ — 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} Du​=s∑​Du,s​

1. User Boost Factor

βu=min⁡(1,  WBuDu)\beta_{u} = \min\left(1,\; \frac{WB_{u}}{D_{u}}\right) βu​=min(1,Du​WBu​​)
  • 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,s⋅APRs⋅βuW_{u,s} = D_{u,s} \cdot APR_{s} \cdot \beta_{u}Wu,s​=Du,s​⋅APRs​⋅βu​
  • APR sets the priority between strategies.

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

3. Token Distribution

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

Wtot=∑u∑sWu,sW_{\text{tot}} = \sum_{u} \sum_{s} W_{u,s} Wtot​=u∑​s∑​Wu,s​

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

Rewardu,s=R⋅Wu,sWtot\text{Reward}_{u,s} = R \cdot \frac{W_{u,s}}{W_{\text{tot}}} Rewardu,s​=R⋅Wtot​Wu,s​​

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,s⋅APRs)\text{Reward}^\text{baseline}_{u,s} = \min\left(\text{Reward}_{u,s},\; D_{u,s} \cdot APR_{s} \right) Rewardu,sbaseline​=min(Rewardu,s​,Du,s​⋅APRs​)

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

PreviousABRA locking migration vs Unlocking. What to choose?NextTeam

Last updated 1 month ago