bisq-network / bisq

A decentralized bitcoin exchange network
https://bisq.network
GNU Affero General Public License v3.0
4.68k stars 1.26k forks source link

Adopt fee model to de-incentivize offers with huge market price distance #4630

Closed chimp1984 closed 3 years ago

chimp1984 commented 3 years ago

We have more than 500 offers recently. Earlier it was about 300 offers. But this is not as good news as it looks like as most of those offers if you check the offer book have prices far away from market price and will have very little chance to be ever taken but the network need to support those and gets extra load from those. We had earlier a more complicated fee model where the price distance to market price was a factor for the maker fee. I think we need to re-introduce some mechanism to de-incentivize such offers which add no real value to Bisq but adds costs to each node.

Any suggestions how we could adpot the fee model to not get back to the situation where it gets too complicate that people dont understand it, but to have some effect to reduce the number of pointless offers.

One way could be that we keep the simple fee model as it is until a certain price distance. E.g. If price is< 10% different to marketprice model has not change. If its between 10% and 20% we apply double the fee as normal. If its is > 20% we apply 4 times the fee as nomal. If its is > 30% we apply 8 times the fee as nomal. If its is > 40% we apply 16 times the fee as nomal.

The information for the higher fees are only shown to those makers who use a high distance price, so it will not confuse normal users.

I want to note also that I don't want to critizize those makers, they even might try to support bisq by doing that, but in fact it hurts the network and does not add value as nobody takes such offers. Only small benefit is that it make statists look better on the surface and that Bisq gets some fees from those.

oscarguindzberg commented 3 years ago

my 2 cents:

gordonel commented 3 years ago

My 2 sats:

Overall, de-incentivising is not the correct approach IMO. Punishments never work. If you want to make assets cheaper on Bisq, lower the fees for offers with minimum distances for the market price and incentivise traders using negative distance because they might be trading at a loss anyway.

First, I think we must decide if this is a policy worth implementing and then figure out the economics. Unless there is a sound economical decision behind intruding into the free market that is Bisq, I will vote against any proposal that adds what is effectively a progressive "pay as you earn" tax.

TL;DR: unless you can find a way to benefit everyone, let the market and the people in the market decide

chimp1984 commented 3 years ago
* There is no way to "pause" an offer, so putting a ridiculous price is a hack to achieve that.

You can deactivate the offer in open offers view.

chimp1984 commented 3 years ago

It is not about punishment. It is about keeping the balance of costs and benefits. If Bisq gets too many offers we will need more seed nodes and need to optimize network traffic. All that costs money and has to be apid by the DAO stakeholders. Thus the makers creating offers which will not lead to trades are causing costs to everyone - e.g. socializing the costs to all. It is a flood fill network (like Bitcoin) and has its limits what it can handle (like Bitcoin with blocksize). So we have to take care to stay in the limits.

Also if one make 30% gain with a trade a higher trade fee seems to be justified (with BSQ is anyway pretty low).

We could use the average spread like it was used for security deposit recommendation to make a difference between high volatile markets and those markets which are not that volatile.

When I look to XMR, EUR, USD markets those are not that volatile that a 30-50% price diff is realitic. And if you look into the trade statisitcs you will see that those offers never gets taken. I doubt there are trades with > 20% diff. from market price.

chimp1984 commented 3 years ago

Another option is to let users set the limit of price diff for which they are willing to use their resources to support such offers. E.g. I am ok to rebroadcast offers with < 20% market preice diff. All other offers I ignore and dont wast my CPU and network bandwith on those. But I guess that will be more difficult and complex to implement as the above fee based approach. Also seed nodes are major cost and critical element and it will be hard to apply that policy to the seed nodes operators and here we still socialize the costs to the DAO.

gordonel commented 3 years ago

@chimp1984 the rationale makes sense, but unless there's a sound economical and growth logic behind this, I personally won't vote for the proposal. You need to make sure that what you do will not hurt Bisq as a platform (e.g. won't stagnate Bisq growth) and will not hurt users, especially the signers, for whom setting a higher market distance is justified, both personally and for the sake of the platform.

I like your second approach better

chimp1984 commented 3 years ago

To make it more clear. The longer an offer stays online without being taken the more aggregated resources it consumes. To keep an offer live there is published every 6 mintues a refresh message. Those are the messages which floods the network quite heavily. Every node is supporting that, so the costs for keeping your offer online is distributed to all nodes. the gain yoou make when someone takes such an offer is your personal profit but he overall costs it has created is not correctly reflected. An offer which has a good price might be taken very quickly and thus causing much less costs but has paid the same fee. This is socializing costs to the network and is unhealthy.

chimp1984 commented 3 years ago

Maybe anyone could analyse the data (trade statistics) to see which market price distance is realistically used in Bisq. Then we can add a safe margin to not disrupt those trades. I dont care about the traders who set up a 50% offer which will never be taken. As said I dont think they do it with bad intentions, can be quite the opposite, but we need to fix that wrong situation.

cd2357 commented 3 years ago

I agree with @gordonel , higher fees with bigger price distance does go in the direction of progressive tax.

How about taking the other direction: offering rebates to the most desirable sort of offers? For example, offering 50% fee rebate if offer is taken within 1d from offer creation? The rebate could be paid back with the deposit, at the end of the trade.

This would incentivize market makers to stay close to the market price (beneficial for market takers as well). It would also increase the number of trades and possibly volume as well.

It then becomes a market phenomenon, the ability of market makers to decide for themselves and optimize their strategy for "what will make this trade be accepted sooner rather than later". Things could involve:

cd2357 commented 3 years ago

The longer an offer stays online without being taken the more aggregated resources it consumes.

A variant of the above idea to address this point from @chimp1984 : how about making the trade offers "time bound"?

Meaning, if an offer is not taken after let's say 1-2 weeks, the offer "expires", and maker fee is lost.

(If an offer is online for more than 1-2 weeks, its unlikely the trader will be responsive to evtl move his trades forward and confirm the steps, in case the offer is accepted. So some sort of upper time limit makes sense from that perspective as well.)

chimp1984 commented 3 years ago

offering 50% fee rebate if offer is taken within 1d from offer creation?

The fee is paid at create offer time, we dont know when it will be taken.

To decrease the fees makes Bisq even less sustainable as it is already. Bisq hardly earns enough to keep the infrastructure nodes running and way to less to paid for professional development. Most devs work for altruistic reasons not for the little money they can earn atm. But I don't made that proposal to earn more fees, I want to reduce the number of offers which do not add value but which cause costs to everyone. To correct the imbalance of added value to costs.

chimp1984 commented 3 years ago

The longer an offer stays online without being taken the more aggregated resources it consumes.

A variant of the above idea to address this point from @chimp1984 : how about making the trade offers "time bound"?

Meaning, if an offer is not taken after let's say 1-2 weeks, the offer "expires", and maker fee is lost.

(If an offer is online for more than 1-2 weeks, its unlikely the trader will be responsive to evtl move his trades forward and confirm the steps, in case the offer is accepted. So some sort of upper time limit makes sense from that perspective as well.)

I was thinking on that as well, but I guess that has even more potential negative effect in low volume markets. There can be legitimately offers with good price and nobody takes it. We have to be thanksful for those market makers to keep their offers and must not punish them.

chimp1984 commented 3 years ago

I think we would need a bit more data also to make any decision. I looked at http://104.248.88.175/ and an hour ago it was more then 500 offers, now its about 400. so it seems there might be some or a few market makers which tons of offers getting added when they go online. Atm the offers with > 30% in EUR, USD snd XMR are just a few, not justify any extra effort. But I guess once there are > 500 those offers might be the sort of offers which do not benefit the platform. Will have a look to offers again once we get a offer spike again.

dcod3d commented 3 years ago

Since the fee is paid at creation, what's to stop the maker from changing the percentage afterwards.

m52go commented 3 years ago

I've been seeing this uptick in offers, but I figured the offer makers would naturally take down their offers / adjust premiums downward when they realized no one was taking them. But I also wasn't fully aware of the cost to the network.

There is a blog post from a short while ago that covers premiums paid in major markets. The highest that average premiums reach is 7-8%, but most are much lower. I would have analyzed time to take offer as well, but couldn't because the data in trade statistics doesn't seem reliable.

I like the idea of time-bound offers too...would be good if possible to only activate it for active markets like it's done for account signing.

Framing it as a cost to cover a service offered over time, instead of a cost based on a trader's specific behavior, is important I think.

chimp1984 commented 3 years ago

Since the fee is paid at creation, what's to stop the maker from changing the percentage afterwards.

Yes thats true and prob. there is not way to avoid that.

chimp1984 commented 3 years ago

The highest that average premiums reach is 7-8%, but most are much lower.

Thanks. Good to know what are our numbers.

I agree regarding framing. But it is not only costs it is the balance of costs vs. gain for the network. An offer in a new market might be online for months but provides and important value to bootstrap a new market. An offer with 50% price tag on an established market does not provide any value as nobody will take it. Network resource cost are for both the same but benefit for Bisq users is very different.

We need to find a simple indicator which correlates best with the cost-benefit ratio. Otherwise it gets more difficult to implement and more complicate to explain to users. For me the diff. to market price is the most clearly correlated indicator. Also in a bootstrap market a 50% price tag will not help Bisq, rather the opposite as users get the impression they get ripped off at Bisq if there are only a few offers and those are super expensive. And to avoid confusion to normal users we could activate this extra rule only at a certian threshold, so no need to explain it for 99% of users. If 7-8 % is the observed premium from trades, then I think any offer > 20% will be basically never taken and does not create any value for Bisq. So to apply on those makers higher fees will not lead to any loss of volume, but to hopefully a reduction of pointless offers.

chimp1984 commented 3 years ago

Since the fee is paid at creation, what's to stop the maker from changing the percentage afterwards.

Yes thats true and prob. there is not way to avoid that.

One option to avoid that is to limit the range of price change. So if you start the price with 2% you only can change to the threshold where we would requrire higher fees (e.g. 20%). Sure that is only enforces in the UI not a hard enforced rule (that would be much more complicate and efforet would not ustify the gain here). But it can be assumed that most traders are not dev who are able to circumvent that, and if one does, we still gain from the other 90% who dont know how to change that.

chimp1984 commented 3 years ago

Another option is to limit the possible price diff. more narrowly. We have already some limits so you cannot create an offer with buying 1 BTC for 1 USD. But I guess to try to influence it via fees is a softer approach.

Conza88 commented 3 years ago

"I think we need to re-introduce some mechanism to de-incentivize such offers which add no real value to Bisq but adds costs to each node"

I think you need to understand that value is subjective, and that there is obviously a point for those who make an offer you subjectively perceive as "too high above market rate". Demonstrated preference.

Increasing liquidity & competition would go a long way to indicate what % best clears the market. Incentivising trades that completed sooner rather than later if anything was to be done would be best. Anything other is worse and should not be considered further.

Fee model for certain % would then prohibit changing trades, otherwise why not have low initial % then just change after fee is paid? Woeful idea.

The cost paid in an economic sense is the time X's funds are tied up. Any timed trades disincentivise trading on Bisq to begin with i.e. AUD market or newer ones, why make offers when risk is noone takes them, they lapse and then you have to pay fees again? Talk about warped proposal.

Underlying issue is lack of liquidity imo. Folks put high % because they think they can get away with in that market i.e. someone will accept at one point.

Would segwit reduce network "cost"?

chimp1984 commented 3 years ago

I looked at the current data again. Now we have about 500 offers. In the main markets we have: 26 EUR sell offers with > 20 %, most have tiny trade amounts (tiny trade fee) 9 USD sell offers with > 20%, most are in the 50-100 usd range XMR seems ok 3 BSQ sell offers with larger % and 11 BSQ buy offers with larger %.

It is about 40-50 offers which is about 10% of total offers. It is not a terrible large amount but 10% of network load generated from offers (which is the main producer of load) is basically wasted resourced.

I also looked at trade statisitcs in the major markets and there are nearly no outliers with huge price difference. I saw 2 and both had very low trade amounts (-> low trade fee) and happened 2 months back.

I think the easiest solution would be that we reduce the currently 50% max price diff. from market price to 25%. This is still high enough for reasonable offers in niche markets and is not applied to markets where no price feed is available (like BSQ) which is for technical reasons mainly but can serve here as benefit as well as those markets are usually low volume markets which justifies higher spreads. With a bit extra effort it could be applied there as well though...

chimp1984 commented 3 years ago

I think you need to understand that value is subjective, and that there is obviously a point for those who make an offer you subjectively perceive as "too high above market rate".

I think there is an objective measurement for value and that is the trade statistics. An offer which is never taken has no value. Bisq is for trading not a wishlist to santa claus for buying BTC at a super discount of 5000 USD. Specially if that wishlist has to be propagated by each node and causes costs paid by the network and not by the trader who paid a very low fee in case of a small trade amout, which is not in balance with the created costs for the network.

chimp1984 commented 3 years ago

Would segwit reduce network "cost"?

No that has no relation. Beside that it reduces miner fees and make it even cheaper for those makers to create such pointless offers, as a result making it worse for Bisq in that context.

pazza83 commented 3 years ago

I am guilty of having over 100+ offers on Bisq live on the platform at the moment. The offers have deviations from market price between 6-50%.

I have always thought that having more liquidity would be good for Bisq. My general trading strategy has been when an offer is taken I put two in it's place. I see this a positive thing for Bisq. If one person wants to take an offer chances are other people will also take the offer.

In the last month offers have been taken at all deviations 6-50%. Generally the smaller the offer the higher the %. The most popular offers are at the lower percentages but so far pretty much everything has been taken at some point.

When calculating the percentage I factor in any of the following; transfer fees, mining fees, mixing fees, BSQ fees, crypto exchange fees, currency exchange fee, drift fees (upwards volatility), and what profit I am seeking. It might be surprising but I can ascertain to the fact, when taking in all those factors, there is very little profit selling small amounts of BTC as high percentages.

For example selling 0.001 BTC at 30% over market value gives a profit in $'s of about $2.2 dollars. I see trades like this as providing a service to the community rather than profit seeking (I see comments occasionally on Reddit, Telegram, Keybase etc with people mentioning high percentages, but i do always think that they are not aware of the costs. If someone tries selling 0.001 BTC at 10% over market value, after all fees, they will be making a loss and giving themselves lots of work!!).

The reason I have some low offers like this is that I figured that when someone is new to Bisq, new to a market, or using a new payment method they might want to try out a small trade first to make sure the process works well for them before moving to larger trades (for example a new bank account might be more likely to have incorrectly entered details or put funds on hold). At least a couple of low offers like this will be taken each week. I have always had positive experience when communicating with buyers through trader chat. Most of them are thankful of getting signed for a low price (when purchasing over 0.0025 BTC) or excited about their first purchase and asking questions relating the the trading protocol. I always try and be as friendly and helpful as possible with these buyers. I want to give them a positive first experience of Bisq. I feel this personal touch is a big differentiating factor that Bisq has over a big exchange. From my perspective I see these offers as being helpful to growing Bisq. Sometimes I even sell BTC at a loss just to test out a new market or payment method myself.

I have never associated an increase in offers to be bad for Bisq. I did not know/think about the resources required from the seed nodes. Maybe their could be more education about this in the Wiki or other channels. I think I would have thought differently about putting on offers in new markets if I thought that there would be a detrimental impact on the Bisq network. I just never thought this would be the case. I saw it similar to how I might put an offer on an exchange to buy BTC at a price well below what it currently trades at in the hope it would dip at some point. I still have offers on exchanges from BTC at around $4,000 per BTC. I just leave them there in case a big crash happens when I am unable to trade.

When I look at the total offer book at the moment I see that there is a total of 59 BTC available to trade. Surely for Bisq to become successful this needs to increase exponentially. I think incentivising market makers to add more offers will help Bisq to grow. I also think as the market grows the spreads will narrow and become more competitive. Hopefully the resources need to sustain an increase in an order of magnitude for example 5,000 offers with a total of 600 BTC will be funded by the increase in trading fees.

I think the proposal to de-incentivize offers with huge market price distance will have a negative impact on new users of Bisq that want to trade a small amount of BTC and get accustomed with the platform before moving to larger trades.

With regards lowering the trade deviation from market price to something more like 25%, at current prices/fees would result in my lowest offer of BTC for sale at 0.003. This is fine is that is what the community wants. But that would make the lowest purchase amount at being $35 dollars. I think a new user, or someone with a new payment method, might want to start lower than this. I know I would.

My preference would be to let the market decide. The most common amount of BTC that people buy from myself is 0.01, for this reason that makes up the bulk of my offers at around 6-10% over market price.

I think the question that should be asked is how can Bisq grow the order book exponentially and, therefore, increase fees to the DAO and decrease the cost resources as a percentage of book value.

I really like Bisq. I think it is the best way that someone can buy and sell BTC. I want the platform to grow and become successful so thought it would be helpful to share my thoughts.

Conza88 commented 3 years ago

I think you need to understand that value is subjective, and that there is obviously a point for those who make an offer you subjectively perceive as "too high above market rate".

I think there is an objective measurement for value and that is the trade statistics. An offer which is never taken has no value. Bisq is for trading not a wishlist to santa claus for buying BTC at a super discount of 5000 USD. Specially if that wishlist has to be propagated by each node and causes costs paid by the network and not by the trader who paid a very low fee in case of a small trade amout, which is not in balance with the created costs for the network.

Thank you for confirming your economic illiteracy and inability to understand human action. There is no objective measurement of value. The value is that there is a standing offer for BTC to be taken at a certain price... YOU SUBJECTIVELY VALUE it as being too 'high'. Other's don't. At that moment you SEE it, but what is NOT SEEN (UNSEEN) are the offers that get snapped up or will do so eventually.

As Pazza indicated above, his offers have been taken at 50%. You centrally planning / dictating what market rate is allowable involves price controls. Simple as that. Do you not understand the consequences of such actions? Clearly not, otherwise you wouldn't be proposing your 'solution'.

If Bisq wants to die an irrelevant death, then it keeps implementing proposals such as this.. and keeps moving away from the ability for individuals to set whatever % they want for e.g. security deposit. I would very happily set 100% security deposit to signal I am 'sound and serious to trade, regardless of price movement' - yet that option is not available? I do not have the choice or ability to send that signal to sellers, when I am buying? Others set a cap at 50% or whatever was decided, not the market. Beyond woeful, just because some individuals didn't think it would be done (projecting).

The "cost" to the network resulting from the unintended consequences of far less offers, liquidity etc. (all else being equal) would be far greater than any proposed gains (reduction in cost).

chimp1984 commented 3 years ago

Thanks a lot @pazza83 for your details reply and for your support for Bisq!

I was not aware that offers at such prices are really taken and did not consider your use cases (newbies trying out Bisq with tiny amounts). I fully agree to all youy said and revert by that my proposal. It is the last that I want to lose market makers like you for Bisq! I just thought such offer do provide zero value and I was wrong with what you explained so well in detail.

Regarding network costs: This is relative, we are still ok but at some point the amount of offers will require that we run more seed nodes and that we optimize network traffic which will cost engineering effort. So no worry your added value by providing new users trade opportunities justifies the network load.

chimp1984 commented 3 years ago

Thank you for confirming your economic illiteracy and inability to understand human action. There is no objective measurement of value. The value is that there is a standing offer for BTC to be taken at a certain price... YOU SUBJECTIVELY VALUE it as being too 'high'. Other's don't. At that moment you SEE it, but what is NOT SEEN (UNSEEN) are the offers that get snapped up or will do so eventually.

No need to become unfriendly and disrespectful. Logical thinking leads to the conclusion that what you just stated is reflected in the trade statistics (that an offer is taken and becomes a trade). That is what I meant with objective value.

cd2357 commented 3 years ago

I would very happily set 100% security deposit to signal I am 'sound and serious to trade, regardless of price movement' - yet that option is not available? I do not have the choice or ability to send that signal to sellers, when I am buying?

Interesting idea. One downside is, the seller who accepts that trade would have to deposit 100% as well, which might discourage them.

AFAIK, the best way to signal trustworthyness is to have a signed accont. Another way is to have the account exist for longer (as seen in the tooltip when you hover over someone's avatar).

sqrrm commented 3 years ago

I know this proposal was withdrawn, but still wanted to add some thoughts.

At current offer volumes Bisq is operating ok so it's not urgent to fix this problem, but it's good to start thinking on how to handle magnitudes higher volumes.

The idea of letting nodes choosing what offers they propagate is interesting. Only forwarding near market offers is one method. The problem is that far away offers would be unlikely to propagate at all if any kind of default was set, pushing out good participants like @pazza83.

Another option is to fracture the markets per currency, or payment method, or both. There is little value for me as a USD buyer to know about the EUR market if I don't have an account to trade EUR. In the same fashion, I'm not interested in Zelle trades if I only want to do cash face to face. There is still a problem for seed nodes, and peer discovery since the network would likely become several networks. Perhaps seed nodes would have to specialize and peers have a capability set of currencies/payment methods they support.

chimp1984 commented 3 years ago

Yes we need to think about partitioning models at some point. It was always clear that the current model cannot scale up endlessly. My previous suggestions have been based on the wrong assumption that those high distance offers are never taken and have no value to Bisq, but that was a wrong assumption as the post from @pazza83 has shown.

To partition the markets by currency is likely the most feasible approach. To separate those markets so that you can choose which markets you support (the more markets the more network traffic you need to handle) whould be an option. This only need to be applied on major markets where are already enough users to not risk any network instability and not to be applied on small markets which would suffer then from not getting sufficiently propagated.
Yes seeds could either be strong enough to support all or are flagged as USD seeds or EUR seeds and then you connect to the ones you are interested in.

But those are "happy problems" for the future ;-).

But beside that the proposal was based on wrong assumptions, it also has shown from some of the reactions that it is not well understood that the network is a shared resource and using it has some "invisible" costs. Those costs are not only on the users side but also on the DAOs side as the DAO pais for seed node operators and for devs who need to optimize network code to make it possible to handle heavier load. This lack of awareness should be considered in our communications strategies... (as @m52go pointed out). Maybe a Wiki article or blog post might help to educate a bit about the nature of the Bisq p2p network.

pazza83 commented 3 years ago

Thanks for the nice comments above. I have opened a new issue related to this one #4641

I think showing the percentage deviation from market prices in more places would be good for all users. if this is a simple change to make that would be great.