The other posters have already noted that the prevalent use of C++ appears to be due to historical reasons and unwillingness to change. Those reasons aren't the ones that people should be applying. If you want real reasons to use C++, how about the following:
Powerful infrastructure. Take a look at Intel Parallel Studio for an example.
Performance compared ...
I'll just add that with Interactive Brokers you have to be aware of their cancel fees. Remember, Interactive Brokers owns Timber Hill, a very large and active market maker. They will discourage you from competing with Timber Hill through monetary disincentives, among other things.
For example, if you send a directed order (i.e., you don't allow IB to SMART ...
The main reason is traders/quants currently in business often learned C++ in their formation rather than C#, they naturally used this language when starting new projects.
It will gradually evolve, I guess you could have asked "what's the reason cobol is still the most popular language in Finance" 20 years ago.
Also most projects in production use C++ but I ...
Garbage Collection. The amortized performance between C++ and more modern languages is similar, but when your heap gets large, a GC can still take 100ms or more! That's an eternity, and just isn't acceptable for anything with real-time requirements
For linear algebra etc, I am partial to Armadillo with Eigen as an alternative. Both are modern (eg templated), actively developed and fairly high-performance.
I like my C++ together with R and stand behind a few projects like Rcpp and RInside which facilitate that integration;
RcppArmadillo then brings Armadillo to R.
For quant stuff, there is of course ...
I don't know if it the most popular but it is popular for sure - I think there are several reasons for that, which not only apply to QF:
It is a mature language with many years of development behind it
There are many people who are able to program it
Many books, tutorials, websites, communities are available (network effect!)
It is fast
There are many ...
As of April 2014, the 32-bit version of kdb+ is now free to try.
This free version may not be used in production systems.
The only technical limitation vs. the 64-bit version is that you can only address up to 4GB of memory per process.
This is off-topic and maybe belongs to StackOverflow, but here goes.
1. Compile QuantLib
The best way is to open the Visual Studio Command Prompt using a shortcut under Programs→Microsoft Visual Studio→Visual Studio Tools. Now, you need to navigate to the QuantLib folder inside the folder where you have QuantLib (there are other folders such as ...
At discretelogics we just released a file format to store time series in flat files called "TeaFiles". In addition to raw data they can store the binary item layout and a description of the contents.
C#, C++, Python APIs are available open source, licensed under the GPL, see
Using memory mapping, read performance reaches that ...
I help organize the F#unctional Londoners Meetup group. A good number of our 450+ members work in London's finance sector. Over the past 2 years we have hosted a number of talks related to F# in trading:
Simon Cousins on F# in the Enterprise - F# at E.ON Energy Trading
Daniel Egloff - F# on the GPU with Alea.CUDA - developed for derivative pricing
I took a quick look at Matlab's Financial Toolbox and attempted to map the features to corresponding Python packages –
For asset allocation, portfolio optimization, and risk analytics:
Standard packages such as scipy provide a large number of optimizers that should suit your needs. There are also pre-canned packages that do portfolio optimizations more ...
Interactive Brokers does have a .NET API, albeit a free (as in speach) one written by Karl Schulze, not IB themselves.
It's written in C# (and IMHO well written). I've examined both it and the Java API and find the .NET version more to my liking. That's probably just because I'm more familiar with .NET than I am ...
Of course it is fast enough. But what is fast enough? I know guys who trade off Excel sheets and they make millions, but those guys are clearly not active in high frequency space. So, it entirely depends on your trading frequency and average holding period. I also know of shops that run live trading systems by calling R functions, so, obviously Matlab ...
Black Scholes in java?
This guy, Christian Fries http://www.christian-fries.de/, has some impressive codes and a book on these topics.
You can find http://www.christian-fries.de/finmath/book/index.html the contents as well as the library itself http://www.finmath.net/java/.
As well as your request, you'll see LIBOR model, HJM model, binomial model, etc. ...
Except in highly unusual cases, financial PDEs lack analytic solutions. The mathematical tools used are Monte Carlo, plus the usual ones for solving PDEs on grids, almost always one of the following:
Trees, for very simple cases
Explicit finite differencing, for throwaway projects or very specific cases
Implicit or Crank-Nicolson finite differencing for ...
I don't like KDB+/q.
For KDB+ experts, I am not picking a fight.
The following is just my own understanding on KDB+ and TimeSeries Database.
You're warmly welcome to correct me if anything wrong in your eyes :).
First of all, during my near one year's KDB+/q development experience, I never ever find a paper based benchmark result indicating KDB+/q ...
In a typical HFT scenario (process incoming UDP quotes and send TCP order entry responses) well written Java can compete with C++ for pure speed. If you need more speed, look to improve the following:
Your code (setup a good benchmark and then profile and tune)
Your networking environment (low-latency switches, DMA NICs)
Your architecture (are you doing ...
People use C++ because it offers a balance between performance and convenience. It is true that you can get Java to be (almost) as fast as C++, but you need to put a lot of effort into it. On the other hand, an average-quality C++ code will be much faster than average-quality Java code. I know this from personal experience.
The only way to find out is to try it!
It shouldn't take very long to write some simple code to simulate the computations you plan to do, and run it in a loop.
With current versions of Visual Basic (VB.net), performance should be comparable to Java in most cases because the basic technology (compiling to intermediate code and then running a just-in-time ...
KDB is useful for two reasons:
- Storage of data; and easy access to the data (i.e. querying ticks..etc)
- Rich query language that supports many Quant functions
however; what KDB does not do well; is the quant query language.
I have evaluated KDB, Matlab, and R. So far R is the winner.
I have not found any fast solution for storing and retrieving data; ...
A popular open-source option for the numerics in .NET is Math.NET (https://github.com/mathnet/mathnet-numerics). It has both managed implementations and allows you to use the optimized MKL native libraries. This use of .NET as a front-end to an optimized native library is quite common.
Meta.Numerics (http://www.meta-numerics.net) is an alternative open-...
We use Node for reporting but not as part of our main signal generating trading system.
To be honest the answer will almost certainly be yes for every common programming technology as it just takes one person to use it somewhere to make the answer yes.
Just look at OCaml, before Jane street, most techno logiest on the street had never heard of it and now ...
I recently did a 'Poll' on 'LinkedIn' about this topic that got 160 votes and generated some great conversation on this subject.
http://linkd.in/gHNOgt (Poll Results: Java won out)
I realized after the fact that I should have structured the question more specifically"
Ultimately, depending on what component of a trading system you are tasked with building ...
Here's a blog post with a general overview of some possible implementations.
howtohft_howtobuildafastlimitorderbook - (mirror of the original posting)
The posting was originally on the website www.quantcup.org - this site is up for sale but I leave the broken URL to help future searchers:
All .NET languages are perfectly able to compete with the speed of C and even FORTRAN. It all depends on if they are used the correct way.
1) Both Java and .NET have considerable longer startup times than most native app. Therefore, you will have to have the application running and not starting it over and over on request.
2) Memory management is crucial ...
People get this problem wrong because they always end up discussing the theoretical advantages of these languages rather than the practical uses of these languages.
Haskell is elegant and has many of the theoretical advantages (language conciseness, orthogonality, parametric polymorphism, ADTs, higher-order functions, smart compiler)...