COMMENT: Should you learn to program in Julia to get ahead in finance?
Computer languages come and go over time. COBOL was once one of the most popular computer languages. Whilst, there are many legacy systems today that still run on COBOL code, it’s unlikely you’d write a new system in it.
The language you choose for a project depends on many factors, such as ease of use, speed of execution and adaptability into your existing codebase. For data science, Python and R have become the lingua franca. This isn’t to say they are the best “languages” for everything, but for data science there are lots of pre-built libraries that work with them. In Python, for example, you’ve got pandas for dealing with time series, there’s matplotlib for visualisation, scikit-learn for machine learning etc. The more existing frameworks are out there, the less time you have to spend writing your own code. There’s also a virtuous circle, so that as more developers gravitate towards Python, the libraries improve. With a bigger community of developers, it’s also easier to find collaborators to work on projects.
Neither Python nor R are perfect. Yes, they are comparatively easy to write compared to something like Java or C++, but they are also pretty slow. There are tips and tricks we can do to speed up Python, such as using Cython or trying to distribute our computation, but Python doesn't do this out of the box.
So, what if there were a language that were as fast as Java or C++, but had the ease of use of Python? There is: it's called Julia.
The Julia language was developed so you can write code quickly (like Python), which would also execute fast (like C++). Julia is designed to give us the best of both worlds.
Should you go and learn Julia? Let’s look at the plus points first. The benchmarks provided by Julia suggest it's much faster for multitude of operations than Python, even though I would suggest this is not necessarily fully representative of all the use cases. It’s also relatively easy to make code parallel. The syntax, whilst different from Python, wouldn’t take too much time to get used to. And it's script based like Python.
What about the negatives? Well, Julia is still relatively new, with version 1.0 only being released last summer. There are a growing number of supporting libraries for Julia, but it still lags way behind Python (ok, yes, you can call Python in Julia, but if all your Julia ends up calling Python routines, it defeats the point). There’s also the issue, that as of yet, usage of Julia in the finance industry is still relatively small. You might spend time learning it, only to find that you end up getting a job as a Python developer. For employers, it’s probably going to take longer to find Julia programmers too.
The upshot is that Julia definitely looks like an interesting language and has some definite plus points. However, I think it’s likely to take a couple of years before it becomes more widespread. Ironically, despite the rapid state of technological advances, adoption of newer computer languages tends to be slow, because ultimately, it requires folks to take the time to learn it.
On a personal level, I think I might start dabbling in the Julia language. However, doubt it’ll end up becoming my main data science language of choice in the short term. For the time being, I’ll probably stick to Python.
Saeed Amen is a systematic FX trader, running a proprietary trading book trading liquid G10 FX, since 2013. He developed systematic trading strategies at major investment banks including Lehman Brothers and Nomura, and runs Cuemacro, a consulting and research firm focused on systematic trading.
Have a confidential story, tip, or comment you’d like to share? Contact: email@example.com in the first instance. Whatsapp/Signal/Telegram also available.
Bear with us if you leave a comment at the bottom of this article: all our comments are moderated by human beings. Sometimes these humans might be asleep, or away from their desks, so it may take a while for your comment to appear. Eventually it will – unless it’s offensive or libelous (in which case it won’t.)