Disclaimer: This post is written for educational purposes and does not constitute investment or financial advice.
This is the second in a three part series showcasing the mechanics behind the PhutureDAO index platform. In this post, we will draw attention to the rebalancing system which provides the functionality to move each index asset on the platform from its current weight towards its target weight.
Who pays for rebalancing?
The PhutureDAO’s rebalancing system is actuated by traders and liquidity providers within the ecosystem. Each participant will call the rebalancing function when they interact with the protocol. Therefore, each swap and liquidity provision/withdrawal initialises the rebalancing mechanism which pushes the protocol towards perfect balance. Embedding the rebalancing function within these interactions allows the platform to autonomously maintain balance.
How does rebalancing work?
The PhutureDAO protocol takes a macroscopic view to rebalancing by calculating the perfect weight for an asset given all the indices that include it. This feature enables each liquidity pool to effectively exercise control over a large number of indices, creating an efficient mechanism for rebalancing as the system scales.
The protocol’s default base asset is USDC and as such, each index asset is valued in USDC. The aggregate of these individual values computes the global worth of all index assets on the platform. In order to calculate whether an index asset is under or overweight, the desired perfect weight is multiplied by the global index value to ascertain a target USDC value for that index asset. The target USDC value is then compared to the current USDC value to determine whether the index asset is under or overweight.
The process of executing the desired rebalances relies on three attributes of the protocol. The first, is the swap fees generated by traders. The second, is the reserve of USDC tokens held in the index buffer pool. The third, is the direct swapping of overweight assets for underweight assets.
Swap fees are split into three components. The first is the portion that goes to the liquidity providers and this fee is always taken in the asset being sold into the swap. The second portion goes to the DAO and is always taken in USDC. The final portion contributes to rebalancing via the index buffer pool or directly to an index asset pool and is taken on either side of the swap depending on the system state.
The rebalancing fee enables the system to rebalance index assets at zero cost to the index investor. The tradeoff for this is it’s only able to move an asset towards the desired weight in small increments. In addition, actively traded assets will rebalance faster than less actively traded assets. Let’s examine the dynamics of the final portion of the fee that contributes to rebalancing by working through an example in each of the possible states. For this, let’s assume that a trader has made a swap on the USDC/LINK pool.
LINK underweight and USDC overweight
In the case where LINK assets held in the index pool are underweight, the protocol will opt to take the rebalancing fee in LINK and transfer directly to its respective index pool. Over time as more trades are made these fees will help push the index pool towards the target weight.
LINK overweight and USDC overweight
When LINK and USDC assets held in their respective index pools are overweight the protocol will take the rebalancing fee in USDC and transfer it to the index buffer pool. Sending the fee to the index buffer pool allows it to be used elsewhere in the system.
USDC underweight and LINK overweight
This is the opposite of the first scenario and will result in the rebalancing fee taken in USDC and transferred to the USDC index pool.
USDC underweight and LINK underweight
When both assets are underweight the protocol will default to the asset that is most underweight. In this situation, let’s assume that LINK is the asset most underweight and therefore, the rebalancing fee will be taken in LINK and transferred to the LINK index pool.
NOTE: If the trader makes a swap across two liquidity pools there are three potential destinations for the rebalancing fee. If a swap of SNX for LINK is initiated it implicitly means selling SNX for USDC and buying LINK with USDC. This is due to the protocol’s restriction on USDC as the only base asset. Therefore, the protocol will either take the fee in USDC, SNX or LINK. The chosen asset will depend on the current balance of the three assets (SNX, USDC and LINK) with the system defaulting to the most underweight asset. If all three assets are overweight then the system will take the fee in USDC and send it to the index buffer pool.
Direct swaps are an effective method of rebalancing assets that have experienced large price changes or assets that are infrequently traded. Whilst, internal swaps do not incur trading fees they still incur slippage at a cost to the index investors. For this reason, we define thresholds that prevent the protocol from rebalancing too often using this method. The threshold parameter will be based on the delta between the current weight of an asset and the target weight. If the delta is smaller than the threshold, direct swaps will be disabled. Conversely, if the delta is larger than the threshold direct swaps will be enabled. Notably, when an asset is within its threshold, rebalancing fees will continue to operate.
Direct swaps maximise for the action that will have the highest positive impact on the balance of the protocol. Therefore, the logic will always choose to rebalance the most overweight and underweight index assets that are outside the acceptable threshold discussed above.
In most cases, there will be a difference between the amount sold of an overweight asset and the amount required to rebalance the underweight asset. In these situations, the discrepancy will either be deposited or withdrawn from the index buffer pool.
Let’s take a look at several different states to showcase how direct swaps work in practice.
Underweight and overweight assets are equal
If LINK is overweight by 10,000 USDC and SNX is underweight by 10,000 USDC then the system can simply swap the overweight portion of LINK and deposit it into the SNX index pool to bring the two assets to their target weights.
Underweight and overweight assets are unequal
If LINK is overweight by 10,000 USDC and SNX is underweight by 5,000 USDC the protocol will need to deposit the additional USDC into the index buffer pool. Thus, 10,000 USDC worth of LINK will be converted to USDC and of that, 5,000 USDC will get transferred to the index buffer pool. The remaining 5,000 USDC will be swapped for SNX and transferred to the SNX index pool. The sum of these actions brings the two assets back into balance.
On the other hand, if LINK is overweight by 5,000 USDC and SNX is underweight by 10,000 USDC then the protocol will need to withdraw USDC from the index buffer pool to cover the difference. Thus, 5,000 USDC worth of LINK will be swapped for USDC and another 5,000 USDC will be added from the index buffer pool. The combined 10,000 USDC will be sold for SNX, bringing the two assets back into balance.
In summary, PhutureDAO’s rebalancing system leverages two systems in conjunction to provide cheap, flexible and effective reweighting of index assets. The protocol’s macroscopic viewpoint allows it to optimise the process by assessing and correcting the global balance of an asset held across multiple indices.