📜 ⬆️ ⬇️

What a programmer should be able to get a job in finance



In our blog on Habré we write a lot about the technologies used in the field of finance. The stock exchanges today use the most advanced software and hardware, both to build the trading infrastructure itself and to create online trading systems.

Today mathematics, physics and programmers are in demand here. People are able to create trading algorithms and make high-quality software on their basis. Many programmers, in turn, would like to try their hand at the financial industry - it can offer an attractive combination of interesting tasks and high salaries.
')
Today we will talk about what skills you need to have in order to get a job in an HFT-firm, investment bank, hedge fund or a brokerage company. In preparing the topic, materials from experience.com and quantstart.com were used .

Languages


One of the most popular in the field of finance programming languages ​​for many years is C. It needs to be known not only to support outdated code, but also to organize work with the API in electronic trading systems and data exchange with providers.

“The main language of Wall Street” is called C ++, because the most important thing for trading systems is speed. No matter how well-designed and streamlined the trading program is, if at some point it spends the extra milliseconds on “garbage collection,” this can lead to serious losses. The same applies to the exchange infrastructure - all sorts of data transfer gateways and "connectors" to various systems.

As a result, C ++ programmers are extremely in demand in financial sector companies - including on the exchanges themselves. And this situation will continue for many years to come - someone needs to maintain the current infrastructure.

For one of our past materials, we communicated with a Russian expert on the creation of trading systems, who recommended in situations where maximum speed is needed, to use the following technologies:

For these tasks, C ++ and pure C are very well suited. It also happens that fast robots are created almost in assembly language - here it is worth mentioning the mechanisms of direct reading and writing data into the memory of a network card, bypassing the standard mechanisms for working through drivers, as well as work with “super fast programmable hardware” like FPGA.

According to the creator of the QuantStart resource and professional trader Michael Halls-Moore, today a senior programmer with 5-7 years of experience in C ++ can earn £ 500-700 per day in London. In the Russian companies, C ++ specialists are also in great demand. In addition, such developers are often attracted to professional traders who can create a successful trading strategy, but need the help of someone who could program it.

C # and Java have also been used for a long time by various financial institutions. Basically, large banks for their trading infrastructure. These languages ​​are used to create front-end interfaces and data processing.

Specialists who know C ++ and C # are highly valued in the Russian financial market. In our blog, we previously told the story of a developer who, thanks to these tools, was able to find work in financial companies, and then started creating his own trading systems. Here's what the hero of the material advised to study for programmers who would like to get a job in finance in the future:

I would advise those who start their way into trading or are somehow interested in this area to turn their attention to high-level platforms and languages ​​such as .NET and Java. The latter is very popular in Western stock markets, we still have less, but there are good prospects for wider dissemination of this language. This means that Java programmers will be in demand in financial companies, funds and brokers. Still, .NET is a fairly closed platform, which also has a number of limitations. For low-latency and HFT trading, it does not fit very well.

But both in .NET and in Java, you can quickly create complete software products. The main disadvantage is that they are not the fastest (if the count goes on microseconds).

For prototyping quantum models in hedge funds and “quantum” trading units in banks, scripting languages ​​are often used, such as Python, MATLAB and R.

Quanta-traders and financial application developers often write their prototype code in scripting languages. Then these prototypes are already described using faster languages, such as C ++ developers specializing in this.

Client-server systems


Trading systems are by definition distributed. Virtually all companies, from small firms to large investment banks, build their systems using TCP and UDP protocols — sometimes in terms of trading, speed is more important than data delivery guarantees.

Therefore, developers of trade applications need to be well versed in the classes of sockets for C: socket (), bind (), poll () and select (). Practically it is never necessary to work with them directly, since there are already many ready-made libraries for this, however, it is simply necessary to understand how the interaction with them is arranged.

In addition, for developers of financial software, a plus is the knowledge of data transfer protocols used in this field, such as FIX , FAST , ASTS Bridge .

Streams


Creating client-server systems and multi-threaded programming in the financial sector go hand in hand. All this implies, for example, writing a standard TCP server, a load balancing server, a high performance server — a developer who wants to create software in a financial company should be able to do this. It is also good to understand what the classes pthreads (), fork (), mutexes and the idea of ​​the semaphore as a whole are. In the case of Java, you also need to understand the synchronization methods that exist for this language.

Database


Systems for the financial sector are based on databases, so developers need in-depth knowledge of SQL. Knowledge of simple choice operators will not be enough - quite often in the course of work you will have to mess with creating storage procedures, deal with indexes, etc. In addition, it is necessary to understand the difference between table-level, page-level and row-level locks.

UNIX
Trading systems typically use the UNIX platform (often Solaris and Linux). For Windows, as a rule, trading terminals with graphical interfaces are created, for developing the “engine” of trading software, they use UNIX.

This means that developers just need to understand what the commands tail, sed, grep, awk, tr and top are. Even better, if a specialist can work with either vi, vim or emacs and is not afraid of problems caused by the incorrect configuration $ LD_LIBRARY_PATH.

Debugging skills


In a programmer’s career in financial organizations, the ability to analyze core files with dbx or gdb will be useful. This need arises infrequently, but if it does happen, it is better to be able to do everything yourself.

Conclusion


The stock market is an extremely high-tech industry that is actively developing, which makes work in this area very attractive for IT professionals who want to develop their skills. At the same time, in order to take part in interesting projects, an engineer does not have to go abroad at all - new technologies are actively being introduced on the Russian stock market. In one of our past materials we talked about our own IT projects for the creation of the SmartX terminal and the broker trading system Matrix, in the development of which you can participate.

In conclusion, another tip: do not worry too much about the knowledge of the internal "kitchen" of trading processes and concepts from the sphere of finance. Of course, this may be an additional advantage, but the lack of economic and knowledge is unlikely to prevent a good programmer from finding a job in a financial company.

PS The ITinvest development team for project work on trading applications requires a strong developer. Our requirements and wishes for candidates:


We have written in this article about what awaits the developers of ITinvest trading applications.

Send a story about yourself and projects that you managed to participate in, send it in text format in the body of the email to ivan.igoshev@itinvest.ru .

Source: https://habr.com/ru/post/278931/


All Articles