My personal preference is Julia, although one must understand it is not yet as mature as R or Python. In fact current language version in development is 0.4 and obviously the ecosystem is not as huge as Python R or Matlab but growing fast. The goal is to achieve performance within 2x C overall and breaking two-language-pattern (one for prototype and one for performance). I don't think I would go live until 1.0 but I am working slowly on moving some of my code from Matlab.
1. It is (being) designed with fast computation in mind with C speed iterative loops
2. Designed for/by scientific/technical community yet still being general programming language (like python)
3. Based on Lisp (good metaprogramming, macros), some consider it a Lisp dialect
4. Multiple dispatch
5. Matlabish syntax easy to grasp even by nonprogrammers
6. Seamless integration with C and Fortran
7. Very good interface with Python, good with R and Matlab
8. Open source, MIT licence
9. Still in active development (nice langauge features on the horizon)
1. Still in active development (almost certain breaking changes, not fully optimized yet, not enough packages yet)
2. Small number of financial packages yet - some in development eg: JuliaQuant
3. Some ideas OO programmer needs to get used to: multiple dispatch, lack of encapsulation, etc.
I'm a python guy. Is it the 'ideal' language for backtesting, strategies, execution? Maybe...maybe not. The work I do is on long-term intraday and swing trading and my strategies are very simple and I need only simple reporting for what I need and how I analyze strategy outcomes.
I know that some will say R is much more robust and more mature...and it is in many areas. Python doesn't have anything that can touch blotter/PerfA, etc but I don't need 99% of the functionality of those packages.
Python is what I use for just about everything so it makes sense for me to continue using it for the markets. I do some basic stuff in R but I've just not found the functionality in R or R packages that I cannot replicate in python myself.
Lastly...I can do my research in Python and then when ready go straight to production with the same code. It makes it easy for me.
The following user says Thank You to ericbrown for this post:
I would personally hate the situation where one language would win the "(quant) language war".
You could define that period as technological stagnation (if not a decline). Programming languages and concepts feed of each other and provide us all with the tools we like and use.
So my advice to anyone asking which language to choose is this:
Choose the one you are the most comfortable with and most engaged/excited about and then you will see you will find plenty of reasons why your choice is the best one !
The following 3 users say Thank You to gregid for this post:
[quoting your full post for posteriority, just in case would be tempted to delete it... again ]
As to the answer - you made it sound almost like I would believe Julia is my new God. The reason I posted the iterative loops argument is clearly the context of the previous post where iterative loops where mentioned, so there is no need to impute anything I didn't say.
As I mentioned before I am a great fan of competition in the realm of technology
Also the matlabish syntax should give a hint on the target audiences of Julia - people not necesarilly interested in dwelling into software engineering but requiring tools to help them solve their problems (research, trading, etc).
When you say quant you think financial industry, HFT etc., when I say it on futures.io (formerly BMT) I think individual/semi professional traders (SPT). When you think parallelism you think cluster computing, while SPT just wants to use all his CPU cores.
I feel we are comparing apples to oranges.
Anyway thanks for your input - always appreciated. I am looking forward to watching the video you posted as it looks really interesting.
The following user says Thank You to gregid for this post:
I apologize if I came across as though I was misrepresenting your view.
My point was not that Julia isn't a useful language to the "semi-professional traders" as is - rather, my point was that I don't think that Julia will attract a critical mass of good developers (traders or not) to build useful libraries and take the language to greater heights, and hence wouldn't be a good prospect for either "semi-professional traders" or more sophisticated traders (the financial industry on a whole).
I honestly want to say that I started this and doing serious research into this due to the fact that I think Python is a great language. Not to mention the fact that it is much faster and due to multiple language libraries that act as a bridge language. Either end to end research execution or link into several languages if they are already part of a complex tech stack. Making integrating python into almost any existing structure really easy.
Both R and Python are extremely good at what they are meant to do. R is mostly focused on mathematics, statistics, and research but has capability to be an end to end package. Python is a easy to learn, fast, general programming language with multiple language interfaces, but also has the capability to do mathematics, statistics and research. They are really 2 sides of the same coin, which part of those main attributes do you want/need the most, or are more comfortable with. But as with all things its a give and take, if there was 1 package that did both parts equally well. A winner would be decided in a second and we probably wouldn't be having this healthy debate. As stated earlier both are programming languages, you can pretty much make happen anything you desire.
To be honest, I have been searching and reading about this for weeks, and I think our current poll stats show a tie between R and Python. I think that is for good reason, both are extremely strong. Comfort with a language makes you more productive in it, whatever that language is. I don't want to sound like a python basher because I want to find every reason in my own mind for me to switch over, or at least have a working knowledge of it so it can become an alternative language I can link into R. If python were to over take R in the maturity of its package eco system, or having more packages specifically for computational finance and system development I would be the first to jump ship.
The following 2 users say Thank You to treydog999 for this post:
It seems python took over in the poll stats (7:13:2 as of now)
One other (nice) facet to python is integration with Visual Studio .NET for the c# lovers out there.
As always, there is no definitive right/wrong answer to this, and it depends on your skill level in any of them and what you want to achieve.
Yes it has but i still believe the trading and financial ecosystem is really weak compared to matlab or r. It is a much better choice for end to end integration if you are running solo. But if you have someone or a department who will re encode things into the execution language then matlab and r are the clear winners. Or even yourself as you would gain execution speed and parallel processing that python afaik is difficult to implement.
I have a lot of respect for python but the dozens of hours i have spent just to try to clone the blotter r package was just not worth the additional processing speed. I could have done the tests in R and converted to C++ or C# in that time. Or used matlab simulink and convert to C.
Wes Mckinney pandas packages are great but they are just clones of the native R dataframe.
I know that in the several firms has picked up acceptance for using python. But they are keeping a lot of the code inhouse or developing analytics from scratch with a pandas base. IHMO reinventing the wheel. Although in their case it may be advantageous as they can refactor their tech stack around it. And maybe load up legacy C code into python. But both R and matlab have that capability.
Its just my current take on it. The poll speaks for itself but from the time i started this thread and now. The changes in the python ecosystem has been minimal especially in regards to trading.
The following user says Thank You to treydog999 for this post: