49

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 ...


36

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 ...


23

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 ...


21

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


19

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 ...


18

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 ...


17

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.


16

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 ...


16

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 discretelogics.com/teafiles/ Using memory mapping, read performance reaches that ...


15

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 Adam ...


14

You could look into Pandas, a Python library that integrates with PyTables. It was created by someone at AQR and has some similar features as KDB.


14

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 ...


13

Interactive Brokers does have a .NET API, albeit a free (as in speach) one written by Karl Schulze, not IB themselves. http://www.dinosaurtech.com/utilities/ 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 ...


13

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 ...


13

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 ...


12

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. ...


12

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 ...


11

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.


11

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 ...


11

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; ...


11

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-...


11

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 ...


11

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. Theoretically speaking: Haskell is elegant and has many of the theoretical advantages (language conciseness, orthogonality, parametric polymorphism, ADTs, higher-order functions, smart compiler)...


10

What I use in my job: boost (the mathematical part) Eigen gsl glpk and some scary legacy code ;-)


10

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 ...


10

Try OpenFIGI (formerly the Bloomberg Global Identifier - BBGID)


9

Whichever treasury system the banks implements it will have pieces in C/C++ and/or Java. So C++ is just easier to interface. Also, as little as the difference of performance is, it does matter if you need to plug that model in a Montecarlo simulation running hundreds of scenarios - for value at risk computation.


9

Yes, there are. For pure technical indicator libraries I would first check out: http://www.ta-lib.org/ Its open source and they provide APIs for both C# and Java among others. Let me know if you look for commercial ones but this one is definitely the most comprehensive in terms of open source code.


9

SciChart I used SciChart and was happy with it. This is extremely rich charting library ($500 per licence; \$1000 with source code). Infragistics A premium UI library. I haven't tried Infragistics charts particularly, but I'm sure they are as much perfect as their other controls (grids, ribbons etc). MS Chart Extended WPF Toolkit SciChart vs ...


9

You don't just simply grab some random open source order book implementation and expect it to work. Every market is different. For example, markets have different rules for how you should handle priority in the order book (some are price-time, some are price-size-time, etc). Grabbing Joe Blow's code and expecting it to just work is only going to lead to pain ...


Only top voted, non community-wiki answers of a minimum length are eligible