Not sure if this has been suggested before, but reading complaints about market bots (and experiencing them in the past, and reporting them) there is a solution which could be implemented, and it has nothing to do with trying to detect the bots or ban them (which is basically impossible), but rather, to make the bots much less effective.
What could be done is to remove the absolute exclusivity that the highest buy or lowest sell order has, and instead have a “market-maker threshold” area, at around .5% - 1% of the item value (TBD), wherein all buy/sell orders with prices within this range (of the leading highest or lowest order, respectively) would be filled by a weighted lottery system, and receive the median price of all the orders within the threshold, regardless of what the player’s actual buy/sell order price was. You would no longer need the absolute highest or lowest price to fill your buy/sell order.
How it Works:
An an example, lets say there are the following sell orders for a item, (lets say a Dominix) arranged like this:
#1. 195m, 1
#2. 172m, 3
#3. 171.2m, 1
#4. 171.1m, 1
-Lets say the running average price is 170m. The “market-maker threshold” is 1.7m ( 1% )
Now, a market buy order comes in. Here is what happens, calculation wise:
Order #1 is out of range (priced at $195m), and it not included in the calculation. Order #4 is the lowest, and serves as the reference point for the market-maker range (sell orders from $171.1m to $172.8m would be included). Orders 2-4 are included (5 units). Each market order’s chance to fill the incoming buy order is then weighted partly* on the quantity of units they have for sale:
#2: 43% chance
#3: 26% chance
#4: 26% chance
Then the ‘winning’ order is calculated at random and the order is filled at the median sell order price ($172m). Thus, as long as an item stays within this market-maker threshold, it will be filled eventually*. Buy orders would work the same way.
*The problem with using only the ‘number of units’ for weighting is that orders with a single unit will take much longer to get filled when competing with large orders. The weighting would need to account for this by applying something like a square root function to the # of units for sale. Duration of order could also be factored.
Some Issues/Questions I can think of, regarding this system:
Who this benefits:
Players who do not actively adjust (.01 ISK) their market orders multiple times a day would see a nice benefit on highly competitive items. Bots (and players) that constantly adjust their market orders by .01 ISK all the time will see lowered trade volume on highly competitive goods since .01 ISK adjustments would no longer do anything. This is the trade-off.
Avoiding the market-making:
As long as orders are priced more than 1% (or, TBD) higher/lower than the current Best price, they won’t be included, so it will be easy to intentionally move “out of range” of the market making, for the purpose of speculating, or waiting for higher spreads, etc.
It will require an actually significant price cut (or hike) to guarantee exclusivity to the next incoming market order, but since it is percentage based, it would be something reasonable. Consider Tritanium, with a buy order price of 5.21, sell of 5.34. To place a buy order that gains exclusivity on the next incoming market buy order (at 1%) would require a buy order price of 5.26.
It’s resistant to any meaningful manipulation (if you think otherwise, do explain). The reason I chose to have the market-making select the median price of the eligible orders (instead of the absolute highest or lowest price) is to avoid manipulation.
It would reduce staff time CCP spends on investigating market botting and over time, & discourages these bot accounts from being logged in all the time and taking up system resources.