Summary
Establish a convention for new Indexed.Finance Index products to contain a base currency token as part of the index to allow swaps into and out of the index using that base currency. This would substantially replace the need for providing liquidity for the index tokens by allowing each index to act as its own AMM and source of liquidity. Investors in the Indices would be encouraged to Mint/Burn from the base currency rather than swapping on 3rd party AMMs.
Motivation
Indexed.Finance concluded the Liquidity Incentive program in March 2022 and a long-term solution is needed to allow new and existing investors in Index products to be able to buy and sell the indices. Olympus style Protocol Owned Liquidity has been explored but would require selling NDX for bonding Index Liquidity Pairs at a time when NDX tokenomics are somewhat uncertain. By making a base currency (ETH, MATIC or USDC for instance) part of each index at a fixed weighting, we could essentially ensure that the base currency represents liquidity for the index at a fixed percentage (i.e. 20%) of the total index Net Asset Value. Removing reliance on liquidity providers or liquidity as a service would provide a high level of independence and decentralization for the indices. I would note that @pr0 already alluded to this concept in his recent proposal Flagship CC10 Index - A retail friendly index to track the market
Buy/Sell Impacts
Being able to rely on liquidity within each index would then allow a more streamlined user experience with 2 primary actions. For the purpose of these examples, we’ll imagine an Index called IOL which has 5 components including 20% fixed weighting for ETH:
BUY Action: Mint IOL Token from single swap-In of ETH
The user experience is that they provide ETH and in return get IOL tokens. The ask price for IOL from the index may be above or below the NAV depending on whether ETH is overweight or underweight in the index.
SELL Action: Burn IOL Token from single swap-out of ETH
The user experience is that they provide IOL tokens and in return get ETH tokens. The bid price for IOL may be above or below the NAV depending on whether ETH is overweight or underweight in the index. An exit fee would be collected and paid to the treasury (this needs validation, but I believe it is the current behavior for all burn operations.)
The following table illustrates the impact of the base currency weighting on the effective price that is offered when a investor buys or sells a token. An assumption is made that all other index components are at their target weights:
Base Currency Weighting | BUY Action | SELL Action |
---|---|---|
ETH is Overweight | Index Offered at Premium to NAV | Index will be sold at a Premium to NAV |
ETH is at weight | Index is offered at NAV | Index can be sold at NAV |
ETH is Underweight | Index is offered at a discount to NAV | Index will be sold at a discount to NAV |
Indexed.Finance (Balancer V1 fork) Swap Mechanics
There is a very good detailed explanation of the Balancer V1 Pools here:
https://medium.com/balancer-simulations/understanding-balancer-pools-c2b877dcc082
An important excerpt relevant to this RFC is the following:
One of Balancer Pools’ most important features is the option to provide liquidity in only one token asset instead of the whole basket. This single-asset liquidity provision returns proportional pool shares. The number of pool shares is solely defined by the current supply of pool shares, the token balance and weight of the token added.
P _issued is the number of pool shares issued to a liquidity provider, P_supply is the current balance of pool shares (before liquidity provision), A_t is the amount of tokens added and B_t is the balance of tokens in the pool (before liquidity provision). Note that this formula applies only in case there is no swap fee.This option to add liquidity improves the user experience for liquidity providers significantly. However, in contrast to a full-basket liquidity provision (liquidity provider supplies all assets in the pool*)*, this transaction affects the ratio of token balances in the pool — and as a result the price! Like in a trade, a swap fee is charged.
Open questions for input
This RFC is preliminary and needs further input before a full proposal can be developed, the following are immediate topics for consideration and discussion:
- Gas Price for Mint/Burn vs AMM swap: We need to compare the gas impact of this approach on individual transactions vs. AMM swaps to make sure it is viable on ETH Mainnet
- Base currency Selection: I think a reasonable convention here is that ETH would be the logical base currency for Mainnet, Matic for Polygon, and USDC or DAI in case of any stablecoin index
- Sizing Liquidity in the Index: Some analysis is required here to determine what a suitable fixed weighting would be for the base currency in an index. If we assume the base currency toke is present for the purpose of liquidity only, then we likely want it as small as is needed so that the rest of the pool can be allocated to the core components of the Index. Observations in the most popular Balancer pools seem to support a 20% base currency composition.
- Scoring Strategies: We currently have 3 scoring strategies implemented (ScoreBySqrtCMC, ScoreByCMCBarbell6, and ScoreByFiveWaySplit) and I’m not sure any of them are 100% suitable for this idea, probably ScoreByFiveWaySplit as used in FFF is the closest, but we probably would need something that is a combination of SqrtCMC with a Fixed weight element for the base currency.
- Continued reliance on Uniswap V2 liquidity: It is a fact that the current platform requires Uniswap V2 liquidity for any index components, I don’t think any new constraints emerge, long term we should continue to look at Balancer V2 and the roadmap that @Norsefire published last year.
- Nirm Compatibility: Nirn compatibility is not a requirement, but we should keep it in mind, I still think long-term that Nirn has a lot to offer, especially in the context of an Index designed to harvest lending market yield.