I’ve noticed another disturbing trend. A lot of businesses use Java for their high-frequency trading systems.
Knight Trading had a high-profile software flop last week. I don’t know if their trading systems were written in C/C++ or Java or some combination of the two.
I interviewed at some places that write FIX engines. FIX is a common trading communication protocol. Their FIX program was in Java! If it’s being used for high-frequency trading, then their customers are a step behind everyone else.
Some people say “With modern Just-In-Time (JIT) compilers, Java is as fast as compiled C.” That hasn’t been my experience actually using Java. Both Java and .NET are much slower than compiled C or C++.
For something less performance critical, like the GUI or a website, it’s OK to use a higher-level language. For something performance-critical, you have to use C or C++. For high-frequency trading, every millisecond counts.
Also, as a non-insider, don’t bother trying high-frequency trading. Unless you co-locate a server at an exchange, forget it. The big brokers get to peek at incoming customer orders. They have the option to fill the orders from their own book, or send the order to an exchange. You can’t compete with them. Don’t waste time and money on high-frequency trading.
I’m surprised that so many high-frequency trading systems are written in Java. With Java, you aren’t going to get the same performance as with C or C++. At lot of people say that Java and .NET are as fast as C/C++. They are wrong.