Has anybody else out there made this switch? I'm considering it right now. What were the negatives and positives of the switch?
3$\begingroup$ 1/ why do you want to do this switch? 2/Have you tried R ? $\endgroup$– RockScienceMar 7, 2011 at 2:09
7$\begingroup$ If you disliked the R gui on Windows, consider the free, brand-new, cross-platform RStudio GUI. $\endgroup$– Dirk EddelbuettelMar 7, 2011 at 2:54
1$\begingroup$ or R with Eclipse using the Statet plugin. $\endgroup$– RockScienceMar 7, 2011 at 3:47
3$\begingroup$ Strange, I've never heard/read of anyone switching from Matlab to Python and hating it. People usually have glowing things to say about py. I will have to give it a try. Thanks for your input. $\endgroup$– Rich CMar 8, 2011 at 18:49
1$\begingroup$ And let's not forget hooking up Python with R via rpy2 is quite straightforward if you need to access R libraries. $\endgroup$– Kenny ShenMar 8, 2011 at 22:30
I made the switch years ago, and it has been great. I even switched the class I teach from Matlab to Python. Here are some things to consider
- Others can run your Python code when you share it with them. Matlab has compilers and the like, but they are an extra step you must take since most people do not have Matlab on their desk.
- Python and its extensions are open source and so allow you to see under the hood
- Python ctypes is slightly nicer than Matlab C integration
- Python syntax is excellent (e.g list comprehensions), and NumPy syntax for arrays is also cleaner than Matlab's
- Python is easier to integrate with external data sources and files
On the other hand
- Matlab integrates nicely with Java
- Matlab optimization routines are really excellent
- Matlab 3D plotting is better
$\begingroup$ Don't forget that the integrated 'solvers' for nonlinear problems is an important aspect as well. This could have serious consequences for complex optimizations. For instance, GAUSS already outperforms Matlab in the sense that you will find less local minima. $\endgroup$ Apr 13, 2012 at 0:56
$\begingroup$ I would just add few points on the matlab side: (1) if you buy the compiling toolkit, then you can redistribute your code everywhere without paying more license fees. (2) matlab statistical tools are very good and properly coded. $\endgroup$– lehalleAug 30, 2012 at 13:13
$\begingroup$ Let's not forget the most important point .. python can be used in an object oriented fashion. $\endgroup$ Oct 2, 2013 at 13:56
$\begingroup$ I believe your 3rd point in favor of Matlab is no longer valid, as there is an amazing Mayavi package for Python which is very easy to use and quite impressive. $\endgroup$ Jan 13, 2014 at 4:01
$\begingroup$ @lehalle 1. If you are collaborating with others, that doesn't help. Also you need to buy it. It is certainly not a point in favor of Matlab. 2. The fact that those tools are not free doesn't make them more "properly coded" than python's. Python also has very good and properly coded statistical tools, and while Matlab has things which Python doesn't, so Python does have things which Matlab doesn't have. $\endgroup$ Jan 13, 2014 at 4:07
Rich, you might find this cheatsheet useful on your journey.
I was advocating Python over Matlab to a co-worker just minutes ago. I should start by saying that Matlab is a fine piece of software - its documentation is amazing, as are the pdfs that accompany the various toolboxes (as I'm sure you know).
However, regarding Python, Brian B brings up many good points. Two big advantages I would like to emphasize:
I know that I will be able to develop Python anywhere I might work in the future (including at home over the weekends). In other words, learning the language is time well spent. Learn once, and benefit for years. It's the same reason why I love working on the command line in *nix environments, instead of GUIs (MS Office ribbons come to mind).
I acknowledge that a very large portion of quant research is simple, unglamorous data manipulations - Python serves as a strong glue language (like Perl, but with much stronger numerical libraries). I can set cron jobs for Python scripts that load data, send me emails, etc. I'm sure there are those who do this in Matlab (just like there are those that do all sorts of crazy stuff in VBA), but Python is a far better tool for these jobs.
Having said all of that, all legit quant shops can afford Matlab (and all of the costly toolboxes required for database access, xls read/write, compilation - which really should be free IMO). If you are purely research, then you can probably get by with only Matlab, but I find it somewhat restrictive and, perhaps, somewhat risky in terms of availability.
$\begingroup$ How java compares with py? Any experience? Actually why py and not java? $\endgroup$– user40Mar 8, 2011 at 12:59
$\begingroup$ Py - interpreted, flexible, simple. Java - compiled, strict, bloated. Java's a nice language for building a big complicated system with many developers working on it, but crummy for rapid prototyping of an idea. I also think SciPy is better than any Java numerical lib I've used. $\endgroup$ Mar 8, 2011 at 13:04
$\begingroup$ Java for numerical analysis / quantitative research is pretty much a horrorshow. You'll find yourself writing 10x as many lines. The bugs may not quite scale with that but it's safe to say you will see maybe 2x the bugs. $\endgroup$– Brian BMar 8, 2011 at 13:44
$\begingroup$ Fair enough! That's exactly my problem with java... I need to look at py soon.... $\endgroup$– user40Mar 8, 2011 at 14:55
There is a Python library for this that you may want to take a look at: http://gbeced.github.com/pyalgotrade/
I've only found MatLab to be useful for modeling and testing algorithms, with the implementation in any other language.
I'm a big fan of python over the competitors as well. I use the pysci & matplotlib libraries heavily which are all open source albeit not specifically designed for optimizations but solid for visualizations & fast analysis.
Another part of making a transition for me, was the ease of use on the Mac. It's native although I do use macports (very easy install) for several other projects & it augments my development environment nicely. Macports provides a huge catalogue of modules easily installed with 1 command & dependency resolution (no *nix package mgmt. hell) & of course all of the IDE's work nicely (I use VIM). Git is native, debugging is very mature, & if you can get over strict indentation (macros or IDE's help) then it's typically quite readable code.
Never posted before but have lurked for months so hopefully this contribution helps.
Everything has pros & cons. So it has to do with personal preferences but more importantly to me it has to do with what your shop uses. Most use a mix of interpreted/compiled language.
MATLAB has a trading and backtesting toolbox which offers similar functionality to other retail trading packages. http://www.tadeveloper.com
3$\begingroup$ You should point out that you are affiliated with TA Developer. Additionally, The Mathworks appears to have no affiliation with you; this is a software package that happens to be written in MATLAB. $\endgroup$ Dec 29, 2012 at 20:52
$\begingroup$ @chrisaycock Yes, you are right. Reading my post again it sounds like the toolbox is offered by the Mathworks. This is not the case. $\endgroup$– JoernDec 29, 2012 at 22:19