Matlab is a brilliant platform for many use cases - this is irrefutable. If you are currently, or in any case aspire to be a 'quantitative trader', your primary tool I'm sure will end up being Python due to its rich set of supporting libraries, knowledgeable community, and the extent to which it will prevent you from having to re-invent the wheel. As someone alluded to above, Matlab normally wouldn't play a role in your execution unless you're doing something in the medium to longer term and are happy to produce the bindings that connect to the exchange or ECN. For general research, Matlab, as well as many other tools, can help depending on your overall methodology. But make no mistake that for non-hardcore programmers, and in any case, due to the amount of scientists and traders using it, Python is the only realistic place to focus your efforts. I write everything in Java myself. I however research machine learning ideas using WEKA (Java) which comes with a useful user interface but implement production models in Python which has state of the art learning algorithms due the amount of mathematicians and statisticians contributing to the ecosystem. So in my setup Java connects to the Dukascopy ECN, Java looks for instances of pricing momentum, derives statistical information (300+ statistical features) about the pricing sample and sends it all to a python server which returns a direction, a stop level, a position size and so on based on previously learnt models, Java then executes instructions accordingly. I've written lots of code using Matlab in industry and academia, first in 1999 and then finally in 2004, today, you'll be hard pressed to justify focusing on it outside very specific use cases - even if you crave the visualisation facilities. For pure statisticians Matlab, SASS, Python and R all come in to play, and if your approach is inspired by academia, you will find fair use cases for all the above. For trading however - personal, prop, hedge fund and/or bank - you NEED to know python - esp. if you want to play around with reliable, state of the art, machine learning without having to write a ton of code. For back-testing, this is complicated depending on what kind of pricing data you want and where you wish to source it from. In many cases Broker Platforms fair very well, e.g. since I use Java and access Dukascopy, the platform's back tester works intuitively and it's another area I don't have to worry about. I would advise searching for back testing solutions in Python or find a broker platform supporting Python or another language that can call into your Python code. Bottom line, it really doesn't matter what recommendations you get, everyone has a different workflow and approaches trading from a different mindset. I'm a software engineer, I'll write code or research ideas using what ever makes sense to me. I'll also experiment with various packages and libraries to develop my own intuition about them, eventually incorporating or rejecting them. It is totally possible to successfully trade with and backtest in Excel or Matlab but as soon as you want to get sophisticated or creative, frustration will kaput all your efforts as you struggle to apply such tools to use cases they simply were not designed for.
As useful as the libraries might be, Python itself is an absolute shit language. It's really sad how such inferior languages like javascript, python, php, ruby can get entrenched due to network effects, path dependence and ignorant users.
Thank you very much for replying, so is it good to start off with Python as the first language? Or other languages like java, c++,swift etc?
Curious, why do you say its a "shit language"? I have found learning Python very useful, it certainly made me a better trader in the sense that I can test things more efficiently.
of course I don't know what cruisecontrol's take on this is... and I am trying to leave my emotions out of this discussion. For people serious about software development, it is typically important to use a language which is strongly typed. What that means is, that every variable created is declared (either implicitly, or explicitly), and has a type associated with it. This allows the compiler to check that you are using the variable correctly, and help you avoid a large number of potential errors. Python is not like that, and is very tolerant of bad programming practices. Along the same lines, Python's object model does not offer access rights to protect the internals of objects. However: you can create bad code in pretty much any language. And further: learning to code is always great.
1) it is, by far, one of the least efficient languages in popular use today (example) 2) duck typing is a nightmare for writing reliable software 3) look up "global interpreter lock" 4) insane stuff like it is possible to get an undefined variable error at runtime on "compiled" code I won't deny that it can be "very useful" in the sense that you can use it to do what you want to get done, but that doesn't mean that Python is even close to being the best tool for the job. IMO it is only appropriate for playing around, throwaway scripts, experiments and data exploration. I cringe when I see any significant sized software written in Python.
if you are a novice the only platform you need to get started is ninjatrader. it is free to evaluate, works magnificently and their backtesting - optimizing engines are the best. it has everything anyone needs to develop profitable strategies in a month or less. take a look at quantconnect as well, their platform is open source, free and they also make available all the historical data you need to backest your algorithms for free. just be careful not to upload any valuable code to their servers, it is better to use their lean platform on your own computer. if at any point you outgrow these platforms you can then think about creating your own or using much more complicated and difficult tools.