Lots of great posts, lots of interest. To summarize, my goal is to make trading BTC fairer, more stable, and less expensive.
I strongly suspect both MtGox and Bitcoinica's matching engines have a weakness. For example,
- From my Bitcoinica outage experience yesterday (previous post), I was able to cancel Bitcoinica orders whilst the matching engine is busy.
- Similar outages have been observed at MtGox, e.g. the infamous time when the price dropped to 0.00001 took several hours. The MtGox engine was filling one super order. I could make & cancel new orders as it was being filled. This is a critical weakness.
This is how I expect the HFT manipulates the market :
1) Spam exchanges with lots of small orders or trades. Keep their matching engines very busy to slow down orders.
2) Place large market orders up and down to clear out the existing static order book
3) Place your own orders to fill up the book. You now control the price.
4) When a significant buy order is placed by another person, (e.g. buy @ $4, best offer is $3.5), the matching engine will start to fill the trade. This will take time, especially if you've populated the order book with 1000 tiny orders.
5) Knowing that a big order is in progress, you can cancel your outstanding orders in the book, forcing the other person to pay a much higher price than they expected to trade. If the exchange forced you to keep the existing order, you could withdraw funds instead (which is probably not blocked on the matching engine thread).
6) After their order is filled, you can push the price down immediately by adding more (fake) sell orders to the book.
They could also get a timing advantage by being closer to the exchange, or by delaying/DOSing the market data that other participants rely on (MtGoxLive, MtGox websockets, etc)
BTW, calling it HFT is a poor comparison to the real-world HFTs, but my manual trading lag time is probably 10-30 seconds including human reaction, data entry & internet lag timeAuction Exchange
: The advantage of choosing a longer time before the auction occurs is to build up a bigger at-the-money order book. Assuming the exchange is non-profit (low transaction fees was the main idea of bitcoin, remember?), a larger number of filled orders would be crossable, so you could fill large orders without moving the market and people would have more confidence in the value of the currency. I would prefer to buy a large number of BTC with a super-long auction than drip-feed it in to MtGox. One additional restriction, the auction order book can't be visible before its executed. Otherwise it would lose its value.
Another way of looking at it, what do you gain if you were only able to trade every ~10 seconds? What would you lose? If you can't value it, you're the free lunch. Same reason Facebook is free.
Question : Does MtGox use PHP for its matching engine as well as its API? It should be written in C, with someone dedicated looking for timing arbitrage problems like this.
@Fireball : The advantage you advocated for is provided by automated market making, not just HFT. Automated market making would also be available for a discrete time auction exchange. HFT can destroy for profit too, e.g. Nanex - The Disruptor http://www.nanex.net/Research/EMini2/EMini2.html
@cbeast : Worship of financial maths will get you as far as CDOs and mark-to-model. When the model fails, you'll need real people to untangle the expensive mess.