TLDR:
- Set BNT/TKN weights according to the observed correlation between TKN and BNT price
Proposal
Weights
For this proposal I’ll assume the reader is somewhat familiar with the idea of “weights” in Balancer.
Their math is proven, battle tested and well documented.
Roughly it goes like this:
Standard constant product x * y = k AMM means that both TKN on a curve are always treated as the same value by the AMM.
If you have 1000 USDC and 1000 BNT on the USDC/BNT curve then BNT is $1 by definition.
If you have 1000 USDC and 500 BNT on the USDC/BNT curve then BNT is $2 by definition.
In the Balancer model there is the concept of “weight” where different ratios can be specified for a curve.
In the above example, we could set a 2:1 ratio instead of a 1:1 ratio then:
1000 USDC : 1000 BNT on curve = BNT is $0.5
1000 USDC : 500 BNT on curve = BNT is $0.25
This model has two interesting properties to consider for this proposal:
- TKN liq can be many multiples above BNT on a curve, last time i checked balancer was accepting 50:1 weights i think
- IL (and slippage) behave differently according to the weightings
Coinvestments
Currently when single sided liq is to be increased via coinvestment there is BNT minted at some price in 1:1 ratio with TKN.
This is completely reasonable and safe provided that the TKN price is correlated with the BNT price, especially for a high volume TKN that will be bringing in trading fees. However, prices tend to trend.
When a TKN moons relative to BNT, the LPs for that TKN experience a deficit effectively freezing both withdrawals and deposits to the protocol. Intuitively people have been buying TKN (it mooned) by putting BNT onto that curve and taking TKN off the curve in each trade, so there’s less TKN in the protocol to honour the staking ledger on withdrawal and deposits inherit existing deficits.
When a TKN dumps relative to BNT, all other TKN on the protocol experience a deficit. Intuitively people have been selling TKN by buying BNT, then selling that BNT for “something else”, putting the “something else” into deficit.
The logic goes that if we bring many different TKN into the protocol then it will look like a “diversified portfolio” as all the BNT on all the curves will generally compensate for individual TKN issues and cancel each other out, whatever the issues may be. Further, if BNT price has an “index effect” then IL for any TKN is relative to the market, not to e.g. $1, which drastically reduces magnitude of IL for TKN that are all correlated against each other.
The problem is that if we observe something different to a TKN tracking the BNT price nicely, like a low-volume TKN mooning or dumping, it’s not clear that the coinvestment lever is the right lever to pull. Definitely not trying to pick on ACRE here but here is an example requesting that BNT be minted as a response to price action.
However, if we see product/market fit for bancor as liquidity for long tail assets, we have to make this work somehow, as long tail assets are exactly the tokens most likely to pump/dump out of step with the broader market (ignoring stables).
Correlation as weight
With the huge caveat that this is “driving in the rear view mirror” as we can only respond to price movements in the past, not the future.
This proposal is that we weight pools according to their observed correlation with BNT.
What I’m hoping is that we model this and will probably discover situations in which this is beneficial and situations where it makes things worse (there’s no free lunch).
But it could be a good lever to pull in certain situations where we otherwise would have manipulated the BNT supply itself, instead we could modify the amount of BNT on curve required to sustain a certain TKN liquidity.
I was thinking maybe the r value for correlation might be helpful here, between observed TKN and BNT price over some time frame.