But HFT made the trades take longer, making them less efficient. By buying up the stocks while the trade was still in route, it cause the trade to fail and to make the brokers try it again at a higher price, wasting their time and money.
Trades get canceled/rejected because the price moves away from their limit/immediate-or-cancel order all the time, even without any HFT involvement. And the reason those orders don't get filled is because they don't reflect a competitive bid or offer for the security. I don't think you're suggesting that we should accept less-competitive orders just because the market participant took the time to submit it.
The only difference with HFT's, and market makers, and all other high-speed/high-frequency participants in the mix is that these changes in price happen more often, which indicates that price discovery is more efficient (has better granularity, recency and accuracy). (Unless the market activity doesn't have 'economic merit', which the SEC devotes a significant amount of time to investigating).
One might argue: "do we need microsecond-level granularity on the price of Amazon?"
I'll take the Matt Levine route and ask: "Do you think quotes should update once per minute? (I suspect most people will say yes). How about once a second? (Yes?) Ten times per second? (?) Every millisecond? Microsecond?"
Now ask the flip side: "Should it be illegal to perform market activity every minute? Every second? Every...?"
It's hard to draw a line with any kind of solid reasoning. As an economy, we certainly reward people who can make these sub-second adjustments with a lot of money, and in general with the stock market, where every trade is, by definition, two consenting parties agreeing on a price, usually making money means you're improving market efficiency.
Also, I want to point out that it's not like HFT's are invincible magic money-stealing boogiemen. HFT profits are declining year-over-year (look at Virtu's recent earnings numbers and their current corporate strategy/direction) specifically because other market participants are responding to their existence and getting smarter about their own order execution.
> Trades get canceled/rejected because the price moves away from their limit/immediate-or-cancel order all the time
When your trade is occasionally beaten by someone at a different brokerage (or the same brokerage) that's normal. When there is a bot on the wire doing it every time that's a problem.
The changes in the price happen more often because they are marking up the price while the trade is still in progress. This doesn't help anybody except the HFT firm. Discovery isn't more efficient because the discovery has already happened, they set the price based on what they had discovered.
HFT profits are falling because people got wise to their system and built countermeasures.