22

I'm looking to get Stack Overflowers' advice and suggestion on time-series libraries written in C++, some of the constraints and requirements for the library:

  • Performance is very critical
  • Capable of handling very large data sets (1 MB - 100 TB range)
  • Various kind of discretization/grouping methodologies
  • Basic functionality (n-avg, EMA, smoothing, forecasting, normalization)
  • Suitable for use in a multi-threaded environments
  • Free or open source preferred, however commercial libraries are welcome
  • Libraries capable of delegating to GPU-based calculations are welcome
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131

8 Answers8

2

I really think that the following link might help.

old cronos

It is open source and under the GPL license.

Michael Schmidt
  • 9,090
  • 13
  • 56
  • 80
2

Have you looked at IT++ ? The documentation and feature list are quite compelling and applicable, given your question. Its development may have stalled, but is the primary C++ time series / signal processing library that is open source that I know of.

Otherwise, for straight-up linear algebra, both Armadillo and Eigen are good and actively maintained, and Armadillo can even be used along with IT++.

Last but not least, consider R and Octave both of which can also be extended with C++ code (see Rcpp for the R/C++ interface, and RcppArmadillo for an R/C++/Armadillo interface.

user
  • 5,335
  • 7
  • 47
  • 63
Dirk Eddelbuettel
  • 360,940
  • 56
  • 644
  • 725
1

Intel's IPP might be worth looking at.

High Performance Mark
  • 77,191
  • 7
  • 105
  • 161
0

Don't despair!

There is stuff out there, but your question is very general, in the sense that you might need several libraries to achieve your result.

  1. GSL (GNU Scientific Library) has statistical functions...
  2. FFTW (Fastest Fourier Transform in the West) lives up to its name, but if it meets your requirements... I don't know.

There are others, but don't know them. Some of the algorithms you need are in the C++ standard library, or aren't very hard to code as fast as possible like n-avg). GPU offloading is going to be difficult (especially due to the data set size, which will probably make it a bad idea, multi-threading is a possibility in the abovementioned libraries.

rubenvb
  • 74,642
  • 33
  • 187
  • 332
  • The GSL is nice, but more bare-bones that what was asked here: not C++. no multithreading support, and does not really contain any time series features. – Dirk Eddelbuettel Aug 27 '11 at 15:59
  • Dirk: as I said in my answer, the question is way too general to give anything better. And GSL can cope with FFT's (which is 75% of "time series features" anyone could want). – rubenvb Aug 27 '11 at 16:04
  • 4
    For the record, I disagree on FFT being 75% of time series analysis. – Dirk Eddelbuettel Aug 27 '11 at 16:14
0

Assuming your are looking for a library, suitable for some algorithmic trading application, you can take a look at Ta-Lib. It is written in C++. I do not know if it is capable of handling very large datasets but it is performant.

ali_bahoo
  • 4,732
  • 6
  • 41
  • 63
0

There is limited free code to do what you need. In fact there is limited code in general, free or commercial. NAG Time series chapter does some of what you need, but it's commercial software and written C. I would argue that for this sort of thing C++ has relatively little advantages over C (up to debate obviously, but there is more Fortran than C for this sort of problems, that says it all...)

There is some beta of a GPU aware NAG. In fact they are doing lots of work on that

Dr G
  • 3,987
  • 2
  • 19
  • 25
0

Vhayu has all the interesting stuff, amazing performance and compression abilities by former Intel engineers. Unfortunately having been bought by Reuters and now part of Thomson Reuters you aren't going to learn anything from their website:

http://thomsonreuters.com/products_services/financial/financial_products/a-z/enterprise_platform_for_velocity_analytics/

So have a little better luck with the Internet Archive version:

http://web.archive.org/web/20090322192616/http://www.vhayu.com/?

Steve-o
  • 12,678
  • 2
  • 41
  • 60
-2

You might want to take a look at q (AKA kdb+).

It's not a library, and it's not C++, but it does a lot of that kind of stuff.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
time4tea
  • 2,169
  • 3
  • 16
  • 21
  • Specifically Because q is pretty much THE time series database. Although database isn't quite the right word. It does everything the op asked for. – time4tea Jan 11 '11 at 22:36
  • Not the best of links, anything more informative like http://kx.com/products.php ? – Steve-o Aug 27 '11 at 15:44
  • 1
    If you've ever "really" used kdb - you quickly realize that there's more marketing and fluff than an actual working system. I know a lot of people that have been burnt by the k-con. – Xander Tulip Mar 19 '12 at 05:57
  • yet i know people/orgs that make many many £m using it... guess it just depends on how you use the tools at your disposal!... – time4tea Apr 01 '12 at 21:39