[Draft] Proposal for liquidity provision on fiat pairs (LiquidBits.net)

I’m still testing the pool software (the server is stable) and have to admit I couldn’t spend much time in the last two days as there were many items begging for my attention. Will have to do another round of testing when @creon updates the APIs on CCEDK as they apparently changed them without announcement to any of us. So that will delay it further.

My threshold is to have a stable client for at least 24h before I put this up for voting. Smaller flaws can be sorted out as we go I hope. Will let you know when I’m achieving the required threshold. Just started another testround for bitcoin.co.id exchange. Hopefully @creon is able to work on ccedk API wrapper once they have published the documentation.

1 Like

Tks for your hard work.
Really looking forward to contributing to the FIAT pair on CCEDK via your pool since I believe FIAT pair is crucial for maintaining the peg.

1 Like

Just like to have some feedback in preparation of my proposal taking into account the earlier suggestions in this thread. Based on that and regarding the risks I’ve come to the following assessment:

NBT/BTC pair. Risk on the sell side is higher due to volatily and current downwards pressure on BTC
Therefore sell side (holding BTC) should be rewarded higher

NBT/USD pair. transferring USD to an exchange is more difficult then transferring NBT.
Therefore the sell side (holding USD) should be rewarded higher.

NBT/EUR pair, transferring EUR to an exchange is relatively simple and fast with the European SEPA system
Therefore buy and sell side are rewarded equally.

Which would bring me to the following proposed pay-out scheme for each pair in my motion:


Liquidity provided by users will be compensated as follows:

CCEDK EUR/NBT

  • with up to ten percent (10%) per month (0.33% per day) on
    CCEDK’s EUR/NBT pair on both sell and buy side
    to a maximum of 2,500 NBT ( max pay-out 247,50 NBT)

CCEDK USD/NBT

  • with up to ten percent (10%) per month (0.33% per day) on
    CCEDK’s USD/NBT pair on both sell and buy side to a maximum of 10,000 NBT in
    total but split as follows:

0.38% per day up to 5000 NBT on sell side ( max pay-out 570 NBT)

0.28% per day up to 5000 NBT on buy side ( max pay-out 420 NBT)

Bitcoin.co.id BTC/NBT

  • with on average ten percent (10%) per month (0.33% per
    day) per month (0.25% per day) on Bitcoin.co.id BTC/NBT pair to a maximum of 2,500
    NBT in total but split as follows:

0.38% per day up to 1250 NBT on sell side ( max pay-out 142.50 NBT)

0.28% per day up to 1250 NBT on buy side ( max pay-out 105.00 NBT)

using the pool’s calculations to allow a fair distribution of returns amongst liquidity providers.


This is starting point. Unfortunately I understand Creon is no longer available to make the pay-out adjustments in real-time based on Buy/Sell information provided in the wallet, which would have been nice, but might also create new complexities. Therefore I suggest to review and update the rates manually every week and adjust according to the trends and risks thrown at us. Doing this daily creates a lot of work making the pool expensive and we have yet to see whether these incentives will work given the relative small scale of the current proposal.

When successful and adding more liquidity, I’m hoping that the liquidity provision will stabilise with adding fiat pairs and reducing exposure to BTC and with that the costs of liquidity provision. However, there will probably be more arbitrage opportunities for individuals and potentially more fluctuations in the peg on less liquid/non-fiat pair exchanges. It will be interesting to see how this works out and what the best trade off is between expensive NBT/BTC liquidity and fluctuations in the peg on non fiat-pair/less liquid exchanges.

BTW This proposal was held up by the changes in the CCEDK API earlier this week as it was close to launch. Creon’s unavailability only came after that. I’m awaiting confirmation of support in changing and maintaining Creon’s code before advancing this motion. In the mean time I hope to fine tune the motion.

2 Likes

Creon spoke to this earlier. If you reward the two sides unevenly, the custodians will be burnt up in exchange fees. This is because there is little incentive not to sell across the minimal spread to get to the higher paying side.
The solution is to pay both sides evenly, but reward everyone more or less depending on how balanced the two sides are. So no buy side = no one gets paid. Both buy and sell have reached 1/2 of target = full compensation. Both buy and sell have reached target and then some = full compensation + auction-type competition.

3 Likes

I think I’m still not getting this. You assume that everyone prices risk and their position evenly. I’m for starters would be way more comfortable sitting on sell side holding NBT on a BTC/NBT pair for a lower compensation. Because I’m thinking bearish about BTC. Someone else might have a high risk appetite and/or thinking bullish about BTC and takes the higher premium on the buy side. I agree that when the market thinking shift the rates needs to be adjusted to price in the risk appetites. That requires some price discovery which will be fluctuating with the BTC rates. It will be hard to get that right manually, you might need a future like system to the price discovery.

This price discovery might also not necessarily aligned with the buy/sell balance in NBT, but I think in most case it will be.

What might be needed and is more complicated is to increase or decrease the limit of the pool temporarily on either side until the price is low enough for people to flee or high enough on the other side to move to their side.

What am I missing in my thinking?

For crypto/nbt pairs, I actually agree with you that holding should be compensated differently so as to speculate the market. With nbt/fiat, however, you cite difficulty transferring fees as the reason to use the unbalanced compensation model. If the price is known, like nbt/$, then we should not compensate one side or the other for holding because then we’re paying liquidity rates for parking utilities. When the exchange price has a stable value we should be compensating solely for keeping the peg balanced with even volumes.

Note that there is no reason why the two models cannot be used in conjunction. If buy is compensated .2 and sell is .1 and buy has 1/4 target volume while sell has 3/4 target, buy gets .0667 compensation and sell gets .0333

1 Like

On this first NBT/USD market the price invariant allows for an unbalanced interest rate model. On client registration (and maybe every 5 minutes afterwards), the client sends a signed API request to the server which checks for the deposit and withdrawal history. The server then has a snapshot of the original distribution. Then you can calculate:

R = (original USD balance) - (USD in non-NBT/USD market orders) - (USD open balance)

This gives you the amount of USD you provided to the NBT/USD market. Let your current amount of USD on the buy side be U and you amount of NBT on the sell side be B. With R you can compensate fair w.r.t. the snapshot.

If R < U, i.e. you originally had more USD than now, then min((U-R), B) of your sell side NBT will be compensated at the USD rate.

If R > U, i.e. some of your NBT got converted to USD, then min((R-U), U) of your buy side USD will be compensated at the NBT rate.

EDIT: The same thing of course also has to be done the other way around.

Now this method assumes two things:

  1. All trades end up in a zero sum. On a USD market this can be ensured if the spread is set exactly to the exchange fee.
  2. It is always more expensive to convert over an external loop

Point 2 is especially important. Note that you cannot distinguish users, since one person can have multiple user accounts. This is why the pool only allows a one-time association of a key to an output address. So in order to fake buy support in above method, I could use a proxy account, sell my NBT and move the USD to my other account as “fresh” buy support. This way, although complicated, everyone could switch over with 50% of all NBT to the more lucrative buy side. Note that this would be extremely easy and inexpensive in a NBT/BTC market for example.

I’m not sure I understand this completely. Maybe this helps. Assume I want more bid side liquidity in my pool.
What would change if the pool sizes on bid and sell side would be imbalanced on USD/NBT. e.g. in my example create only 2500 NBT on sell side and 7500 NBT on bid side. Still with 0.38%/0.28% sell/buy.

Moving to sell side will become very unattractive quickly (lower interest rate and high competition bringing it even down further). Why wouldn’t I just stay on bid side where the full 0.38% is offered?

Why would anyone want on the low interest sell side? Its about people switching to the high interest side at low cost.

Because it is easier to get the money there or there is lower risk

So what happens when someone sells to you, pushing you from one side to the other? If there is no price fluctuation, you would simply want to switch back over to the high paying side, passing it along to the next custodian. In that way, you aren’t even doing anything but eating up liquidity in exchange fees. Custodians will just play a game of hot potato and not-it.

If there is risk of price change then switching sides is hedging the market and I agree an unbalanced compensation model is fine.

I don’t think changing the targets on the two sides makes much of a difference for market incentive, it only limits the maximum shareholders are willing to pay.

Why is there a lower risk? Let’s stay with your example. The NBT/USD market on CCEDK has a fee of 0.2%, which you will lose through a switch. The buy side in your example gives 0.1% more interest per day than the sell side. So if I have NBT and I am willing to provide liquidity for more than 48 hours then I absolutely should just make the three clicks and buy some USD on the CCEDK market and let them place by my trading bot.

Note that this increases with the ratio: If the buy side gives 0.4% more per day, then you will already profit after 12 hours.

Thanks for your replies, I appreciate it.

Ok, that makes sense. So based on the BTC market sentiment we can play with the bid/sell price.

Right, that also makes sense for USD as there is no risk. I’m getting there. So there is no way to price USD liquidity brought in vs NBT liquidity?

I described a way with great care a couple of posts before :cry: Nobody is reading my stuff … :wink:

Yah, I read it like 6 times and still don’t get it. Are you saying we should keep track of all inputs and outputs to the exchange, to the liquidity provider, or I don’t get it?

I’m reading it, but not understanding it. Can’t talk for the others. I’m out of my comfort zone with trading on markets besides getting some groceries and selling some oversupply from the garden :slight_smile: My brain is not taking this easily…

1 Like

Yes, you should take the withdrawal and deposit history into account. But you cannot just take these numbers, because they are not necessarily “somehow in the NBT market”. Above method defines the “somehow”.

Doesn’t this undermine the entire thing? Again, I have NBT for sale and USD is valued more. So I transfer NBT to my non-custodial account, sell, and transfer the USD back to the custodial account. Then, when someone sells me their NBT, I just do it again. It does add USD fund transfer to the cost though, so that’s pretty sweet.

What’s wrong with the cooperative fee model? I thought it was great cause it allowed for leveraging all sorts of markets and profitable freelancing.

So why would this be more difficult in a NBT/USD market. Because the proxy account has to buy on a different exchange and transferring USD between exchanges is expensive?

I guess it is the same question as Nagalim in some way?

Yes, its really just that its time consuming (=missing opportunity) and kind of expensive.