Алгоритмическая торговля — интересная область, которая позволяет ИТ-специалистам применить свои технические знания на фондовом рынке и извлечь из этого ту или иную выгоду. В нашем блоге мы неоднократно рассматривали различные темы, связанные с созданием торговых роботов, но недостаточно внимания уделяли теоретическим вопросам, с которыми сталкиваются начинающие трейдеры.
В нашем сегодняшнем материале — подборка книг, которые помогут лучше подготовиться к началу работы на фондовом рынке и написанию механических торговых систем. Для достижения наибольшей эффективности материала, мы приводим советы экспертов, которые занимаются алгоритмической торговлей на российском и зарубежных фондовых рынках.
Майкл Халлс-Мур, эксперт по Quantitative trading (цитата из поста в блоге)
Я считаю, что прежде чем человек поймет базовые понятия торговли на биржи и алгоритмической торговли, стоит избегать погружения в сложную математику. На мой взгляд, с помощью следующих книг хорошо заниматься как раз изучением основ:
- Quantitative Trading, Ernest Chan — в этой книге подробно описывается процесс создания «ритейловой» торговой системы (то есть принадлежащей частному лицу, а не, скажем, фонду — прим. перев.) с помощью MatLab или Excel. После прочтения книги у начинающего трейдера возникает ощущение реальности решения задачи заработка на рынке с помощью создания специальных программ. Работа Эрнеста Чана — хороший гид по тому, как устроена алгоритмическая торговля, и позволяет усвоить самые базовые понятия вроде «торговой модели», «риск-менеджмента» и так далее.
- Inside the Black Box, Rishi K. Narang — в этой книге в подробностях рассказано о том, как работают хеджевые фонды в области quantitative trading. Изначально книга нацелена на инвесторов, которые сомневаются, инвестировать ли свои финансы в такой «черный ящик». Несмотря на кажущуюся нерелевантность для частного алгоритмического торговца, в работе представлен исчерпывающий материал о том, как должна работать «правильная» торговая система. В частности, обсуждаются вопросы важности учета транзакционных издержек и риск-менеджмента.
- Algorithmic Trading & DMA, Barry Johnson — автор книги Барри Джонсон работает разработчиком торгового программного обеспечения в инвестиционном банке. С помощью данной книги частные торговцы могут лучше понять, как работают биржи, и усвоить «рыночную микроструктуру» — все это позволяет повысить эффективность собственных торговых стратегий. Читается тяжело, но того стоит.
После усвоения базовых понятий, необходимо переходить к разработке торговых стратегий. В наше время найти стратегию не особенно сложно, но ее эффективность будет зависеть в том числе и от личностных характеристик трейдера, поэтому необходимо постоянно пробовать новые стратегии и тестировать их на исторических данных. В следующих книгах как раз обсуждаются вопросы создания торговых движков и связанные с этим сложности:
- Algorithmic Trading, Ernest Chan — вторая книга доктора Чана. В своей первой книге он касался тем рыночных импульсов, теории движения цены к среднему значению (mean reversion), а также привел некоторые высокочастотные стратегии. Во второй книге эти темы развиты глубже, представлено большое количество информации по имплементации стратегий с большей математической сложностью. Для написания торговых систем используется MatLab, но код может быть легко модифицирован на C++, Python или R.
- Trading and Exchanges, Larry Harris — основной темой книги является микроструктура рынка — это «наука» о том, как участники рынка взаимодействуют друг с другом и динамике в биржевом стакане. Это помогает понять, как на самом деле работают биржи, и что происходит, после выставления заявки на покупку или продажу ценных бумаг и других финансовых инструментов.
После изучения представленной литературы, трейдер будет более подготовлен к проведению исследований и изучению различных компонентов торговых систем и их взаимосвязи (каждому из этих элементов посвящены отдельные книги).
Алексей Афанасьевский, руководитель направления алгоритмического трейдинга АО «Финам»
Если вы собрались писать своего первого робота, то вам необходимо иметь более-менее твердые точки опоры в трех областях — математика хотя бы на уровне первого-второго курса технического ВУЗа средней паршивости, понимание финансовых конструкций и владение какими-либо средствами программирования.
1) Математика штука важнейшая и без нее вообще никак. И желательно, чтобы знания были широки и многообразны. Лишним не будет ничего из основных дисциплин — матанализ, линейная алгебра, аналитическая геометрия, теория функции комплексной переменной, дифференциальные уравнения и в частности диффуры в частных производных второй степени, функциональный анализ, математическая статистика и теория вероятности. Вся эта красота живет в «Курсе высшей математики и математической физики» под редакцией А.Н. Тихонова, В.А. Ильина, А.Г. Свешникова.
Избыточным, но возможно нелишним для внутреннего развития будет незабвенный Ландавшиц — курс теоретической физики от Ландау-Лифшица. Это не даст немедленного эффекта в разработке роботов, но будет способствовать повышению остроты разума и эффективности в достижении результатов.
Понятно, что далеко не у всех есть академические знания и тем более все вышеназнванное потребует много времени для освоения, чего всегда не хватает. Поэтому обязательный минимум это — линейная алгебра, теория вероятности и математическая статистика. Без этого никак.
2) Программирование является вторым обязательным столпом. Если у человека есть деньги, и он не хочет «заморачиваться», то ему, конечно проще нанять команду. Если же вы хотите участвовать в процессе — вам по-любому придется программировать самому. Это может быть глубокое погружение в процесс, вплоть до отлавливания микросекундных раундтрипов на низкоуровневом языке, а может быть медленная и затратная в плане ресурсов симуляция, но так или иначе в программирования в чем-то придется участвовать лично.
Здесь же в зависимости от роли, которую Вы займете в проекте и от типа робота, которого Вы будете разрабатывать могут быть варианты.
Если вы делаете среднесрочного статарбитражного робота или робота совершающего малое количество сделок, робота нечувствительного к проскальзываниям, то вполне можно воспользоваться такими языками как Python или R для описания его логики, а также для создания собственного механизма бэк-тестирования. При этом часть отвечающую за исполнение вполне можно реализовать на языках достаточно высокого уровня, например принадлежащих к семейству .Net
Если создается менее навороченный, но более скоростной робота, то понадобятся языки более «приближенные» к железу — С++, возможно, обычный С, а может даже и ассемблер.
В любом случае выбор языков не тема данного обзора, но я настоятельно рекомендую получить именно практическое знакомство с парой-тройкой желательно максимально далеких друг от друга языков. Если совсем лень или мало времени то освойте хотя бы один. Как максимальный компромисс между легкостью в обучении, простотой в написании и эффективностью исполнения пожалуй наилучшим на сегодня является С# — все характеристики у него на четверку иногда с минусами, иногда с двумя-четырьмя жирными плюсами (простите за каламбур).
В качестве пособий по языкам существует огромное количество учебников самых разных издателей и авторов. Как один вариантов можем порекомендовать книги по языкам программирования, изданные O’Reilly (часто всяким зверьем на обложках). На русском они также переиздаются.
3) Финансовая математика по уровню сложности очень сильно уступает п.1, т.е. высшей математике, но это важный источник понимания предмета рынка. Книг по финансовой математике множество и все они примерно об одном. Какая-нибудь «Финансовая инженерия» Галица вполне подойдет для начального знакомства.
4) Опционы — Если вы решили заняться опционами, но раньше не были с ними знакомы, то это Коннолли, Коннолли и ничего кроме Коннолли. Книга «Торговля волатильностью»,— обязательное начало.
5) Спецификации контрактов, условия расчетов, правила торговли, учет дивидендов — короче, учите матчасть, читайте правила клиринга, лазайте по сайтам бирж, регуляторов и прочее. Продираться сложно, но полезно.
6) Специи и приправы. Захотите чего-нибудь необычного — покопайтесь в околоторговых технологиях, в адаптивной математике. Вейвлеты, фракталы, нечеткая логика, генетические алгоритмы, нейронные сети и прочие биг-дата и дата-майнинг. Скорее всего это не добавит вам заработка, и однозначно не добавит его немедленно. Но это хороший способ саморазвития… И, возможно, вы все же там что-нибудь найдете
7) Совсем для «гиков» — программирование Cuda, FPGA и т.п. Зайдите на сайт NVidia, на сайты разработок всяких FPGA и почитайте. Возможно это вас зацепит. Если Вы будете делать супер-пупер-мега-быстрый-HFT то возможно FPGA это то, что позволит обойти конкурентов. А если будете делать арбитраж опционов на западных рынках (да и не только), то скорее всего пригодится Cuda. Источники здесь все открытые и легко ищутся в Google, главное правильно придумать для чего их использовать.
Андрей Горьковенко, создатель механических торговых систем, разработчик терминала SmartX
По роду занятий я читаю довольно специфическую литературу, в основном, связанную со сложными моделями математической статистики. А поскольку в РФ эта тема не очень развита, то литература моя, в основном, на английском.
Из более «популярных» по жанру книг читал «Долгосрочные секреты краткосрочной торговли», но так и не применил никакие из перечисленных там идей на практике.
Всем начинающим трейдерам (неважно, алгоритмическим, или «простым»), я бы рекомендовал почитать Нассима Талеба, особенно книгу «Одураченные случайностью» — она тонкая, но на многие вещи заставляет взглянуть по-новому.
Из того, что мне реально помогло, могу посоветовать следующие материалы:
- методички Московской биржи по фьючерсам и опционам (список представлен на сайте)
- лекции Григория Канторовича из ГУ ВШЭ;
- книга «Методы и алгоритмы финансовой математики», Ю-Дау Люу
- статьи Марко Авелланеды и Саши Стойкова (на англ) — вот, к примеру, одна из самых известных их статей.
Помимо книг и статей перечисленных экспертами, существует еще огромное количество полезных образовательных ресурсов. Некоторые из них представлены ниже:
Книги для понимания устройства фондового рынка
- Основатель ресурса QuantStart Майкл Халлс-Мур собрал внушительный список англоязычной литературы по алгоритмической торговле;
- В декабре 2013 года мы публиковали в блоге популярный материал со списком 11 книг для понимания устройства фондового рынка;
- На сайте Московской Биржи представлен список литературы по производным инструментам.
Посты на Хабре
На хабре (в основном, в нашем блоге) было довольно много интересных постов о создании торговых роботов:
- Что нужно учитывать при разработке первого торгового робота
- Что нужно учитывать при разработке стратегии для торгового робота
- Пошаговое руководство по разработке торговой системы для работы на фондовом рынке
- Назад в будущее: проверка работоспособности торгового робота с помощью исторических данных
- Как я сделал тестер-оптимизатор для нахождения прибыльных стратегий на бирже
Образовательные курсы StockSharp
Компания-разработчик торговых роботов StockSharp также занимается обучением алготрейдерова. В частности, внимания заслуживают два дистанционных курса:
- Курс по созданию механических торговых систем в среде WealthLab
- Курс по работе непосредственно с платформой StockSharp, включающий методики для написания роботов на языке C#.
На сегодня все, спасибо за внимание! Если вы считаете, что какая-то отличная книга, пост в блоге или образовательный курс были незаслуженно забыты в нашем топике — пишите в комментариях, так мы сможем собрать наиболее полную базу ресурсов по алгоритмической торговле!
P. S. Скоро мы проводим два интересных образовательных мероприятия (семинар и вебинар), посвященные началу работы на фондовом рынке и покупке акций зарубежных компаний вроде Tesla Motors. Почитайте описание на Мегамозге и записывайтесь!