I have been commenting in the Discord, sharing my frustration about 0.01 undercuts in market prices, and proposing solutions. Some people suggested me to create a forum topic, so here it is!
In this post I will be explaining the problem, what it implies, why it’s unfair, and proposing solutions to it. We will be commenting the pros and cons of each system proposed and answering the comments and usual concerns I’ve been reading in Discord. Also, I will be expanding this post with any new ideas we may comment, as a summary.
This post is large as duck, so read the titles and feel free to skip the parts you’re not interested in.
WHEN DOES A PENNY WAR (aka 0.01 undercut) HAPPEN?
It happens when trying to buy or sell items for which liquidity is low (sales happen sparsely), there’s a risk your ask/bid won’t be filled at all due to insuficcient offer or demand, and the price per unit is high, say, 100 or more.
A and B are sellers which possess 1 unit each, while C is a buyer that will consume only 1 unit for the forseeable future. The item we’re trying to trade has an average price of 1000, and the cost of fabrication is 500 for both sellers. C is the only player interested in this item, since it only has niche uses.
A arrives first to the market, sees the billboard empty, and sets the price to the average of 1000.
Then B arrives right after and sees A’s ask. Then sets a price of 999.99.
Then arrives C. He buys the 1 unit he needs and is willing to pay up to 1200 for it. Sets the order, and it is immediately filled.
The result is C bought the item from B at 999.99. Now A is stuck with an item he can’t liquidate.
Well, markets normally operate under the FIFO rule, which stands for First In - First Out. It works just like a waiting line. The first to arrive is the first to be served, for a set price. Unless, of course, someone offers a lower price, then the lowest price is chosen first. It works the same for bids, but higher is chosen first. It’s like paying a premium to skip the queue.
So, CXs in PrUn work just like that. Since 999.99 < 1000, it was chosen first, regardless of it being posted later.
WHAT’S THE PROBLEM WITH THAT?
The problem is, there is really no difference between 999.99 and 1000 in practical terms. Player B came last and still got served first. How much did he pay for the privilege? 0.01, basically nothing. This is effectively a LIFO (Last In First Out) system, which is only used due to logistic and storage reasons and not in financial exchanges. The player who arrives last sees the previous ask and sets 0.01 below it, thus gaining the privilege to be filled first at no extra cost. Note that if a third seller appeared right after B, he could screw A and B just like B screwed A.
As the veterans will remember, some player in the past universe used a bot to game the system. Botting works like this: each time someone undercuts your ask, the bot instantly changes your price to 0.01 under them, so that you’re always the first in line. That’s why a limit was implemented by the devs: you can only remove an order a maximum of 5 times per day, after which a fee proportional to the total order value is charged. This helped control the bots, since a program would quickly run the player into fee territory and would only be useful 5 times per day.
However, the problem is still not solved, because it can still be done manually.
Many people suggested a myriad of ways of overcoming this, but I have found none useful. I will list them below and expose their weaknesses.
Q: If they undercut you by 0.01, then just undercut them by 0.01 and win.
A: That simply doesn’t work. Let’s see the previous example again:
Player A arrives and sets price at 1000
Player B arrives and sets 999.99.
Player A plays reverse uno card and sets price 999.98. WIN? Nope…
Player B comes again and sets price 999.97.
A: out of moves!
The result is, both players have used their 5 free daily price changes, and would have to pay a fee in order to change price again. As you can see, B still wins. Sure, he pays 0.11 instead of 0.01. But to reach this point both had to be glued to the screen for half an hour, and they’ve both spent their 5 daily moves and are stuck at the current prices until next day.
Q: Buy their ask and re-list it at a higher price.
A: Sure, if you have the spare money, then go for it. However, you run the risk of losing if the customer C doesn’t pay enough to cover it, and you would still be stuck with an illiquid asset while player B runs happily with his quick cash. That’s bad, especially if you’re not swimming in cash (who is, really?).
Q: Put a small part of your stock to lure the competition, then drop the rest under them to gain the advantage.
A: This one is interesting. So interesting that a penny warrior used it to counter my counter. We ended up spreading our stock all over the billboard with no clear winner. It may work for some, but not always, and it is too messy, and requires more work than it should, I think.
1- Many people commented that the game EVE had a similar problem and the bots were getting out of control. They implemented a new system, but I haven’t played EVE and therefore I don’t know much about it. All I know is that every time people mention it is to say how bad it is and how much they ruined the game. I don’t know it and it seems to be bad so I’m not gonna pay atention to it unless you guys insist.
2- The eBay solution. Literally. Since illiquid assets work basically like auctions, it would be a good way around it to copy the quintessential auction service. How do they do it? They basically give bots to everyone to make it fair.
It works like this:
The auction has a starting price. We could start at MM sell price.
Each seller sets their lowest acceptable selling price. This is secret and only the automated system knows it.
The system matches the prices and chooses the seller who has set the lowest minimum. HOWEVER, the resulting price is the minimum of the second lowest seller. It will be clearer with an example:
Seller A sets minimum price 700
Seller B sets minimum price 600
System chooses B as winner. The price is set at 700. The minimum price of B that is 600 is never revealed to anyone. In case of draw, the one who bid the first wins.
This example may seem a little weird since auctions normally work the other way, the seller sets the minimum starting price and bidders set the maximum price they’re disposed to pay. But it works no different either way.
This system works well and is used in real life so I guess it’s a safe bet. However, I do think it may be too big of a change and it would be clumsy when applied to markets with a few more participants.
3- My proposal: Tiered Prices.
My idea is that, for most commodities, we don’t need up to 0.01 precision, since cents aren’t even shown in the sidebar balance and are too small a unit to care about. However, they do matter when deciding which order is filled first. So I suggest to limit the amount of possible price points orders can be set at.
First, we need to decide up from which amount we consider a change of price to be “meaningful”. We could say for example 1%. And apply this at intervals, so numbers are rounded and simpler to manage.
For example. Let’s say that a commodity has an average price under 100 but above 50. The acceptable price variation would be 1% of 100 = 1. So, the price tiers, starting from MM sell, would be: MM100, 99, 98, 97, 96… all the way to MM buy. So you can set your price at 99 or 98 but not 99.5.
Real example: COF at Hortus has an average price of 515 ICA. It is under 1000 and above 500 so 1% of 1000 = 10. Acceptable prices would be, 1000, 990, 980, 970… It would also go up all the way to the upper price band, so 1000, 1010, 1020, 1030… Note that COF has no MM, but there is still a price band with upper and lower limits.
Another real example: SF has a MM sell of 16. It is under 50 and above 10, so 1% of 50 = 0.5. Acceptable prices would be 16, 15.5, 15, 14.5, 14… All the way to MM buy of 6.
WHY SHOULD TIERED PRICES BE IMPLEMENTED?
- It would ensure that if someone undercuts you, it is by at least a meaningful amount. If they sold first it is because they really offered a cheaper price and not just 0.01 lower.
- As the price tiers take into account average price, they adapt to each commodity, so that a small product allows finer price changes than a bigger product that doesn’t need them.
- It should be simple to implement and easy to understand for everyone.
- It doesn’t affect market dynamics: Price discovery, supply and demand and volatility, volume… work exactly the same as they work now.
Now I’m gonna proceed to enumerate some arguments I received over at Discord and give the reasons why I believe they’re not right.
Q: Real markets work like this, so we shouldn’t change it.
A: That’s not true, or, at least, not all markets. You’re probably thinking Forex or high liquidity stocks, which do operate on a continuous manner like PrUn markets do now. But those markets have high liquidity, an enormous amount of participants, and more bots than people working on them. We simply don’t have that here at PrUn. Even high liquidity markets like RAT or DW don’t reach the level of liquidity that a real market like FX has. For stocks, not all are traded continuously. Some companies’ shares aren’t traded very often and therefore operate on what is called “fixing”, in which their price is set one or two times per day and some days there aren’t any trades made. This better resembles most in-game markets.
Q: I would like to keep markets as free as possible and therefore I oppose any regulation.
A: While I do think markets should be kept liberal, all markets have some degree of regulation to prevent manipulation. In this case, the regulation I’m proposing is meant not to influence any major market force, but to ensure the FIFO (First In First Out) principle is preserved.
Q: I’m worried that this change would accelerate the current deflationary trend.
A: Deflation is a monetary issue. It is affected by the supply of currency, and that has to do with MM. Pricing is just a symptom, not the cause. While I do have seen margins thinning recently, it has more to do with increased competition as the universe matures and grows and more players join. Also, do not worry because as soon as a price drops to MM buy, it acts as a floor, and currency is naturally injected into the system so as to keep deflation in check. The same would happen in case of inflation with MM sells, it is one of the advantages of MMs. In the worst case scenario, yes, we would have less money, but we won’t lose any purchasing power since prices would drop accordingly.
Q: All this is because you don’t like to be undercut. You don’t like competition. You’re a sore loser.
A: You made me cry. I hope you feel good with yourself.