Reading up on quantitative methods, model development, and back-testing, one obvious question springs to mind:

What should one ask of a prototyping (model testing) framework?

I know a lot of people use R, C/C++ and so on for testing, but does one have to re-invent everything or are there some features, such as basic statistics methods and data viewing capabilities, that one should ask for?

  • 2
    $\begingroup$ Hi Martin, welcome to quant.SE and thanks for posting your question. I think the first part of your question is good, but the second part (a list of most-used software) has already been answered here. I have re-focused your question in light of the previous question. Also, when you say "model-testing" I think you mean prototyping. $\endgroup$ Sep 21, 2011 at 14:02

1 Answer 1


There is a huge difference between R (and Matlab, SAS, or other statistical languages) and relatively low-level languages such as C/C++/C#/Java in exactly this regard. The latter category is used more often for stable end-products, where speed and performance can be crucial, whereas the former category is used more often for model testing and prototyping.

The statistical languages have many basic features, including those you mention, basic statistics and data viewing, as well as much else that will make prototyping a much easier and quicker process. Some of the features I use most in may day-to-day model development and backtesting are:

  • Optimization (importance of good optimization algos is not to be underestimated!)
  • Linear algebra (eigenvalues, singular value decomposition)
  • Interpolation (cubic splines)
  • Filtering (FIR, IIR, EMA)
  • Read/write to CSV/Excel/databases/other formats
  • Advanced graphics (bar charts, histograms, box plots, scatter, 3-D)
  • Date/time manipulation and time-series support
  • Vector/matrix manipulation (data manipulation)
  • Large library of less-commonly used algorithms (e.g. Expectation-Maximization) available as packages

I'm sure many of these features could also be found in low-level languages, but the level of tight integration makes them much easier to use in the statistical languages.

  • 1
    $\begingroup$ To the points above I'd also add a broadly understood "Database connectivity". Having to manually export data from your source just to import it into your framework is a frustrating activity that is prone to mistakes than may have disastrous effects - as the old adage says "garbage in, garbage out". $\endgroup$
    – wburzyns
    Sep 21, 2011 at 16:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.