As pointed out in several other posts, there is a well capitalized bot that ensures that it wins each hour's 1200 STEEM reward, while providing as little liquidity as possible.
Basically the very generous 28,800 STEEM per day allocated to encourage liquidity providers is being handed over to a single account that isnt providing much liquidity to anybody at all. The reason is that the more funds you have, the more precision you can create with your prices and that means that the bot with the most liquidity can ALWAYS create the inside spread. Meaning, a bid that is fractionally higher than the highest one and then simply sell into it.
Do this as much as needed to get the hourly $5000 reward.
Community benefit -> negative. Not only is there no liquidity being provided, it discourages anybody else from providing liquidity.
Proposed solutions:
I have several technical solutions that will solve this, but first I call for a moratorium on the 1200 STEEM per hour reward until this is fixed. Otherwise it is $100,000 per day being drained from STEEM and when it is dumped it will hurt the market price, possibly in a significant way.
Solution A: change the order matching to round to the nearest .001, this would at least prevent larger accounts from creating a self-trading inside spread. Advantage is that it should be relatively easy to implement, ie. a few lines of code in the order matching. This wont fix the fundamental problem of self-trading, but is a decent stopgap
Solution B: Ideally, self-trading would be prevented. However as long as there is a way to fund new accounts via external funds (there is), then an arbitrary number of accounts can be funded. That means there is no simple (or even complicated) way to prevent this. Probably due to the difficulty of this, this problem has not been fixed as the urge is to fix it once and for all. Let us assume this fix will require some sort of long term cooperation with all external funding sources (blocktrade, bittrex, etc) and doing a path analysis of all funds to identify related accounts. tl:dr wont happen anytime soon
Solution C: since Solution B is nowhere in sight, I have an in-between method that will allow the vast majority of this problem to be solved. It will require changing the liquidity rewards algo to take into account the coinage:
Liquidity points = sqrt(bid volume * ask volume) * coinage
So it is not that much work, but what it will do is require a lot more capital. In fact, if the coinage duration is in blocks, it will give even the manual trader a chance to get decent rewards as they can use really old funds and while this could be construed as a sort of coinage attack, compared to the current situation I see it as an advantage