Алгоритмическая торговля — интересная область, которая позволяет ИТ-специалистам применить свои технические знания на фондовом рынке и извлечь из этого ту или иную выгоду. В нашем блоге мы неоднократно рассматривали различные темы, связанные с созданием торговых роботов, но недостаточно внимания уделяли теоретическим вопросам, с которыми сталкиваются начинающие трейдеры.
В нашем сегодняшнем материале — подборка книг, которые помогут лучше подготовиться к началу работы на фондовом рынке и написанию механических торговых систем. Для достижения наибольшей эффективности материала, мы приводим советы экспертов, которые занимаются алгоритмической торговлей на российском и зарубежных фондовых рынках.
Майкл Халлс-Мур, эксперт по 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. Почитайте описание на Мегамозге и записывайтесь!
Комментарии (22)
zed91
15.05.2015 10:37И всё ради чего? Ради того, чтобы у брокера увеличилось количество заявок (= profit )
Книги в которых написано как делать деньги приносят деньги только их писателямitinvest Автор
15.05.2015 10:47Там все несколько сложнее работает, на самом деле. Но вообще, конечно, маркетинговые активности, к которым относится блог на хабре, направлены в том числе и на рост числа клиентов.
Но дело в том, что никто никого не заставляет нести свои деньги, мы просто считаем, что нужно повышать общий уровень знаний о финансовом рынке и его инструментах. В том числе поэтому, рассказываем, скажем, в блоге на Гиктаймс о текущей экономической ситуации (часто прямым текстом упоминая, что конкретный момент времени не лучший для выхода на биржу), а также объясняем, как можно пользоваться имеющимися инструментами вроде счетов ИИС.
У некоторых ИТ-специалистов есть все шансы зарабатывать на фондовом рынке, это просто факт. Можно, допустим, не инвестировать свои деньги, а писать на заказ торговых роботов, как вариант, или совершенствовать различные технологии, применяющиеся на бирже — это очень интересно и полезно для экономики.
Ну и да, курс Ландау-Лифшица, упоминаемый в материале, ну никак не отнести к книгам, которые приносят профит только их авторам :)webmascon
20.05.2015 15:31>>>>У некоторых ИТ-специалистов есть все шансы зарабатывать на фондовом рынке, это просто факт.
да. но только у некоторых ИТ-специалистов.
>>>> а писать на заказ торговых роботов, как вариант
и продавать их лопоухим лохам
webmascon
20.05.2015 15:30в книге Барри Джонсона н енаписано как делать деньги. в них написано как экономить деньги при исполнении большого ордера
roman_truschev
15.05.2015 12:23Если Вы будете делать супер-пупер-мега-быстрый-HFT то возможно…
надо будет подумать как разместить свое поделие поближе к бирже?
Lisio
18.05.2015 11:56Существует ли возможность получить доступ к торгам через API используя, например, Python или node.js?
spooph
19.05.2015 13:09Если говорить о Московской Бирже, то да, есть возможность использовать API для прямого подключения к торгам. Возможно подключение по протоколам FIX/FAST и по нативным биржевым протоколам. Для FIX точно существует Python wrapper, для FAST не уверен, надо гуглить. Для нативных протоколов предоставляются C-dll, к которым легко самостоятельно написать обертку на Python. Конечно, при использовании Python о высокоскоростном трейдинге речь не идет, но для некоторых задач вполне годится.
Также можно использовать дополнительную прослойку в виде брокерского ПО, которое предоставляет собственное API, например, как раз у АйТи Инвеста вроде бы такая возможность есть. Но это медленнее прямого подключения к бирже, зато дешевле.
webmascon
20.05.2015 15:28-2автор статьи путает алгоритмическую торговлю с автоматизированной. книга Барри Джонсона — про алгоритмическую, книга Наранга — про автоматизированную. это две разные области которые лежат рядом и пересекаются лишь относительно.
webmascon
20.05.2015 15:40-2Inside the Black Box, Rishi K. Narang — ссылка дана на первое издание, которое разругали в пух и прах. в 2014 году вышло второе издание, которое можно более менее читать.
slava_k
Книги это все конечно хорошо (на начальном этапе), но со временем все сводится к тому, что бОльшая часть времени написания чего-то более-менее стОящего тратится на тестирование и отладку, поиск косяков контрагентов, подстраивание и тестирование на реальном/стрессовом фиде данных и прочее. По этому направлению вообще практически нет стОящей литературы и статей, не рассказывающей как все здОрово было в прошлом и как лопались хранилища от заработанных миллиардов, а как правильно в Настоящее Время тестировать системы и на что в первую очередь обращать внимание, какие возможные подводные камни, какие в истории были прецеденты по фидам с контрагентами/биржами и как они могли бы быть разрешены алгоритмически/оценены риски. Нет смысла пытаться торговать на неизвестном, любое неизвестное должно быть оценено на границах и заложено в оценку рисков, если изначально алгоритм дает 100% годовых при риске в 200% — то да, алгоритм можно распечатать и сжечь.
С самого начала на мой взгляд надо ставить упор именно на программирование и обучение себя ему. Поэтому, даже впитав с сотню-другую популярных и не очень книг (та же Линда Рашке, статьи в некоторых журналах за последние пару лет), четкое понимание что за систему писать все равно вряд ли придет. Либо выбора будет очень много, от классических алгоритмов до чего-то на стыке различных инструментов (акции+опционы, торговля волатильностью та же) или же уход в анализ цикличности/сезонности — к примеру класс роботов, анализирующий узкоспециализированный новостной фон — отчеты погоды, пожаров и наводнений в определенных регионах мира, отвечающих за бОльшие части мирового экспорта — в одной упряжке с остальными системами анализа рисков/ММ и свойств рынка. Либо что-то на границе реального бизнеса и трейдинга — например торговые роботы (компании-перепродавцы), анализирующие поставщиков пресной воды в Китай или Индию и зарабатывающие на закупках/перепродаже. Либо компании из Австралии, анализирующие поставщиков определенного редкого импорта и загрузки складов/холодильников играют на той же локальной для себя бирже. Почему все систематически «парятся» сколько нефти в том же Кушинге или портах Йемена на отгрузку? Есть более мелкие аналогии на локальных рынках, те же известные модели и схемы рисков.
Это не столько я «зажрался», сколько понимание неработоспособности очень многого, что в прошлом могло что-то приносить (те же средние, много статмоделей для HFT), сейчас свойства всей глобальной торговой системы и количество инструментов вынуждают переключать поиск на комплексный анализ, простое уже давно не работает и 99% всех книг старше пары-тройки лет можно смело сжигать и не тратить на прочтение время. Для понимания статистики и математики есть справочники (Ландау+Лифшиц, Бронштейн+Семендяев и прочее).
Интересно было бы почитать/узнать что-то новое в направлении анализа сезонности в совокупности с остальным. Сложные и интересные системы, нестандартный подход. Их не так уж и часто публикуют (поверхностные идеи), но, предполагаю, что трейдинговые компании заинтересованы в развитии своего направления торговли и также занимаются поиском и наблюдением что происходит в мире и в каком направлении развивается торговля.
Можно конечно следовать теории управляемого хаоса, создавать аналитические агентства, становиться большими и уже своими советами (подстроенными под свою торговую стратегию) через новостной фон влиять на весь рынок (финансовые «журналы мод»), но это малоприменимо для стандартного трейдера с ограниченными ресурсами средств и времени.
Хотя, я скорее всего не по адресу с такими пожеланиями. Просто моя мысль была про то, что если не показывать всей полноты картины (различное интересное и узкоспециализированное) этого самого мирового черного ящика, можно дальше идей из книг и не уйти, так и не реализовать себя в итоге ни в чем, т.к. мышление будет сформировано на прошлом, которое сейчас уже неприменимо в полной мере или даже вообще никак.
spooph
На русском языке, как я понимаю, стоящей литературы (именно по алгоритмической торговле) вообще нет. На английском же, наоборот, глаза разбегаются. Поэтому хотелось бы получить совет от опытного человека, как вы начинали? Можете ли вы рекомедовать общую литературу (думаю, для этого подойдут и перечисленные выше книги, но, возможно, у вас есть и другие рекомендации), а также места, где почерпнуть актуальную на сегодняшний день информацию (вы упоминали журналы, возможно, есть какие-то онлайн публикации, сообщества, форумы и т.д.)?
Бэкграунд подходящий (программирую, знаю математику, статистику, теорию вероятностей, физику, в целом все, что описано выше из необходимого), сейчас читаю несколько финансовых книг (Халл, Буренин), решаю задачи (правда там в основном очень простые), чтобы вникнуть в тему.
webmascon
а вы сначала определитесь о какой торговле вы хотите прочитать — об автоматизированной или алгоритмической