Books and educational resources on algorithmic trading

Algorithmic trading is an interesting area that allows IT professionals to apply their technical knowledge in the stock market and take advantage of this or that. In our blog, we have repeatedly considered various topics related to the creation of trading robots, but we have not paid enough attention to the theoretical issues faced by novice traders.
Our material today contains a selection of books that will help you better prepare for starting work on the stock market and writing mechanical trading systems. To achieve the greatest efficiency of the material, we provide advice from experts who are involved in algorithmic trading in the Russian and foreign stock markets.
Michael Halls-Moore, an expert on Quantitative trading (quote from a post in the blog)I believe that before a person understands the basic concepts of trading on exchanges and algorithmic trading, it is worth avoiding immersion in complex mathematics. In my opinion, with the help of the following books it’s good to study just the basics:
- Quantitative Trading , Ernest Chan - this book describes in detail the process of creating a "retail" trading system ( that is, owned by a private individual, and not, say, a fund - approx. Transl. ) Using MatLab or Excel. After reading the book, the novice trader has a sense of reality solving the problem of earning in the market by creating special programs. Ernest Chan’s work is a good guide on how algorithmic trading works, and allows you to learn the most basic concepts like “trading model”, “risk management” and so on.
- Inside the Black Box , Rishi K. Narang - This book details how the hedge funds work in quantitative trading. Initially, the book is aimed at investors who doubt whether to invest their finances in such a “black box”. Despite the apparent irrelevance for a private algorithmic trader, the work provides comprehensive material on how the “correct” trading system should work. In particular, issues of the importance of accounting for transaction costs and risk management are discussed.
- Algorithmic Trading & DMA , Barry Johnson - author of the book, Barry Johnson works as a trading software developer at an investment bank. With the help of this book, private traders can better understand how exchanges work and adopt a “market microstructure” - all this can improve the effectiveness of their own trading strategies. It is hard to read, but worth it.
After mastering the basic concepts, it is necessary to proceed to the development of trading strategies. Nowadays, finding a strategy is not particularly difficult, but its effectiveness will depend, among other things, on the personality characteristics of the trader, so you need to constantly try new strategies and test them on historical data. The following books discuss the issues of creating trade engines and the associated difficulties:
- Algorithmic Trading , Ernest Chan is Dr. Chan's second book. In his first book, he dealt with topics of market impulses, the theory of price movement to mean value ( mean reversion ), and also led some high-frequency strategies. In the second book, these topics are developed more deeply, a large amount of information on the implementation of strategies with greater mathematical complexity is presented. MatLab is used to write trading systems, but the code can be easily modified in C ++, Python or R.
- Trading and Exchanges , Larry Harris - the main topic of the book is the microstructure of the market - it is a “science” about how market participants interact with each other and the dynamics in the stock market. This helps to understand how exchanges actually work, and what happens after the application for the purchase or sale of securities and other financial instruments is submitted.
After studying the literature presented, the trader will be more prepared to conduct research and study the various components of trading systems and their relationship (separate books are devoted to each of these elements).
Alexey Afanasevsky, head of algorithmic trading at Finam JSC.If you are planning to write your first robot, then you need to have more or less firm footholds in three areas - mathematics at least at the level of the first or second year of a technical university of average lousiness, an understanding of financial structures and ownership of any programming tools.
1) Mathematicsthe most important thing and without it at all. And it is desirable that the knowledge be wide and diverse. None of the main disciplines will be superfluous - matanalysis, linear algebra, analytic geometry, the theory of functions of a complex variable, differential equations and, in particular, second-degree partial differential equations, functional analysis, mathematical statistics and probability theory. All this beauty lives in the "Course of Higher Mathematics and Mathematical Physics" edited by A.N. Tikhonova, V.A. Ilyina, A.G. Sveshnikov.
An unforgettable Landavschitz — a course in theoretical physics from Landau-Lifshitz — will be redundant, but perhaps out of place for internal development . This will not give an immediate effect in the development of robots, but will increase the sharpness of the mind and efficiency in achieving results.
It is clear that not everyone has academic knowledge, and especially all of the above will require a lot of time to master, which is always not enough. Therefore, the required minimum is linear algebra, probability theory and mathematical statistics. No way without it.
2) Programming is the second mandatory pillar. If a person has money, and he does not want to “bother,” then, of course, it is easier for him to hire a team. If you want to participate in the process, you will have to program yourself anyway. This may be a deep immersion in the process, up to catching microsecond roundtrips in a low-level language, or it may be a slow and costly simulation in terms of resources, but one way or another you will have to take part in programming personally.
Here, depending on the role that you will take in the project and the type of robot that you will develop, there may be options.
If you are doing a medium-term statarbitration robot or a robot that performs a small number of transactions, a robot insensitive to slippage, then it is quite possible to use languages such as Python or R to describe its logic, as well as to create your own back-testing mechanism. At the same time, the part responsible for execution can easily be implemented in languages of a sufficiently high level, for example, belonging to the .Net family.
If you create a less sophisticated, but faster robot, then you need languages more "closer" to the hardware - C ++, possibly ordinary C, and maybe even assembler.
In any case, the choice of languages is not the topic of this review, but I highly recommend getting a practical acquaintance with a couple of three, preferably languages as distant from each other as possible. If you are completely lazy or have little time, then master at least one. As the maximum compromise between ease of learning, ease of writing, and performance efficiency, C # is probably the best for today - all its characteristics are four in number, sometimes with minuses, sometimes with two or four bold pluses (sorry for the pun).
As language manuals, there are a huge number of textbooks from a variety of publishers and authors. As one of the options, we can recommend books on programming languages published by O'Reilly (often with every beast on the covers). They are also republished in Russian.
3)In terms of complexity, financial mathematics is very much inferior to item 1, i.e. higher mathematics, but this is an important source of understanding of the subject of the market. There are many books on financial mathematics, and they are all about the same. Some kind of " Financial Engineering " Galicia is quite suitable for an initial acquaintance.
4) Options - If you decide to go in for options, but you have not been acquainted with them before, then this is Connolly, Connolly and nothing but Connolly. The book " Volatility Trading " is a mandatory beginning.
5) Contract specifications, settlement conditions, trading rules, accounting for dividends - in short, learn the materiel, read the clearing rules, climb the websites of exchanges, regulators, etc. It is difficult to wade, but useful.
6) Spices and seasonings . If you want something unusual - delve into near-trade technologies, adaptive mathematics. Wavelets, fractals, fuzzy logic, genetic algorithms, neural networks and other big date and data mining. Most likely this will not add you earnings, and definitely will not add it immediately. But this is a good way of self-development ... And, perhaps, you still find something there
7) Absolutely for the “geeks” - programming Cuda, FPGAetc. Go to the NVidia website, on the development sites of any FPGA and read. Perhaps it will catch you. If you do super-duper-mega-fast-HFT, then maybe FPGA is something that will bypass the competition. And if you do options arbitrage in Western markets (and not only), then Cuda will most likely come in handy. The sources here are all open and easy to search on Google, the main thing is to correctly figure out what to use them for.
Andrey Gorkovenko, creator of mechanical trading systems, developer of the SmartX terminal .By the nature of my studies, I read quite specific literature, mainly related to complex models of mathematical statistics. And since this topic is not very developed in the Russian Federation, my literature is mainly in English.
Of the more “popular” books in the genre, he read “ Long-Term Secrets of Short-Term Trading, ” but never put any of the ideas listed there into practice.
To all novice traders (no matter algorithmic, or “simple”), I would recommend reading Nassim Taleb, especially the book “ Fooled by Chance ” - it is subtle, but it makes you look at many things in a new way.
From what really helped me, I can advise the following materials:
- manuals of the Moscow Exchange on futures and options (the list is presented on the site)
- Lectures by Grigory Kantorovich from the Higher School of Economics;
- book " Methods and algorithms of financial mathematics ", Yu-Dau Liu
- articles by Marco Avellaneda and Sasha Stoikova (in English) - for example, one of their most famous articles .
In addition to books and articles listed by experts, there are still a huge number of useful educational resources. Some of them are presented below:
Books for understanding the structure of the stock market
- QuantStart founder Michael Halls-Moore has compiled an impressive list of English literature on algorithmic trading ;
- In December 2013, we published a popular blog material with a list of 11 books to understand the structure of the stock market ;
- The Moscow Exchange website provides a list of literature on derivatives .
Posts on Habré
On the hub (mainly in our blog) there were quite a few interesting posts about creating trading robots:
- What to consider when developing the first trading robot
- What to consider when developing a strategy for a trading robot
- A step-by-step guide on developing a trading system for working in the stock market
- Back to the future: checking the performance of a trading robot using historical data
- How I made an optimizer tester to find profitable strategies on the exchange
StockSharp Education Courses
StockSharp, a robotic trading company, is also training in algorithmic trading. In particular, two distance courses deserve attention:
- A course on creating mechanical trading systems in WealthLab
- A course on working directly with the StockSharp platform , which includes techniques for writing robots in C #.
That's all for today, thanks for watching! If you think that some excellent book, blog post or educational course was undeservedly forgotten in our topic - write in the comments, so we can collect the most comprehensive database of algorithmic trading resources!
PS Soon we will hold two interesting educational events (seminar and webinar) dedicated to getting started in the stock market and buying shares of foreign companies like Tesla Motors. Read the description on Megamind and sign up!