Quote from GloriaBrown:
Base on my understanding, institutional HFT would have setup like this:
front: C#
middle: Java
Backend: C++
a very wellâturned Linux would let Java little bit faster than C#, while C++ faster than both C# and Java. In a default retail windows, C# would be faster than Java or C++. C# offers the fastest and easiest way to build GUI which is nothing Java and C++ can compare. So for retail usage, C# is the best especially for both live trading and back-test system. Seem like AB is going to have official C# API solution then makes C# becomes an even better choice.
Seem like it is hard to use R to do living trading with AB or any brokerage firm. If we need to rewrite R to another language just for live trading, then no point to use R at all.
Thanks for your input on this.
I spent a bit of time recently playing with Julia, Erlang, and golang recently.
Julia actually seems to be quite a lovely language; reminds me a bit of Python. Scientific oriented, was able to write very terse and efficient code.
Go is obviously making a lot of headway, although I am unsure that I'd use it in anything trading oriented, if only because of the dearth of existing libraries in Java / C++.
All are very fine languages, and was thinking to tinker with Erlang for a data collection server, possibly hooked up to something like Cassandra, tokyodb, or another document store (not mongo!). Erlang -- what a cool language! I really enjoy learning this one, and hope to spend more time with it in the future. Forces you to think in terms of immutable state and in a functional way. Joe Armstrong's presentations are a lot of fun, too.
Previous attempts to roll my own backtesting/charting platform in past times (when there was more free time..where does the time go?) were done using Qt / C++ and I found this to be a very pleasurable experience. Now, with far greater experience and abilities, I'd look to build something a bit more modular and service-oriented, possibly using a RESTful API over HTTP/HTTPS, as this is what I know from day-to-day experience. At the least, separating the front end to the back end over a REST API would make a ton of sense, allowing good/easy flexibility for future build-out of, say, a mobile trading application. JMHO.
edit: Some more thoughts based on day-to-day experience. While trying to build out a gnarly SOA/modular solution makes a lot of sense for a high traffic environment (and where the human capital is available to maintain such complexity), I've found that the lone wolf programmer can do much better using a monolithic architecture where possible. Since my needs are just for experimentation/testing on a personal level, it probably makes more sense to keep things in one language, under one hood, using logical class hierarchy for separation of concerns. Still would like to at least have two application tiers to separate the front end from any business logic, though.
Thank you again to all for your valuable input. Going to tinker with this at some point, for sure.