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



    In our blog on Habré we write a lot about technologies used in the field of finance. Today, the most advanced software and hardware are used on stock exchanges, both for building the trading infrastructure itself and for creating online trading systems.

    Today, mathematicians, physicists and programmers are in demand here. People are able to create trading algorithms and make high-quality software based on them. 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’ll talk about what skills you need to have in order to get a job in an HFT firm, investment bank, hedge fund or brokerage company. When preparing the topic, site materials were usedexperience.com and quantstart.com .

    Languages


    One of the most popular programming languages ​​in finance 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 exchange data 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 thought out and debugged the trading program is, if at some point it spends the extra milliseconds on “garbage collection”, then this can lead to serious losses. The same applies to the exchange infrastructure - all kinds of data transfer gateways and “connectors” to various systems.

    As a result, C ++ programmers are in high demand in companies in the financial sector - 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 talked with a Russian expert on creating trading systems, who recommended, in situations where maximum speed is needed, use the following technologies:

    C ++ and pure C are very suitable for these tasks. It also happens that fast robots are created almost in assembler - here it is worth mentioning the mechanisms of direct reading and writing data to the network card memory, bypassing the standard mechanisms of work through drivers, as well as work with "super fast programmable hardware" like FPGA.

    According to the creator of QuantStart and professional trader Michael Halls-Moore, today a senior programmer with 5-7 years of C ++ experience can earn £ 500-700 a day in London. In Russian companies, C ++ specialists are also in great demand. In addition, such developers are often attracted by 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 by various financial institutions for quite some time. Mainly by large banks for their trading infrastructure. These languages ​​are used to create front-end interfaces and data processing.

    In the Russian financial market, experts who know C ++ and C # are very much appreciated - in our blog we previously told the story of the developer, who, thanks to these tools, was able to find work in financial companies, and then set about creating his own trading systems. Here is what the hero of the material advised to study for programmers who would like to get a job in the field of finance in the future:

    For those who begin their journey in trading or are somehow interested in this area, I would advise you to turn your attention to high-level platforms and languages ​​such as .NET and Java. The latter is very popular in Western stock markets, while we have less, but there are good prospects for a wider distribution 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 is not very suitable.

    But in both .NET and Java, you can quickly create complete software products. The main minus - they are not the fastest (if the account goes to microseconds).

    To prototype quantum models in hedge funds and “quantum” trading units, banks often use scripting languages ​​like Python, MATLAB and R.

    Quantum 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 ++, by developers who specialize in this.

    Client Server Systems


    Trading systems are, by definition, distributed. Almost all companies, from small firms to large investment banks, build their systems using the TCP and UDP protocols - sometimes in the matter of trading, speed is more important than the guarantee of data delivery.

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

    In addition, a plus for developers of financial software 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's 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 existing for this language.

    Database


    At the heart of systems for the financial sector are databases, so developers need in-depth knowledge of SQL. Knowledge of simple selection operators will not be enough - quite often in the course of work you will have to tinker with the creation of storage procedures, deal with indexes, etc. In addition, you need 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, trading terminals with graphical interfaces are usually created, while UNIX is used to develop the "engine" of trading software.

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

    Debugging skills


    In the career of a programmer in financial organizations, the ability to analyze core files using dbx or gdb is useful. Such a 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 working in this area very attractive for IT professionals who want to develop their skills. At the same time, in order to participate in interesting projects, an engineer does not have to go abroad at all - new technologies are being actively introduced in 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 Matrix brokerage trading system, in the development of which you can participate.

    In conclusion, one more 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 can 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 A strong developer is required in the ITinvest development team for design work on trading applications . Our requirements and wishes for candidates:

    • Good knowledge of OOP and experience in developing highly loaded applications in C ++, experience in developing in C #;
    • Knowledge of standard algorithms;
    • Experience in developing multi-threaded applications;
    • Ability to use version control systems;
    • Presentation of the work of financial protocols ( FIX , FAST , ASTS Bridge ).

    In this article, we wrote about what awaits the developers of ITinvest trading applications .

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

    Also popular now: