A message from our CEO about the future of Stack Overflow and Stack Exchange. Read now.
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 ...


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

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

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


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

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


8

The optimization possibilities offered by C++ templates can make code potentially very fast; faster than C, and faster than Java could ever hope to be. (A C programmer will typically use a function pointer and a compiler cannot inline that; a C++ functor can and will be inlined.) I know C# has templates that look like C++'s but I cannot personally comment ...


8

Not all will agree that "the maintenance cost of the program [is] lower than the C++ one." For just one thing, when we use C# or similar, we have to wrestle with the C# "framework," which aims, but often fails, to deliver a "richer," "more powerful" development environment. But "richer, more powerful" is in the eye of the language designer or design ...


8

The NAG library is quite commonly used


8

We've created a roundup of the top column-oriented database systems: http://www.timestored.com/time-series-data/column-oriented-databases This includes kdb+ and some open source alternatives. Open: InfluxDB, Java Chronicles, OpenTSDB, KairosDB Closed: oneTick, McObject, Teradata Database, vectorwise, sybase, vertica We have done some initial work at ...


8

You can have a look at rgarch. It's quite versatile. From what I remember, you have to get it explicitly from R-Forge, as it's not available from CRAN. See the rgarch website for more details. Last time I checked, usage was something like this: spec.gjrGARCH = ugarchspec(variance.model=list(model="gjrGARCH", garchOrder=c(1,1)), mean.model=list(armaOrder=c(...


8

What you are looking for is generally called "machine-readable news". Here are the ones I know about off hand: Dow Jones Elementized News Feed Thompson Reuters News Feed Direct Bloomberg Event-Driven Trading Feed NASDAQ OMX Event-Driven Analytics Good luck getting reliable latency figures from any of those vendors though.


8

It's because of the settlement days you passed when you initialized the flat volatility curve. You're creating the spot, forward and flat volatilities as: boost::shared_ptr<BlackVarianceSurface> volatilitySurface( new BlackVarianceSurface(todaysDate, calendar, maturityArray, strikeArray, ...


8

The n=100 specifies the number of periods (rolling) for the vol estimate - see the original link https://web.archive.org/web/20100326215050/http://www.sitmo.com/eq/409 where the n is referred to as Number of historical prices used for the volatility estimate An example in R: library(TTR) library(quantmod) getSymbols("AAPL") nrow(AAPL) # we have 2384 price ...


8

This pic and many more interesting insights about the connection can be found here: https://www.quora.com/Why-do-trading-firms-recruit-poker-players


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