TDSM 3.3
I like Python.
Python PROS: End To End development to execution (some brokers packages allows execution, IB) Open source packages( Pandas, Numpy, scipy) Trading Packages(zipline, pybacktest, pyalgotrade) best for general programming and application development can be a "glue" language to connect R, C++ and others (cython, Rpy etc) Fastest general speed especially in iterative loops
CONS: immature packages especially trading packages some packages are not compatible with others or contain overlap smaller community than R in finance More code required for same operations vs R or Matlab Silent errors that can take a very long time to track down (even with visual debuggers / IDE)
R
PROS:
End To End development to execution (some brokers packages allows execution, IB)
Rapid development speed (60% less lines vs python, ~500% less than C)
Large number of Open Source Packages
Mature quantitative trading packages( quantstrat, quantmod, performanceanalyitics, xts)
Largest Community
Can integrate into C++/C with rcpp
Cons: Slow vs Python especially in iterative loops and non vectorized funtions Worse plotting than matlab and difficult to implement interactive charts Limited capabilities in creating stand alone applications
MATLAB
PROS: Fastest mathematical and computational platform especially vectorized operations/ linear matrix algebra Commercial level packages for all fields of mathematics and trading Very short scripts considering high integration of all packages Best visualization of plots and interactive charts Well tested and supported due to it being a commercial product Easy to manage multithreaded support and garbage collection Best debugger
CONS: Can not execute - must be translated into another language Expensive ~1000 per license and 50+ per additional individual package Can not integrate well with other langauages Hard to detect biases in trading systems (it was built for math and engineering simulations) so extensive testing may be required. EG. look ahead bias Worst performance for iterative loops Can not develop stand alone applications at all.