I recently came across an article which talked about how the recent advancements in technology and automation are disrupting some of the traditional roles finance professionals have been playing in financial institutions. For example, stock picking which was a highly coveted skill is now being pushed to the corner as investors are giving up on stock picking. Instead, pension funds, 401(k) retirement plans, and even retail investors are moving towards passive funds which run on auto-pilot and automate the whole process of picking stocks based on data and managing the investments in them.
Whether you are in banking, risk management, portfolio management, or any other field of finance, your role either already requires or will soon require you to be able to program in atleast one programming language. As the industry becomes more automated and technology driven, finance professionals with programming/technical skills are going to be more in demand and can help you stay relevant for the current job market. The programming world, specifically with reference to finance, offers many paths that you can choose from, however, what you end up choosing will heavily depend on your job role, and the systems your company deploys. In this article let us explore some of the choices you have if you are just deciding on how to begin to learn programming that you can apply to your finance profession.
What programming can help you with?
While thinking about how programming can really help us in our job, I wanted to make sure you understand that programming is just a tool to automate things that we could otherwise do manually, if we wanted to. For example, let’s say we had the closing stock prices of a stock for the last ten years and we wanted to mark all the days on which the prices increased after a continuous three-day fall. This sounds simple, right? And sure, you could do this manually if you wanted to. You could sit down with the data and go through each day’s stock prices and mark the ones that met the criteria. However, it will probably take a long time (Assuming 250 trading days, you will be checking through 2500 entries for the 10-day period.) You could probably do it in a couple of hours or may be a day. But a computer program can do this job for you within a few seconds.
The second important help we get from programming is that we can perform these tasks repeatedly. With the manual case, if we had to take another stock and mark the entries again, we would end up taking the same time again. However, with programming, once we have written our program with rules and instructions for what we want, we can just apply it to a new data set and have the task completed within seconds.
The third important thing about programming that makes our life very easy is the ability to manage and process data. In finance, we are always dealing with millions of data points to make our decisions and most of the time these data points are coming from different sources. For example, we might be getting the end-of-day stock prices from a data feed and trying to merge it with the data for a client’s portfolio. Programs can help you manage and manipulate data and this is something where you will be spending a lot of your time.
To summarize, programming can help us make decisions based on logical rules, automate mundane repetitive tasks, manage and manipulate data with easy. While all programming languages have the ability to all these things, some are particularly suited for some of these tasks. Let’s look at these programming choices.
Choice of programming tools and languages for finance
We can broadly classify the programming choices into three categories:
1. General purpose programming languages
These include common programming languages such as C, C++, Java, Python, and VBA etc, which have been used extensively in finance software development.
C, and C++ is something that is aggressively used by quants for developing algorithms, etc, but over the past few years, the wave has been shifting towards Python. In my opinion, Python has seen maximum adoption in the finance industry because of its ease of use, and a large number of open source libraries available that you can use to incorporate into your programs. Some of the largest investment banks and hedge funds have used it to build their core trading and risk management systems. Python is also very suitable for data analytics which is at the heard of a finance job. Python makes it possible by providing power tools such as IPython and libraries like pandas which includes easy-to-use data structures and data analysis tools for Python programming.
2. Specialized programming languages
These include specialized programming languages such as Haskell, and statistical programming languages such as MATLAB and R programming.
Haskell is a functional programming language with application in many industries and applied in many projects. For example, ABN AMRO used it in a project where they wanted to measure the counterparty risk on portfolios of financial derivatives for their investment banking activities.
MATLAB and R are statistical languages and it is very important to learn one of these along with a general programming language such as Python. With modern developments, my preference would be to learn Python as your primary programming language and learn R programming for statistical analysis. R has a great developer community around it and very interesting packages to help you perform a variety of analysis. R also has good support for big data analytics (We will talk about big data analytics in future articles).
3. Retail-level languages
Here, I am referring to the programing languages that are built into various financial software. For example, AmiBroker, a technical analysis software has its own programming language. Similarly, TradingStation has a trader’s programming language called EasyLanguage, which allows you to create and modify indicators and trading strategies in TradeStation. Similarly, other software have other inbuilt language support. You will learn these languages only if your job involves working on any of these software, or if you are looking for a job in related area.
Apart from programming languages, one more important thing that you must learn is SQL, which is a language of working with databases. Since a lot of data resides in relational databases, you will need to know SQL to effectively store and retrieve data from the databases.
I think this will be a good place to end this article. I hope you learned something about the direction you should take if you’re planning to add programming to your skill set. My personal recommendation is to learn Python, R programming and SQL.