Decentralized Revenue Aggregator

Automatic pool selection
The Zunami Protocol utilizes decentralized revenue aggregator to select the most profitable stablecoin pools and optimally balance funds between them, eliminating the need for constant market research and manual transfers. This allows for users to generate passive income with minimal effort. The community and the Zunami team continually analyze the risk/profit ratio of stablecoin locations and through DAO voting, make decisions regarding strategy and asset rebalancing to ensure users receive the highest possible yield while diversifying their funds across trusted pools and dAPPs.

Omni pool

Zunami Protocol Omni Pool
Zunami offers the Omni pool, a decentralized location for users to deposit USDT, USDC, and DAI. These funds are then distributed among multiple strategies, which can range from 2 to 10 at a time. The selection and rebalancing of these strategies is determined by a DAO vote.
The DAO's role is to identify new strategies, put them to a vote, and ensure timely rebalancing and diversification of funds. Regardless of which strategy the funds were allocated to, each depositor in Zunami will receive a ZLP token proportional to their contribution to the protocol. All profits generated by the Zunami Protocol will be distributed among ZLP holders, with the exception of a performance fee which will be directed to the treasury. But if ZLP is used as collateral for UZD, which is held in the pool on Curve, then all the income from the Omni Pool goes into the treasury and is subsequently used for bribing. In the future, all the income from the collateral will be distributed among ZUN stakers.

Strategies and Auto-compounding

The DeFi ecosystem is becoming increasingly complex, and to maximize yield, users need to deposit into Curve and take LP tokens to StakeDAO or Convex. The Zunami protocol simplifies this process by creating a number of strategies and automating the entire process in one transaction, making it more convenient for users. Users receive rewards in the form of tokens, but for those with small deposits, selling these rewards can be unprofitable due to high commission costs or lack of time. Zunami takes care of selling the rewards for you, allowing you to fully benefit from compound interest.
Zunami Protocol Ethereum version
Zunami Omni pool enables users to send stablecoins (DAI, USDC, and USDT) as either a direct or optimized deposit and receive ZLP (Zunami LP tokens) in proportion to all funds invested and earned by the protocol. Then, Zunami puts the stablecoins into a set of our strategies (usually 2-3 strategies in operation), which in turn puts them as LP into Curve pools, receives Curve LP, and then stakes them in Convex or StakeDAO reward contracts (Gauges).


The are two types of pools exist on Convex. Pools with [CRV, CVX] rewards and [CRV, CVX, Additional rewards...].
Let's define some variables that we need fo calculation:
Where i is pid of Convex reward poollpiprice of lp tokentsitotal supplyrireward rateatpiadditional token priceariadditional reward ratecurveAPRibase Curve APRperiodFinishidate (timestamp) when reward for pool will be disabledcvxCliffs=cvxTotalCliffscvxTotalSupplycvxReductionPerCliffcvxRewardPrice=cvxPricecvxCliffscvxTotalCliffs\text {Where } i \text { is pid of Convex reward pool} \\ lp_i - \text {price of lp token} \\ ts_i - \text {total supply} \\ r_i - \text {reward rate} \\ atp_i - \text {additional token price} \\ ar_i - \text {additional reward rate} \\ curveAPR_i - \text {base Curve APR} \\ periodFinish_i - \text {date (timestamp) when reward for pool will be disabled}\\ \allowbreak\\ cvxCliffs = cvxTotalCliffs - \frac{cvxTotalSupply}{cvxReductionPerCliff}\\ \allowbreak\\ cvxRewardPrice = \frac{cvxPrice * cvxCliffs}{cvxTotalCliffs} \\ \allowbreak\\
Also, we need a binary function for make a decision based on the current timestamp:
f(z)={0if z<currentTimestamp1if z>currentTimestampf(z) = \begin{cases} 0 &\text{if } z < currentTimestamp \\ 1 &\text{if } z > currentTimestamp \end{cases}
And some constants:
Seconds in ETH block is 15Blocks per year in ETH is 2102400\text {Seconds in ETH block is } \boldsymbol{15} \\ \text {Blocks per year in ETH is } \mathbf{2102400} \\

Pools APR calculation formula

Based on the following formula, we can calculate annual percentage rate (APR):
APRi=curveAPRi+f(periodFinishi)152102400cvxRewardPriceritsilpi+f(periodFinishi)152102400cvxPriceritsilpi+k=0Nf(periodFinishk)152102400atpkarktsilpi=curveAPRi+f(periodFinishi)31536000ri(cvxRewardPrice+cvxPrice)TVLi+k=0Nf(periodFinishk)31536000atpkarkTVLi,where k is pid of additional reward poolTVLi=Total value locked in pool APR_i = curveAPR_i + f(periodFinish_i)* \frac{15 * 2102400 * cvxRewardPrice * r_i}{ts_i * lp_i} + \\ f(periodFinish_i)* \frac{15 * 2102400 * cvxPrice * r_i}{ts_i * lp_i} +\sum_{k=0}^{N} f(periodFinish_k) * \frac{15 * 2102400 * atp_k * ar_k}{ts_i * lp_i} = \\ \allowbreak \\ curveAPR_i + f(periodFinish_i)* \frac{31536000*r_i*(cvxRewardPrice + cvxPrice)}{TVL_i} + \\ \sum_{k=0}^{N} f(periodFinish_k) * \frac{31536000 * atp_k * ar_k}{TVL_i} , \text {where k is pid of additional reward pool} \\ \allowbreak \\ TVL_i = \text {Total value locked in pool }
In this formula we calculate the APR for CRV, CVX and APR for an additional reward pools. The final APR is the sum of them (If we are not in the time interval when the pool is disabled)

APY for pools

APY (Annual Percentage Yield) can be found from APR:
APYi=(1+APRin)n1, where n compounds period in yearAPY_i = (1 + \frac{APR_i}{n})^n-1 \text {, where } n \text { compounds period in year}