Rebalancing is the process of realigning the weights of a Set, which involves periodically purchasing and selling components to maintain a certain allocation. Typically, users rebalance their portfolios actively by reviewing their portfolio, calculating the optimal allocation, and then trading their excess tokens for the missing tokens needed to create the new portfolio.
Rebalancing for Set works in 3 stages:
All rebalancing criteria are met
A rebalance is proposed
A rebalance is executed and settled
For the most part, Set rebalance based on two criteria which are based on the Set's strategy and the asset that its collateralized by. Those criteria are:
The amount of time a Set needs to wait in order to execute a rebalance. This is applied in order to avoid rebalancing multiple times in a short period of time which would result in higher likelihood of rebalancing slippage, and extra downtime of buy, sell, issuances, and redemptions.
The underlying tokens must go through enough price movement in order to justify a rebalance.
On each Set page, we show the rebalancing criteria to easily visualize if a rebalance is ready to take place.
Sometimes the criteria on TokenSets may appear all green and ready for rebalance, but not trigger right away. This is due to the discrepancy between the real time display prices we show from CryptoCompare vs the actual on-chain price feed the Set smart contracts read from. We currently use Maker's price feed oracles for our on-chain price data.
When all rebalancing criteria are met, the Set enters the proposal period, a grace period where Set token holders can review the proposed rebalance parameters and opt out if they disagree with the proposal. All actions such as buying, selling, issuing, and redeeming are all available during this period.
Once the proposal period ends, the Set enters the rebalancing phase. During this time, buying, selling, issuing, and redeeming are all paused, and the over-collateralized token(s) are traded for the under-collateralized token(s) in a dutch auction by liquidity providers.
At the moment, market makers provide most of the liquidity for rebalances with the eventual goal to open it up to other participants. The liquidity for rebalances is not sourced from Kyber. Liquidity is only sourced from Kyber when you acquire or dispose a Set.
Rebalancing Slippage: It's important to note that users may incur a small amount of slippage during a rebalance under certain circumstances. Rebalancing slippage is a side effect of a dutch auction mechanism used in a Set's rebalance. In a simplified explanation, the more collateral there is to rebalance in a dutch auction system, the more time it will take to rebalance all the collateral. As more time passes in a Set dutch auction, less under-collateralized tokens are needed in exchange for over-collateralized tokens in order for a Set to rebalance to its target weight. During this process, the changing ratio for under-collateralized tokens in exchange for over-collateralized tokens naturally changes the net asset value of the Set as some of the value is either taken out or added in by the rebalancing liquidity provider. This change in net asset value is the rebalancing slippage. This is by design, and built for future use to incentivize open market participants if they want to help with rebalances once rebalance sizes become larger.
After all of the collateral has been rebalanced to its new weights, the rebalance is settled, and buying, selling, issuing, and redeeming are all reactivated again.
For more technical information on how rebalances work, please check the "Rebalancing" section of the Set Protocol white paper linked here.