Ensuring that sufficient liquidity is maintained for alAssets is the primary challenge for Alchemix. So far, liquidity has been restricted to stable pairs and a trial of alUSD/alETH pairing on Uniswap v3 with Arrakis. This proposal requests governance approval for $50k of discretionary funds in ALCX from the Alchemix treasury to be granted to the Bizgov subDAO to run some liquidity pilot programs. These pilot programs will spin up new pools, test how they perform, and evaluate if our liquidity costs can be reduced with some of these new pools. This would also show if these pools would cost-effectively generate enough volume for Chainlink oracles to be operated.
Context
Alchemix currently operates liquidity pools in the form of alUSD<->stablecoins and alETH<->ETH.
Liquidity pools need to be able to provide a certain amount of yield to incentivize people to provide liquidity. Yield comes from two distinct sources: Swap fees and incentives.
The larger the trading volume, the larger the swap fees.
However, if there is not enough volume and consequently yield from swap fees, protocols that need a certain pool to exist usually pay incentives to LPs (Liquidity Providers) to supplement the swap fees. Protocols usually use their governance tokens for this purpose, which is mostly the case for Alchemix as well.
Needless to say, this incentivization cycle costs money, and every protocol would like for more swap fees, such that they would not have to pay to incentivize the liquidity pools.
The only swap fees that the alAsset pools currently accrue come from people taking an Alchemix loan and then swapping their alAssets to other assets, or from Alchemix depositors buying discounted alAssets to repay their loans and net a small profit in the process (this volume also generates a very small amount of additional volume in other alAsset pools to arbitrage the price difference, but this is negligible).
This means that for alAsset pools, almost all of the rewards come from liquidity incentives, paid by Alchemix (there are reward multipliers that we gain by bribing curve voters instead of using direct ALCX emissions, but this proposal does not intend to go into details on this mechanic). On Curve, alAsset pool swap fees make up 0.2% yield, while incentives make up the rest, which ranges from 4% to 12%.
- There are a few different mechanics through which this could change.
The more use-cases alAssets receive in other protocols, the more frequently people would buy and sell them. It has been the goal of Alchemix to seek out and enable such use-cases, but there have only been a lower number of integrations to date. The BizGov subDAO will continue to work on getting alAssets onboarded in as many places as possible, but this is a continuous process.
- If alAsset pools are used to facilitate trades for external assets, then swap fees accrue even if traders are not trying to buy or sell the alAssets themselves. However, the current liquidity pools do not enable this use-case, as there are no pools that connect alUSD and alETH pools.
Test Pools
This proposal seeks governance approval to run tests to determine if by setting up pools that connect our fractured liquidity, enough volume can be generated to lower our overall incentivization costs.
The reason for the uncertainty is that volatile pools (where the two assets in the pool are expected to fluctuate in value compared to each other) require much higher reward APRs to run. So the volume that is generated by such a pool that then flows through the base alAsset pools needs to be high enough to justify the certainly higher APR that we would have to pay for the volatile pool itself.
We have run only one such test lately, through the Arrakis UniV3 alETH-alUSD pool. The learnings from this experiment are included in the appendix at the end of this post.
The first thing to identify is the right DEX(es) and protocols for the experiment. We need to be able to ensure that the pools are concentrated, while at the same time being able to provide rewards to LPs. The second is to figure out which chain (or chains) to run the experiment on, but Optimism seems like the prime candidate.
We also might need to test different pool compositions (alETH-alUSD, alETH-USDC, alUSD-ETH for example) and different fee tiers, so that we can identify the pool (or pools) that generate the best results.
Voting
Voting is single-choice.
The choice of Approval allows $50k in ALCX to be spent over the course of this trial run on pool incentives chosen by the Bizgov subDAO.
The choice of Disapproval does not allow any funds to be spent for this purpose.
- Approve
- Disapprove
- Abstain
Appendix: Learnings from the Arrakis Univ3 pool
A test was run on Arrakis for an alETH-alUSD pairing. The original proposal can be seen in the forums here.
Arrakis operates UniV3 pools with a set range for the liquidity, which is then occasionally adjusted if the price moves significantly in either direction. The pool that was set up had a very large range, 400% up and 400% down (This means that the price of alETH can fall to 25% of its value, or rise to 4 times its value and the pool would still be in range without any manual range correction).
The swap fee level can also be set in UniV3. Most pools utilize 0.05%, 0.3% or 1%. This means that whenever a trade takes place, the trader pays the set percentage of the value of the trade to the liquidity providers.
This means that, when looking at purely arbitrage opportunities (which this pool was supposed to be used for), it only makes financial sense to make a trade, once the price level of the assets in the pool have moved at least as much as the swap fee percentage. Otherwise the swap fees that the traders make would be larger than the arbitrage opportunity, resulting in a loss.
An arbitrage trade works if there is a price difference in one pool compared to another. The trader starts with an asset (i.e. USDC) and at the end of the trade would have more of the (typically) same asset, after deducting swap fees, gas fees, etc.
The simplest arbitrage route happens between 2 pools holding similar assets, taking the following route: USDC->alUSD in Pool 1, then alUSD->USDC in Pool 2.
But more complex arbitrage routes are also possible, it all depends on how sophisticated the bot used by the trader is.
A main question when setting up the Arrakis pool was, if bots would indeed take the route that we assumed they would, which is
Step 1: Swap USDC to alUSD in one of the alUSD pools
Step 2: Swap alUSD to alETH in the alETH-alUSD pool
Step 3: Swap alETH to ETH in the Curve or Saddle alETH pools
Step 4: Swap ETH to USDC
Or vica-versa. If it is an actual trade through a trade aggregator service where someone is actually swapping USDC to ETH, then Step 4 is not performed.
Based on the swaps that took place in the pool, we can conclude with certainty that this is indeed how most trades happened.
What this means is that whatever volume the alETH-alUSD pool accrues, will generate an equal amount of volume simultaneously in two alAsset pools, essentially having triple the volume in the alAsset pools, accruing swap fees.
Trade aggregator services have for the most part successfully picked up this pool and were able to route through it.
These are the positives.
The negatives are two-fold:
- Uniswap is still, to this day, not providing pricing for the pool, which means that APRs, accrued volume and swap fees are not available, essentially making the pools invisible. Arrakis was using the data provided by uniswap, so no metrics were available on Arrakis either. If we ever start using this pool again, we need to ensure that Uniswap will price it accordingly. On top of this, even if these metrics were available, pool reward APRs would only have been available on Arrakis’ UI, which does not provide a way for LPs to browse the pools based on performance, which again meant that this pool had no chance of being seen by general LPs.
So in the future we need to make sure that the pool is visible and correct organic and reward APRs are displayed on a UI that general LPs frequently use, so that the pool gets visibility.
- The pool had a weaker than expected performance. This was caused by two factors:
*The pool was running on ETH mainnet and its size was only $200k. This proved to be too small for the amount of gas fees that traders incur on mainnet.
*The pool was not concentrated enough, meaning that even a $2k trade (which was the typical arbitrage trade size) incurred almost 1% slippage on this pool alone.
This all meant that the price of ETH needed to move more than 2% for a single arbitrage trade to happen in this pool, with the overall swap fees only being 0.13% (counting the base alAsset pools as well). 1.87% was slippage and gas fees. Ideally, arbitrage should be able to happen very close to the percentage change that the swap fees constitute by themselves, so in this case 0.13%.
Overall either the pool needs to be two orders of magnitude larger, or it needs to exist in a low gas environment.
Also, the pool’s liquidity needs to be concentrated, so that larger trades can take place with the same pool size.
So all-in-all, the Arrakis pool should not be continued for the above reasons, but it has provided useful data that we can use to continue experimenting and find ways to successfully utilize the huge amount of alAsset liquidity that exists on the market today.