All the time you hear about high frequency trading (HFT) and how damn fast the algorithms are. But I'm wondering - what is fast these days?
Update
I'm not thinking about the latency caused by the physical distance between an exchange and the server running a trading application, but the latency introduced by the program itself.
To be more specific: What is the time from events arriving on the wire in an application to that application outputs an order/price on the wire? I.e. tick-to-trade time.
Are we talking sub-millisecond? Or sub-microsecond?
How do people achieve these latencies? Coding in assembly? FPGAs? Good-old C++ code?
Update
There's recently been published an interesting article on ACM, providing a lot of details into today's HFT technology, which is an excellent read:
Barbarians at the Gateways - High-frequency Trading and Exchange Technology
These days single digit tick-to-trade in microseconds is the bar for competitive HFT firms. You should be able to do high single digits using only software. Then <5 usec with additional hardware.
According to the Wikipedia page on High-frequency trading the delay is microseconds:
For what its worth, TIBCO's FTL messaging product is sub-500 ns for within a machine (shared memory) and a few micro seconds using RDMA (Remote Direct Memory Access) inside a data center. After that, physics becomes the main part of the equation.
So that is the speed at which data can get from the feed to the app that makes decisions.
At least one system has claimed ~30ns interthread messaging, which is probably a tweaked up benchmark, so anyone talking about lower numbers is using some kind of magic CPU.
Once you are in the app, it is just a question of how fast the program can make decisions.